/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKKeiHimoKojiakUpdCC
*	ソースファイル名：JKKKeiHimoKojiakUpdCC.java
*	作成者			：FJ
*	日付			：2011年12月07日
*＜機能概要＞ 
*	契約紐付変更登録の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/07	FJ9川田		新規作成
*	v4.00.00	2013/03/22	FJ)稲岡		【IT1-2013-0000576】対応
*	v8.00.00	2014/02/14	FJ)稲岡		【ST-2014-0000048】対応
*	v20.00.00	2015/11/04	FJ)宇野		【OM-2015-0001608】対応
*	v73.00.00	2024/10/09	FJ)辻中		【ANK-4427-00-00】対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
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;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.common.constant.JKKStrConst;

/**
 * 
 * @author 909486
 *
 */
public class JKKKeiHimoKojiakUpdCC extends AbstractCommonComponent
{
/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
	/** FIXED KEY */
	private static final String FIXED_KEY_KOJIAK_UPD_CC = "KojiakUpdCC";
/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
	
	/**
	 * サービス契約のお客様情報の変更を行います。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite updKojiak(SessionHandle handle, 
												IRequestParameterReadWrite param, 
												String fixedText) throws Throwable
	{
		IRequestParameterReadWrite retParam = param;
		
		// ユーザデータ情報
		HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		String opeDateTime = (String)dataMap.get("ope_date_time");	// 運用日時分秒
		String skSysid = (String)dataMap.get("sk_sysid");			// 併合先＿ＳＹＳＩＤ
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		HashMap workDataMap = (HashMap)workMap.get("WORK");
		String mskmDtlNo = (String)workDataMap.get("mskm_dtl_no");	// 申込明細番号
		
		// 運用日
		String opeDate = JCCBPCommon.getOpeDate(null);
		
		// 変更対象のリストを取得
		HashMap<String, Object> work01Map = (HashMap<String, Object>)param.getData("KKSV0360WORK01");
		ArrayList list = (ArrayList)work01Map.get("svc_kei_list");
		HashMap<String, String> svcMap = null;
		
		for(int i=0; i<list.size(); i++)
		{
			svcMap = (HashMap)list.get(i);
			
			// 画面で選択されている場合
			if((Boolean.valueOf(svcMap.get("isSelect"))))
			{
/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
				
				// v20.00.00 MOD START
				// サービスが"51":ｍｉｎｅｏの場合
//				if(JKKStrConst.CD00130_51.equals((String)svcMap.get("svc_cd_KK0081")))
				if(JKKStrConst.CD00130_51.equals((String)svcMap.get("svc_cd_KK0081")) 
						|| JKKStrConst.CD00133_16.equals((String)svcMap.get("prc_grp_cd_KK0081")))
				{
				// v20.00.00 MOD END
					// 処理対象外
					continue;
				}
/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
/* ++++++++++ ANK-4427-00-00 追加開始 ++++++++++ */
				// ＮＴＴ卸区分が設定されている場合は工事情報はないため処理対象外
				if (svcMap.get("nttors_div") != null && !("".equals(((String)svcMap.get("nttors_div").trim())))) {
					continue;
				}
/* ++++++++++ ANK-4427-00-00 追加終了 ++++++++++ */
/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
				// params[0]：料金グループコード
				// params[1]：サービス契約番号
				// params[2]：運用日
				// params[3]：マンション物件コード
				// params[4]：申込明細番号
				// params[5]：サービス契約回線内訳番号
				// params[6]：工事受付契機異動年月日時分秒
				// params[7]：サービスコード
				// params[8]：サービス開始年月日
				// params[9]：SYSID
				// params[10]：マンション通信設備コード
				String[] params = new String[11];
				params[0] = (String)svcMap.get("prc_grp_cd_KK0081");
				params[1] = (String)svcMap.get("svc_kei_no");
				params[2] = opeDate;
				params[3] = (String)svcMap.get("mansion_bukken_cd");
				params[4] = mskmDtlNo;
				params[5] = (String)svcMap.get("svc_kei_kaisen_ucwk_no_KK0241");
				params[6] = opeDateTime;
				params[7] = (String)svcMap.get("svc_cd_KK0081");
				params[8] = (String)svcMap.get("svc_sta_ymd_KK0081");
				params[9] = skSysid;
				params[10] = (String)svcMap.get("mans_tushin_equip_cd");
				
				// 作業項目マップ
				workDataMap.put("params", params);
				
				JCKKKojiakUpdCC kojiakUpdCC = new JCKKKojiakUpdCC();
				kojiakUpdCC.execute(handle, param, FIXED_KEY_KOJIAK_UPD_CC);
/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
			}
		}
		
		return retParam;
	}
	
	/**
	 * チェック処理です。<br>
	 * <br>
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		List<CAANMsg> templates = new ArrayList<CAANMsg>();
		
		// チェック用サービスインターフェイス
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, Arrays.asList(templates));
		
		return paramMap;
	}
}
