/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV063913ReqChk
*	ソースファイル名：JKKSV063913ReqChk.java
*	作成者			：FJ
*	日付			：2014年08月02日
*＜機能概要＞
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v10.00.00	2014/08/02	FJ)米田		新規作成【ANK-1918-00-00】
*	v10.00.01	2014/09/12	FJ)米田		【IT2-2014-0000308】申込明細番号と申込番号の取得方法を修正(NULLの場合はALL0に変換)
*															実行判定の方法を変更
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.common.AbstractCustomReqChk;
import com.fujitsu.futurity.bp.x21.bpm.common.IConditionValue;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.reqchk.exception.ReqChkException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;

/**
 * BPから呼び出すサービスIFの
 * 単項目チェック・単関連チェックを実施する。
 * 
 * @author FJ
 */
public class JKKSV063913ReqChk extends AbstractCustomReqChk
{
// IT2-2014-0000308 2014/09/01 ADD START
	/** サービス契約ステータス（受付済） */
	private static final String SVC_KEI_STAT_010 = "010";
// IT2-2014-0000308 2014/09/01 ADD END

	/**
	 * 実行判定クラス。
     * <BR>
     * @param irp リクエストパラメータ
     * @param conditionvalue 判定条件
	 * @return boolean
	 * @throws ReqChkException 
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException
	{
		try
		{
// IT2-2014-0000308 2014/09/01 ADD START
			HashMap KKSV063901SCParamMap = (HashMap)irp.getData("KKSV063901SC");
			
			if (KKSV063901SCParamMap == null)
			{
				return false;
			}

			//サービス契約ステータスの取得
			String svc_kei_stat = (String)KKSV063901SCParamMap.get("svc_kei_stat");

			// 判定処理
			if (JKKStringUtil.isNullBlank(svc_kei_stat) || SVC_KEI_STAT_010.equals(svc_kei_stat))
			{
				return false;
			} 
// IT2-2014-0000308 2014/09/01 ADD END

			// 作業領域の取得
			Map workMap = irp.getMappingWorkArea();
			HashMap dataMap = (HashMap)workMap.get("WORK");

			// 作業領域から申込明細番号を取得する。
			String mskm_dtl_no = (String)dataMap.get("mskm_dtl_no");

// IT2-2014-0000308 2014/09/01 ADD START
			// 取得した申込明細番号がNULLの場合は、ALL0を設定する。
			if (JKKStringUtil.isNullBlank(mskm_dtl_no))
			{
				mskm_dtl_no = "000000000000";
			}
// IT2-2014-0000308 2014/09/01 ADD END

			// KKSV063904SCのパラメータを取得する。
			HashMap KKSV063904SCParamMap = (HashMap)irp.getData("KKSV063904SC");

			// KKSV063904SCのパラメータから申込番号を取得する。
			String mskm_no = (String)KKSV063904SCParamMap.get("mskm_no");	// 申込番号

// IT2-2014-0000308 2014/09/01 ADD START
			// 取得した申込番号がNULLの場合は、ALL0を設定する。
			if (JKKStringUtil.isNullBlank(mskm_no))
			{
				mskm_no = "000000000000";
			}
// IT2-2014-0000308 2014/09/01 ADD END

			// KKSV063905SCのパラメータを取得する。
			HashMap KKSV063905SCParamMap = (HashMap)irp.getData("KKSV063905SC");

			// KKSV063905SCのパラメータから以下の項目を取得する。
			// ・サービス契約番号
			// ・SYSID
			// ・異動区分
			String svc_kei_no = (String)KKSV063905SCParamMap.get("svc_kei_no");	// サービス契約番号
			String sysid = (String)KKSV063905SCParamMap.get("sysid");			// SYSID
			String ido_div = (String)KKSV063905SCParamMap.get("ido_div");		// 異動区分
			
			// 工事案件CCのパラメータを取得する。
			HashMap kojiParamMap = (HashMap)irp.getData("KojiAnkenCC");

			// パラメータ内の各項目に値を設定する。
			kojiParamMap.put("svc_kei_no", svc_kei_no);		// サービス契約番号
			kojiParamMap.put("mskm_dtl_no", mskm_dtl_no);	// 申込明細番号
			kojiParamMap.put("mskm_no", mskm_no);			// 申込番号
			kojiParamMap.put("koji_uk_cd", "070");			// 工事受付コード
			kojiParamMap.put("koji_uk_dtl_cd", "AB");		// 工事受付詳細コード
			kojiParamMap.put("sysid", sysid);				// SYSID
			kojiParamMap.put("smln_op_kei_um", "1");		// スマートリンクオプション契約有無
			kojiParamMap.put("ido_div", ido_div);			// 異動区分

			return true;
		}
		catch (RequestParameterException e)
		{
			return false;
		}
	}
}
