/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACPrcCalcRsltBankNsi
*	ソースファイル名	：JBSbatACPrcCalcRsltBankNsi.java
*	作成者				：富士通　
*	作成日				：2011年09月10日
*＜機能概要＞
*　料金計算結果情報作成(金融機関なし)部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/10   富士通		新規作成
*	v5.00.00	2013/07/29   FJ）前田	【IT1-2013-0001528】出力ファイルの通信量にダブルクォーテーションを付与する修正
*	v5.01.00	2013/09/17   FJ）狭間	【OM-2013-0002081】数値、日付編集を廃止
*															ダブルクォーテーション付与の廃止※後続の処理で行う
*	v8.00.00	2013/12/09   FJ）柴田	【ANK-1584-00-00】出力ファイルにサービス詳細識別番号を追加。
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatACIFI010;
import eo.business.util.file.JBSbatACIFM097;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JZM0171Constant;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
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 JBSbatACPrcCalcRsltBankNsi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** SQL定義キー(AC_SELECT_004)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_004 = "AC_SELECT_004";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 結果内容 */
	private String rsltCont = JACStrConst.KARA_MOJI;
	
	/**
	 * 初期処理
	 * @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 + "]");
		
		// コード名称管理検索
		this.getCdNmKnriInf();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		outputItem.addOutMapList(this.getOutputInf(inMap));

		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * コード名称管理からコード名称管理情報を取得します。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getCdNmKnriInf() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getCdNmKnriInf]");
		
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		whereParam.setValue(JZM0171Constant.CD01172);		// コード種別
		whereParam.setValue(JACStrConst.RSLT_CD_BANK_NSI);	// コード区分
		whereParam.setValue(super.opeDate);					// 適用開始年月日
		whereParam.setValue(super.opeDate);					// 適用終了年月日
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getCdNmKnriInf][whereParam=" + whereParam.getList().toString() + "]");
		
		// SQL実行
		executeZM_M_CD_NM_KANRI_AC_SELECT_004(whereParam.getList().toArray());
		
		JBSbatCommonDBInterface dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		
		// 取得できなかった場合
		if(dbMap == null)
		{
			// ログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0250CE,
					new String[] {JBSbatZM_M_CD_NM_KANRI.TABLE_NAME, whereParam.getList().toString()});
		}
		else
		{
			this.rsltCont = dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getCdNmKnriInf][rsltCont=" + rsltCont + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getCdNmKnriInf]");
	}
	
	/**
	 * 出力情報を取得します。
	 * 
	 * @param inMap 入力情報
	 * @param shsKanaNm 送付先カナ名
	 * @return JBSbatServiceInterfaceMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap getOutputInf(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getOutputInf]");
		
		JBSbatServiceInterfaceMap outputMap = new JBSbatServiceInterfaceMap();
		
		
		outputMap.setString(JBSbatACIFM097.RSLT_NYO_CD,		JACStrConst.RSLT_CD_BANK_NSI);							// 結果内容コード
		outputMap.setString(JBSbatACIFM097.RSLT_NYO,		rsltCont);												// 結果内容
		outputMap.setString(JBSbatACIFM097.TRN_YMD,			super.opeDate);											// 処理日
		outputMap.setString(JBSbatACIFM097.SEIKY_KEI_NO,	inMap.getString(JBSbatACIFI010.SEIKY_KEI_NO));			// 請求契約番号
		
		String sikysKana = inMap.getString(JBSbatACIFI010.SIKYS_KANA);												// 請求先名
		
		// 請求先カナ名長さ調整
		if(sikysKana.length() > JACStrConst.SIKYS_KANA_LEN)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getOutputInf][ 請求先カナ名を" + JACStrConst.SIKYS_KANA_LEN  + "桁に調整]");
			sikysKana = sikysKana.substring(0, JACStrConst.SIKYS_KANA_LEN);
		}
		
		outputMap.setString(JBSbatACIFM097.SIKYS_KANA,	sikysKana);																							// 請求先名
		outputMap.setString(JBSbatACIFM097.SVC_KEI_NO,	JACStrConst.KARA_MOJI);																				// サービス契約番号
		outputMap.setString(JBSbatACIFM097.SVC_DTL_SKBT_NO, JACStrConst.KARA_MOJI);																			// サービス詳細識別番号
		outputMap.setString(JBSbatACIFM097.SEIKY_YM, 	inMap.getString(JBSbatACIFI010.SEIKY_YM));															// 請求年月
		outputMap.setString(JBSbatACIFM097.PCRS_CD,		JACStrConst.KARA_MOJI);																				// 料金コースコード
		outputMap.setString(JBSbatACIFM097.PRC_SVC_CD,	JACStrConst.KARA_MOJI);																				// 料金サービスコード
		outputMap.setString(JBSbatACIFM097.PRC_KMK_CD,	JACStrConst.KARA_MOJI);																				// 料金項目コード
		outputMap.setString(JBSbatACIFM097.PRC_UW_NM,	JACStrConst.KARA_MOJI);																				// 料金内訳名称
		outputMap.setString(JBSbatACIFM097.SIKY_AMNT,	JACStrConst.KARA_MOJI);																				// 請求金額
		outputMap.setString(JBSbatACIFM097.TSRYO,		JACStrConst.KARA_MOJI);																					// 通信量
		outputMap.setString(JBSbatACIFM097.TONYU_DIV,	JACStrConst.KARA_MOJI);																				// 投入区分
		
		outputMap.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getOutputInf]");
		return outputMap;
	}
	
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(AC_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 executeZM_M_CD_NM_KANRI_AC_SELECT_004(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_AC_SELECT_004);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
