/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0336_KKSV0336OPDBMapper
*	ソースファイル名：KKSV0336_KKSV0336OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年12月19日
*＜機能概要＞
*	BP（契約者番号及び請求先番号照会OP）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/19	Fujitsu		新規作成
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * DataBean-BPマッピングをする。
 * @author FJ
 * 
 */
public class KKSV0336_KKSV0336OPDBMapper
{
	/**
	 * コンストラクタ
	 */
	public KKSV0336_KKSV0336OPDBMapper()
	{
	}

	/**
	 * 上りマッピング
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public void setKKSV033601SC(HashMap reqMap, HashMap outputMap, String func_code)
	{
		
		if(null == reqMap)
		{
			return;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>(3);
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → 課金先一覧照会（請求契約番号／サービス契約番号）マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		// 請求契約番号 → 課金先一覧照会（請求契約番号／サービス契約番号）マップ.ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", "");
		
		outputMap.put("KKSV033601SC", parentMap);
		
		return;
	}
	
	/**
	 * 下りマッピング
	 * @param simpleMap 処理応答電文（シンプルセクタ）
	 * @param multiList 処理応答電文（マルチセクタ）
	 * @param outputMap
	 */
	public void getKKSV033601SC(HashMap<String, Object> simpleMap, ArrayList<HashMap<String, Object>> multiList, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV033601SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV033601SC");
		}
		else
		{
			return;
		}
		
		if(parentMap.containsKey("EKK0321B002CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0321B002CBSMsg1List");
			
			// 請求先番号のデータ取得件数 ← 課金先一覧照会（請求契約番号／サービス契約番号）マップ.請求先番号のデータ取得件数
			simpleMap.put("SIKYUSK_COUNT", String.valueOf(childList.size()));
			
			// 請求契約番号 ← 課金先一覧照会（請求契約番号／サービス契約番号）マップ.請求契約番号
			if (null != childList) 
			{
				for (int i = 0; i < childList.size(); i++)
				{
					HashMap<String, Object> childOutMap = new HashMap<String, Object>();
					HashMap<String, Object> miniMap = new HashMap<String, Object>();
					childOutMap = (HashMap<String, Object>)childList.get(i);
					miniMap.put("SIKYUSK_BNGU", (String)childOutMap.get("seiky_kei_no"));
					multiList.add(miniMap);
				}
			}
		}
		return;
	}

	/**
	 * 上りマッピング
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param opeDate オンライン運用日付
	 * @return HashMap
	 */
	public void setKKSV033602SC(HashMap reqMap, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(null == reqMap)
		{
			return;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>(4);
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		// 世代登録年月日時分秒 → サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		// 予約適用年月日 → サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);
		
		outputMap.put("KKSV033602SC", parentMap);
		
		return;
	}
	
	/**
	 * 下りマッピング
	 * @param simpleMap 処理応答電文（シンプルセクタ）
	 * @param multiList 処理応答電文（マルチセクタ）
	 * @param outputMap
	 */
	public void getKKSV033602SC(HashMap<String, Object> simpleMap, ArrayList<HashMap<String, Object>> multiList, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = null;
		if(outputMap.containsKey("KKSV033602SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV033602SC");
		}
		else
		{
			return ;
		}
		
		if(parentMap.containsKey("EKK0081A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0081A010CBSMsg1List");
			
			int count = 0;
			// SYSID ← サービス契約一意照会マップ.SYSID
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap<String, Object> map = (HashMap<String, Object>)childList.get(i);
				if(null != (String)map.get("sysid") && !"".equals((String)map.get("sysid")))
				{
					count = 1;
					HashMap<String, Object> miniMap = new HashMap<String, Object>();
					miniMap.put("KIYKSHA_BNGU", (String)map.get("sysid"));
					multiList.add(miniMap);
				}
			}
			// SYSIDのデータ取得件数 ← サービス契約一意照会マップ.契約者番号のデータ取得件数
			simpleMap.put("KIYKSHA_COUNT", String.valueOf(count));
		}
		return ;
	}

	/**
	 * 上りマッピング
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param opeDate オンライン運用日付
	 * @return HashMap
	 */
	public void setKKSV0336WORK01(HashMap reqMap, HashMap outputMap, String opeDate)
	{
		if(null == reqMap)
		{
			return;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>(2);
		
		// オンライン運用日付 → 契約者番号及び請求先番号照会作業項目マップ01.オンライン処理日
		parentMap.put("ope_date", opeDate);
		// 番号取得判定フラグ → 契約者番号及び請求先番号照会作業項目マップ01.番号取得判定フラグ
		parentMap.put("NO_FLG", (String)reqMap.get("NO_FLG"));
		
		outputMap.put("KKSV0336WORK01", parentMap);
		
		return;
	}
	
	/**
	 * 下りマッピング
	 * @param resMap 処理応答電文
	 * @param outputMap
	 * @return HashMap
	 */
	public void getKKSV0336WORK02(HashMap resMap, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV0336WORK02"))
		{
			parentMap = (HashMap)outputMap.get("KKSV0336WORK02");
		}
		else
		{
			return;
		}
		
		// 返却結果コード ← 契約者番号及び請求先番号照会作業項目マップ02.返却結果コード
		resMap.put("WDA_COM_RESULT", (String)parentMap.get("return_result_cd"));
		
		return;
	}
}
