/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom  					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHNyukinAddListMake
*	ソースファイル名	：JBSbatCHNyukinAddListMake.java
*	作成者				：富士通　
*	作成日				：2011年07月23日
*＜機能概要＞
*　入金登録結果リスト作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/23   富士通		新規作成
*	v4.00.00	2012/11/05   FJ）加島	【TG1-2012-0000251】金融マスタの検索条件変更
*	v4.00.01	2013/01/11   FJ) 早崎	【ST4-2012-0000342】対応
*	v4.00.02	2013/04/09   FJ) 早崎	【内部管理番号-0000146】
*	v5.00.00	2013/08/03   FJ) 庄司	【TG1-2013-0000734】請求書発行シーケンス取得先変更
*	v5.01.00	2013/08/27   伊藤		【OM-2013-0000882】請求先が取得できなかった際に、エラーログの出力をしないように修正。
*	v5.02.00	2013/09/05   FJ) 小柴	【OM-2013-0001617】入金経路が「郵便自動振込」の際に、金融機関情報を取得・出力するように修正（ゆうちょ対応）
*	v32.00.00	2017/04/20   FJ)貝本	【ANK-2966-00-00】SMSを利用した即時決済システムの導入
*	v52.00.00	2020/10/27	 FJ)寺園    【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v67.00.00   2023/06/19	 GDC)v.auditor   【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
*********************************************************************/
package eo.business.service;

import java.util.HashMap;
import java.util.Map;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHBatNameStkuUtil;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFE033;
import eo.business.util.file.JBSbatCHIFM033;
import eo.business.util.table.JBSbatCH_M_CVSTORE;
import eo.business.util.table.JBSbatCH_M_KHRI_SHUNOKIKAN;
import eo.business.util.table.JBSbatCH_T_NYUKIN;
import eo.business.util.table.JBSbatCH_T_SEIKY;
import eo.business.util.table.JBSbatKK_M_BANK;
import eo.business.util.table.JBSbatKK_T_SEIKY_KEI;
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.JCHStringUtil;
import eo.common.util.JPCFomatString;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* 入金登録結果リスト作成 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHNyukinAddListMake extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(請求)*/
	private static final String D_TBL_NAME_CH_T_SEIKY = "CH_T_SEIKY";

	/** テーブル(入金)*/
	private static final String D_TBL_NAME_CH_T_NYUKIN = "CH_T_NYUKIN";

	/** テーブル(金融機関)*/
	private static final String D_TBL_NAME_KK_M_BANK = "KK_M_BANK";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(コンビニエンスストア)*/
	private static final String D_TBL_NAME_CH_M_CVSTORE = "CH_M_CVSTORE";
	
	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";
// v32.00.00 ADD START
	/** SQL定義キー(CH_SELECT_026)*/
	private static final String CH_T_NYUKIN_CH_SELECT_026 = "CH_SELECT_026";
// v32.00.00 ADD END
	/** SQL定義キー(CH_SELECT_011)*/
	private static final String CH_T_SEIKY_CH_SELECT_011 = "CH_SELECT_011";

	/** SQL定義キー(CH_SELECT_002)*/
	private static final String CH_T_NYUKIN_CH_SELECT_002 = "CH_SELECT_002";

	/** SQL定義キー(CH_SELECT_002)*/
	private static final String KK_M_BANK_CH_SELECT_002 = "CH_SELECT_002";

	/** SQL定義キー(CH_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_CH_SELECT_001 = "CH_SELECT_001";

	/** SQL定義キー(CH_SELECT_004)*/
	private static final String CH_M_CVSTORE_CH_SELECT_004 = "CH_SELECT_004";
	
	/** SQL定義キー(CH_SELECT_009)*/
	private static final String KK_T_SEIKY_KEI_CH_SELECT_009 = "CH_SELECT_009";

	/** テーブルアクセスクラス(請求)*/
	private JBSbatSQLAccess db_CH_T_SEIKY = null;

	/** テーブルアクセスクラス(入金)*/
	private JBSbatSQLAccess db_CH_T_NYUKIN = null;

	/** テーブルアクセスクラス(金融機関)*/
	private JBSbatSQLAccess db_KK_M_BANK = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(コンビニエンスストア)*/
	private JBSbatSQLAccess db_CH_M_CVSTORE = null;
	
	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 出力ファイル桁数（２桁） */
	private static final int LENGTH_LIMIT_2 = 2;
	
	/** 出力ファイル桁数（１５桁） */
	private static final int LENGTH_LIMIT_15 = 15;
	
	/** 出力ファイル桁数（３０桁） */
	private static final int LENGTH_LIMIT_30 = 30;
	
	/** データ種類（確定） */
	private static final String DATA_FIX= "02";
	
	/** データ種類（確報） */
	private static final String DATA_KAKHO= "02";
	
	/** 請求先番号(フルスペース) */
	private static final String SEIKY_SAKI_NO_FULL_SPACE = "          ";
	
	/** 預金種目名マップ */
	private HashMap<String, String> yokinShumokuNmMap = null;
	
	/** 金庫ステータス名マップ */
	private HashMap<String, String> knkStatNmMap = null;
	
	/** 金融機関マスタマップ */
	private HashMap<String, String[]> bankMap = null;
		
	/** コンビニエンスストアマスタマップ */
	private HashMap<String, String> cvStoreMap = null;
	// v32.00.00 ADD START
	/** 収納機関名マップ */
	private Map<String, String> shunoKknNmMap = null;
	// v32.00.00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
		/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_T_SEIKY = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SEIKY);
		db_CH_T_NYUKIN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_NYUKIN);
		db_KK_M_BANK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_BANK);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_CH_M_CVSTORE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_CVSTORE);
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial][opeDate=" + super.opeDate + "]");
		
		yokinShumokuNmMap = new HashMap<String, String>();
		knkStatNmMap = new HashMap<String, String>();
		
		/* 預金種目名マップ初期化 */
		// 預金種目名（普通）
		String yokinShumokuNomal = selectCdNmInfo(JZM0171Constant.CD00248, JACStrConst.YOKIN_SHUMOKU_NORMAL);
		yokinShumokuNmMap.put(JACStrConst.YOKIN_SHUMOKU_NORMAL, yokinShumokuNomal);
		// 預金種目名（当座）
		String yokinShumokuToza = selectCdNmInfo(JZM0171Constant.CD00248, JACStrConst.YOKIN_SHUMOKU_TOZA);
		yokinShumokuNmMap.put(JACStrConst.YOKIN_SHUMOKU_TOZA, yokinShumokuToza);
		
		/* 預金種目名マップ初期化 */
		// 金庫ステータス（仮受金）
		String knkStatKari = selectCdNmInfo(JZM0171Constant.CD00179, JACStrConst.KNK_STAT_KARIUKE);
		knkStatNmMap.put(JACStrConst.KNK_STAT_KARIUKE, knkStatKari);
		// 金庫ステータス（預り金）
		String knkStatAzuk = selectCdNmInfo(JZM0171Constant.CD00179, JACStrConst.KNK_STAT_AZUKARI);
		knkStatNmMap.put(JACStrConst.KNK_STAT_AZUKARI, knkStatAzuk);
		
		// 金融機関マスタより情報を取得する
		bankMap = getBankInfo();
		
		// コンビニエンスストアマスタより情報を取得する
		cvStoreMap = getCvStoreInfo();
		
// v32.00.00 ADD DTART
		//収納機関名マップの作成
		JCHBatNameStkuUtil jchBatNameStkuUtil = new JCHBatNameStkuUtil();
		shunoKknNmMap = jchBatNameStkuUtil.getCdNmMap(commonItem,JZM0171Constant.CD00911);
// v32.00.00 ADD END
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * コード区分名を取得します。
	 * 
	 * @param cdSbtCd　コード種別
	 * @param cdDiv　コード区分
	 * @return　コード区分名
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private String selectCdNmInfo(String cdSbtCd, String cdDiv) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectCdNmInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectCdNmInfo][cdSbtCd=" + cdSbtCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectCdNmInfo][cdDiv=" + cdDiv + "]");
		
		// 条件値
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// コード種別コード
		whereParam.setValue(cdSbtCd);
		// コード区分
		whereParam.setValue(cdDiv);
		// 適用開始年月日
		whereParam.setValue(super.opeDate);
		// 適用終了年月日
		whereParam.setValue(super.opeDate);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectCdNmInfo][whereParam=" + whereParam.getList().toString() + "]");
		
		// コード名称管理情報検索SQL実行
		executeZM_M_CD_NM_KANRI_CH_SELECT_001(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// 取得結果判定
		String cdDivNm = null;
		if (selectMap != null)
		{
			// コード区分名取得
			cdDivNm = selectMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		else
		{
			// ログ出力（【エラー】ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[] {JBSbatZM_M_CD_NM_KANRI.TABLE_NAME, whereParam.getList().toString()});
		}
		
		assert selectMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectCdNmInfo][selectMap=" + selectMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectCdNmInfo]");
		
		return cdDivNm;
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][inMap=" + inMap.getMap().toString() + "]");
		
		// 入力電文有無確認
		if (inMap.getMap().isEmpty())
		{
			return null;
		}
		
		// 入金経路コード取得
		String nyukinRouteCd = inMap.getString(JBSbatCHIFM033.NYUKIN_ROUTE_CD);
		// 入金登録結果取得
		String rslt = inMap.getString(JBSbatCHIFM033.RSLT);
		
		// 「入金登録結果リスト」に出力する情報が存在
		JBSbatOutputItem outputItem = null;
		//ANK-4415-00-00 MOD START
		//if((JACStrConst.NYKNKEIRCD_KOZA.equals(nyukinRouteCd)
		//		|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO.equals(nyukinRouteCd)
		if((JACStrConst.NYKNKEIRCD_KOZA_CP.equals(nyukinRouteCd)
				|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO_CP.equals(nyukinRouteCd)
				|| JACStrConst.NYKNKEIRCD_KOZA_SMBCFS.equals(nyukinRouteCd)
				|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO_SMBCFS.equals(nyukinRouteCd)
		//ANK-4415-00-00 MOD END
				|| JACStrConst.NYKNKEIRCD_MDGC.equals(nyukinRouteCd)
				|| JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd)
// v52.00.00 ADD START
				|| JACStrConst.NYKNKEIRCD_CVSTORE_ETC.equals(nyukinRouteCd)
// v52.00.00 ADD END
// v32.00.00 MOD START
//				|| JACStrConst.NYKNKEIRCD_SHANAI_USE.equals(nyukinRouteCd))
				|| JACStrConst.NYKNKEIRCD_SHANAI_USE.equals(nyukinRouteCd)
				|| JACStrConst.NYKNKEIRCD_KESSAI_SMBC.equals(nyukinRouteCd))
// v32.00.00 MOD END
				&& (JACStrConst.ERR_KUBUN_ERR.equals(rslt)
						|| JACStrConst.ERR_KUBUN_WORNING.equals(rslt)))
		{
			// 「請求」情報取得
			JBSbatCommonDBInterface seikyInfo = null;
			if(!(inMap.getString(JBSbatCHIFM033.SEIKY_NO)).equals("") && inMap.getString(JBSbatCHIFM033.SEIKY_NO) != null)
			{
				seikyInfo = selectSeikyInfo(inMap.getString(JBSbatCHIFM033.SEIKY_NO));
			}
			
			// 「入金」情報取得
			JBSbatCommonDBInterface nyukinInfo = null;
			if(!(inMap.getString(JBSbatCHIFM033.NYUKIN_NO)).equals("") && inMap.getString(JBSbatCHIFM033.NYUKIN_NO) != null)
			{
				nyukinInfo = selectNyukinInfo(inMap.getString(JBSbatCHIFM033.NYUKIN_NO));
			}
			
			// 「請求先名」取得
			String seikySakiNm = null;
			if(!(inMap.getString(JBSbatCHIFM033.SEIKY_SAKI_NO)).equals(SEIKY_SAKI_NO_FULL_SPACE))
			{
				seikySakiNm = selectseikySakiNm(inMap.getString(JBSbatCHIFM033.SEIKY_SAKI_NO));
			}

			// 「金融関連」情報 [0]:金融機関名,[1]:金融機関支店名,[2]:口座振替種別コード
			String[] bankInfo = new String[3];
			
			// 「コンビニエンスストア会社名」
			String cvstoreCompNm = null;

			// 「請求」情報が存在
			if(seikyInfo != null)
			{
				// 入金経路が「口座振替」、または「郵便自動振込」
				//ANK-4415-00-00 MOD START
				//if (JACStrConst.NYKNKEIRCD_KOZA.equals(nyukinRouteCd)
				//|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO.equals(nyukinRouteCd))
				if (JACStrConst.NYKNKEIRCD_KOZA_CP.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_KOZA_SMBCFS.equals(nyukinRouteCd)
				|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO_CP.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_YUBIN_AUTO_SMBCFS.equals(nyukinRouteCd))
				{
				//ANK-4415-00-00 MOD END
					// 「金融関連」情報取得
					//   金融機関マップアクセスキー : 請求.金融機関コード + 請求.金融機関支店コード
					String mapkey = this.makeStr( seikyInfo.getString(JBSbatCH_T_SEIKY.BANK_CD) 
												,  seikyInfo.getString(JBSbatCH_T_SEIKY.BANK_SHITEN_CD));	

					// 金融機関マスタデータ取得
					String[] outRetList = bankMap.get(mapkey);
					
					// 該当の金融関連情報が存在しない場合
					if (outRetList == null)
					{
						// ログ出力（【エラー】ＤＢ未存在エラー）
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
								new String[] {JBSbatKK_M_BANK.TABLE_NAME, "[" + super.opeDate + "]" + mapkey});
					}
					
					// 「金融関連」情報を格納
					bankInfo = outRetList;
				}
			}
			
			// 「「入金」情報が存在
			if(nyukinInfo != null)
			{
				// 入金経路が「窓口入金」
				if(JACStrConst.NYKNKEIRCD_MDGC.equals(nyukinRouteCd))
				{
					// 「金融関連」情報取得
					//   金融機関マップアクセスキー : 入金.窓口金融機関コード + 入金.窓口金融機関支店コード
					String mapkey = this.makeStr( nyukinInfo.getString(JBSbatCH_T_NYUKIN.MADOGUCHI_BANK_CD) 
												,  nyukinInfo.getString(JBSbatCH_T_NYUKIN.MADOGUCHI_BANK_SHITEN_CD));	

					// 金融機関マスタデータ取得
					String[] outRetList = bankMap.get(mapkey);
					
					// 該当の金融関連情報が存在しない場合
					if (outRetList == null)
					{
						// ログ出力（【エラー】ＤＢ未存在エラー）
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
								new String[] {JBSbatKK_M_BANK.TABLE_NAME, "[" + super.opeDate + "]" + mapkey});
					}
					
					// 「金融関連」情報を格納
					bankInfo = outRetList;
				}

				// 入金経路が「コンビニ入金」
				// v52.00.00 MOD START
//				else if (JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd))
				else if (JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_CVSTORE_ETC.equals(nyukinRouteCd))
				// v52.00.00 MOD END
				{
					// 「コンビニエンスストア」情報取得
					//   コンビニエンスストアマップアクセスキー
					String mapkey = nyukinInfo.getString(JBSbatCH_T_NYUKIN.CVSTORE_CD);		// 入金.コンビニエンスストアコード

					// 「コンビニエンスストア会社名」取得
					cvstoreCompNm = cvStoreMap.get(mapkey);
					
					// 該当のコンビニ情報が存在しない場合
					if (cvstoreCompNm == null || cvstoreCompNm.equals(""))
					{
						// ログ出力（【エラー】ＤＢ未存在エラー）
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
								new String[] {JBSbatCH_M_CVSTORE.TABLE_NAME,  "[" + super.opeDate + "," + super.opeDate + "]" + mapkey});
					}
				}
			}
			// 入金登録結果リスト作成
			outputItem = makeNyukinAddRsltInfo(inMap, seikyInfo, nyukinInfo, bankInfo, cvstoreCompNm, seikySakiNm);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputItem;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 請求情報を取得します。
	 * 
	 * @param seikyNo　請求番号
	 * @return　請求情報
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectSeikyInfo(String seikyNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSeikyInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSeikyInfo][seikyNo=" + seikyNo + "]");
		
		// 条件値
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// 請求番号
		whereParam.setValue(seikyNo);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectSeikyInfo][whereParam=" + whereParam.getList().toString() + "]");
		
		// 請求情報検索SQL実行
		executeCH_T_SEIKY_CH_SELECT_011(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_CH_T_SEIKY.selectNext();
		
		// 取得結果判定
		if (selectMap == null)
		{
			// ログ出力（【エラー】ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[] {JBSbatCH_T_SEIKY.TABLE_NAME, whereParam.getList().toString()});
		}
		
		assert selectMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectSeikyInfo][selectMap=" + selectMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectSeikyInfo]");
		
		return selectMap;
	}

	/**
	 * 入金情報を取得します。
	 * 
	 * @param nyukinNo　入金番号
	 * @return　入金情報
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectNyukinInfo(String nyukinNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectNyukjnInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectNyukjnInfo][seikyKeiNo=" + nyukinNo + "]");
		
		// 条件値
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// 入金番号
		whereParam.setValue(nyukinNo);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectNyukjnInfo][whereParam=" + whereParam.getList().toString() + "]");
		
		// 入金検索SQL実行
		executeCH_T_NYUKIN_CH_SELECT_002(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_CH_T_NYUKIN.selectNext();
		
		// 取得結果判定
		if (selectMap == null)
		{
			// ログ出力（【エラー】ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[] {JBSbatCH_T_NYUKIN.TABLE_NAME, whereParam.getList().toString()});
		}
		
		assert selectMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectNyukjnInfo][selectMap=" + selectMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectNyukjnInfo]");
		
		return selectMap;
	}

	/**
	 * 金融機関情報を取得します。
	 * 
	 * 以下の項目単位で金融機関のリストを作成しマップに格納します。
	 * ・金融機関コード
	 * ・金融機関支店コード
	 * 
	 * @param inMap 入力電文
	 * @return JBSbatSQLAccessBean 金融機関情報マスタデータ
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private HashMap<String, String[]> getBankInfo()
		throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getBankInfo]");
		
		// 金融機関マスタのデータを格納したマップ
		HashMap<String, String[]> createMap = new HashMap<String, String[]>();
		
		// DBアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		dbList.setValue(super.opeDate); 	// 運用日
		
		// 金融機関情報検索SQL実行
		executeKK_M_BANK_CH_SELECT_002(dbList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_KK_M_BANK.selectNext();
		
		// 取得結果判定
		if (dbMap == null)
		{
			// ログ出力（【エラー】ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[] {JBSbatKK_M_BANK.TABLE_NAME});
		}
		
		// 検索結果がなくなるまで繰り返す
		while (dbMap != null)
		{
			
			// key
			String mapkey = this.makeStr(dbMap.getString(JBSbatKK_M_BANK.BANK_CD), dbMap.getString(JBSbatKK_M_BANK.BANK_SHITEN_CD));	// 金融機関コード ＋ 金融機関支店コード

			// value
			String[] valueList = new String[3];
			valueList[0] = dbMap.getString(JBSbatKK_M_BANK.BANK_NM);					// 金融機関名
			valueList[1] = dbMap.getString(JBSbatKK_M_BANK.BANK_SHITEN_NM);				// 金融機関支店名
			valueList[2] = dbMap.getString(JBSbatCH_M_KHRI_SHUNOKIKAN.KHRI_SBT_CD);		// 口座振替種別コード 
		
			
			// 金融機関マスタマップにデータを格納
			createMap.put(mapkey, valueList);

			// 次レコード取得
			dbMap = db_KK_M_BANK.selectNext();
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getBankInfo]");
		
		// 金融機関マスタデータの返却
		return createMap;
	}

	/**
	 * コンビニエンスストア情報を取得します。
	 * 以下の項目単位で金融機関のリストを作成しマップに格納します。
	 * ・コンビニエンスストアコード
	 * 
	 * @param inMap 入力電文
	 * @return JBSbatSQLAccessBean 金融機関情報マスタデータ
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private HashMap<String, String> getCvStoreInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getCvStoreInfo]");
		
		// コンビニエンスストアマスタのデータを格納したマップ
		HashMap<String, String> createMap = new HashMap<String, String>();
		
		// DBアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		dbList.setValue(super.opeDate); 	// 運用日
		dbList.setValue(super.opeDate); 	// 運用日

		// コンビニエンスストアマスタデータ取得
		executeCH_M_CVSTORE_CH_SELECT_004(dbList.getList().toArray());

		// 結果取得の定義
		JBSbatCommonDBInterface dbMap = db_CH_M_CVSTORE.selectNext();
		
		// 取得結果判定
		if(dbMap == null)
		{
			// ログ出力（【エラー】ＤＢ未存在エラー）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW,
					new String[] {JBSbatCH_M_CVSTORE.TABLE_NAME, dbList.getList().toString()});
		}
		
		// 検索結果がなくなるまで繰り返す
		while (dbMap != null)
		{

			// key : コンビニエンスストアコード
			String mapKey = dbMap.getString(JBSbatCH_M_CVSTORE.CVSTORE_CD);
			
			// value : コンビニエンスストア会社名
			String value = dbMap.getString(JBSbatCH_M_CVSTORE.CVSTORE_COMP_NM);
		
			// コンビニエンスストアマスタマップにデータを格納
			createMap.put(mapKey, value);

			// 次レコード取得
			dbMap = db_CH_M_CVSTORE.selectNext();
		}

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getBYcvstoreMst]");
		
		// コンビニエンスストアマスタデータの返却
		return createMap;
	}
	
	/**
	 * 請求先名を取得します。
	 * 
	 * @param seikySakiNo　
	 * @return　請求先名
	 * @throws Exception　業務サービス内で発生した例外
	 */
	private String selectseikySakiNm(String seikySakiNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectseikySakiNm]");
		
		// 条件値
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// 請求契約番号
		whereParam.setValue(seikySakiNo);
		// 予約適用年月日
		whereParam.setValue(super.opeDate);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectseikySakiNm][whereParam=" + whereParam.getList().toString() + "]");
		
		// 請求先名検索SQL実行
		executeKK_T_SEIKY_KEI_CH_SELECT_009(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_KK_T_SEIKY_KEI.selectNext();
		
		// 取得結果判定
		String seikySakiNm = null;
		if (selectMap == null)
		{
			// ログ出力（ＤＢ未存在エラー）
			//2013/08/27 ログ出力を消去
			//super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW, new String[]
			//{ JBSbatKK_T_SEIKY_KEI.TABLE_NAME, whereParam.getList().toString() });
		}
		else
		{
			// 取得した請求先名を返却
			seikySakiNm = selectMap.getString(JBSbatKK_T_SEIKY_KEI.SHS_KANA);
		}
		

		
		assert selectMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectseikySakiNm][selectMap=" + selectMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectseikySakiNm]");
		
		return seikySakiNm;
	}



	/**
	 * 入金登録結果リスト情報を作成します。
	 * 
	 * @param inMap　入力電文
	 * @param seikyInfo　請求情報
	 * @param nyukinInfo　入金情報
	 * @param bankInfo　金融機関情報
	 * @param cvstoreCompNm　コンビニエンスストア会社名
	 * @param seikySakiNm　請求先名
	 * @return　出力情報
	 * @throws Exception　業務サービス内で発生した例外全般
	 */
	private JBSbatOutputItem makeNyukinAddRsltInfo(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface seikyInfo,
			JBSbatCommonDBInterface nyukinInfo, String[] bankInfo, String cvstoreCompNm, String seikySakiNm) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeNyukinAddRsltInfo]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeNyukinAddRsltInfo][selectMap=" + inMap.getMap().toString() + "]") :true;
		assert seikyInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeNyukinAddRsltInfo][selectMap=" + seikyInfo.getMap().toString() + "]") :true;
		assert nyukinInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeNyukinAddRsltInfo][selectMap=" + nyukinInfo.getMap().toString() + "]") :true;
		assert bankInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeNyukinAddRsltInfo][selectMap=" + bankInfo[0] + "," + bankInfo[1] + "," + bankInfo[2] + "]") :true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeNyukinAddRsltInfo][cvstoreCompNm=" + cvstoreCompNm + "]");
		
		// 入金登録結果リスト情報初期化
		JBSbatServiceInterfaceMap nyukinAddRsltInfo = initNyukinAddRsltInfo();
		
		// 入金経路コード取得
		String nyukinRouteCd = inMap.getString(JBSbatCHIFM033.NYUKIN_ROUTE_CD);
		
		// エラー種類
		nyukinAddRsltInfo.set(JBSbatCHIFE033.ERR, inMap.getString(JBSbatCHIFM033.RSLT));
		// データ区分
		nyukinAddRsltInfo.set(JBSbatCHIFE033.DATA_DIV, inMap.getString(JBSbatCHIFM033.DATA_DIV));
		
		// データ種類
		String data = null;
		// 入金経路コードが「窓口入金」
		if(JACStrConst.NYKNKEIRCD_MDGC.equals(nyukinRouteCd))
		{
			data = DATA_FIX;
		}
		// 入金経路コードが「コンビニ入金」
		// v52.00.00 MOD START
//		else if(JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd))
		else if(JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_CVSTORE_ETC.equals(nyukinRouteCd))
		// v52.00.00 MOD END
		{
			data = DATA_KAKHO;
		}
// v32.00.00 ADD START
		// 入金経路コードが「決済代行(SMBC)」
		else if(JACStrConst.NYKNKEIRCD_KESSAI_SMBC.equals(nyukinRouteCd))
		{
			data = DATA_KAKHO;
		}
// v32.00.00 ADD END
		nyukinAddRsltInfo.set(JBSbatCHIFE033.DATA, data);
		
		// 請求先番号
		nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_KEI_NO, inMap.getString(JBSbatCHIFM033.SEIKY_SAKI_NO));
		
		// 請求先名
		if( seikySakiNm != null)
		{
			if(seikySakiNm.length() <= LENGTH_LIMIT_15)
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_SAKI_NM, seikySakiNm);
			}
			else
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_SAKI_NM, seikySakiNm.substring(0, LENGTH_LIMIT_15));
			}
		}

		
		// 請求月
		nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_MON, JPCFomatString.formatYears(inMap.getString(JBSbatCHIFM033.SEIKY_YM)));
		// 入金額
		nyukinAddRsltInfo.set(JBSbatCHIFE033.NYUKIN_AMNT, JPCFomatString.formatNumber(inMap.getString(JBSbatCHIFM033.NYUKIN_AMNT)));
		// 金庫ステータス
		String knkStat = inMap.getString(JBSbatCHIFM033.KNK_STAT);
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KNK_STAT, knkStat);
		// 金庫ステータス名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KNK_STAT_NM, knkStatNmMap.get(knkStat));
		// 金庫ＩＤ（金庫番号）
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KNK_ID, inMap.getString(JBSbatCHIFM033.KNK_ID));
		// エラー内容
		nyukinAddRsltInfo.set(JBSbatCHIFE033.ERR_NAIYO, inMap.getString(JBSbatCHIFM033.ERR_NAIYO));
		// 発行ＳＥＱ
		String hakkoSeq = inMap.getString(JBSbatCHIFM033.HAKKO_SEQ);
		if( hakkoSeq != null)
		{
			if(hakkoSeq.length() <= LENGTH_LIMIT_2)
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.HAKKO_SEQ, hakkoSeq);
			}
			else
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.HAKKO_SEQ, hakkoSeq.substring(0, LENGTH_LIMIT_2));
			}
		}

		// 「請求」情報を設定
		if(seikyInfo != null)
		{
			setSeikyInfo(nyukinAddRsltInfo, seikyInfo, nyukinRouteCd);
			
		}
		
		// 「入金」情報を設定
		if(nyukinInfo != null)
		{
			setNyukinInfo(nyukinAddRsltInfo, nyukinInfo, nyukinRouteCd, cvstoreCompNm);
		}
		
		// 「金融機関」情報を設定
		if(bankInfo != null)
		{
			setBankInfo(nyukinAddRsltInfo, bankInfo, nyukinRouteCd);
		}
		
// v32.00.00 ADD START
		// 入金経路が「決済代行（SMBC）」の場合
		if(JACStrConst.NYKNKEIRCD_KESSAI_SMBC.equals(nyukinRouteCd))
		{
			//入金番号から収納機関コードを取得
			String shunokikanCd = selectShunoKikanCd(inMap.getString(JBSbatCHIFM033.NYUKIN_NO));
	
			//収納機関コードを取得できた場合、収納機関名マップから収納機関名を取得するかチェック。
			if(!JCHStringUtil.isNullBlank(shunokikanCd))
			{
				//収納機関名を取得できる場合、ＣＶＳコードに"------"、ＣＶＳ名に収納機関名を設定する。
				if(shunoKknNmMap.containsKey(shunokikanCd))
				{
					nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS, JACStrConst.KSDKCO_SMBC_CVSCD);
					nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS_NM, shunoKknNmMap.get(shunokikanCd));
				}
			}
		}
// v32.00.00 ADD END
		// 出力内容を項目ごとにダブルコーテーション（""）で囲む
		nyukinAddRsltInfo.setMap(JCHbatSeikyKaknoBusinessUtil.quote(nyukinAddRsltInfo.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
		// 出力フラグON
		nyukinAddRsltInfo.setOutFlg(true);
		
		// 出力共通電文設定
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		outputItem.addOutMapList(nyukinAddRsltInfo);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeNyukinAddRsltInfo]");
		
		return outputItem;
	}

	/**
	 * 入金登録結果リスト情報の初期化をします。
	 * 
	 * @return 入金登録結果リスト情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap initNyukinAddRsltInfo() throws Exception
	{
		// 入金登録結果リスト情報
		JBSbatServiceInterfaceMap nyukinAddRsltInfo = new JBSbatServiceInterfaceMap();
		
		// エラー種類
		nyukinAddRsltInfo.set(JBSbatCHIFE033.ERR, null);
		// データ区分
		nyukinAddRsltInfo.set(JBSbatCHIFE033.DATA_DIV, null);
		// データ種類
		nyukinAddRsltInfo.set(JBSbatCHIFE033.DATA, null);
		// 請求先番号
		nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_KEI_NO, null);
		// 請求先名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_SAKI_NM, null);
		// 請求月
		nyukinAddRsltInfo.set(JBSbatCHIFE033.SEIKY_MON, null);
		// 入金額
		nyukinAddRsltInfo.set(JBSbatCHIFE033.NYUKIN_AMNT, null);
		// 金庫ステータス
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KNK_STAT, null);
		// 金庫ステータス名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KNK_STAT_NM, null);
		// 金庫ＩＤ（金庫番号）
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KNK_ID, null);
		// 領収日
		nyukinAddRsltInfo.set(JBSbatCHIFE033.RECEIPT_DAY, null);
		// 入金日
		nyukinAddRsltInfo.set(JBSbatCHIFE033.NYUKIN_DAY, null);
		// 発行ＳＥＱ
		nyukinAddRsltInfo.set(JBSbatCHIFE033.HAKKO_SEQ, null);
		// 金融機関
		nyukinAddRsltInfo.set(JBSbatCHIFE033.BANK, null);
		// 金融機関名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.BANK_NM, null);
		// 店舗
		nyukinAddRsltInfo.set(JBSbatCHIFE033.TEN, null);
		// 店舗名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.TEN_NM, null);
		// ＣＶＳ
		nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS, null);
		// ＣＶＳ名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS_NM, null);
		// 預金種目コード
		nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_SHUMOKU_CD, null);
		// 預金種目
		nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_SHUMOKU, null);
		// 口座番号
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KOZA_NO, null);
		// 預金者名
		nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_NM, null);
		// エラー内容
		nyukinAddRsltInfo.set(JBSbatCHIFE033.ERR_NAIYO, null);
		
		return nyukinAddRsltInfo;
	}

	/**
	 * 入金登録結果リスト情報に請求情報を設定します。
	 * 
	 * @param nyukinAddRsltInfo　入金登録結果リスト情報
	 * @param seikyInfo 請求情報
	 * @param nyukinRouteCd 入金経路コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setSeikyInfo(JBSbatServiceInterfaceMap nyukinAddRsltInfo, JBSbatCommonDBInterface seikyInfo, String nyukinRouteCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSeikyInfo]");
		assert nyukinAddRsltInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSeikyInfo][nyukinAddRsltInfo=" + nyukinAddRsltInfo.getMap().toString() + "]") :true;
		assert seikyInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSeikyInfo][seikyInfo=" + seikyInfo.getMap().toString() + "]") :true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setSeikyInfo][nyukinRouteCd=" + nyukinRouteCd + "]");
		
		// 預金種目コード
		String kozaSbtCd = seikyInfo.getString(JBSbatCH_T_SEIKY.YOKIN_SHUMOKU_CD);
		nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_SHUMOKU_CD, kozaSbtCd);
		// 預金種目
		nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_SHUMOKU, yokinShumokuNmMap.get(kozaSbtCd));
		// 口座番号
		nyukinAddRsltInfo.set(JBSbatCHIFE033.KOZA_NO, seikyInfo.getString(JBSbatCH_T_SEIKY.KOZA_NO));
		// 預金者名
		String meiginKana = seikyInfo.getString(JBSbatCH_T_SEIKY.KOZA_MEIGIN_KANA);
		if(meiginKana != null)
		{
			if(meiginKana.length() <= LENGTH_LIMIT_30)
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_NM, meiginKana);
			}
			else
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.YOKIN_NM, meiginKana.substring(0, LENGTH_LIMIT_30));
			}
		}
		// 入金経路が「口座振替」、「郵便自動振込」の場合
		//ANK-4415-00-00 MOD START
		//if(JACStrConst.NYKNKEIRCD_KOZA.equals(nyukinRouteCd)
		//|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO.equals(nyukinRouteCd))
		if(JACStrConst.NYKNKEIRCD_KOZA_CP.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_KOZA_SMBCFS.equals(nyukinRouteCd)
		|| JACStrConst.NYKNKEIRCD_YUBIN_AUTO_CP.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_YUBIN_AUTO_SMBCFS.equals(nyukinRouteCd))
		{
		//ANK-4415-00-00 MOD END
			// 金融機関
			nyukinAddRsltInfo.set(JBSbatCHIFE033.BANK, seikyInfo.getString(JBSbatCH_T_SEIKY.BANK_CD));
			// 金融機関支店コード
			nyukinAddRsltInfo.set(JBSbatCHIFE033.TEN, seikyInfo.getString(JBSbatCH_T_SEIKY.BANK_SHITEN_CD));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setSeikyInfo]");
		
	}

	/**
	 * 入金登録結果リスト情報に入金情報を設定します。
	 * 
	 * @param nyukinAddRsltInfo　入金登録結果リスト情報
	 * @param nyukinInfo 入金情報
	 * @param nyukinRouteCd 入金経路コード
	 * @param cvstoreCompNm コンビニエンスストア会社名
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setNyukinInfo(JBSbatServiceInterfaceMap nyukinAddRsltInfo, JBSbatCommonDBInterface nyukinInfo, String nyukinRouteCd, String cvstoreCompNm) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setNyukinInfo]");
		assert nyukinAddRsltInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setNyukinInfo][nyukinAddRsltInfo=" + nyukinAddRsltInfo.getMap().toString() + "]") :true;
		assert nyukinInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setNyukinInfo][nyukinInfo=" + nyukinInfo.getMap().toString() + "]") :true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setNyukinInfo][nyukinRouteCd=" + nyukinRouteCd + "]");
		
		// 領収日
		nyukinAddRsltInfo.set(JBSbatCHIFE033.RECEIPT_DAY, JPCFomatString.formatDate(nyukinInfo.getString(JBSbatCH_T_NYUKIN.RECEIPT_YMD)));
		// 入金日
		nyukinAddRsltInfo.set(JBSbatCHIFE033.NYUKIN_DAY, JPCFomatString.formatDate(nyukinInfo.getString(JBSbatCH_T_NYUKIN.OUT_ORG_SHUNO_YMD)));
		
		// 入金経路が「窓口入金」の場合
		if(JACStrConst.NYKNKEIRCD_MDGC.equals(nyukinRouteCd))
		{
			// 金融機関
			nyukinAddRsltInfo.set(JBSbatCHIFE033.BANK, nyukinInfo.getString(JBSbatCH_T_NYUKIN.MADOGUCHI_BANK_CD));
			// 金融機関支店コード
			nyukinAddRsltInfo.set(JBSbatCHIFE033.TEN, nyukinInfo.getString(JBSbatCH_T_NYUKIN.MADOGUCHI_BANK_SHITEN_CD));
		}
		
		// 入金経路が「コンビニ入金」の場合
		// v52.00.00 MOD START
//		else if(JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd))
		else if(JACStrConst.NYKNKEIRCD_CVSTORE.equals(nyukinRouteCd) || JACStrConst.NYKNKEIRCD_CVSTORE_ETC.equals(nyukinRouteCd))
		// v52.00.00 MOD END
		{
			// CVS
			nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS, nyukinInfo.getString(JBSbatCH_T_NYUKIN.CVSTORE_CD));
			// CVS名
			if(cvstoreCompNm != null)
			{
				if(cvstoreCompNm.length() <= LENGTH_LIMIT_15)
				{
					nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS_NM, cvstoreCompNm);
				}
				else
				{
					nyukinAddRsltInfo.set(JBSbatCHIFE033.CVS_NM, cvstoreCompNm.substring(0, LENGTH_LIMIT_15));
				}
			}

		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setNyukinInfo]");
	}

	/**
	 * 入金登録結果リスト情報に金融機関情報を設定します。
	 * 
	 * @param nyukinAddRsltInfo　入金登録結果リスト情報
	 * @param bankInfo 金融機関情報
	 * @param nyukinRouteCd 入金経路コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setBankInfo(JBSbatServiceInterfaceMap nyukinAddRsltInfo, String[] bankInfo,
			String nyukinRouteCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setBankInfo]");
		assert nyukinAddRsltInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setBankInfo][nyukinAddRsltInfo=" + nyukinAddRsltInfo.getMap().toString() + "]") :true;
		assert bankInfo != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setBankInfo][bankInfo=" +bankInfo[0] + "," + bankInfo[1] + "," + bankInfo[2] + "]") :true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setBankInfo][nyukinRouteCd=" + nyukinRouteCd + "]");
		
		// 入金経路コードが「口座振替」の場合、データ種類を再設定
		//ANK-4415-00-00 MOD START
		//if(nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA))
		if(nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA_CP) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA_SMBCFS))
		{
		//ANK-4415-00-00 MOD END
			nyukinAddRsltInfo.set(JBSbatCHIFE033.DATA, bankInfo[2]);
		}
		
		// 金融機関名
		String bankNm = bankInfo[0];
		if(bankNm != null)
		{
			if(bankNm.length() <= LENGTH_LIMIT_15)
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.BANK_NM,  bankNm);
			}
			else
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.BANK_NM,  bankNm.substring(0, LENGTH_LIMIT_15));
			}
		}
		
		// 店舗名
		String bankShitenNm = bankInfo[1];
		if(bankShitenNm != null)
		{
			if(bankShitenNm.length() <= LENGTH_LIMIT_15)
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.TEN_NM, bankShitenNm);
			}
			else
			{
				nyukinAddRsltInfo.set(JBSbatCHIFE033.TEN_NM, bankShitenNm.substring(0, LENGTH_LIMIT_15));
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setBankInfo]");
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_T_SEIKY.close();
		db_CH_T_NYUKIN.close();
		db_KK_M_BANK.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_CH_M_CVSTORE.close();
		db_KK_T_SEIKY_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");

	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CH_SELECT_011)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_SEIKY_CH_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_T_SEIKY.selectBySqlDefine(paramList, CH_T_SEIKY_CH_SELECT_011);
	}

	/**
	 * SQLKEY(CH_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	入金番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_NYUKIN_CH_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_T_NYUKIN.selectBySqlDefine(paramList, CH_T_NYUKIN_CH_SELECT_002);
	}

	/**
	 * SQLKEY(CH_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	金融機関．予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_BANK_CH_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_BANK.selectBySqlDefine(paramList,KK_M_BANK_CH_SELECT_002);
	}
	
	/**
	 * SQLKEY(CH_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード名称管理．コード種別コード
	 *		 	コード名称管理．コード区分
	 *		 	コード名称管理．適用開始年月日
	 *		 	コード名称管理．適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_CH_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CH_SELECT_001);
	}

	/**
	 * SQLKEY(CH_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コンビニエンスストア適用開始年月日
	 *		 	コンビニエンスストア適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_CVSTORE_CH_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CH_M_CVSTORE.selectBySqlDefine(paramList, CH_M_CVSTORE_CH_SELECT_004);
	}
	
	/**
	 * SQLKEY(CH_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *			予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_KEI_CH_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_CH_SELECT_009);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 文字を連結します
	 * @param  string 文字
	 * @return strBuf 連結した文字列
	 */
	private String makeStr(String ...string)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeStr]");
		
		StringBuffer strBuf = new StringBuffer();
		for(String str:string)
		{
			if(str == null)
			{
				strBuf.append(JACStrConst.KARA_MOJI);
			}
			else
			{
				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();
	}
	// V32.00.00 ADD START
	/**
	 * 収納機関コードを取得します。
	 * 
	 * @param nyukinNo 入金番号
	 * @return shunokikanCd 収納機関コード
	 * @throws Exception 業務サービス内で発生した例外
	 */
	private String selectShunoKikanCd(String nyukinNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectShunoKikanCd]");
		
		// 収納機関コード
		String shunokikanCd = null;
		
		// バインド設定
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		// バインド変数設定：入金番号
		whereParam.setValue(nyukinNo);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectShunoKikanCd][whereParam=" + whereParam.getList().toString() + "]");
		
		// 請求契約情報検索SQL実行
		executeCH_T_NYUKIN_CH_SELECT_026(whereParam.getList().toArray());
		JBSbatCommonDBInterface selectMap = db_CH_T_NYUKIN.selectNext();
		
		// 取得結果判定
		if (selectMap != null)
		{
			// 収納機関コード取得
			shunokikanCd = selectMap.getString(JBSbatCH_T_NYUKIN.SHUNOKIKAN_CD);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectShunoKikanCd][shunokikanCd=" + shunokikanCd + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectShunoKikanCd]");
		
		return shunokikanCd;
	}
	
	/**
	 * SQLKEY(CH_SELECT_026)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	入金番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_NYUKIN_CH_SELECT_026(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_T_NYUKIN.selectBySqlDefine(paramList, CH_T_NYUKIN_CH_SELECT_026);
	}
// V32.00.00 ADD END
}
