/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSvKeiUwJfkDel
*	ソースファイル名	：JBSbatKKSvKeiUwJfkDel.java
*	作成者				：富士通　
*	作成日				：2013年06月08日
*＜機能概要＞
*　従量分サービス契約内訳情報削除
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/06/01	FJ)			新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM159;
import eo.business.util.file.JBSbatKKIFM490;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKSvKeiUwJfkDel extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	private String keytelNo = "";
	
	// 電話番号リスト
	private ArrayList<JBSbatServiceInterfaceMap> svcKeiUwArrayList;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// ブレークする電話番号
		keytelNo = "";
		// 出力用サービス契約内訳番号のリスト
		svcKeiUwArrayList = new ArrayList<JBSbatServiceInterfaceMap>();
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		String telNo = inMap.getString(JBSbatKKIFM490.TELNO);
		
		if(!"".equals(keytelNo) && !keytelNo.equals(telNo)) {
			// サービス契約内訳のデータを出力する。
			outputSvcKeiUw(outputItem);
			
			svcKeiUwArrayList.add(inMap);
		}
		else
		{
			svcKeiUwArrayList.add(inMap);
		}
		//最終行かつ出力未のデータがある場合は、出力を行う。
		if(commonItem.isEndRecordFlg())
		{
			if(svcKeiUwArrayList.size() != 0)
			{
				outputSvcKeiUw(outputItem);
			}
		}
		keytelNo = telNo;

		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 電話番号単位の出力処理
	 * 
	 * @param outputItem 出力データ格納クラス
	 * @throws Exception アプリケーション実行例外
	 */
	private void outputSvcKeiUw(JBSbatOutputItem outputItem) throws Exception{
		
		
		// サービス契約内訳の最終レコードのサービス契約内訳番号を取得（最新）上位でソート済み
		int i = svcKeiUwArrayList.size() -1;
		
		JBSbatServiceInterfaceMap UwMap = svcKeiUwArrayList.get(i);
		String keysvckeiUwNo = UwMap.getString(JBSbatKKIFM490.SVC_KEI_UCWK_NO);
		
		// サービス契約内訳番号が同じレコードを出力する。
		for(int j = 0 ; j < svcKeiUwArrayList.size() ; j++)
		{
			JBSbatServiceInterfaceMap inMap = svcKeiUwArrayList.get(j);
			
			String svckeiUwNo = inMap.getString(JBSbatKKIFM490.SVC_KEI_UCWK_NO);
			
			if(keysvckeiUwNo.equals(svckeiUwNo))
			{
				JBSbatServiceInterfaceMap outmap = setOutputData(inMap);
				outmap.setOutFlg(true);
				outputItem.addOutMapList(outmap);
			}
			
		}
		// 出力したサービス契約内訳リストをクリアーする。
		svcKeiUwArrayList.clear();
	}
	
	/**
	 * 出力用インターフェイスマップ設定処理
	 * 
	 * @oaram ouMap 出力対象の出力データ
	 * @param outputItem 出力データ格納クラス
	 */
	private JBSbatServiceInterfaceMap setOutputData(JBSbatServiceInterfaceMap inMap)
	throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		outmap.setString(JBSbatKKIFM159.PRC_GRP_CD, inMap.getString(JBSbatKKIFM490.PRC_GRP_CD));
		outmap.setString(JBSbatKKIFM159.PCRS_CD, inMap.getString(JBSbatKKIFM490.PCRS_CD));
		outmap.setString(JBSbatKKIFM159.PRC_SVC_CD, inMap.getString(JBSbatKKIFM490.PRC_SVC_CD));
		outmap.setString(JBSbatKKIFM159.SEIRI_NO, inMap.getString(JBSbatKKIFM490.SEIRI_NO));
		outmap.setString(JBSbatKKIFM159.SVC_KEI_NO, inMap.getString(JBSbatKKIFM490.SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM159.SVC_KEI_UCWK_NO, inMap.getString(JBSbatKKIFM490.SVC_KEI_UCWK_NO));
		outmap.setString(JBSbatKKIFM159.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM490.JUZOKU_SVC_NO));
		outmap.setString(JBSbatKKIFM159.SEIKY_KEI_NO, inMap.getString(JBSbatKKIFM490.SEIKY_KEI_NO));
		outmap.setString(JBSbatKKIFM159.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKKIFM490.WRIB_SVC_KEI_NO));
		outmap.setString(JBSbatKKIFM159.TELNO, inMap.getString(JBSbatKKIFM490.TELNO));
		outmap.setString(JBSbatKKIFM159.JIGYOSHA_KEI_ID, inMap.getString(JBSbatKKIFM490.JIGYOSHA_KEI_ID));
		outmap.setString(JBSbatKKIFM159.SVC_STAYMD, inMap.getString(JBSbatKKIFM490.SVC_STAYMD));
		outmap.setString(JBSbatKKIFM159.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM490.SVC_DSL_YMD));
		outmap.setString(JBSbatKKIFM159.SVC_DLRE_CD, inMap.getString(JBSbatKKIFM490.SVC_DLRE_CD));
		outmap.setString(JBSbatKKIFM159.KAIHK_YMD, inMap.getString(JBSbatKKIFM490.KAIHK_YMD));
		outmap.setString(JBSbatKKIFM159.SVC_CANCEL_YMD, inMap.getString(JBSbatKKIFM490.SVC_CANCEL_YMD));
		outmap.setString(JBSbatKKIFM159.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM490.SVC_PAUSE_YMD));
		outmap.setString(JBSbatKKIFM159.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM490.SVC_PAUSE_RLS_YMD));
		outmap.setString(JBSbatKKIFM159.USE_FAIL_STAYMD, inMap.getString(JBSbatKKIFM490.USE_FAIL_STAYMD));
		outmap.setString(JBSbatKKIFM159.USE_FAIL_ENDYMD, inMap.getString(JBSbatKKIFM490.USE_FAIL_ENDYMD));
		outmap.setString(JBSbatKKIFM159.CHRG_STAYMD, inMap.getString(JBSbatKKIFM490.CHRG_STAYMD));
		outmap.setString(JBSbatKKIFM159.FIRST_CHRG_STAYMD, inMap.getString(JBSbatKKIFM490.FIRST_CHRG_STAYMD));
		outmap.setString(JBSbatKKIFM159.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM490.CHRG_ENDYMD));
		outmap.setString(JBSbatKKIFM159.VA_SHUKKA_YMD, inMap.getString(JBSbatKKIFM490.VA_SHUKKA_YMD));
		outmap.setString(JBSbatKKIFM159.SVC_KZK_MON_CNT, inMap.getBigDecimal(JBSbatKKIFM490.SVC_KZK_MON_CNT));
		outmap.setString(JBSbatKKIFM159.SVC_KZK_DAY_CNT, inMap.getBigDecimal(JBSbatKKIFM490.SVC_KZK_DAY_CNT));
		outmap.setString(JBSbatKKIFM159.CHRG_KZK_MON_CNT, inMap.getBigDecimal(JBSbatKKIFM490.CHRG_KZK_MON_CNT));
		outmap.setString(JBSbatKKIFM159.CHRG_KZK_DAY_CNT, inMap.getBigDecimal(JBSbatKKIFM490.CHRG_KZK_DAY_CNT));
		outmap.setString(JBSbatKKIFM159.KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM490.KEI_CNT));
		outmap.setString(JBSbatKKIFM159.MON_MAX_KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM490.MON_MAX_KEI_CNT));
		outmap.setString(JBSbatKKIFM159.AITAI_DIV, inMap.getString(JBSbatKKIFM490.AITAI_DIV));
		outmap.setString(JBSbatKKIFM159.SIME_DAY, inMap.getString(JBSbatKKIFM490.SIME_DAY));
		outmap.setString(JBSbatKKIFM159.MANSION_ID, inMap.getString(JBSbatKKIFM490.MANSION_ID));
		outmap.setString(JBSbatKKIFM159.TK_HOSHIKI_KEI_NO, inMap.getString(JBSbatKKIFM490.TK_HOSHIKI_KEI_NO));
		outmap.setString(JBSbatKKIFM159.KANYU_KEI_PAY_HOSHIKI_CD, inMap.getString(JBSbatKKIFM490.KANYU_KEI_PAY_HOSHIKI_CD));
		outmap.setString(JBSbatKKIFM159.TELNO, inMap.getString(JBSbatKKIFM490.TELNO));
		outmap.setString(JBSbatKKIFM159.TTL_KOSU, inMap.getString(JBSbatKKIFM490.TTL_KOSU));
		
		return outmap;
	}
}
