/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHShunokknBetuNknInfShuk
*	ソースファイル名	：JBSbatCHShunokknBetuNknInfShuk.java
*	作成者				：富士通　
*	作成日				：2011年10月26日
*＜機能概要＞
*　日次収納機関別入金情報集計部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/26   富士通		新規作成
*	v4.00.00	2012/12/21   FJ）加島	【ST1-2012-0000869】小計行を出力する際、「コンビニ会社」に「小計」を設定する
*	v4.00.00	2012/12/21   FJ）加島	【ST2-2012-0000870】小計行を出力する際、「銀行名」に「小計」を設定する
*	v4.01.00	2013/01/29   FJ）浜口	【内部管理番号-0000272】合計行出力時の会計年月初期値設定漏れ修正
*	v4.02.00	2013/04/01   FJ) 小柴	【内部管理番号-0000191】２社目以降の明細行コンビニ会社名が表示されない問題を修正
*	v4.03.00	2013/04/05   FJ) 浜口	【内部管理番号-0000153】小計行をブレイク単位ごとに出力する
*	v4.04.00	2013/05/06   FJ) 藤田	【TG1-2013-0000252】収納管理帳票処理区分をコード名称管理マスタから取得するようにする。
*                                                           会計年月をゼロサプレスして出力するようにする。
*                                                           集計キー３の場合に入金予定日フラグをtrueに設定するよう修正
*	v4.05.00	2013/05/20   FJ) 藤田	【TG1-2013-0000535】小計行が集計キー１のブレイクのタイミングでも出力できるように変更する。
*                                                           小計行の編集に余計な「小計」を出力しないように変更する。
*   v5.00.00	2013/06/17   FJ) 小柴	【IT1-2013-0001300】債権委託会社の小計行に「小計」を出力するように修正
*                                                           エラーログに出力しているスキーマ名誤りを修正
*                                                           集計キー２による小計行出力機能を追加する。
*   v5.00.01	2013/10/17   FJ) 垣内	【OM-2013-0001717】処理区分が取消の場合、合計行の計算をしないよう修正。
*	v8.00.00	2014/01/20	 FJ) 北端	【ANK-1589-00-00】消費税に伴う料金施策（増税対応）
**	v32.00.00	2017/04/21	 FJ) 貝本	【ANK-2966-00-00】SMSを利用した即時決済サービスの導入
*	v39.00.00	2018/09/14	 FJ) 原田	【IT1-2018-0000153】収納機関別入金集計表（卸）の出力イメージ不備対応
*	v39.00.00	2018/09/14	 FJ) 原田	【ANK-3478-00-00】卸２社目対応
*	v39.01.00	2018/11/15	 FJ) 原田	【IT1-2018-0000200】収納機関別入金集計表（卸）の出力イメージ不備対応
*	v52.00.00	2020/10/08	 GDC)Eric	【ANK-3838-00-00】
 *  v52.00.01   2021/01/23   FJ)星野    【IT1-2021-0000009】
*	v56.00.00	2021/10/19	 FJ) 山地	【ANK-4119-00-00】印紙税計算処理改善対応
*	v56.00.01	2021/11/11	 FJ) 山地	【IT1-2021-0000085】印紙税出力対象不備対応
*	v66.00.00	2023/06/15	GDC)J.Zabala	【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFM105;
import eo.business.util.file.JBSbatCHIFM107;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JCHCommonFormatUtil;
import eo.common.util.JCHStampDutyUtil;
import eo.common.util.JCHStringUtil;
import eo.common.util.JPCUtilCommon;
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;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHShunokknBetuNknInfShuk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** SQL定義キー(CH_SELECT_005)*/
	private static final String ZM_M_CD_NM_KANRI_CH_SELECT_005 = "CH_SELECT_005";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	
	/** 退避．キー項目１ */
	private String befSaveKey1 = null;
	
	/** 退避．キー項目２ */
	private String befSaveKey2 = null;
	
	/** 退避．キー項目３ */
	private String befSaveKey3 = null;
	
	/** 退避．キー項目４ */
	private String befSaveKey4 = null;
	
	/** 退避．キー項目５ */
	private String befSaveKey5 = null;

	/** 入力．キー項目１ */
	private String inSaveKey1 = null;
	
	/** 入力．キー項目２ */
	private String inSaveKey2 = null;
	
	/** 入力．キー項目３ */
	private String inSaveKey3 = null;
	
	/** 入力．キー項目４ */
	private String inSaveKey4 = null;
	
	/** 入力．キー項目５ */
	private String inSaveKey5 = null;
	
	/** ファイル編集用 */
	private HashMap<String, String> fileEdit = null;
	
	/** 集計項目（明細） */
	private HashMap<String, BigDecimal> shukMeisaiMap = null;
	
	/** 集計項目（小計） */
	private HashMap<String, BigDecimal> shukSyokeiMap = null;
	
	/** 集計項目（入金登録分合計） */
	private HashMap<String, BigDecimal> shukGkAddMap = null;
	
	/** 集計項目（バッチ入金分合計） */
	private HashMap<String, BigDecimal> shukGkBatMap = null;
	
	/** 集計項目（合計） */
	private HashMap<String, BigDecimal> shukGoukeiMap = null;
	
	// ANK-4415-00-00 ADD START
	/** 退避．（総合計（口座振替）） */
	private HashMap<String, BigDecimal> soGokeiMap = null; 
	// ANK-4415-00-00 ADD END
	
	/** 退避．収納機関 */
	private HashMap<String, String> shunoKikanCdMap = null;
	
	/** 合計行出力区分 */
	private HashMap<String, Boolean> goukeiLineOutMap = null;
	
	/** 退避．サマリー行出力（日次） */
	private HashMap<String, String> samaryDateMap = null;
	
	/** 退避．サマリー行出力（月次） */
	private HashMap<String, String> samaryMonthMap = null;
	
	/** 請求収納業務共通クラス */
	private JCHbatSeikyKaknoBusinessUtil chBusinessUtil = null;
	
	/** 編集用文字列（月度） */
	private static final String MONTH = "月度";
	
	/** 編集用文字列（小計） */
	private static final String SMALL_SUM = "小計";
	
	/** 編集用文字列（入金登録分合計） */
	private static final String GK_ADD_SUM = "入金登録分合計";
	
	/** 編集用文字列（バッチ入金分合計） */
	private static final String GK_BT_SUM = "バッチ入金分合計";
	
	/** 編集用文字列（合計） */
	private static final String GOUKEI_SUM = "合計";
	
	// ANK-4415-00-00 ADD START
	/** 編集用文字列（総合計） */
	private static final String SOGOUKEI_SUM = "総合計";
	// ANK-4415-00-00 ADD END
	
	/** 編集用 文字数制限値（１５） */
	private static final int MOJISUU_15 = 15;
	
	/** 編集用 文字数制限値（３０） */
	private static final int MOJISUU_30 = 30;
	
	// IT1-2018-0000153 ADD START
	/** 編集用 収納機関名（卸先事業者） */
	private static final String SHUNOKIKAN_NM_ORSJGS = "卸先事業者";
	// IT1-2018-0000153 ADD END
	
// ANK-3838-00-00対応 20201117 星野 ADD START
	/** 編集用文字列（コンビニ（コンビニ等）） */
	private static final String CVSTORE_ETC = "コンビニ（コンビニ等）";

	/** 編集用文字列（コンビニ（コンビニ等：リアル）） */
	private static final String CVSTORE_ETC_REAL = "コンビニ（コンビニ等：リアル）";

	/** 編集用文字列（顧客負担） */
	private static final String CUST_FTN = "顧客負担";

	/** 編集用文字列（企業負担） */
	private static final String COMP_FTN = "企業負担";
// ANK-3838-00-00対応 20201117 星野 ADD END

	/** フリー項目 */
	private String freeItem = null;
	
	/** フリー項目:"0"（日次） */
	private static final String DAY_PROCESS = "0";
	
	/** フリー項目:"1"（月次） */
	private static final String MONTH_PROCESS = "1";
	
	/** コンビニ会社名フラグ */
	private boolean cvsCompNmFlg = true;
	
	/** 入金予定日フラグ */
	private boolean nkinRsvFlg = true;

	/** 収納管理帳票処理区分 */
	private HashMap<String, String> shunoKbnMap = null;

	/** 収入印紙判定金額 */
	private BigDecimal receiptAmnt = null;
	
	/** 収入印紙マスクラグ判定金額退避マップ */
	private Map<String, BigDecimal> inshiMaskAmntMap = new HashMap<String, BigDecimal> ();
	
	// IT1-2018-0000200 ADD START
	/** 卸先事業者リスト */
	private String[]  orsKey = { "80"
									,"81"
									};
	// IT1-2018-0000200 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);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		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 + "]");
		
		//初期化（集計項目）
		shukMeisaiMap = formSyukei();
		shukSyokeiMap = formSyukei();
		shukGkAddMap = formSyukei();
		shukGkBatMap = formSyukei();
		shukGoukeiMap = formSyukei();
		// ANK-4415-00-00 ADD START
		soGokeiMap = formSyukei();
		// ANK-4415-00-00 ADD END
		
		// フリー項目取得
		freeItem = super.freeItem;
		
		// コード名称管理情報取得
		// 収納機関マップ初期化
		this.shunoKikanCdMap = new HashMap<String, String>();
		this.goukeiLineOutMap = new HashMap<String, Boolean>();
		// 収納機関取得
		shunoKikanCdMap = makeShunoKikanMap(JZM0171Constant.CD00911);
		
		//v32.00.00 ADD START
		JACbatParamUtil paramUtil = new JACbatParamUtil(super.commonItem);
		
		//業務パラメータ管理に設定された、入金方法「通常」「リアル」のコードと名称を取得。
		//[0:コード][1:名称]
		String[] nyknAddWayReal = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_NYKN_ADDWAY_CD_RE).split(JACStrConst.COLON);
		String[] nyknAddWayOnline = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_NYKN_ADDWAY_CD_ON).split(JACStrConst.COLON);
		paramUtil.close();
		
		//収納機関マップ追加
		shunoKikanCdMap.put(nyknAddWayReal[0], nyknAddWayReal[1]);
		shunoKikanCdMap.put(nyknAddWayOnline[0], nyknAddWayOnline[1]);
// ANK-3838-00-00対応 20201117 星野 ADD START
		shunoKikanCdMap.put(JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_CUST, CVSTORE_ETC);
		shunoKikanCdMap.put(JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_COMP, CVSTORE_ETC);
		shunoKikanCdMap.put(JACStrConst.SHNKKNCD_CVSTORE_REAL_CUST, CVSTORE_ETC_REAL);
		shunoKikanCdMap.put(JACStrConst.SHNKKNCD_CVSTORE_REAL_COMP, CVSTORE_ETC_REAL);
// ANK-3838-00-00対応 20201117 星野 ADD END
		
		//合計行出力区分マップ追加
		this.goukeiLineOutMap.put(nyknAddWayReal[0], false);
		this.goukeiLineOutMap.put(nyknAddWayOnline[0], false);
		//v32.00.00 ADD END
		
		// IT1-2018-0000200 ADD START
		this.goukeiLineOutMap.put(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS, false);
		// IT1-2018-0000200 ADD END
		
		// 収納管理帳票処理区分取得
		shunoKbnMap = makeShunoKikanMap(JZM0171Constant.CD01593);
		// コード「１」の場合は空文字を取得できるようにここでセットしておく
		shunoKbnMap.put("1", "");
		
		// 業務パラメータ取得
		this.getWorkParam();
		
		chBusinessUtil = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 集計項目の初期化をします。
	 * @return shukeiMap　集計項目マップ
	 */
	private HashMap<String, BigDecimal> formSyukei()
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][formSyukei]");
		
		HashMap<String, BigDecimal> shukeiMap = new HashMap<String, BigDecimal>();
		shukeiMap.put(JBSbatCHIFM107.SEIKY_CNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.SEIKY_AMNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.SHUNO_ZM_CNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.SHUNO_ZM_AMNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.MI_SHUNO_ZM_CNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.SHUNO_MI_CNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.SHUNO_MI_AMNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.ZAN_SHUNO_MI_CNT, BigDecimal.ZERO);
		shukeiMap.put(JBSbatCHIFM107.ZAN_SHUNO_MI_AMNT, BigDecimal.ZERO);
		
		assert shukeiMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][formSyukei][shukeiMap=" + shukeiMap.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][formSyukei]");
		return shukeiMap;
	}

	/**
	 * 業務パラメータを取得し、サマリー行出力マップを作成します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void getWorkParam() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getWorkParam]");
		
		JACbatParamUtil paramUtil = new JACbatParamUtil(super.commonItem);
		
		// 収納機関マップ初期化
		this.samaryDateMap = new HashMap<String, String>();
		this.samaryMonthMap = new HashMap<String, String>();
		
		// 日次の場合
		if(DAY_PROCESS.equals(freeItem))
		{
			this.samaryDateMap.put(JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY));
			this.samaryDateMap.put(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_DAY, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_DAY));
			this.samaryDateMap.put(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_DAY, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_DAY));
			this.samaryDateMap.put(JACStrConst.WAKPARA_CH_GK_ADD_OUTPUT_DAY, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_GK_ADD_OUTPUT_DAY));
			this.samaryDateMap.put(JACStrConst.WAKPARA_CH_GK_BAT_OUTPUT_DAY, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_GK_BAT_OUTPUT_DAY));
		}
		
		// 月次の場合
		else if(MONTH_PROCESS.equals(freeItem))
		{
			this.samaryMonthMap.put(JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON));
			this.samaryMonthMap.put(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_MON, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_MON));
			this.samaryMonthMap.put(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_MON, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_MON));
			this.samaryMonthMap.put(JACStrConst.WAKPARA_CH_GK_ADD_OUTPUT_MON, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_GK_ADD_OUTPUT_MON));
			this.samaryMonthMap.put(JACStrConst.WAKPARA_CH_GK_BAT_OUTPUT_MON, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_GK_BAT_OUTPUT_MON));
			// ANK-4415-00-00 ADD START
			this.samaryMonthMap.put(JACStrConst.WAKPARA_CH_SOGOKE_OUTPUT_MON, paramUtil.getGyoumuParameter(JACStrConst.WAKPARA_CH_SOGOKE_OUTPUT_MON));
			// ANK-4415-00-00 ADD START
		}

		
		paramUtil.close();
		
		assert samaryMonthMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][getWorkParam][samaryMonthMap=" + samaryMonthMap.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getWorkParam]");
	}

	/**
	 * 収納機関コードマップを作成します。
	 * @param String cdSbt コード種別
	 * @throws Exception 業務サービス内で発生した例外全般
	 * @return HashMap
	 */
	private HashMap<String, String> makeShunoKikanMap(String cdSbt) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeShunoKikanMap]");
		
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		HashMap<String, String>retMap = new HashMap<String, String>();
		// コード種別コード
		whereParam.setValue(cdSbt);
		// 適用開始年月日
		whereParam.setValue(super.opeDate);
		// 適用終了年月日
		whereParam.setValue(super.opeDate);

		// SQL実行
		executeZM_M_CD_NM_KANRI_CH_SELECT_005(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_ZM_M_CD_NM_KANRI.selectNext(); 
		
		// 取得結果判定
		if (selectMap != null)
		{
			while (selectMap != null)
			{
				//収納機関マップに格納する
				//KEY（コード区分）:VALUE（コード区分名称）
				String cdDiv = selectMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV);
				retMap.put(cdDiv, selectMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
				//収納機関の場合のみ合計行出力用マップを作成する
				// IT1-2018-0000200 MOD START
				//if (JZM0171Constant.CD00911.equals(cdSbt))
				if (JZM0171Constant.CD00911.equals(cdSbt)
						&& !checkOrs(cdDiv)
				// IT1-2018-0000200 MOD END
// ANK-3838-00-00対応 20201117 星野 ADD START
						&& !checkCvsEtc(cdDiv)
// ANK-3838-00-00対応 20201117 星野 ADD END
				)
				{
					this.goukeiLineOutMap.put(cdDiv, false);
				}
				selectMap = db_ZM_M_CD_NM_KANRI.selectNext();
			}
		}
		else
		{
			// ログ出力（【最重要】ＤＢ未存在エラー）
			String[] msgParam = new String[]{ JBSbatZM_M_CD_NM_KANRI.TABLE_NAME, whereParam.getList().toString() + "(" + cdSbt + ")"};
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeShunoKikanMap]");

		return retMap;
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem 入力情報
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap = " + inMap.getMap().toString() + "]") : true;
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();

		// 入力キー初期化
		inSaveKey1 = null;
		inSaveKey2 = null;
		inSaveKey3 = null;
		inSaveKey4 = null;
		inSaveKey5 = null;
		
		if(inMap != null)
		{
			// 収納管理入金情報．会計年月の月末を基準日として印紙対象金額を取得する
			String seikyYM = inMap.getString(JBSbatCHIFM105.SEIKY_YM);
			String endDate = JBSbatDateUtil.getEndOfMonth(seikyYM);
			receiptAmnt = getInshiMaskAmount(seikyYM + endDate);

			//入力・キー項目の作成
			makeKeySubject(inMap);
		}
		
		//収納機関別入金表作成
		{
			if(befSaveKey1 != null && !befSaveKey1.equals(inSaveKey1))
			{
				//明細出力
				outMap = makeOutputMeisai(inMap);
				outputInItem.addOutMapList(outMap);
				
				// 日次の場合
				if(DAY_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_DAY))
					{
						//小計出力集計キー１
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_DAY))
					{
						//小計出力集計キー２
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_GK_ADD_OUTPUT_DAY))
					{
						//入金登録分合計出力
						outMap = makeOutputGkAdd(inMap);
						outputInItem.addOutMapList(outMap);
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_GK_BAT_OUTPUT_DAY))
					{
						//バッチ入金分合計出力
						outMap = makeOutputGkBat(inMap);
						outputInItem.addOutMapList(outMap);
					}
				}
				// 月次の場合
				else if(MONTH_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
					}

					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_MON))
					{
						//小計出力集計キー１
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
					}
					
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_MON))
					{
						//小計出力集計キー２
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
					}
					
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_GK_ADD_OUTPUT_MON))
					{
						//入金登録分合計出力
						outMap = makeOutputGkAdd(inMap);
						outputInItem.addOutMapList(outMap);
					}
					
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_GK_BAT_OUTPUT_MON))
					{
						//バッチ入金分合計出力
						outMap = makeOutputGkBat(inMap);
						outputInItem.addOutMapList(outMap);
					}
				}
				
				//合計出力

				outMap = makeOutputGokei(inMap, null);
				outputInItem.addOutMapList(outMap);
				
				// ANK-4415-00-00 ADD START
				// 総合計出力処理
				// 収納機関コード
				String shunoKikanCd = fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD);
				if (JACStrConst.SHNKKNCD_BANK_KOZA_SMBCFS.equals(shunoKikanCd) 
						|| JACStrConst.SHNKKNCD_BANK_KOZA_YUCHO_SMBCFS.equals(shunoKikanCd)) {
					outMap = makeOutputSoGokei(inMap, shunoKikanCd);
					outputInItem.addOutMapList(outMap);
				}
				// ANK-4415-00-00 ADD END
				
				//退避．収納機関マップ更新
				goukeiLineOutMap.put(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD), true);
				
				//最終レコード以外の場合
				if (inMap != null)
				{
					//退避情報初期化
					befSaveKey1 = null;
					befSaveKey2 = null;
					befSaveKey3 = null;
					befSaveKey4 = null;
					befSaveKey5 = null;
					shukMeisaiMap = formSyukei();
					// 第一キーのブレーク時は小計出力有無にかかわらず小計を初期化しておく
					shukSyokeiMap = formSyukei();
					shukGkAddMap = formSyukei();
					shukGkBatMap = formSyukei();
					shukGoukeiMap = formSyukei();
					cvsCompNmFlg = true;
					nkinRsvFlg = true;
				}
			}
			else if (befSaveKey2 != null && !befSaveKey2.equals(inSaveKey2))
			{
				//明細出力
				outMap = makeOutputMeisai(inMap);
				outputInItem.addOutMapList(outMap);
				
				// 日次の場合
				if(DAY_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_DAY))
					{
						//小計出力集計キー１
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_DAY))
					{
						//小計出力集計キー２
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				// 月次の場合
				else if(MONTH_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE1_MON))
					{
						//小計出力集計キー１
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_MON))
					{
						//小計出力集計キー２
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				
				//最終レコード以外の場合
				if (inMap != null)
				{
					//退避情報初期化
					befSaveKey2 = null;
					befSaveKey3 = null;
					befSaveKey4 = null;
					befSaveKey5 = null;
					shukMeisaiMap = formSyukei();
					cvsCompNmFlg = true;
					nkinRsvFlg = true;
				}
			}
			else if (befSaveKey3 != null && !befSaveKey3.equals(inSaveKey3))
			{
				//明細出力
				outMap = makeOutputMeisai(inMap);
				outputInItem.addOutMapList(outMap);
				
				// 日次の場合
				if(DAY_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY))
					{
						
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_DAY))
					{
						//小計出力集計キー２
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				// 月次の場合
				else if(MONTH_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_SYUKE2_MON))
					{
						//小計出力集計キー２
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				
				//最終レコード以外の場合
				if (inMap != null)
				{
					//退避情報初期化
					befSaveKey3 = null;
					befSaveKey4 = null;
					befSaveKey5 = null;
					shukMeisaiMap = formSyukei();
					cvsCompNmFlg = false;
					nkinRsvFlg = true;
				}
			}
			else if (befSaveKey4 != null && !befSaveKey4.equals(inSaveKey4))
			{
				//明細出力
				outMap = makeOutputMeisai(inMap);
				outputInItem.addOutMapList(outMap);
				
				// 日次の場合
				if(DAY_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY))
					{
						
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				// 月次の場合
				else if(MONTH_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}

				//最終レコード以外の場合
				if (inMap != null)
				{
					//退避情報初期化
					befSaveKey4 = null;
					befSaveKey5 = null;
					shukMeisaiMap = formSyukei();
					cvsCompNmFlg = false;
					nkinRsvFlg = false;
				}
			}
			else if (befSaveKey5 != null && !befSaveKey5.equals(inSaveKey5))
			{
				//明細出力
				outMap = makeOutputMeisai(inMap);
				outputInItem.addOutMapList(outMap);
				
				// 日次の場合
				if(DAY_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryDateMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_DAY))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				// 月次の場合
				else if(MONTH_PROCESS.equals(freeItem))
				{
					if (isOut(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SYOKEI_OUTPUT_MON))
					{
						//小計出力
						outMap = makeOutputShokei(inMap);
						outputInItem.addOutMapList(outMap);
						//最終レコード以外の場合
						if (inMap != null)
						{
							shukSyokeiMap = formSyukei();
						}
					}
				}
				
				//最終レコード以外の場合
				if (inMap != null)
				{
					//退避情報初期化
					befSaveKey5 = null;
					shukMeisaiMap = formSyukei();
					cvsCompNmFlg = false;
					nkinRsvFlg = false;
				}
			}
		}
		
		// 最終レコード以外の場合
		if (inMap != null)
		{
			//集計処理
			{
				//集計項目（明細）を計算する
				shukMeisaiMap = doMeisaiSummary(inMap, shukMeisaiMap);
				
				//集計項目（小計）， 集計項目（合計）を計算する
				shukSyokeiMap = doGoukeiSummary(inMap, shukSyokeiMap);
				shukGoukeiMap = doGoukeiSummary(inMap, shukGoukeiMap);
				
				//入力．処理区分 ＝ "2"（オンライン）の場合
				if (JACStrConst.TRN_DIV_ONLINE.equals(inMap.get(JBSbatCHIFM105.DIV_TRAN)))
				{
					//集計項目（入金登録分合計）計算を行う
					shukGkAddMap = doGoukeiSummary(inMap, shukGkAddMap);
				}
				//入力．処理区分 ＝ "1"（バッチ）の場合
				if (JACStrConst.TRN_DIV_BAT.equals(inMap.get(JBSbatCHIFM105.DIV_TRAN)))
				{
					//集計項目（バッチ入金分合計）の計算を行う
					shukGkBatMap = doGoukeiSummary(inMap, shukGkBatMap);
				}
				// ANK-4415-00-00 ADD START
				// 総合計出力処理
				if (JACStrConst.SHNKKNCD_BANK_KOZA_SMBCFS.equals(inMap.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) 
						|| JACStrConst.SHNKKNCD_BANK_KOZA_YUCHO_SMBCFS.equals(inMap.get(JBSbatCHIFM105.SHUNOKIKAN_CD))) 
				{
					soGokeiMap = doGoukeiSummary(inMap, soGokeiMap);
				}
				// ANK-4415-00-00 ADD END
			}
			//ファイル編集用情報退避
			makeSaveInfo(inMap);
			
			//1件目のレコードの場合
			if(!outputInItem.isOutMapList())
			{
				outputInItem.addOutMapList(inMap);
				return outputInItem;
			}
			
			return outputInItem;
		}
		// 最終レコードの場合
		else if(DAY_PROCESS.equals(freeItem) || MONTH_PROCESS.equals(freeItem))
		{
			
			//初期化（集計項目）
			shukMeisaiMap = formSyukei();
			shukSyokeiMap = formSyukei();
			shukGkAddMap = formSyukei();
			shukGkBatMap = formSyukei();
			shukGoukeiMap = formSyukei();
			
			//合計行出力区分が false のデータを取得
			Set<String> shunoKikanCdSet = goukeiLineOutMap.keySet();
			for(String shunoKikanCd : shunoKikanCdSet)
			{
				if(!goukeiLineOutMap.get(shunoKikanCd))
				{
					//未出力収納機関コード合計行出力
					outMap = makeOutputGokei(inMap, shunoKikanCd);
					outputInItem.addOutMapList(outMap);
					
					// ANK-4415-00-00 ADD START
					// 総合計出力処理
					// 収納機関コード
					if (JACStrConst.SHNKKNCD_BANK_KOZA_SMBCFS.equals(shunoKikanCd) 
							|| JACStrConst.SHNKKNCD_BANK_KOZA_YUCHO_SMBCFS.equals(shunoKikanCd)) 
					{
						outMap = makeOutputSoGokei(inMap, shunoKikanCd);
						outputInItem.addOutMapList(outMap);
					}
					// ANK-4415-00-00 ADD END
				}
			}
		}
		
		assert outputInItem != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][execute][outputInItem=" + outputInItem.getOutMapList().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		// 出力フラグ設定
		outMap.setOutFlg(true);
		return outputInItem;

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * ファイル編集用情報を退避します
	 * @param inMap　入力電文
	 * @throws Exception 
	 */
	private void makeSaveInfo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSaveInfo]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeKeySubject][inMap=" + inMap.getMap().toString() + "]") : true;
		
		//退避・キー項目
		befSaveKey1 = inSaveKey1;
		befSaveKey2 = inSaveKey2;
		befSaveKey3 = inSaveKey3;
		befSaveKey4 = inSaveKey4;
		befSaveKey5 = inSaveKey5;
		
		//ファイル編集用情報
		fileEdit = new HashMap<String, String>();
		
		//退避．会計年月
		fileEdit.put(JBSbatCHIFM105.SEIKY_YM, inMap.getString(JBSbatCHIFM105.SEIKY_YM));
		//退避．収納機関コード
		fileEdit.put(JBSbatCHIFM105.SHUNOKIKAN_CD, inMap.getString(JBSbatCHIFM105.SHUNOKIKAN_CD));
		//退避．集計キー１
		fileEdit.put(JBSbatCHIFM105.KEY_SHUK1, inMap.getString(JBSbatCHIFM105.KEY_SHUK1));
		//退避．集計キー２
		fileEdit.put(JBSbatCHIFM105.KEY_SHUK2, inMap.getString(JBSbatCHIFM105.KEY_SHUK2));
		//退避．集計キー３
		fileEdit.put(JBSbatCHIFM105.KEY_SHUK3, inMap.getString(JBSbatCHIFM105.KEY_SHUK3));
		//退避．処理区分
		fileEdit.put(JBSbatCHIFM105.DIV_TRAN, inMap.getString(JBSbatCHIFM105.DIV_TRAN));
		//退避．収納金融機関名
		fileEdit.put(JBSbatCHIFM105.SHUNO_BANK_NM, inMap.getString(JBSbatCHIFM105.SHUNO_BANK_NM));
		//退避．収納機関支店名
		fileEdit.put(JBSbatCHIFM105.SHUNO_BANK_SHITEN_NM, inMap.getString(JBSbatCHIFM105.SHUNO_BANK_SHITEN_NM));
		//退避．クレジット会社コード
		fileEdit.put(JBSbatCHIFM105.CRECARD_COMP_CD, inMap.getString(JBSbatCHIFM105.CRECARD_COMP_CD));
		//退避．クレジット交換コード
		fileEdit.put(JBSbatCHIFM105.CREDIT_KOKAN_CD, inMap.getString(JBSbatCHIFM105.CREDIT_KOKAN_CD));
		//退避．クレジットカード会社名
		fileEdit.put(JBSbatCHIFM105.CRECARD_COMP_NM, inMap.getString(JBSbatCHIFM105.CRECARD_COMP_NM));
		//退避．コンビニ会社名
		fileEdit.put(JBSbatCHIFM105.SHUNO_CVSTORE_COMP_NM, inMap.getString(JBSbatCHIFM105.SHUNO_CVSTORE_COMP_NM));
		//退避．債権回収委託会社名
		fileEdit.put(JBSbatCHIFM105.SKN_SKNKSITKCM_NM, inMap.getString(JBSbatCHIFM105.SKN_SKNKSITKCM_NM));
		//退避．部署名
		fileEdit.put(JBSbatCHIFM105.JISHA_ORG_NM, inMap.getString(JBSbatCHIFM105.JISHA_ORG_NM));
		//退避．請求先名
		fileEdit.put(JBSbatCHIFM105.SIKY_SAKI_NM, inMap.getString(JBSbatCHIFM105.SIKY_SAKI_NM));
		//退避．入金予定日
		fileEdit.put(JBSbatCHIFM105.NKIN__RSVD, JPCUtilCommon.formatDate(inMap.getString(JBSbatCHIFM105.NKIN__RSVD)));
		//退避．収納日
		fileEdit.put(JBSbatCHIFM105.OUT_ORG_SHUNO_YMD, JPCUtilCommon.formatDate(inMap.getString(JBSbatCHIFM105.OUT_ORG_SHUNO_YMD)));
		
		assert fileEdit != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSaveInfo][fileEdit = " + fileEdit.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSaveInfo]");
	}

	/**
	 * キー項目を作成します
	 * @param inMap　入力電文
	 * @throws Exception
	 */
	private void makeKeySubject(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeKeySubject]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeKeySubject][inMap=" + inMap.getMap().toString() + "]") : true;
		
		//キー項目１
		inSaveKey1 = makeStr(inMap.getString(JBSbatCHIFM105.SEIKY_YM), inMap
				.getString(JBSbatCHIFM105.SHUNOKIKAN_CD));
		//キー項目２
		inSaveKey2 = makeStr(inMap.getString(JBSbatCHIFM105.SEIKY_YM), inMap
				.getString(JBSbatCHIFM105.SHUNOKIKAN_CD), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK1));
		//キー項目３
		inSaveKey3 = makeStr(inMap.getString(JBSbatCHIFM105.SEIKY_YM), inMap
				.getString(JBSbatCHIFM105.SHUNOKIKAN_CD), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK1), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK2));
		//キー項目４
		inSaveKey4 = makeStr(inMap.getString(JBSbatCHIFM105.SEIKY_YM), inMap
				.getString(JBSbatCHIFM105.SHUNOKIKAN_CD), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK1), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK2), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK3));
		//キー項目５
		inSaveKey5 = makeStr(inMap.getString(JBSbatCHIFM105.SEIKY_YM), inMap
				.getString(JBSbatCHIFM105.SHUNOKIKAN_CD), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK1), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK2), inMap
				.getString(JBSbatCHIFM105.KEY_SHUK3), inMap
				.getString(JBSbatCHIFM105.DIV_TRAN));

		assert inSaveKey1 != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKeySubject][key1 = " + inSaveKey1 + "]") : true;
		assert inSaveKey2 != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKeySubject][key2 = " + inSaveKey2 + "]") : true;
		assert inSaveKey3 != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKeySubject][key3 = " + inSaveKey3 + "]") : true;
		assert inSaveKey4 != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKeySubject][key4 = " + inSaveKey4 + "]") : true;
		assert inSaveKey5 != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKeySubject][key5 = " + inSaveKey5 + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKeySubject]");
	}

	/**
	 * 計算方法（合計）で集計項目を計算します
	 * @param inMap　入力電文
	 * @param inSyukMap　入力集計項目マップ
	 * @return syukMap　集計項目マップ
	 * @throws Exception
	 */
	private HashMap<String, BigDecimal> doGoukeiSummary(JBSbatServiceInterfaceMap inMap, HashMap<String, BigDecimal> inSyukMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][doGoukeiSummary]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][doGoukeiSummary][inMap=" + inMap.getMap().toString() + "]") : true;
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][doGoukeiSummary][syukMap=" + inSyukMap.toString() + "]") : true;
		
		HashMap<String, BigDecimal> syukMap = inSyukMap;
		
		//入力．処理区分 ≠ "3"（取消）の場合
		if (!JACStrConst.TRN_DIV_CL.equals(inMap.get(JBSbatCHIFM105.DIV_TRAN)))
		{
			syukMap = doMeisaiSummary(inMap, syukMap);
		}

		assert syukMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][doGoukeiSummary][syukMap = " + syukMap.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][doGoukeiSummary]");
		return syukMap;		
	}

	/**
	 * 計算方法（明細）で集計項目を計算します
	 * @param inMap　入力電文
	 * @param inSyukMap　入力集計項目マップ
	 * @return syukMap　集計項目マップ
	 * @throws Exception 
	 */
	private HashMap<String, BigDecimal> doMeisaiSummary(JBSbatServiceInterfaceMap inMap, HashMap<String, BigDecimal> inSyukMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][doMeisaiSummary]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][doMeisaiSummary][inMap=" + inMap.getMap().toString() + "]") : true;
		
		HashMap<String, BigDecimal> syukMap = inSyukMap;
		
		// 請求件数＋　１
		syukMap.put(JBSbatCHIFM107.SEIKY_CNT, syukMap.get(
				JBSbatCHIFM107.SEIKY_CNT).add(BigDecimal.ONE));
		// 請求金額＋　入金額
		syukMap.put(JBSbatCHIFM107.SEIKY_AMNT, syukMap.get(
				JBSbatCHIFM107.SEIKY_AMNT).add(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT)));

		// 口座振替結果コード ＝ "0" の場合
		if(JACStrConst.HURIKAE_KEKKA_SEIJO.equals(inMap.get(JBSbatCHIFM105.KHRI_RSLT_CD)))
		{
			// 収納済件数＋　１
			syukMap.put(JBSbatCHIFM107.SHUNO_ZM_CNT, syukMap.get(
				JBSbatCHIFM107.SHUNO_ZM_CNT).add(BigDecimal.ONE));
			
			// 収納済金額＋　入金額
			syukMap.put(JBSbatCHIFM107.SHUNO_ZM_AMNT, syukMap.get(
					JBSbatCHIFM107.SHUNO_ZM_AMNT).add(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT)));
			
// IT1-2021-0000085 MOD START
// ANK-4119-00-00 MOD START
//			//入力．入金額　＜　印紙税対象金額　の場合
//			if(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT).compareTo(this.receiptAmnt) < 0)
			// 以下のいずれかの条件の場合、印紙税対象金額未満として扱う
			// ・入力．入金額　＜　印紙税対象金額　の場合
			// ・収納機関コード　＝　"90：銀行振込"　の場合
			// ・入力．入金額　≧　印紙税対象金額　かつ　収納機関コード　＝　「"33：コンビニ等（通：顧）"　または　"35：コンビニ等（リ：顧）"」　かつ
			// 　負担方式　＝　顧客負担　の場合
			if(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT).compareTo(this.receiptAmnt) < 0
				||JACStrConst.SHNKKNCD_BANK_HRIKOMI.equals(inMap.getString(JBSbatCHIFM105.SHUNOKIKAN_CD))
				||(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT).compareTo(this.receiptAmnt) >= 0
					&&(JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_CUST.equals(inMap.get(JBSbatCHIFM105.SHUNOKIKAN_CD))
//					||JACStrConst.SHNKKNCD_CVSTORE_REAL_CUST.equals(inMap.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))))
					||JACStrConst.SHNKKNCD_CVSTORE_REAL_CUST.equals(inMap.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
					&& JACStrConst.FTN_HOSHIKI_KO.equals(((inMap.get(JBSbatCHIFM105.KEY_SHUK1)).toString()).trim())))
// ANK-4119-00-00 MOD END
// IT1-2021-0000085 MOD END
			{
				//印紙税対象金額未満収納済件数＋　１
				syukMap.put(JBSbatCHIFM107.MI_SHUNO_ZM_CNT, syukMap.get(
						JBSbatCHIFM107.MI_SHUNO_ZM_CNT).add(BigDecimal.ONE));
				
				//印紙税対象金額未満収納済金額＋　入金額
				syukMap.put(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT, syukMap.get(
						JBSbatCHIFM107.MI_SHUNO_ZM_AMNT).add(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT)));
			}
			else
			{
				//印紙税対象金額以上収納済件数＋　１
				syukMap.put(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT, syukMap.get(
						JBSbatCHIFM107.IJ_SHUNO_ZM_CNT).add(BigDecimal.ONE));
				
				//印紙税対象金額以上収納済金額＋　入金額
				syukMap.put(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT, syukMap.get(
						JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT).add(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT)));
			}
		}
		else
		{
			// 未収納件数＋　１
			syukMap.put(JBSbatCHIFM107.SHUNO_MI_CNT, syukMap.get(
					JBSbatCHIFM107.SHUNO_MI_CNT).add(BigDecimal.ONE));
			
			//未収納金額＋　入金額
			syukMap.put(JBSbatCHIFM107.SHUNO_MI_AMNT, syukMap.get(
					JBSbatCHIFM107.SHUNO_MI_AMNT).add(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT)));
		}
		
		// 口座振替結果コード ＝ "1" の場合
		if (JACStrConst.HURIKAE_KEKKA_HUSOKU.equals(inMap.get(JBSbatCHIFM105.KHRI_RSLT_CD)))
		{
			//残高不足件数＋　１
			syukMap.put(JBSbatCHIFM107.ZAN_SHUNO_MI_CNT, syukMap.get(
					JBSbatCHIFM107.ZAN_SHUNO_MI_CNT).add(BigDecimal.ONE));
			
			//残高不足金額＋　入金額
			syukMap.put(JBSbatCHIFM107.ZAN_SHUNO_MI_AMNT, syukMap.get(
					JBSbatCHIFM107.ZAN_SHUNO_MI_AMNT).add(inMap.getBigDecimal(JBSbatCHIFM105.NYUKIN_AMNT)));
		}

		assert syukMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][doMeisaiSummary][syukMap = " + syukMap.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][doMeisaiSummary]");
		
		return syukMap;
	}
	// ANK-4415-00-00 ADD START
	/**
	 * 収納機関別入金表（総合計の場合）
	 * 収納機関別入金表（総合計）を作成します
	 * @param inMap　入力電文
	 * @param shunoKikanCd　収納機関コード
	 * @return outMap　出力情報
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap makeOutputSoGokei(JBSbatServiceInterfaceMap inMap, String shunoKikanCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputSoGokei]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputSoGokei][inMap=" + inMap.getMap().toString() + "]") : true;
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 収納機関コード
		outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, shunoKikanCd);
		// 会計年月
		outMap.set(JBSbatCHIFM107.SEIKY_YM, JACStrConst.KARA_MOJI);
		String seikyYm = fileEdit.get(JBSbatCHIFM105.SEIKY_YM);
		if(2 < seikyYm.length())
		{
			String seikyMonth = JCHCommonFormatUtil.toZeroSuppress(seikyYm.substring(seikyYm.length() - 2));
			outMap.set(JBSbatCHIFM107.SEIKY_YM, this.makeStr(chBusinessUtil.chgHanZenMoji(seikyMonth), MONTH));
		}
		// 収納機関区分名
		outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(shunoKikanCd));
		// 収納金融機関名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, SOGOUKEI_SUM);
		// 収納機関支店名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, JACStrConst.KARA_MOJI);
		// クレジット会社コード
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_CD, JACStrConst.KARA_MOJI);
		// クレジット交換コード
		outMap.set(JBSbatCHIFM107.CREDIT_KOKAN_CD, JACStrConst.KARA_MOJI);
		// クレジットカード会社名
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_NM, SOGOUKEI_SUM);
		// コンビニ会社名
		outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, SOGOUKEI_SUM);
		// 債権回収委託会社名
		outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, SOGOUKEI_SUM);
		// 部署名
		outMap.set(JBSbatCHIFM107.JISHA_ORG_NM, SOGOUKEI_SUM);
		// 請求先名
		outMap.set(JBSbatCHIFM107.SIKY_SAKI_NM, SOGOUKEI_SUM);
		// 入金予定日
		outMap.set(JBSbatCHIFM107.NKIN_RSVD, JACStrConst.KARA_MOJI);
		// 収納日
		outMap.set(JBSbatCHIFM107.OUT_ORG_SHUNO_YMD, JACStrConst.KARA_MOJI);
		
		// 集計項目（合計）を設定
		// 退避.（総合計（口座振替））＝ 退避.（総合計（口座振替））＋　集計項目（合計）

		setSyukei(outMap, soGokeiMap);
		
		// コメント
		outMap.set(JBSbatCHIFM107.COMMENT, JACStrConst.KARA_MOJI);
		
		// 確報日
		outMap.set(JBSbatCHIFM107.KAKHO_YMD, JACStrConst.KARA_MOJI);
		
		//「""」で囲む
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		
		if (isOutSogokei(this.samaryMonthMap, JACStrConst.WAKPARA_CH_SOGOKE_OUTPUT_MON, shunoKikanCd))
		{
		// 出力フラグ設定
		outMap.setOutFlg(true);
		soGokeiMap = formSyukei();
		}
		
		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][makeOutputSoGokei][outputItem = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputSoGokei]");
		
		return outMap;
	}
	// ANK-4415-00-00 ADD END
	/**
	 * 収納機関別入金表（合計）を作成します
	 * @param inMap　入力電文
	 * @param shunoKikanCd　収納機関コード
	 * @return outMap　出力情報
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap makeOutputGokei(JBSbatServiceInterfaceMap inMap, String shunoKikanCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGokei]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGokei][inMap=" + inMap.getMap().toString() + "]") : true;
		assert shunoKikanCd != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGokei][shunoKikanCd=" + shunoKikanCd + "]") : true;
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 収納機関コード
		// 収納機関区分名
		if (shunoKikanCd != null)
		{
			// 未出力収納機関コード合計行出力の場合
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, shunoKikanCd);
			// IT1-2018-0000200 MOD START
			//			// IT1-2018-0000153 MOD START
//			//outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(shunoKikanCd));
//			if(JACStrConst.SHNKKNCD_BIGLOBE.equals(shunoKikanCd)		// ＢＩＧＬＯＢＥ
//					// ANK-3478-00-00 ADD START
//					|| JACStrConst.SHNKKNCD_NIFTY.equals(shunoKikanCd)		// ｎｉｆｔｙ
//					// ANK-3478-00-00 ADD END
//					)
			if (JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals(shunoKikanCd))
			// IT1-2018-0000200 MOD END
			{
				outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, SHUNOKIKAN_NM_ORSJGS);
			}
			else
			{
				outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(shunoKikanCd));
			}
			// IT1-2018-0000153 MOD END
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD));
			// IT1-2018-0000200 MOD START
			//			// IT1-2018-0000153 MOD START
//			//outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
//			if(JACStrConst.SHNKKNCD_BIGLOBE.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ＢＩＧＬＯＢＥ
//					// ANK-3478-00-00 ADD START
//					|| JACStrConst.SHNKKNCD_NIFTY.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ｎｉｆｔｙ
//					// ANK-3478-00-00 ADD END
//					)
			if (JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
			// IT1-2018-0000200 MOD END
			{
				outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, SHUNOKIKAN_NM_ORSJGS);
			}
			else
			{
				outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
			}
			// IT1-2018-0000153 MOD END
		}
		// 会計年月
		outMap.set(JBSbatCHIFM107.SEIKY_YM, JACStrConst.KARA_MOJI);
		String seikyYm = fileEdit.get(JBSbatCHIFM105.SEIKY_YM);
		if(2 < seikyYm.length())
		{
			String seikyMonth = JCHCommonFormatUtil.toZeroSuppress(seikyYm.substring(seikyYm.length() - 2));
			outMap.set(JBSbatCHIFM107.SEIKY_YM, this.makeStr(chBusinessUtil.chgHanZenMoji(seikyMonth), MONTH));
		}
		// 収納金融機関名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, GOUKEI_SUM);
		// 収納機関支店名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, JACStrConst.KARA_MOJI);
		// クレジット会社コード
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_CD, JACStrConst.KARA_MOJI);
		// クレジット交換コード
		outMap.set(JBSbatCHIFM107.CREDIT_KOKAN_CD, JACStrConst.KARA_MOJI);
		// クレジットカード会社名
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_NM, GOUKEI_SUM);
		// コンビニ会社名
		outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, GOUKEI_SUM);
		// 債権回収委託会社名
		outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, GOUKEI_SUM);
		// 部署名
		outMap.set(JBSbatCHIFM107.JISHA_ORG_NM, GOUKEI_SUM);
		// 請求先名
		outMap.set(JBSbatCHIFM107.SIKY_SAKI_NM, GOUKEI_SUM);
		// 入金予定日
		outMap.set(JBSbatCHIFM107.NKIN_RSVD, JACStrConst.KARA_MOJI);
		// 収納日
		outMap.set(JBSbatCHIFM107.OUT_ORG_SHUNO_YMD, JACStrConst.KARA_MOJI);
		
		// 集計項目（合計）を設定
		setSyukei(outMap, shukGoukeiMap);
		// コメント
		outMap.set(JBSbatCHIFM107.COMMENT, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		// 確報日
		outMap.set(JBSbatCHIFM107.KAKHO_YMD, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		
		//「""」で囲む
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));

		// 出力フラグ設定
		outMap.setOutFlg(true);

		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][makeOutputGokei][outputItem = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputGokei]");
		
		return outMap;
	}


	/**
	 * 収納機関別入金表（バッチ入金分合計）を作成します
	 * @param inMap　入力電文
	 * @return outMap　出力情報
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap makeOutputGkBat(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGkBat]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGkBat][inMap=" + inMap.getMap().toString() + "]") : true;

		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 収納機関コード
		outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD));
		// 会計年月
		outMap.set(JBSbatCHIFM107.SEIKY_YM, JACStrConst.KARA_MOJI);
		String seikyYm = fileEdit.get(JBSbatCHIFM105.SEIKY_YM);
		if(2 < seikyYm.length())
		{
			String seikyMonth = JCHCommonFormatUtil.toZeroSuppress(seikyYm.substring(seikyYm.length() - 2));
			outMap.set(JBSbatCHIFM107.SEIKY_YM, this.makeStr(chBusinessUtil.chgHanZenMoji(seikyMonth), MONTH));
		}
		// 収納機関区分名
		// IT1-2018-0000200 MOD START
		// IT1-2018-0000153 MOD START
//		//outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
//		if(JACStrConst.SHNKKNCD_BIGLOBE.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ＢＩＧＬＯＢＥ
//				// ANK-3478-00-00 ADD START
//				|| JACStrConst.SHNKKNCD_NIFTY.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ｎｉｆｔｙ
//				// ANK-3478-00-00 ADD END
//				)
		if(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
		// IT1-2018-0000200 MOD END
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, SHUNOKIKAN_NM_ORSJGS);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
		}
		// IT1-2018-0000153 MOD END
		// 収納金融機関名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, GK_BT_SUM);
		// 収納機関支店名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, JACStrConst.KARA_MOJI);
		// クレジット会社コード
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_CD, JACStrConst.KARA_MOJI);
		// クレジット交換コード
		outMap.set(JBSbatCHIFM107.CREDIT_KOKAN_CD, JACStrConst.KARA_MOJI);
		// クレジットカード会社名
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_NM, GK_BT_SUM);
		// コンビニ会社名
		outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, GK_BT_SUM);

		// v32.00.00 MOD START
		// 債権回収委託会社名
//		outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, JACStrConst.KARA_MOJI);
		if(JACStrConst.NYKN_ADDWAY_CD_REAL.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))
			||(JACStrConst.NYKN_ADDWAY_CD_ON.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))))
		{
			outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, GK_BT_SUM);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, JACStrConst.KARA_MOJI);
		}
		// v32.00.00 MOD END

		// 部署名
		outMap.set(JBSbatCHIFM107.JISHA_ORG_NM, GK_BT_SUM);
		// 請求先名
		outMap.set(JBSbatCHIFM107.SIKY_SAKI_NM, GK_BT_SUM);
		// 入金予定日
		outMap.set(JBSbatCHIFM107.NKIN_RSVD, JACStrConst.KARA_MOJI);
		//収納日
		outMap.set(JBSbatCHIFM107.OUT_ORG_SHUNO_YMD, JACStrConst.KARA_MOJI);
		
		//集計項目（バッチ入金分合計の場合）を設定
		setSyukei(outMap, shukGkBatMap);
		// コメント
		outMap.set(JBSbatCHIFM107.COMMENT, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		// 確報日
		outMap.set(JBSbatCHIFM107.KAKHO_YMD, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
				
		//「""」で囲む
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));

		// 出力フラグ設定
		outMap.setOutFlg(true);

		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][makeOutputGkBat][outputItem = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputGkBat]");
		
		return outMap;
	}

	/**
	 * 収納機関別入金表（入金登録分合計）を作成します
	 * @param inMap　入力電文
	 * @return outMap　出力情報
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap makeOutputGkAdd(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGkAdd]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputGkAdd][inMap=" + inMap.getMap().toString() + "]") : true;
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 収納機関コード
		outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD));
		// 会計年月
		outMap.set(JBSbatCHIFM107.SEIKY_YM, JACStrConst.KARA_MOJI);
		String seikyYm = fileEdit.get(JBSbatCHIFM105.SEIKY_YM);
		if(2 < seikyYm.length())
		{
			String seikyMonth = JCHCommonFormatUtil.toZeroSuppress(seikyYm.substring(seikyYm.length() - 2));
			outMap.set(JBSbatCHIFM107.SEIKY_YM, this.makeStr(chBusinessUtil.chgHanZenMoji(seikyMonth), MONTH));
		}
		// 収納機関区分名
		// IT1-2018-0000200 MOD START
		// IT1-2018-0000153 MOD START
//		//outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
//		if(JACStrConst.SHNKKNCD_BIGLOBE.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ＢＩＧＬＯＢＥ
//				// ANK-3478-00-00 ADD START
//				|| JACStrConst.SHNKKNCD_NIFTY.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ｎｉｆｔｙ
//				// ANK-3478-00-00 ADD END
//				)
		if(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
		// IT1-2018-0000200 MOD END
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, SHUNOKIKAN_NM_ORSJGS);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
		}
		// IT1-2018-0000153 MOD END
		
		// 収納金融機関名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, GK_ADD_SUM);
		// 収納機関支店名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, JACStrConst.KARA_MOJI);
		// クレジット会社コード
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_CD, JACStrConst.KARA_MOJI);
		// クレジット交換コード
		outMap.set(JBSbatCHIFM107.CREDIT_KOKAN_CD, JACStrConst.KARA_MOJI);
		// クレジットカード会社名
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_NM, GK_ADD_SUM);
		// コンビニ会社名
		outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, GK_ADD_SUM);
		
		// v32.00.00 MOD START
		// 債権回収委託会社名
//		outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, JACStrConst.KARA_MOJI);
		if(JACStrConst.NYKN_ADDWAY_CD_REAL.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))
			||(JACStrConst.NYKN_ADDWAY_CD_ON.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))))
		{
			outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, GK_ADD_SUM);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, JACStrConst.KARA_MOJI);
		}
		// v32.00.00 MOD END

		// 部署名
		outMap.set(JBSbatCHIFM107.JISHA_ORG_NM, GK_ADD_SUM);
		// 請求先名
		outMap.set(JBSbatCHIFM107.SIKY_SAKI_NM, GK_ADD_SUM);
		// 入金予定日
		outMap.set(JBSbatCHIFM107.NKIN_RSVD, JACStrConst.KARA_MOJI);
		//収納日
		outMap.set(JBSbatCHIFM107.OUT_ORG_SHUNO_YMD, JACStrConst.KARA_MOJI);
		
		//集計項目（入金登録分合計）を設定
		setSyukei(outMap, shukGkAddMap);
		// コメント
		outMap.set(JBSbatCHIFM107.COMMENT, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		// 確報日
		outMap.set(JBSbatCHIFM107.KAKHO_YMD, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		
		//「""」で囲む
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));

		// 出力フラグ設定
		outMap.setOutFlg(true);

		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][makeOutputGkAdd][outputItem = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputGkAdd]");
		
		return outMap;
	}


	/**
	 * 収納機関別入金表（小計）を作成します
	 * @param inMap　入力電文
	 * @return outMap　出力情報
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap makeOutputShokei(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputShokei]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputShokei][inMap=" + inMap.getMap().toString() + "]") : true;
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 収納機関コード
		outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD));
		// 会計年月
		outMap.set(JBSbatCHIFM107.SEIKY_YM, JACStrConst.KARA_MOJI);
		String seikyYm = fileEdit.get(JBSbatCHIFM105.SEIKY_YM);
		if(2 < seikyYm.length())
		{
			String seikyMonth = JCHCommonFormatUtil.toZeroSuppress(seikyYm.substring(seikyYm.length() - 2));
			outMap.set(JBSbatCHIFM107.SEIKY_YM, this.makeStr(chBusinessUtil.chgHanZenMoji(seikyMonth), MONTH));
		}
		// 収納機関区分名
		// IT1-2018-0000200 MOD START
		// IT1-2018-0000153 MOD START
//		//outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
//		if(JACStrConst.SHNKKNCD_BIGLOBE.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ＢＩＧＬＯＢＥ
//				// ANK-3478-00-00 ADD START
//				|| JACStrConst.SHNKKNCD_NIFTY.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ｎｉｆｔｙ
//				// ANK-3478-00-00 ADD END
//				)
		if(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
		// IT1-2018-0000200 MOD END
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, SHUNOKIKAN_NM_ORSJGS);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
		}
		// IT1-2018-0000153 MOD END
		// 収納金融機関名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, SMALL_SUM);
		
		// 収納機関支店名
		outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, JACStrConst.KARA_MOJI);
		
		// クレジット会社コード
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_CD, JACStrConst.KARA_MOJI);
		
		// クレジット交換コード
		outMap.set(JBSbatCHIFM107.CREDIT_KOKAN_CD, JACStrConst.KARA_MOJI);
		
		// クレジットカード会社名
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_NM, SMALL_SUM);
		
		// コンビニ会社名
		outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, SMALL_SUM);
		
		// 債権回収委託会社名
		outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, SMALL_SUM);
		
		// 部署名
		outMap.set(JBSbatCHIFM107.JISHA_ORG_NM, JACStrConst.KARA_MOJI);
		
		// 請求先名
		outMap.set(JBSbatCHIFM107.SIKY_SAKI_NM, JACStrConst.KARA_MOJI);
		
		// 入金予定日
		outMap.set(JBSbatCHIFM107.NKIN_RSVD, JACStrConst.KARA_MOJI);
		
		//収納日
		outMap.set(JBSbatCHIFM107.OUT_ORG_SHUNO_YMD, JACStrConst.KARA_MOJI);
		
		//集計項目（小計）を設定
		setSyukei(outMap, shukSyokeiMap);
		// コメント
		outMap.set(JBSbatCHIFM107.COMMENT, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		// 確報日
		outMap.set(JBSbatCHIFM107.KAKHO_YMD, JACStrConst.KARA_MOJI);
// IT1-2021-0000009対応 20210123 星野 ADD START
		//「""」で囲む
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));

		// 出力フラグ設定
		outMap.setOutFlg(true);

		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][makeOutputShokei][outputItem = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputShokei]");

		return outMap;
	}


	/**
	 * 集計項目を出力電文に設定します
	 * @param outMap　出力電文
	 * @param syukeiMap　集計項目マップ
	 * @throws Exception 
	 * 
	 */
	// v32.00.00 MOD START
//	private void setSyukei(JBSbatServiceInterfaceMap outMap, HashMap<String, BigDecimal> syukeiMap)
	private void setSyukei(JBSbatServiceInterfaceMap outMap, HashMap<String, BigDecimal> syukeiMap) throws Exception
	// v32.00.00 MOD END
	{

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSyukei]");
		assert syukeiMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSyukei][inMap=" + syukeiMap.toString() + "]") : true;

		// 請求件数
		outMap.set(JBSbatCHIFM107.SEIKY_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.SEIKY_CNT).toString()));
		// 請求金額
		outMap.set(JBSbatCHIFM107.SEIKY_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.SEIKY_AMNT).toString()));
		// 収納済件数
		outMap.set(JBSbatCHIFM107.SHUNO_ZM_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.SHUNO_ZM_CNT).toString()));
		// 収納済金額
		outMap.set(JBSbatCHIFM107.SHUNO_ZM_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.SHUNO_ZM_AMNT).toString()));
		
		//v32.00.00 MOD START
//		// 印紙税対象金額未満収納件数
//		outMap.set(JBSbatCHIFM107.MI_SHUNO_ZM_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.MI_SHUNO_ZM_CNT).toString()));
//		// 印紙税対象金額未満収納金額
//		outMap.set(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT).toString()));
//		// 印紙税対象金額以上収納件数
//		outMap.set(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT).toString()));
//		// 印紙税対象金額以上収納金額
//		outMap.set(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT).toString()));

		//収納機関コードが"リアル"または"通常"の場合、印紙税対象の集計はしない
		if(JACStrConst.NYKN_ADDWAY_CD_REAL.equals(outMap.getString(JBSbatCHIFM107.SHUNOKIKAN_CD))
				||JACStrConst.NYKN_ADDWAY_CD_ON.equals(outMap.getString(JBSbatCHIFM107.SHUNOKIKAN_CD)))
		{
			// 印紙税対象金額未満収納件数
			outMap.set(JBSbatCHIFM107.MI_SHUNO_ZM_CNT, null);
			// 印紙税対象金額未満収納金額
			outMap.set(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT, null);
			// 印紙税対象金額以上収納件数
			outMap.set(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT, null);
			// 印紙税対象金額以上収納金額
			outMap.set(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT, null);
		}
		else
		{
			// 印紙税対象金額未満収納件数
			outMap.set(JBSbatCHIFM107.MI_SHUNO_ZM_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.MI_SHUNO_ZM_CNT).toString()));
			// 印紙税対象金額未満収納金額
			outMap.set(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.MI_SHUNO_ZM_AMNT).toString()));
			// 印紙税対象金額以上収納件数
			outMap.set(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.IJ_SHUNO_ZM_CNT).toString()));
			// 印紙税対象金額以上収納金額
			outMap.set(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.IJ_SHUNO_ZM_AMNT).toString()));
		}
		//v32.00.00 MOD END

		// 未収納件数
		outMap.set(JBSbatCHIFM107.SHUNO_MI_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.SHUNO_MI_CNT).toString()));
		// 未収納金額
		outMap.set(JBSbatCHIFM107.SHUNO_MI_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.SHUNO_MI_AMNT).toString()));
		// 残高不足未収納件数
		outMap.set(JBSbatCHIFM107.ZAN_SHUNO_MI_CNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.ZAN_SHUNO_MI_CNT).toString()));
		// 残高不足未収納金額
		outMap.set(JBSbatCHIFM107.ZAN_SHUNO_MI_AMNT, JPCUtilCommon.formatNumber(syukeiMap.get(JBSbatCHIFM107.ZAN_SHUNO_MI_AMNT).toString()));

		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setSyukei][outputItem = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setSyukei]");
	}

	/**
	 * 小計出力、入金登録分合計出力、バッチ入金分合計出力をするかしないか判断します
	 * @param map　サマリー行出力マップ
	 * @param key　サマリー行特定用キー
	 * @return true　出力する／false　出力しない
	 */
	private boolean isOut(HashMap<String, String> map, String key)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][isOut]");
		assert map != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][isOut][inMap=" + map.toString() + "]") : true;
		
		if (map.get(key) != null)
		{
			String[] shunoKikannCdlist = map.get(key).split(JACStrConst.COMMA);
			
			for(String shunoKikannCd : shunoKikannCdlist)
			{
				//サマリー行出力マップに収納機関管理コードが存在する場合
				if (shunoKikannCd.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][isOut][true]");
					return true;
				}
			}
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][isOut][false]");
		return false;
	}

	/**
	 * 収納機関別入金表（明細）を作成します
	 * @param inMap　入力電文
	 * @return outMap　出力情報
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap makeOutputMeisai(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputMeisai]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputMeisai][inMap=" + inMap.getMap().toString() + "]") : true;
		assert shukMeisaiMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[S][makeOutputMeisai][shukMeisaiMap=" + shukMeisaiMap.toString() + "]") : true;
		
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 収納機関コード
		outMap.set(JBSbatCHIFM107.SHUNOKIKAN_CD, fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD));
		// 会計年月
		outMap.set(JBSbatCHIFM107.SEIKY_YM, JACStrConst.KARA_MOJI);
		String seikyYm = fileEdit.get(JBSbatCHIFM105.SEIKY_YM);
		if(2 < seikyYm.length())
		{
			String seikyMonth = JCHCommonFormatUtil.toZeroSuppress(seikyYm.substring(seikyYm.length() - 2));
			outMap.set(JBSbatCHIFM107.SEIKY_YM, this.makeStr(chBusinessUtil.chgHanZenMoji(seikyMonth), MONTH));
		}
		// 収納機関区分名
		// IT1-2018-0000200 MOD START
		// IT1-2018-0000153 MOD START
//		//outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
//		if(JACStrConst.SHNKKNCD_BIGLOBE.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ＢＩＧＬＯＢＥ
//				// ANK-3478-00-00 ADD START
//				|| JACStrConst.SHNKKNCD_NIFTY.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))		// ｎｉｆｔｙ
//				// ANK-3478-00-00 ADD END
//				)
		if(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)))
		// IT1-2018-0000200 MOD END
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, SHUNOKIKAN_NM_ORSJGS);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.SHUNOKIKAN_NM, shunoKikanCdMap.get(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)));
		}
		// IT1-2018-0000153 MOD END
// ANK-3838-00-00対応 20201117 星野 ADD START
		// 収納機関コードが「銀行振込」の場合
		if( JACStrConst.SHNKKNCD_BANK_HRIKOMI.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) )
		{
			// 集計キー１が同一の間は銀行名・店舗名を出さない
			if (!this.cvsCompNmFlg)
			{
				// 収納金融機関名
				outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, JACStrConst.KARA_MOJI);
				// 収納機関支店名
				outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, JACStrConst.KARA_MOJI);
			}
			else
			{
				// 収納金融機関名
				outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SHUNO_BANK_NM), MOJISUU_15));
				// 収納機関支店名
				outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SHUNO_BANK_SHITEN_NM), MOJISUU_15));
			}
		}
		else
		{
// ANK-3838-00-00対応 20201117 星野 ADD END
		
			// 収納金融機関名
			outMap.set(JBSbatCHIFM107.SHUNO_BANK_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SHUNO_BANK_NM), MOJISUU_15));
			// 収納機関支店名
			outMap.set(JBSbatCHIFM107.SHUNO_BANK_SHITEN_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SHUNO_BANK_SHITEN_NM), MOJISUU_15));
// ANK-3838-00-00対応 20201117 星野 ADD START
		}
// ANK-3838-00-00対応 20201117 星野 ADD END
		
		// クレジット会社コード
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_CD, fileEdit.get(JBSbatCHIFM105.CRECARD_COMP_CD));
		// クレジット交換コード
		outMap.set(JBSbatCHIFM107.CREDIT_KOKAN_CD, getLCutString(fileEdit.get(JBSbatCHIFM105.CREDIT_KOKAN_CD), MOJISUU_15));
		// クレジットカード会社名
		outMap.set(JBSbatCHIFM107.CRECARD_COMP_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.CRECARD_COMP_NM), MOJISUU_15));
		// コンビニ会社名
		if (!this.cvsCompNmFlg)
		{
			// コンビニ会社名フラグ ≠ Trueの場合
			outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, JACStrConst.KARA_MOJI);
		}
		else
		{
// ANK-3838-00-00対応 20201117 星野 ADD START
			if( JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_CUST.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) 
				|| JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_COMP.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) 
				|| JACStrConst.SHNKKNCD_CVSTORE_REAL_CUST.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) 
				|| JACStrConst.SHNKKNCD_CVSTORE_REAL_COMP.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD))
			)
			{
				// 収納機関コードが「コンビニ等」の場合、負担方式を出す
				if( JACStrConst.FTN_HOSHIKI_KO.equals(fileEdit.get(JBSbatCHIFM105.KEY_SHUK1).trim()) )
				{
					outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, CUST_FTN);
				}
				else if( JACStrConst.FTN_HOSHIKI_KI.equals(fileEdit.get(JBSbatCHIFM105.KEY_SHUK1).trim()) )
				{
					outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, COMP_FTN);
				}
				else
				{
					outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, JACStrConst.KARA_MOJI);
				}
			}
			else
			{
// ANK-3838-00-00対応 20201117 星野 ADD END
				outMap.set(JBSbatCHIFM107.CVSTORE_COMP_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SHUNO_CVSTORE_COMP_NM), MOJISUU_15));
// ANK-3838-00-00対応 20201117 星野 ADD START
			}
// ANK-3838-00-00対応 20201117 星野 ADD END
		}
		// 債権回収委託会社名
		outMap.set(JBSbatCHIFM107.SKN_SKNKSITKCM_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SKN_SKNKSITKCM_NM), MOJISUU_15));
		// 部署名
		outMap.set(JBSbatCHIFM107.JISHA_ORG_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.JISHA_ORG_NM), MOJISUU_15));
		// 請求先名
		outMap.set(JBSbatCHIFM107.SIKY_SAKI_NM, getLCutString(fileEdit.get(JBSbatCHIFM105.SIKY_SAKI_NM), MOJISUU_30));
		// 入金予定日
		if (!this.nkinRsvFlg)
		{
			// 入金予定日フラグ ≠ Trueの場合
			outMap.set(JBSbatCHIFM107.NKIN_RSVD, JACStrConst.KARA_MOJI);
		}
		else
		{
			outMap.set(JBSbatCHIFM107.NKIN_RSVD, fileEdit.get(JBSbatCHIFM105.NKIN__RSVD));
		}
		//収納日
		outMap.set(JBSbatCHIFM107.OUT_ORG_SHUNO_YMD, fileEdit.get(JBSbatCHIFM105.OUT_ORG_SHUNO_YMD));
		
		//集計項目（明細）を設定
		setSyukei(outMap, shukMeisaiMap);
		
		// コメント
		outMap.set(JBSbatCHIFM107.COMMENT, shunoKbnMap.get(fileEdit.get(JBSbatCHIFM105.DIV_TRAN)));
		
// ANK-3838-00-00対応 20201117 星野 ADD START
		if( JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_CUST.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) 
			|| JACStrConst.SHNKKNCD_CVSTORE_REAL_CUST.equals(fileEdit.get(JBSbatCHIFM105.SHUNOKIKAN_CD)) 
		)
		{
			// 収納機関コードが「コンビニ等」の場合、確報日に運用日付を設定
			// 日次でのみ使用する項目で、月次では使用しないが、ここでは日次/月次の切り分けは行わない
			outMap.set(JBSbatCHIFM107.KAKHO_YMD, JPCUtilCommon.formatDate(super.opeDate));
			
		}
// IT1-2021-0000009対応 20210123 星野 ADD START
		else
		{
			outMap.set(JBSbatCHIFM107.KAKHO_YMD, JACStrConst.KARA_MOJI);
		}
// IT1-2021-0000009対応 20210123 星野 ADD END
// ANK-3838-00-00対応 20201117 星野 ADD END


		// 出力フラグ設定
		outMap.setOutFlg(true);
		outMap.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outMap.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));

		assert outMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint,
				"[E][makeOutputMeisai][outMap = " + outMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputMeisai]");

		return outMap;
	}

	/**
	 * 対象文字列から指定桁数分の文字列を切出し取得する
	 * @param  value 対象文字列
	 * @param  length 桁数
	 * @return value 指定桁数の文字列
	 */
	private String getLCutString(String value, int length)
	{
		String ret = "";

		if(length < value.length())
		{
			ret = value.substring(0, length);
		}
		else
		{
			ret = value;
		}

		return ret;
	}

	/**
	 * 文字を連結します
	 * @param string　文字
	 * @return strBuf　連結した文字列
	 */
	private String makeStr(String ...string)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeStr]");
		
		StringBuffer strBuf = new StringBuffer();
		for(String str:string){
			strBuf.append(str);			
		}
		
		assert strBuf != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][strBuf][strBuf = " + strBuf.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeStr]");
		
		return strBuf.toString();
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		chBusinessUtil.close();
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * 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);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 印紙対象金額取得
	 * 
	 * @param baseDate 基準年月日（YYYYMMDD）
	 * @return BigDecimal 印紙対象金額
	 * @throws Exception 
	 */
	private BigDecimal getInshiMaskAmount(String baseDate) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getInshiMaskAmount]");
		
		String baseDateYM = baseDate.substring(0, 6);
		BigDecimal receiptAmnt = inshiMaskAmntMap.get(baseDateYM);
		if(receiptAmnt == null)
		{
			// 未取得の場合は取得してMapに退避する
			receiptAmnt = new BigDecimal(JCHStampDutyUtil.getTaxableAmount(JACStrConst.CALLER_BATCH, commonItem.getConnection(), baseDate));
			inshiMaskAmntMap.put(baseDateYM, receiptAmnt);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getInshiMaskAmount]");
		return receiptAmnt;
	}
	
	// IT1-2018-0000200 ADD START
	/**
	 * 収納機関コードが卸先事業者の対象であるかを判定します。
	 * 収納機関別入金表出力時に卸先事業者として合計行が１行で表示されるように制御するための判定です。
	 * 
	 * @param cdDiv 収納機関コード
	 * @return Boolean true：卸先事業者の対象／false：卸先事業者の対象外
	 * @throws Exception
	 */
	private Boolean checkOrs(String cdDiv) throws Exception
	{
		for (int i = 0; i < orsKey.length; i++)
		{
			if (orsKey[i].equals(cdDiv))
			{
				return true;
			}
		}
		return false;	
	}
	// IT1-2018-0000200 ADD END
// ANK-3838-00-00対応 20201117 星野 ADD START
	/**
	 * 収納機関コードがコンビニ等の対象であるかを判定します。
	 * 収納機関別入金表出力時にコンビニ等として合計行が１行で表示されるように制御するための判定です。
	 * 
	 * @param cdDiv 収納機関コード
	 * @return Boolean true：不要行／false：不要行ではない
	 * @throws Exception
	 */
	private Boolean checkCvsEtc(String cdDiv) throws Exception
	{
		// 企業負担の側は不要（先行処理で顧客負担側にまとめてあるため）
		if ( JACStrConst.SHNKKNCD_CVSTORE_ETC_NORMAL_COMP.equals(cdDiv)
			 || JACStrConst.SHNKKNCD_CVSTORE_REAL_COMP.equals(cdDiv)
		)
		{
			return true;
		}
		return false;	
	}
// ANK-3838-00-00対応 20201117 星野 ADD END
// ANK-4415-00-00 ADD START
	/**
	 * 総合計出力をするかしないか判断します
	 * @param map　サマリー行出力マップ
	 * @param key　サマリー行特定用キー
	 * @return true　出力する／false　出力しない
	 */
	private boolean isOutSogokei(HashMap<String, String> map, String key, String shunoKikanCd)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][isOut]");
		assert map != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][isOut][inMap=" + map.toString() + "]") : true;
		
		if (map.get(key) != null)
		{
			String[] shunoKikannCdlist = map.get(key).split(JACStrConst.COMMA);
			
			for(String shunoKikannCd : shunoKikannCdlist)
			{
				//サマリー行出力マップに収納機関管理コードが存在する場合
				
				if (shunoKikannCd.equals(shunoKikanCd))
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][isOut][true]");
					return true;
				}
			}
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][isOut][false]");
		return false;
	}
// ANK-4415-00-00 ADD END
}
