/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV0674014MappingCC
*	ソースファイル名：JKKSV0674014MappingCC.java
*	作成者			：富士通
*	日付			：2012年09月05日
*＜機能概要＞
*	マッピングCCです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/09/05	FJ)松枝		新規作成
*
**********************************************************************/
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.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;

public class JKKSV0674014MappingCC extends AbstractCommonComponent
{
	/**
	 * CCへのマッピング処理を行います
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings({ "unchecked" })
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		//eo光ネット登録ＣＣ
		HashMap<String, Object> KKSV0674014CC = (HashMap<String, Object>) param.getData("KKSV0674014CC");
		
		//サービス契約回線内訳登録
		HashMap<String, Object> KKSV0674001SC = (HashMap<String, Object>) param.getData("KKSV0674001SC"); 
		
		if (KKSV0674001SC != null)
		{
			//サービス契約回線内訳番号
			KKSV0674014CC.put("kk0241_svc_kei_kaisen_ucwk_no", KKSV0674001SC.get("svc_kei_kaisen_ucwk_no"));
		}

		//住所変更請求契約番号取得コンポーネント部品
		HashMap<String, Object> KKSV0674080CC = (HashMap<String, Object>) param.getData("KKSV0674080CC"); 
		//お客様一意照会
		HashMap<String, Object> KKSV0674005SC = (HashMap<String, Object>) param.getData("KKSV0674005SC");
// OM-2013-0002021対応 20130913 星野 ADD START
		HashMap<String,Object> KKSV067405CC = (HashMap<String, Object>)param.getData("KKSV0674005CC");
		String jdgChgDivNet = (String)KKSV067405CC.get("jdg_chg_div_net");
// OM-2013-0002021対応 20130913 星野 ADD END
		
		if (KKSV0674080CC != null)
		{
			
// OM-2013-0002021対応 20130913 星野 ADD START
			String seikyKeiNo = null;
			// ネットが解約/新規の場合
			if ( "4".equals(jdgChgDivNet) ){
				// 変更前サービス契約番号より請求契約番号を取得
				String svcKeiNo = (String)KKSV067405CC.get("svc_kei_no");
				seikyKeiNo = getSeikyKeiNo(handle, param, fixedText, svcKeiNo);
			}
			
			if(!StringUtils.isEmpty(seikyKeiNo)){
				//請求契約番号
				KKSV0674014CC.put("kk0091_seiky_kei_no", seikyKeiNo);
				KKSV0674014CC.put("kk0361_seiky_kei_no", seikyKeiNo);
				KKSV0674014CC.put("kk034101_seiky_kei_no", seikyKeiNo);
			} else {
// OM-2013-0002021対応 20130913 星野 ADD END
				//請求契約番号
				KKSV0674014CC.put("kk0091_seiky_kei_no", KKSV0674080CC.get("seiky_kei_no"));
				KKSV0674014CC.put("kk0361_seiky_kei_no", KKSV0674080CC.get("seiky_kei_no"));
				KKSV0674014CC.put("kk034101_seiky_kei_no", KKSV0674080CC.get("seiky_kei_no"));
// OM-2013-0002021対応 20130913 星野 ADD START
			}
// OM-2013-0002021対応 20130913 星野 ADD END
			
			ArrayList <HashMap<String, String>> kktkAddList = (ArrayList<HashMap<String, String>>)KKSV0674014CC.get("kktk_add_list");
			
			if (kktkAddList.size() > 0) {
				HashMap<String, String> routerMap = kktkAddList.get(0);
				// ルーターは１つしか設定できない
// OM-2013-0002021対応 20130913 星野 ADD START
				if(!StringUtils.isEmpty(seikyKeiNo)){
					routerMap.put("kk0341_seiky_kei_no", seikyKeiNo);
				} else {
// OM-2013-0002021対応 20130913 星野 ADD END
					routerMap.put("kk0341_seiky_kei_no", (String)KKSV0674080CC.get("seiky_kei_no"));
// OM-2013-0002021対応 20130913 星野 ADD START
				}
// OM-2013-0002021対応 20130913 星野 ADD END
				if (KKSV0674005SC != null)
				{
// OM-2013-0001914対応 20130912 星野 ADD START
					if( 
						StringUtils.isEmpty( (String)routerMap.get("kk0341_kiki_sohus_nm") ) 
						|| StringUtils.isEmpty( (String)routerMap.get("kk0341_kiki_sohus_kana") ) 
					){
// OM-2013-0001914対応 20130912 星野 ADD END
						routerMap.put("kk0341_kiki_sohus_nm", (String)KKSV0674005SC.get("cust_nm"));
						routerMap.put("kk0341_kiki_sohus_kana", (String)KKSV0674005SC.get("cust_kana"));
// OM-2013-0001914対応 20130912 星野 ADD START
					}
// OM-2013-0001914対応 20130912 星野 ADD END
// IT2-2013-0000171対応 START
//					routerMap.put("kk0341_kiki_stc_saki_nm", (String)KKSV0674005SC.get("cust_nm"));
//					routerMap.put("kk0341_kiki_stc_saki_kana", (String)KKSV0674005SC.get("cust_kana"));
// IT2-2013-0000171対応 END
				}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO ADD START 2012.11.21 ------------------------
				// VDSLモデムの場合
				if ("C005".equals((String)routerMap.get("kk0341_kktk_svc_cd")))
				{
					// サービス契約回線内訳番号
					if (KKSV0674001SC != null)
					{
						//サービス契約回線内訳番号
						routerMap.put("kk0341_svc_kei_kaisen_ucwk_no", (String)KKSV0674001SC.get("svc_kei_kaisen_ucwk_no"));
					}
				}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO ADD END   2012.11.21 ------------------------
			}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO ADD START 2012.11.21 ------------------------
			if (kktkAddList.size() == 2)
			{
				HashMap<String, String> vdslMap = kktkAddList.get(1);
// OM-2013-0002021対応 20130913 星野 ADD START
				if(!StringUtils.isEmpty(seikyKeiNo)){
					vdslMap.put("kk0341_seiky_kei_no", seikyKeiNo);
				} else {
// OM-2013-0002021対応 20130913 星野 ADD END
					vdslMap.put("kk0341_seiky_kei_no", (String)KKSV0674080CC.get("seiky_kei_no"));
// OM-2013-0002021対応 20130913 星野 ADD START
				}
// OM-2013-0002021対応 20130913 星野 ADD END
				if (KKSV0674005SC != null)
				{
// OM-2013-0001914対応 20130912 星野 ADD START
					if( 
						StringUtils.isEmpty( (String)vdslMap.get("kk0341_kiki_sohus_nm") ) 
						|| StringUtils.isEmpty( (String)vdslMap.get("kk0341_kiki_sohus_kana") ) 
					){
// OM-2013-0001914対応 20130912 星野 ADD END
						vdslMap.put("kk0341_kiki_sohus_nm", (String)KKSV0674005SC.get("cust_nm"));
						vdslMap.put("kk0341_kiki_sohus_kana", (String)KKSV0674005SC.get("cust_kana"));
// OM-2013-0001914対応 20130912 星野 ADD START
					}
// OM-2013-0001914対応 20130912 星野 ADD END
// IT2-2013-0000171対応 START
//					vdslMap.put("kk0341_kiki_stc_saki_nm", (String)KKSV0674005SC.get("cust_nm"));
//					vdslMap.put("kk0341_kiki_stc_saki_kana", (String)KKSV0674005SC.get("cust_kana"));
// IT2-2013-0000171対応 END
				}
				// VDSLモデムの場合
				if ("C005".equals((String)vdslMap.get("kk0341_kktk_svc_cd")))
				{
					// サービス契約回線内訳番号
					if (KKSV0674001SC != null)
					{
						//サービス契約回線内訳番号
						vdslMap.put("kk0341_svc_kei_kaisen_ucwk_no", (String)KKSV0674001SC.get("svc_kei_kaisen_ucwk_no"));
					}
				}
			}
//>>> 巻2 ANK-1224-00-00 Y.MORIMOTO ADD END   2012.11.21 ------------------------
			
			
		}

		return param;
	}
	
// OM-2013-0002021対応 20130913 星野 ADD START
	/**
	 * 課金先一覧照会（請求契約番号/サービス契約番号）サービスI/F実行
	 * 
	 * @param handle
	 * @param param
	 * @return
	 * @throws Throwable 
	 */
	private String getSeikyKeiNo(	SessionHandle handle,
									IRequestParameterReadWrite param,
									String fixedText,
									String svcKeiNo) throws Throwable
	{
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		condMap.clear();
		// 引継データ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNo );
		reqMap = mapper.setEKK0321B002( param, fixedText, condMap );
		resMap = scCall.run( reqMap, handle );
		ArrayList<HashMap<String, Object>> kk0321_b002_list = mapper.getEKK0321B002( param, fixedText, resMap );
		mapper.scResultCheck( param );
		
		if( kk0321_b002_list != null && !kk0321_b002_list.isEmpty() ){
			return (String)kk0321_b002_list.get(0).get(EKK0321B002CBSMsg1List.SEIKY_KEI_NO);
		}else{
			return null;
		}
	}
// OM-2013-0002021対応 20130913 星野 ADD END

}
