/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHItakuRsltListSksi
*	ソースファイル名	：JBSbatCHItakuRsltListSksi.java
*	作成者				：富士通　
*	作成日				：2012年01月20日
*＜機能概要＞
*　委託結果リスト作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/01/20   富士通		新規作成
*	v3.00		2012/08/03   FJ）冨井	【TGI-2012-0000054】ダミーレコード設定位置修正
*********************************************************************/
package eo.business.service;

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.JBSbatCHIFE050;
import eo.business.util.file.JBSbatCHIFM101;
import eo.common.constant.JACStrConst;
import eo.common.util.JPCFomatString;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHItakuRsltListSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	
	/**▼▼▼▼▼▼クラス変数追加 開始▼▼▼▼▼▼*/
	
	/** データ件数 */
	private int cnt = 0;
	
	/** 債権金額 */
	private Long saiknAmnt = 0l;
	
	/** 退避．督促データ識別(債権回収委託対象データ)*/
	private String tihTokusokuDataSkbt = null;
	
	/**▲▲▲▲▲▲クラス変数追加 終了▲▲▲▲▲▲*/
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		
		// 業務機能識別コード取得
		
		// パラメータ取得部品の初期処理を行う。（パラメータ取得部品．コンストラクタ使用）
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		
		try
		{
			// 督促データ識別の取得（業パラ）
			this.tihTokusokuDataSkbt = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_CH_TKSK_DATA_SKBT_12);
		}
		finally
		{
			// パラメータ取得部品のクローズ処理を行う。（パラメータ取得部品．クローズ使用）
			paramUtil.close();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][tihTokusokuDataSkbt=" + tihTokusokuDataSkbt + "]");
		// パラメータ取得部品のクローズ処理
		paramUtil.close();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @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;
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][cnt=" + String.valueOf(cnt) + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][saiknAmnt=" + String.valueOf(saiknAmnt) + "]");
		
		//1件目のレコードの場合
		if(!outputInItem.isOutMapList())
		{
			// ダミーレコードセット
			outputInItem.addOutMapList(new JBSbatServiceInterfaceMap());
		}
		
		// 入力情報なしの場合
		if(null == inMap)
		{
			// 出力情報設定
			JBSbatServiceInterfaceMap outpBean = new JBSbatServiceInterfaceMap();
			// 件数　（カンマ区切り）
			outpBean.set(JBSbatCHIFE050.CNT, JPCFomatString.formatNumber(String.valueOf(this.cnt)));
			// 債権金額　（カンマ区切り）
			outpBean.set(JBSbatCHIFE050.SKN_AMNT, JPCFomatString.formatNumber(String.valueOf(this.saiknAmnt)));
			
			// 出力情報を「"」で囲む
			outpBean.setMap(JCHbatSeikyKaknoBusinessUtil.quote(outpBean.getMap(), JACStrConst.DOUBLE_QUOTE, JACStrConst.DOUBLE_QUOTE));
			
			outpBean.setOutFlg(true);
			
			// 出力情報設定
			outputInItem.addOutMapList(outpBean);
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
			return outputInItem;
		}
		
		// 入力．督促データ識別 ＝ "12" （債権回収委託対象データ） の場合 
		if(tihTokusokuDataSkbt.equals(inMap.getString(JBSbatCHIFM101.TOKUSOKU_DATA_SKBT)))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][入力．督促データ識別 ＝ 12 （債権回収委託対象データ） の場合 ]");
			// データ件数　更新
			this.cnt++;
			// 債権金額　更新
			this.saiknAmnt += Long.parseLong(inMap.getString(JBSbatCHIFM101.AMNT));		// 未納金額
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
