/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKCallFmtcelIdoInfAddCC
*	ソースファイル名：JKKCallFmtcelIdoInfAddCC.java
*	作成者			：FJ
*	日付			：2011年08月08日
*＜機能概要＞
*	フェムトセル異動情報登録の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2011/08/08	FJ			新規作成
*	v8.00.00	2014/04/30	FJ)中井		OM-2014-0001266
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;

/**
 * 
 * @author 909488
 *
 */
public class JKKCallFmtcelIdoInfAddCC extends AbstractCommonComponent
{

	
	/**
	 * フェムトセル異動情報登録CCを呼出し、
	 * フェムトセル異動情報登録を行う。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite callAddFmtcelIdoInf(SessionHandle handle,
													IRequestParameterReadWrite param,
													String fixedText) throws Throwable
	{
		// フェムトセル異動情報登録CC
		JKKFmtcelIdoInfAddCC fmtcelIdoInfAddCC = new JKKFmtcelIdoInfAddCC();
		HashMap<String, Object> paramMap = null;
		
		// ユーザデータ情報
		HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		
		String funcCode = (String)dataMap.get("func_code");
		if("1".equals(funcCode)){
			
			//リストに進捗年月日時分秒が設定されていればフェムトセル異動情報登録CC実行
			ArrayList<HashMap<String, Object>> prgDtmMapList = (ArrayList<HashMap<String, Object>>)workMap.get("prgDtmMapList");
			if(prgDtmMapList != null){
				
				for(HashMap<String, Object> prgDtmMap :prgDtmMapList){
					
					if(prgDtmMap != null){
						// 請求契約内容変更(契約者併合)用のメッセージを作成
						paramMap = editInMsg(param, dataMap, prgDtmMap);
						param.setData(fixedText, paramMap);
						
						// フェムトセル異動情報登録CC実行
						fmtcelIdoInfAddCC.addFmtcelIdoInf(handle, param, fixedText);
					}
				}
			}
		}
		
		return param;
	}
	/**
	 * フェムトセル異動情報登録のメッセージを作成します。
	 * 
	 * @param param
	 * @param dataMap
	 * @param svcList
	 * @param workDataMap
	 * @param seikyKeiNo
	 * 
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												HashMap<String, Object> dataMap,
												HashMap<String, Object> prgDtmMap) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 視聴制御依頼処理コード
		paramMap.put("wctrl_req_trn_cd", dataMap.get("wctrl_req_trn_cd"));
		// SYSID
		paramMap.put("sysid", dataMap.get("sysid"));
		// サービス契約番号
		paramMap.put("svc_kei_no", dataMap.get("svc_kei_no"));
		// オプションサービス契約番号
		paramMap.put("op_svc_kei_no", dataMap.get("op_svc_kei_no"));
		/* ++++++++++ v8.00.00 修正開始 ++++++++++ */
		// 工事案件番号
//		paramMap.put("kojiak_no", dataMap.get("kojiak_no"));
		if(dataMap.get("kojiak_no") != null && !"".equals((String)dataMap.get("kojiak_no")))
		{
			paramMap.put("kojiak_no", (String)dataMap.get("kojiak_no"));
		}
		else if(dataMap.get("kojiak_no_new") != null && !"".equals((String)dataMap.get("kojiak_no_new")))
		{
			paramMap.put("kojiak_no", (String)dataMap.get("kojiak_no_new"));
		}
		else
		{
			paramMap.put("kojiak_no", "");
		}
		/* ++++++++++ v8.00.00 修正終了 ++++++++++ */
		// 異動区分
		paramMap.put("ido_div", dataMap.get("ido_div"));
		// フェムトセル異動詳細コード
		paramMap.put("fmtcel_ido_dtl_cd", dataMap.get("fmtcel_ido_dtl_cd"));
		
		// 進捗年月日時分秒
		if(prgDtmMap.get("prg_dtm") != null && !"".equals((String)prgDtmMap.get("prg_dtm"))){
			paramMap.put("prg_dtm", (String)prgDtmMap.get("prg_dtm"));
		}else{
			paramMap.put("prg_dtm", "");
		}
		// サービス契約番号がprgDtmMapにある場合そちらを優先（上書き）
		if(prgDtmMap.get("svc_kei_no") != null && !"".equals((String)prgDtmMap.get("svc_kei_no"))){
			paramMap.put("svc_kei_no", (String)prgDtmMap.get("svc_kei_no"));
		}else{
			//何もしない。上で設定した値を使用する。
		}
		
		return paramMap;
	}
	
}
