/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKAdChgSmtvlRnkiCC
*   ソースファイル名：JKKAdChgSmtvlRnkiCC.java
*   作成者          ：富士通
*   日付            ：2012年09月19日
*＜機能概要＞
*   住所変更スマートバリュー連携部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/09/19   FJ）        新規作成
*   v10.00.00	2014/07/25   FJ)齋藤	【ANK-1918-00-00】ＵＳ管理Ｓ向けｅｏ顧客ＳのＩ／Ｆ改修
*	v10.01.00	2014/10/07   FJ)松本	ST-2014-0000158 対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
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.model.base.CAANMsg;
import com.fujitsu.futurity.bp.custom.constant.JKKKojiAnkenConstCC;

public class JKKAdChgSmtvlRnkiCC extends AbstractCommonComponent {

	/**
	 * 住所変更スマートバリュー連携処理
	 * <br>
	 * パラメータの件数分、住所変更スマートバリュー連携します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return パラメータマップ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addSmtvlIdoInf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {

		// ----- 引数チェック -----
		// パラメータ
		if (param == null) {
			return null;
		}
		// ユーザ任意文字列
		if (fixedText == null) {
			return null;
		}

		// ----- 主処理 -----
		// 対象データListを取得
		ArrayList<HashMap<String, Object>> trgtDataList = (ArrayList<HashMap<String, Object>>)param.getData(fixedText);

		// 対象データListの存在チェック
		if (trgtDataList == null) {
			return param;
		}

		// 対象データListの件数分、以下の処理を繰り返す
		for (HashMap<String, Object> trgtData : trgtDataList) {
			param.setData("SMTVL_IDO_INF", trgtData);
			JKKBpCommon.addSmtvlIdoInf(handle, param, trgtData, "SMTVL_IDO_INF");
			//ANK-1918-00-00 ADD START
			//スマートバリュー連携情報を工事案件CCへ連携
			//ST-2014-0000158 MOD START
			//callKojiAnkenCC(param, handle, trgtData);
			if("1".equals(trgtData.get("hantei_flg")))
			{
				callKojiAnkenCC(param, handle, trgtData);
			}
			//ST-2014-0000158 MOD END
			//ANK-1918-00-00 ADD END
		}

		return param;
	}

	/**
	 * ＢＰチェック入力パラメータ作成
	 * <br>
	 * ＢＰチェック用の入力パラメータを作成する。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return HashMap パラメータマップ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws RequestParameterException {
		return new HashMap();
	}

	/**
	 * ＢＰチェック結果編集
	 * <br>
	 * ＢＰチェック結果を編集する。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) {
		return param;
	}
	//ANK-1918-00-00 ADD START
	/**
	 * 工事CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param work リクエストパラメータ
	 * @throws Throwable
	 */
	private void callKojiAnkenCC(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> trgtData
	) throws Throwable
	{
		JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();
		String workFixedText = "KojiakCC";
		
		// データマッピング
		this.mappingKojiAnkenCC(param, workFixedText, trgtData);

		// 工事案件CC呼び出し
		kojiCC.executeKojiAnken(handle, param, workFixedText);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:工事案件CC
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param	param			(I) 業務データ取得用I/F
	 * @param	workFixedText	ワーク領域
	 * @param	work			引継ぎデータ
	 * @return					サービスコンポーネント実行用CAANMsg
	 * @throws	RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public void mappingKojiAnkenCC(
			IRequestParameterReadWrite param, 
			String workFixedText,
			HashMap<String, Object> trgtData
	) throws RequestParameterException 
	{
		HashMap outMap = null;
		if (param.getData(workFixedText) == null)
		{
			param.setData(workFixedText, new HashMap<String, Object>());
		}
		outMap = (HashMap)param.getData(workFixedText);

		// サービス契約番号
		outMap.put(JKKKojiAnkenConstCC.SVC_KEI_NO, (String)trgtData.get("svc_kei_no"));

		// 申込明細番号(ダミー値)
		outMap.put(JKKKojiAnkenConstCC.MSKM_DTL_NO, "999999999999");
		
		// 申込番号(ダミー値)
		outMap.put(JKKKojiAnkenConstCC.MSKM_NO, "999999999999");

		// 工事受付コード（内容変更）
		outMap.put(JKKKojiAnkenConstCC.KOJI_UK_CD, "070");

		// 工事受付詳細コード（スマートバリュー契約変える）
		outMap.put(JKKKojiAnkenConstCC.KOJI_UK_DTL_CD, "AA");

		// SYSID
		outMap.put(JKKKojiAnkenConstCC.SYSID, (String)trgtData.get("sysid"));
		
		// スマートバリュー契約有無
		outMap.put(JKKKojiAnkenConstCC.SMTVL_KEI_UM, "1");

		// 異動区分
		outMap.put(JKKKojiAnkenConstCC.IDO_DIV, (String)trgtData.get("ido_div"));

	}
}
//ANK-1918-00-00 ADD END
