/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKAddTokkiCC
*   ソースファイル名：JKKAddTokkiCC.java
*   作成者          ：富士通
*   日付            ：2011年10月18日
*＜機能概要＞
*   登録部品
*＜修正履歴＞
*   バージョン  修正日       修正者          修正内容
*   v1.00.00    2011/10/18   FJ）三浦        新規作成
*   v4.00.00    2012/08/09   FJ）多田（真） 【ANK-0367-00-00】面開発案件へのキャンペーンコード自動登録
*   v4.00.00    2012/10/01   FJ）北村       【ANK-0493-00-00】取扱コード対応
*   v4.00.00    2012/10/16   FJ）松田       【ANK-1199-00-00】申込書明細番号の自動発番について
*   v5.00.00    2013/09/19   FJ) 川島       【OM-2013-0002328】申込書明細番号の重複チェック対応
*   v10.00.00   2014/07/24   FJ）中山       【ANK-2137-00-00】提携住宅会社用WEB受付画面配置
*   v31.00.00   2017/12/08   FJ）麻生       【ANK-3136-00-00】OPMSハードウエア保守切れ対応(STEP2-2)
*   v71.00.11	2024/04/24   FJ)森下        【ANK-4468-11-00】eo光ネット「シンプルプラン」追加対応 仕変11
*   v73.00.00	2024/10/10   FJ)吉田あ      【ANK-4427-00-00】NTT卸対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.KKSV0333_KKSV0333OP_KKSV033301CC;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.ErrorInfoMapKeys;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.ejb.cbs.cbsmsg.ECK0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B506CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B506CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0061B502CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061B502CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0071D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0271B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0271B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0071B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0071B010CBSMsg1List;


/**
 * 特記登録チェックを行う。
 * <br>
 * @author 富士通
 */
public class JKKAddTokkiCC extends AbstractCommonComponent
{

	/**
	 * 入力チェックメイン処理
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param ccName ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeMain(SessionHandle handle, IRequestParameterReadWrite param, String ccName) throws Throwable
	{
		// エラーフラグ(実行判定用)
		String errFlgCc = "0";

		Map<?, ?> result = null;
		String opeDate = null;
		String keishaTypeCd = null;
		String[] agntList = new String[4]; 

		// 下りユーザデータ
		Map resUserMap = new HashMap();

		/***************************************************/
		/** 入力パラメータの取得                           */
		/***************************************************/
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);
		opeDate = (String)ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.OPE_DATE);
		
		keishaTypeCd = (String)ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.KEISHA_TYPE_CD);
		agntList[0] = (String)ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TRAT_CD1);
		agntList[1] = (String)ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TRAT_CD2);
		agntList[2] = (String)ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TRAT_CD3);
		agntList[3] = (String)ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TRAT_CD4);
		
		//契約者種別が１（個人）の場合、処理を行う。
		if(JKKStrConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd))
		{
			/***************************************************/
			/** お客様＜個人＞チェック                         */
			/***************************************************/
			result = callAddCustKojinSc(handle, param, "2", ccName);
			if (!JKKBpCommon.isSuccess(result))
			{
				errFlgCc = "1";
				JKKBpCommon.setResultCtrlData(param, result);
			}
			
		}
		//契約種別２（法人）、３（保守用）、４（自社利用）の場合処理を行う。
		else if(JKKStrConst.KEISHA_TYPE_CD_HOJIN.equals(keishaTypeCd) || 
				JKKStrConst.KEISHA_TYPE_CD_HOSYU.equals(keishaTypeCd) || JKKStrConst.KEISHA_TYPE_CD_JISHA.equals(keishaTypeCd))
		{
			/***************************************************/
			/** お客様＜法人＞チェック                         */
			/***************************************************/
			result = callAddCustHojinSc(handle, param, "2", ccName);
			if (!JKKBpCommon.isSuccess(result))
			{
				errFlgCc = "1";
				JKKBpCommon.setResultCtrlData(param, result);
			}
		}

		/***************************************************/
		/** 申込登録チェック                               */
		/***************************************************/
		result = callAddMskmSc(handle, param, "2", ccName);
		if (!JKKBpCommon.isSuccess(result))
		{
			errFlgCc = "1";
			JKKBpCommon.setResultCtrlData(param, result);
		}
		
		/***************************************************/
		/** 申込明細登録チェック                       */
		/***************************************************/
		result = callAddMskmDtlSc(handle, param, "2", ccName);
		if (!JKKBpCommon.isSuccess(result))
		{
			errFlgCc = "1";
			JKKBpCommon.setResultCtrlData(param, result, "EKK0021D010");
		}

		// 検索結果を設定
		ArrayList resultAgntInfoList = new ArrayList();
		
		for (int i = 0; i < agntList.length; i++)
		{
			HashMap retMap = new HashMap();
			
			if(isNullOrBlank(agntList[i]))
			{
				//代理店名結果に情報を設定
				retMap.put("agnt_nm", "");
				resultAgntInfoList.add(retMap);
				continue;
			}
			
			/***************************************************/
			/** 申込＿代理店登録チェック                       */
			/***************************************************/
			
			result = callAddMskmAgntSc(handle, param, "2", agntList[i]);
			if (!JKKBpCommon.isSuccess(result))
			{
				errFlgCc = "1";
				JKKBpCommon.setResultCtrlData(param, result, "EKK0071D010");
				// 代理店コードエラー情報を設定
				setAgntErrInfo(param, resUserMap, i);
				//代理店名結果に情報を設定
				retMap.put("agnt_nm", "");
				
				//UI残200 追加
				retMap.put("joi_agnt_cd", "");
			}
			else
			{
				/***************************************************/
				/**代理店存在チェック                                  */
				/***************************************************/
				result = callAgntSc(handle, param, opeDate, agntList[i]);
				if (!JKKBpCommon.isSuccess(result))
				{
					errFlgCc = "1";
					JKKBpCommon.setResultCtrlData(param, result);
					// 代理店コードエラー情報を設定
					setAgntErrInfo(param, resUserMap, i);
					//代理店名結果に情報を設定
					retMap.put("agnt_nm", "");
					
					//UI残200 追加
					retMap.put("joi_agnt_cd", "");
				}
				else
				{	
					String listName = EKK0061B502CBSMsg.EKK0061B502CBSMSG1LIST + "[0]." + EKK0061B502CBSMsg1List.AGNT_CD;
					String agntCd = JKKBpCommon.getResultString(result, listName);
					
					if (isNullOrBlank(agntCd))
					{
						// マスタに存在しない場合
						resUserMap.put("agnt_cd" + (i + 1) + "_sonzai_flg", JKKStrConst.AGNT_CD_SONZAI_FLG_OFF);
					} 
					else 
					{
						// マスタに存在する場合
						resUserMap.put("agnt_cd" + (i + 1) + "_sonzai_flg", JKKStrConst.AGNT_CD_SONZAI_FLG_ON);
						
						/***************************************************/
						/**代理店一意照会                                  */
						/***************************************************/
						result = callAgntSearchSc(handle, param, opeDate, agntList[i]);
						if (JKKBpCommon.isSuccess(result))
						{
							retMap.put("agnt_nm", JKKBpCommon.getResultString(result, EKK0061A010CBSMsg.EKK0061A010CBSMSG1LIST + "[0]." + EKK0061A010CBSMsg1List.AGNT_NM));
							
							// UI残200 追加
							retMap.put("joi_agnt_cd", JKKBpCommon.getResultString(result, EKK0061A010CBSMsg.EKK0061A010CBSMSG1LIST + "[0]." 
										+ EKK0061A010CBSMsg1List.JOI_AGNT_CD));
						}
						else
						{
							errFlgCc = "1";
							JKKBpCommon.setResultCtrlData(param, result);
						}
					}
				}
			}
			resultAgntInfoList.add(retMap);
		}
		resUserMap.put("agnt_nm_list", resultAgntInfoList);
		
		String svcKeiNo = (String)ccParam.get("svc_kei_no");
		String menkaihatAnkenNo = (String)ccParam.get("menkaihat_anken_no");
		String chmtHjinEoYkaeSvkeiNo = (String)ccParam.get("chmt_hjin_eo_ykae_svkei_no");
		
		boolean hasSvcKeiErr = false;
		
		if (!isNullOrBlank(menkaihatAnkenNo) || !isNullOrBlank(chmtHjinEoYkaeSvkeiNo))
		{
			/****************************************************/
			/**  サービス契約＜eo光ネット＞登録チェック         */
			/****************************************************/
			
			result = callAddSvcKeiSc(handle, param, "2", ccName);
			if (!JKKBpCommon.isSuccess(result))
			{
				errFlgCc = "1";
				JKKBpCommon.setResultCtrlData(param, result);
				hasSvcKeiErr = true;
			}
		}
		
		if (!isNullOrBlank(svcKeiNo) && !hasSvcKeiErr)
		{
			if (!isNullOrBlank(menkaihatAnkenNo) || !isNullOrBlank(chmtHjinEoYkaeSvkeiNo))
			{
				/****************************************************/
				/**  サービス契約一意照会                           */
				/****************************************************/
				
				result = callGetSvcKeiSc(handle, param, svcKeiNo, opeDate);
				
				String dbAnkenNo = null;
				String dbYkaeSvkeiNo = null;
				
				if (JKKBpCommon.isSuccess(result)) 
				{
					String listNamePre = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST + "[0].";
					
					// 面開発案件番号
					dbAnkenNo = JKKBpCommon.getResultString(result, listNamePre + EKK0081A010CBSMsg1List.MENKAIHAT_ANKEN_NO);
					//userMap.put("menkaihat_anken_no", menkaihatAnkenNo);
					
					// 変更元法人eo読替サービス契約番号
					dbYkaeSvkeiNo = JKKBpCommon.getResultString(result, listNamePre + EKK0081A010CBSMsg1List.CHMT_HJIN_EO_YKAE_SVKEI_NO);
				} 
				else 
				{
					errFlgCc = "1";
					JKKBpCommon.setResultCtrlData(param, result);
				}
				
				// 面開発案件番号チェック 変更されていて且つ新規登録以外であればエラーフラグをON
				if(!isNullOrBlank(dbAnkenNo) && !dbAnkenNo.equals(menkaihatAnkenNo))
				{
					resUserMap.put("menkaihat_anken_no_chg_flg", JKKStrConst.MENKHT_ANKEN_NO_CHG_FLG_ON);
				}
				else
				{
					resUserMap.put("menkaihat_anken_no_chg_flg", JKKStrConst.MENKHT_ANKEN_NO_CHG_FLG_OFF);
				}
				
				// 変更元法人eo読替サービス契約番号チェック 変更されていればエラーフラグをON
				if ((!isNullOrBlank(chmtHjinEoYkaeSvkeiNo) && !chmtHjinEoYkaeSvkeiNo.equals(dbYkaeSvkeiNo))
						|| !isNullOrBlank(dbYkaeSvkeiNo) && !dbYkaeSvkeiNo.equals(chmtHjinEoYkaeSvkeiNo))
				{
					resUserMap.put("chmt_hjin_eo_ykae_svkei_no_chg_flg", JKKStrConst.YKAE_SVKEI_NO_CHG_FLG_ON);
				}
				else 
				{
					resUserMap.put("chmt_hjin_eo_ykae_svkei_no_chg_flg", JKKStrConst.YKAE_SVKEI_NO_CHG_FLG_OFF);
				}
			}
		}
		
		//  面開発案件マスタ存在チェック
		if (!isNullOrBlank(menkaihatAnkenNo)) 
		{
			result = callGetMenkaihatAnkenWariSvcSc(handle, param, menkaihatAnkenNo);
			if (JKKBpCommon.isSuccess(result)) 
			{
				resUserMap.put("anken_nm", JKKBpCommon.getResultString(result,
						EKK0271B501CBSMsg.EKK0271B501CBSMSG1LIST + "[0]." +
						EKK0271B501CBSMsg1List.ANKEN_NM));
				resUserMap.put("dsp_campaign_cd", JKKBpCommon.getResultString(result,
						EKK0271B501CBSMsg.EKK0271B501CBSMSG1LIST + "[0]." +
						EKK0271B501CBSMsg1List.DSP_CAMPAIGN_CD));
			}
			else
			{
				errFlgCc = "1";
				JKKBpCommon.setResultCtrlData(param, result);
				resUserMap.put("dsp_campaign_cd", "");
			}
		}
		else
		{
			resUserMap.put("anken_nm", "");
			resUserMap.put("dsp_campaign_cd", "");
		}
		
		// 変更元法人eo読替サービス契約番号存在チェック
		if (!isNullOrBlank(chmtHjinEoYkaeSvkeiNo))
		{
			result = callGetHojinSvkeiKjakSc(handle, param, chmtHjinEoYkaeSvkeiNo);
			if (JKKBpCommon.isSuccess(result)) 
			{
				String listName = EKU0071B010CBSMsg.EKU0071B010CBSMSG1LIST + "[0]." + EKU0071B010CBSMsg1List.CUST_NM;
				String custNm = JKKBpCommon.getResultString(result, listName);
				resUserMap.put("cust_nm", custNm);
				
				if (isNullOrBlank(custNm))
				{
					// マスタに存在しない場合
					resUserMap.put("chmt_hjin_eo_ykae_svkei_no_sonzai_flg", JKKStrConst.YKAE_SVKEI_NO_SONZAI_FLG_OFF);
				} 
				else 
				{
					resUserMap.put("chmt_hjin_eo_ykae_svkei_no_sonzai_flg", JKKStrConst.YKAE_SVKEI_NO_SONZAI_FLG_ON);
				}
			}
			else
			{
				errFlgCc = "1";
				JKKBpCommon.setResultCtrlData(param, result);
				resUserMap.put("cust_nm", "");
			}
		}
		else
		{
			resUserMap.put("cust_nm", "");
		}
		
		String[][] mskmshoDtlNoList = {
				{(String)ccParam.get("net_tel_mskmsho_dtl_no"), "net_tel_mskmsho_dtl_no_overlap_flg"}
				, {(String)ccParam.get("tv_mskmsho_dtl_no"), "tv_mskmsho_dtl_no_overlap_flg"}
				, {(String)ccParam.get("mbl_mskmsho_dtl_no"), "mbl_mskmsho_dtl_no_overlap_flg"}
				, {(String)ccParam.get("adsl_mskmsho_dtl_no"), "adsl_mskmsho_dtl_no_overlap_flg"}
		};
		
		for(int i = 0; i < mskmshoDtlNoList.length; i++)
		{
			if(!isNullOrBlank(mskmshoDtlNoList[i][0]))
			{
				/***************************************************/
				/** 申込明細登録チェック(申込明細番号チェック)     */
				/***************************************************/
				result = callAddMskmDtlScMskmshoDtlNo(handle, param, "2", mskmshoDtlNoList[i][0]);
				if (!JKKBpCommon.isSuccess(result))
				{
					errFlgCc = "1";
					JKKBpCommon.setResultCtrlData(param, result, "EKK0021D010");
					// 申込書明細番号エラー情報を設定
					setMskmshoDtlNoErrInfo(param, resUserMap, i);
				}
				else
				{
					/***************************************************/
					/** 申込書明細番号重複チェック一覧照会             */
					/***************************************************/
					result = callEKK0021B506(handle, param, mskmshoDtlNoList[i][0]);
					
					if (JKKBpCommon.isSuccess(result))
					{
						CAANMsg[] msgList = JKKBpCommon.getResultMsgList(result, EKK0021B506CBSMsg.EKK0021B506CBSMSG1LIST);
						String listNamePre = null;
						String overlapFlg = JKKStrConst.MSKMSHO_DTL_NO_DBLE_FLG_NORMAL;
						String kk0021SvcKeiNo = null;
						
						for (int j = 0; j < msgList.length; j++)
						{
							listNamePre = EKK0021B506CBSMsg.EKK0021B506CBSMSG1LIST + "[" + j + "].";
							
							// サービス契約番号
							kk0021SvcKeiNo = JKKBpCommon.getResultString(result, listNamePre + EKK0021B506CBSMsg1List.SVC_KEI_NO);
							
							// 紐付きが不明なので警告を設定する。
							if(JKKCommonUtil.isNull(kk0021SvcKeiNo))
							{
								overlapFlg = JKKStrConst.MSKMSHO_DTL_NO_DBLE_FLG_KKKU;
								break;
							}
							// 他契約の番号なのでエラーを設定する。
							else
							{
								overlapFlg = JKKStrConst.MSKMSHO_DTL_NO_DBLE_FLG_ERR;
							}
						}
						
						// 重複エラーフラグを設定する。
						resUserMap.put(mskmshoDtlNoList[i][1], overlapFlg);
					}
					else
					{
						errFlgCc = "1";
						JKKBpCommon.setResultCtrlData(param, result);
					}
				}
			}
		}

		// ANK-3136-00-00 ADD START
		/***************************************************/
		/** 工事案件設備流用チェック                       */
		/***************************************************/
		result = callKjakEquipRyuyoCheckSc(handle, param, "1", ccName);
		if (!JKKBpCommon.isSuccess(result))
		{
			errFlgCc = "1";
			JKKBpCommon.setResultCtrlData(param, result, "EKU0011C040");
		}
		// ANK-3136-00-00 ADD END
		
		// ANK-4427-00-00 ADD START
		String tnkym_svc_kei_no  = (String)ccParam.get("itenm_svc_kei_no");
		String sysid  = (String)ccParam.get("sysid");
		
		if (!isNullOrBlank(tnkym_svc_kei_no))
		{
			/****************************************************/
			/**  サービス契約一意照会                           */
			/****************************************************/
			
			result = callGetSvcKeiSc(handle, param, tnkym_svc_kei_no, opeDate);
			
			String dbSysid = null;
			
			// サービス契約にレコードが存在する場合
			if (JKKBpCommon.isSuccess(result)) 
			{
				String listNamePre = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST + "[0].";
				
				// SYSIDを取得
				dbSysid = JKKBpCommon.getResultString(result, listNamePre + EKK0081A010CBSMsg1List.SYSID);
				
// ANK-4427-00-00 ソースレビュー指摘対応 20241219 星野 ADD START
				if(!StringUtils.isEmpty(dbSysid))
				{
// ANK-4427-00-00 ソースレビュー指摘対応 20241219 星野 ADD END
				
					resUserMap.put("itenm_svc_kei_no_sonzai_flg", JKKStrConst.AGNT_TNKMT_SVC_KEI_NO_FLG_ON);
					
					// サービス契約に存在するsysidと一緒の場合
					if(dbSysid.equals(sysid)){
						
						resUserMap.put("sysid_no_same_flg", JKKStrConst.SAME_SYS_ID_FLG_ON);
						
					} else {
						
						resUserMap.put("sysid_no_same_flg", JKKStrConst.SAME_SYS_ID_FLG_OFF);
					}
// ANK-4427-00-00 ソースレビュー指摘対応 20241219 星野 ADD START
				}
				else
				{
					resUserMap.put("itenm_svc_kei_no_sonzai_flg", JKKStrConst.AGNT_TNKMT_SVC_KEI_NO_FLG_OFF);
				}
// ANK-4427-00-00 ソースレビュー指摘対応 20241219 星野 ADD END
			} 
			else 
			{
				resUserMap.put("itenm_svc_kei_no_sonzai_flg", JKKStrConst.AGNT_TNKMT_SVC_KEI_NO_FLG_OFF);
			}
		}
		// ANK-4427-00-00 ADD END
		
		try
		{
			// 他事業者割引契約申込適用コモンコンポーネント部品の呼び出し
			JKKBpCommon.aplyTajgsWribKei(handle, param, "TAJGS_WRIB_KEI");
		}
		catch (CCException ex)
		{
			errFlgCc = "1";
		}
		/***************************************************/ 
		/** 下りユーザデータマッピング処理開始             */
		/***************************************************/
		JKKBpCommon.setResultUserData(param, ccName, resUserMap);
		if ("0".equals(errFlgCc)) 
		{
			JKKBpCommon.setResultCtrlData(param, result, ccName , 0, 0);
		}
		else
		{
			String errMsg = "特記登録チェックCCで例外が発生しました";
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return param;
	}
	
	/**
	 * 法人サービス契約_工事案件一覧照会SC呼出SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param hjinEoYkaeSvkeiNo 法人eo読替サービス契約番号
	 * @return Map<?, ?> メッセージリスト
	 * @throws Throwable
	 */
	private Map<?, ?> callGetHojinSvkeiKjakSc(SessionHandle handle,
			IRequestParameterReadWrite param, String hjinEoYkaeSvkeiNo)
			throws Throwable 
	{

		/**************************************************************************/
		/** 面開発案件一意照会SCへの上りマッピング                                */
		/**************************************************************************/
		String funcCd = "1";
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKU0071B010CBSMsg.KEY_HJIN_EO_YKAE_SVKEI_NO, hjinEoYkaeSvkeiNo);
		HashMap<String, Object> paramMap = JKKBpCommon.createScParamForSearch(param, "EKU0071B010", EKU0071B010CBSMsg.class , inMap, funcCd);

		/**************************************************************************/
		/** ＳＣ呼出実行                                                          */
		/**************************************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "法人サービス契約_工事案件一覧照会SC呼び出し開始" +
													"（法人eo読替サービス契約番号：" + hjinEoYkaeSvkeiNo + " ）");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "法人サービス契約_工事案件一覧照会SC呼び出し完了" + result);

		return result;
	}

	/**
	 * サービス契約一意照会SC呼出SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param svcKeiNo サービス契約番号
	 * @param opDate 運用日付
	 * @return Map<?, ?> メッセージリスト
	 * @throws Throwable
	 */
	private Map<?, ?> callGetSvcKeiSc(SessionHandle handle,
			IRequestParameterReadWrite param, String svcKeiNo, String opDate)
			throws Throwable 
	{

		/**************************************************************************/
		/** サービス契約一意照会SCへの上りマッピング                              */
		/**************************************************************************/
		String funcCd = "2";
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		inMap.put(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, opDate);
		
		HashMap<String, Object> paramMap = JKKBpCommon.createScParamForSearch(param, "EKK0081A010", EKK0081A010CBSMsg.class , inMap, funcCd);

		/**************************************************************************/
		/** ＳＣ呼出実行                                                          */
		/**************************************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "サービス契約一意照会SC呼び出し開始（サービス契約番号：" + svcKeiNo + " ）");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "サービス契約一意照会SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * 申込書明細番号重複チェック一覧照会の実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param mskmshoDtlNo 申込書明細番号
	 * @return Map<?, ?> メッセージリスト
	 * @throws Throwable
	 */
	private Map<?, ?> callEKK0021B506(SessionHandle handle, IRequestParameterReadWrite param, String mskmshoDtlNo)	throws Throwable 
	{
		/**************************************************************************/
		/** 申込書明細番号重複チェック一覧照会への上りマッピング                  */
		/**************************************************************************/
		String funcCd = "1";
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKK0021B506CBSMsg.KEY_MSKMSHO_DTL_NO, mskmshoDtlNo);
		
		HashMap<String, Object> paramMap = JKKBpCommon.createScParamForSearch(param, "EKK0021B506", EKK0021B506CBSMsg.class , inMap, funcCd);
		
		/**************************************************************************/
		/** ＳＣ呼出実行                                                          */
		/**************************************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		return result;
	}
	
	/**
	 * サービス契約＜eo光ネット＞登録SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddSvcKeiSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String ccName) throws Throwable
	{
		/***************************************************************/
		/** サービス契約＜eo光ネット＞登録SCへの上りマッピング         */
		/***************************************************************/
		HashMap<String, Object> paramMap = getAddSvcKeiScParam(param, ccName, funcCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "サービス契約＜eo光ネット＞登録SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "サービス契約＜eo光ネット＞登録SC呼び出し完了" + result);

		return result;
	}

	/**
	 * お客様＜個人＞登録SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddCustKojinSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String ccName) throws Throwable
	{
		/***************************************************/
		/** お客様＜個人＞登録SCへの上りマッピング         */
		/***************************************************/
		HashMap<String, Object> paramMap = getAddCustKojinScParam(param, ccName, funcCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "お客様＜個人＞登録SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "お客様＜個人＞登録SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * お客様＜法人＞登録SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddCustHojinSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String ccName) throws Throwable
	{
		/***************************************************/
		/** お客様＜法人＞登録SCへの上りマッピング         */
		/***************************************************/
		HashMap<String, Object> paramMap = getAddCustHojinScParam(param, ccName, funcCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "お客様＜法人＞登録SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "お客様＜法人＞登録SC呼び出し完了" + result);

		return result;
	}

	
	/**
	 * 申込登録SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddMskmSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String ccName) throws Throwable
	{
		/***************************************************/
		/** 申込登録SCへの上りマッピング                   */
		/***************************************************/
		HashMap<String, Object> paramMap = getAddMskmScParam(param, ccName, funcCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込登録SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込登録SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * 申込＿代理店SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param agntCd 取扱コード
	 * @return result 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddMskmAgntSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String agntCd) throws Throwable
	{
		/***************************************************/
		/** 申込＿代理店SCへの上りマッピング               */
		/***************************************************/
		HashMap<String, Object> paramMap = getAddMskmAgntScParam(param, funcCd, agntCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込＿代理店SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込＿代理店SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * 代理店一覧照会SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param opeDate 運用日付
	 * @param agntCd 取扱コード
	 * @return result 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAgntSc(SessionHandle handle, IRequestParameterReadWrite param, String opeDate, String agntCd) throws Throwable
	{
		/***************************************************/
		/** 代理店一覧照会SCへの上りマッピング             */
		/***************************************************/
		String funcCd = "1";
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKK0061A010CBSMsg.KEY_AGNT_CD, agntCd);
		inMap.put(EKK0061A010CBSMsg.KEY_RSV_APLY_YMD, opeDate);
		HashMap<String, Object> paramMap = JKKBpCommon.createScParamForSearch(param, "EKK0061B502", EKK0061B502CBSMsg.class , inMap, funcCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "代理店一覧照会SC呼び出し開始（ 代理店コード：" + ((agntCd != null) ? agntCd : "") + " ）");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "代理店一覧照会SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * 代理店一意照会SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param opeDate 運用日付
	 * @param agntCd 取扱コード
	 * @return result 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAgntSearchSc(SessionHandle handle, IRequestParameterReadWrite param, String opeDate, String agntCd) throws Throwable
	{
		/***************************************************/
		/** 代理店一意照会SCへの上りマッピング             */
		/***************************************************/
		String funcCd = "2";
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKK0061A010CBSMsg.KEY_AGNT_CD, agntCd);
		inMap.put(EKK0061A010CBSMsg.KEY_RSV_APLY_YMD, opeDate);
		HashMap<String, Object> paramMap = JKKBpCommon.createScParamForSearch(param, "EKK0061A010", EKK0061A010CBSMsg.class , inMap, funcCd);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "代理店一意照会SC呼び出し開始（ 代理店コード：" + ((agntCd != null) ? agntCd : "") + " ）");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "代理店一意照会SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * 申込明細登録SCの実行(申込書明細番号チェック用)
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param mskmshoDtlNo 申込書明細番号
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddMskmDtlScMskmshoDtlNo(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String mskmshoDtlNo) 
	throws Throwable
	{
		/***************************************************/
		/** 申込明細登録SCへの上りマッピング               */
		/***************************************************/
		HashMap<String, Object> paramMap = getParamMskmshoDtlNo(param, funcCd, mskmshoDtlNo);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込明細登録SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込明細登録SC呼び出し完了" + result);

		return result;
	}
	
	/**
	 * 申込明細登録SCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callAddMskmDtlSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String ccName) throws Throwable
	{
		/***************************************************/
		/** 申込明細登録SCへの上りマッピング               */
		/***************************************************/
		HashMap<String, Object> paramMap = getAddMskmDtlScParam(param, funcCd, ccName);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込明細登録SC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "申込明細登録SC呼び出し完了" + result);

		return result;
	}
	
	// ANK-3136-00-00 ADD START
	/**
	 * 工事案件設備流用チェックSCの実行
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName CC名
	 * @return 実行結果
	 * @throws Throwable
	 */
	private Map<?, ?> callKjakEquipRyuyoCheckSc(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String ccName) throws Throwable
	{
		/***************************************************/
		/** 工事案件設備流用チェックSCへの上りマッピング               */
		/***************************************************/
		HashMap<String, Object> paramMap = getKjakEquipRyuyoCheckScParam(param, funcCd, ccName);

		/***************************************************/
		/** ＳＣ呼出実行                                   */
		/***************************************************/
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		JKKBpCommon.printBpDebugLog(this.getClass(), "工事案件設備流用チェックSC呼び出し開始");
		Map<?, ?> result = scCall.run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "工事案件設備流用チェックSC呼び出し完了" + result);

		return result;
	}
	// ANK-3136-00-00 ADD END
	
	/**
	 * サービス契約＜eo光ネット＞登録SCへの上りマップ取得
	 * @param param リクエストパラメータ
	 * @param ccName ユーザー固定文字列
	 * @param funcCd 機能コード
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getAddSvcKeiScParam(IRequestParameterReadWrite param,
			String ccName, String funcCd) throws RequestParameterException
	{
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);

		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKK0091D010CBSMsg.MENKAIHAT_ANKEN_NO, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.MENKAIHAT_ANKEN_NO));
		inMap.put(EKK0091D010CBSMsg.CHMT_HJIN_EO_YKAE_SVKEI_NO, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.CHMT_HJIN_EO_YKAE_SVKEI_NO));

		return  JKKBpCommon.createScParamForSearch(param, "EKK0091D010", EKK0091D010CBSMsg.class, inMap, funcCd);
	}
	
	/**
	 * お客様＜個人＞登録SCへの上りマップ取得
	 * @param param リクエストパラメータ
	 * @param ccName ユーザー固定文字列
	 * @param funcCd 機能コード
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getAddCustKojinScParam(IRequestParameterReadWrite param,
			String ccName, String funcCd) throws RequestParameterException
	{
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);

		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(ECK0021D010CBSMsg.RRK_WAY_CD, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.CUST_RRK_WAY_CD));
		inMap.put(ECK0021D010CBSMsg.RRK_WAY_HOKI, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.CUST_RRK_WAY_HOKI));

		return  JKKBpCommon.createScParamForSearch(param, "ECK0021D010", ECK0021D010CBSMsg.class, inMap, funcCd);
	}
	
	/**
	 * お客様＜法人＞登録SCへの上りマップ取得
	 * @param param リクエストパラメータ
	 * @param ccName ユーザー固定文字列
	 * @param funcCd 機能コード
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getAddCustHojinScParam(IRequestParameterReadWrite param,
			String ccName, String funcCd) throws RequestParameterException
	{
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);

		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(ECK0031D010CBSMsg.RRK_WAY_CD, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.CUST_RRK_WAY_CD));
		inMap.put(ECK0031D010CBSMsg.RRK_WAY_HOKI, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.CUST_RRK_WAY_HOKI));
		
		//法人連絡先リストの作成
		Map[] msg1List = new HashMap[1];
		HashMap msg1 = new HashMap();
		msg1List[0] = msg1;
		JKKBpCommon.setNullColumnForScParam(ECK0031D010CBSMsg1List.class, msg1);
		JKKBpCommon.setNullBlankColumnForScParam(msg1);
		inMap.put(ECK0031D010CBSMsg.ECK0031D010CBSMSG1LIST, msg1List);

		return  JKKBpCommon.createScParamForSearch(param, "ECK0031D010", ECK0031D010CBSMsg.class, inMap, funcCd);
	}

	
	/**
	 * 申込登録SCへの上りマップ取得
	 * <br />
	 * @param param リクエストパラメータ
	 * @param ccName ユーザー固定文字列
	 * @param funcCd 機能コード
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getAddMskmScParam(IRequestParameterReadWrite param, String ccName, String funcCd) throws RequestParameterException
	{
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);

		Map<Object, Object> inMap = new HashMap<Object, Object>();

		// 照査前連絡事項
		inMap.put(EKK0011D010CBSMsg.SHOSA_BF_RRK_JIKO, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.SHOSA_BF_RRK_JIKO));
		// 提携住宅会社コード
		inMap.put(EKK0011D010CBSMsg.TKJCP_CD, ccParam.get("tkjcp_cd"));
		// 提携住宅会社名
		inMap.put(EKK0011D010CBSMsg.TKJCP_NM, ccParam.get("tkjcp_nm"));
		// 提携住宅会社支店・営業所名
		inMap.put(EKK0011D010CBSMsg.TKJCP_STNEGS_NM, ccParam.get("tkjcp_stnegs_nm"));
		// 提携住宅会社担当者名
		inMap.put(EKK0011D010CBSMsg.TKJCPTTS_NM, ccParam.get("tkjcptts_nm"));
		// 提携住宅会社担当者職種名
		inMap.put(EKK0011D010CBSMsg.TKJCPTTS_SHKSNM, ccParam.get("tkjcptts_shksnm"));
		// 提携住宅会社担当者電話番号
		inMap.put(EKK0011D010CBSMsg.TKJCPTTS_TLN, ccParam.get("tkjcptts_tln"));
		// 分譲地名
		inMap.put(EKK0011D010CBSMsg.BUNJOCHI_NM, ccParam.get("bunjochi_nm"));
		// 分譲地区画番号メモ
		inMap.put(EKK0011D010CBSMsg.BUNJOCHI_KKK_NO_MEMO, ccParam.get("bunjochi_kkk_no_memo"));
		// 入居予定時期
		inMap.put(EKK0011D010CBSMsg.NYUKYO_RSV_JK, ccParam.get("nyukyo_rsv_jk"));
		
		Map[] msg1List = new HashMap[1];
		HashMap msg1 = new HashMap();
		msg1List[0] = msg1;
		msg1.put(EKK0011D010CBSMsg1List.RRK_WAY_HOKI, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.RRK_WAY_HOKI));
		
		// 新築物件
		msg1.put(EKK0011D010CBSMsg1List.NEWCONST_BUKKEN_CD, ccParam.get("newconst_bukken_cd"));
		
		// 復活案件
		msg1.put(EKK0011D010CBSMsg1List.HUKKAT_ANKEN_FLG, ccParam.get("hukkat_anken_flg"));
		
		// 同一設備再申込
		msg1.put(EKK0011D010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD, ccParam.get("same_equip_re_mskm_cd"));
		
		// 契約付加コード
		msg1.put(EKK0011D010CBSMsg1List.KEI_HUKA_CD , ccParam.get("kei_huka_cd"));

		// 申込書取扱情報担当者名
		msg1.put(EKK0011D010CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, ccParam.get("mskmsho_trat_if_tntsha_nm"));
		
		// 申込書取扱情報電話番号
		msg1.put(EKK0011D010CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, ccParam.get("mskmsho_trat_if_telno"));
		
		JKKBpCommon.setNullColumnForScParam(EKK0011D010CBSMsg1List.class, msg1);
		JKKBpCommon.setNullBlankColumnForScParam(msg1);
		inMap.put(EKK0011D010CBSMsg.EKK0011D010CBSMSG1LIST, msg1List);

		return  JKKBpCommon.createScParamForSearch(param, "EKK0011D010", EKK0011D010CBSMsg.class, inMap, funcCd);
	}
	
	/**
	 * 申込＿代理店SCへの上りマップ取得
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param agntCd 取扱コード
	 * @return HashMap<String, Object> SC呼出用パラメータ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> getAddMskmAgntScParam(IRequestParameterReadWrite param,
			String funcCd, String agntCd) throws RequestParameterException
	{
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		
		inMap.put(EKK0071D010CBSMsg.AGNT_CD, agntCd);

		return  JKKBpCommon.createScParamForSearch(param, "EKK0071D010", EKK0071D010CBSMsg.class, inMap, funcCd);
	}
	
	/**
	 * 申込明細SCへの上りマップ取得(申込書明細番号チェック用)
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param mskmshoDtlNo 申込書明細番号
	 * @return HashMap<String, Object> SC呼出用パラメータ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> getParamMskmshoDtlNo(IRequestParameterReadWrite param,
			String funcCd, String mskmshoDtlNo) throws RequestParameterException
	{
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		
		inMap.put(EKK0021D010CBSMsg.MSKMSHO_DTL_NO, mskmshoDtlNo);

		return  JKKBpCommon.createScParamForSearch(param, "EKK0021D010", EKK0021D010CBSMsg.class, inMap, funcCd);
	}
	
	/**
	 * 申込明細SCへの上りマップ取得
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName ユーザー固定文字列
	 * @return HashMap<String, Object> SC呼出用パラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getAddMskmDtlScParam(IRequestParameterReadWrite param,
			String funcCd, String ccName) throws RequestParameterException
	{
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);
		
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		
		inMap.put(EKK0021D010CBSMsg.HNIN_CFM_ATICLE_NM, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.HNIN_CFM_BUNSHO_KIND_NM));
		// ANK-3136-00-00 ADD START
		inMap.put(EKK0021D010CBSMsg.TSYRN_KJ_RRKS_NM, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_KJ_RRKS_NM));
		inMap.put(EKK0021D010CBSMsg.TSYRN_KJ_RRKS_TLN, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_KJ_RRKS_TLN));
		inMap.put(EKK0021D010CBSMsg.TSYRN_TAKCHO_JI_RRKS_NM, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_TAKCHO_JI_RRKS_NM));
		inMap.put(EKK0021D010CBSMsg.TSYRN_TAKCHO_JI_RRKS_TLN, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_TAKCHO_JI_RRKS_TLN));
		inMap.put(EKK0021D010CBSMsg.TSYRN_RRK_KIBO_DATE, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_RRK_KIBO_DATE));
		inMap.put(EKK0021D010CBSMsg.TSYRN_KZN_KEI_INF, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_KZN_KEI_INF));
		inMap.put(EKK0021D010CBSMsg.TSYRN_HBI_KAISHOU_YMD, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TSYRN_HBI_KAISHOU_YMD));
		// ANK-3136-00-00 ADD END

		return  JKKBpCommon.createScParamForSearch(param, "EKK0021D010", EKK0021D010CBSMsg.class, inMap, funcCd);
	}
	
	// ANK-3136-00-00 ADD START
	/**
	 * 工事案件設備流用チェックSCへの上りマップ取得
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param ccName ユーザー固定文字列
	 * @return HashMap<String, Object> SC呼出用パラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getKjakEquipRyuyoCheckScParam(IRequestParameterReadWrite param,
			String funcCd, String ccName) throws RequestParameterException
	{
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);
		
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		
		inMap.put(EKU0011C040CBSMsg.NET_EQUIP_RYUYO_UM, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.NET_EQUIP_RYUYO_UM));
		inMap.put(EKU0011C040CBSMsg.NET_RYUYO_MOTO_KJAK_NO, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.NET_RYUYO_MOTO_KJAK_NO));
		inMap.put(EKU0011C040CBSMsg.TV_EQUIP_RYUYO_UM, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TV_EQUIP_RYUYO_UM));
		inMap.put(EKU0011C040CBSMsg.TV_RYUYO_MOTO_KJAK_NO, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.TV_RYUYO_MOTO_KJAK_NO));
		// ANK-4468-11-00 ADD START
		inMap.put(EKU0011C040CBSMsg.NRKE_SIMPLE_FLG, ccParam.get(KKSV0333_KKSV0333OP_KKSV033301CC.NRKE_SIMPLE_FLG));
		// ANK-4468-11-00 ADD END

		return  JKKBpCommon.createScParamForSearch(param, "EKU0011C040", EKU0011C040CBSMsg.class, inMap, funcCd);
	}
	// ANK-3136-00-00 ADD END
	
	/**
	 * 文字列がNULLまたは空文字かどうかを判定します
	 * @param value 評価値
	 * @return true:NULLまたは空文字、false:左記以外
	 */
	private boolean isNullOrBlank(String value)
	{
		return (value == null || "".equals(value)) ? true : false;
	}
	
	/**
	 * 取扱コードのエラー情報を設定します
	 * @param param リクエストパラメータ
	 * @param resUserMap ユーザデータマップ
	 * @param agntIndex 取扱コードindex
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setAgntErrInfo(IRequestParameterReadWrite param, Map resUserMap, int agntIndex) throws RequestParameterException
	{
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		for (int i = 0; i < errList.size(); i++)
		{
			Map errorInfoMap = (Map)errList.get(i);
			Map itemCheckErrorMap = (Map)errorInfoMap.get(ErrorInfoMapKeys.ITEM_CHECK_ERRORS);
			if (itemCheckErrorMap.containsKey("agnt_cd_err"))
			{
				String key = "";
				
				
				if(agntIndex == 0)
				{
					key = "key_agnt1_cd_err_cd";
				}
				else if(agntIndex == 1)
				{
					key = "key_agnt2_cd_err_cd";
				}
				else if(agntIndex == 2)
				{
					key = "key_agnt3_cd_err_cd";
				}
				
				else if(agntIndex == 3)
				{
					key = "key_agnt4_cd_err_cd";
				}
				
				resUserMap.put(key, itemCheckErrorMap.get("agnt_cd_err"));
			}
		}
	}
	
	/**
	 * 申込書明細番号のエラー情報を設定します
	 * @param param リクエストパラメータ
	 * @param resUserMap ユーザーデータマップ
	 * @param mskmshoDtlNoIndex 0:ネット・電話 1:テレビ 2:モバイル 3:ＡＤＳＬ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setMskmshoDtlNoErrInfo(IRequestParameterReadWrite param, Map resUserMap, int mskmshoDtlNoIndex) throws RequestParameterException
	{
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		for (int i = 0; i < errList.size(); i++)
		{
			Map errorInfoMap = (Map)errList.get(i);
			Map itemCheckErrorMap = (Map)errorInfoMap.get(ErrorInfoMapKeys.ITEM_CHECK_ERRORS);
			if (itemCheckErrorMap.containsKey("mskmsho_dtl_no_err"))
			{
				String key = "";
				
				if(mskmshoDtlNoIndex == 0)
				{
					key = "net_tel_mskmsho_dtl_no_err_cd";
				}
				else if(mskmshoDtlNoIndex == 1)
				{
					key = "tv_mskmsho_dtl_no_err_cd";
				}
				else if(mskmshoDtlNoIndex == 2)
				{
					key = "mbl_mskmsho_dtl_no_err_cd";
				}
				else if(mskmshoDtlNoIndex == 3)
				{
					key = "adsl_mskmsho_dtl_no_err_cd";
				}
				
				resUserMap.put(key, itemCheckErrorMap.get("mskmsho_dtl_no_err"));
			}
		}
	}
	
	/**
	 * ＢＰチェック用の入力パラメータを作成する。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText 機能コード
	 * @return HashMap BPチェックスキップ用パラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		String ccName = this.getClass().getSimpleName();
		HashMap<String, Object> bpCheckParam = null;
		Map<String, Object> ccParam = (Map<String, Object>)param.getData(ccName);
		if (ccParam == null)
		{
			return JKKBpCommon.createBpNotCheckParam();
		}

		String funcCd = (String)ccParam.get(JCMConstants.FUNC_CODE_KEY);
		if ("2".equals(funcCd)) 
		{
			// 「2:チェックのみ」の場合はBPチェックをスキップ(0件のCAANMsg配列を返却)
			bpCheckParam = JKKBpCommon.createBpNotCheckParam();
		} 
		else 
		{
			// 登録時にBPチェックを行う場合はここを編集。
			bpCheckParam = JKKBpCommon.createBpNotCheckParam();
		}
		return bpCheckParam;
	}

	/**
	 * ＢＰチェック結果を編集する。
	 * <br />
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) throws Throwable
	{
		return JKKBpCommon.editErrorInfo(param, caanMsgs, returnCode);
	}

	/**
	 * 面開発案件割引サービス一覧照会SC呼出SCの実行<br />
	 * 事前条件：{@link #executeMain()}から呼出される事<br />
	 * 事後条件：無し
	 * @param handle              セッションハンドル
	 * @param param               リクエストパラメータ
	 * @param keyMenkaihatAnkenNo 面開発案件番号
	 * @return 下りマップ
	 * @throws Throwable
	 * @author 多田（真）
	 * @since Lot2
	 */
	private Map<?, ?> callGetMenkaihatAnkenWariSvcSc(final SessionHandle handle,
			final IRequestParameterReadWrite param, final String keyMenkaihatAnkenNo)
			throws Throwable
	{
		// 割引サービス一意照会SCへの上りマッピング
		Map<Object, Object> inMap = new HashMap<Object, Object>();
		inMap.put(EKK0271B501CBSMsg.KEY_MENKAIHAT_ANKEN_NO, keyMenkaihatAnkenNo);
		HashMap<String, Object> paramMap =
				JKKBpCommon.createScParamForSearch(param, "EKK0271B501", EKK0271B501CBSMsg.class,
						inMap, JPCModelConstant.FUNC_CD_1);
		
		// ＳＣ呼出実行
		JKKBpCommon.printBpDebugLog(this.getClass(),
				"面開発案件割引サービス一覧照会SC呼び出し開始（面開発案件番号：" + keyMenkaihatAnkenNo + " ）");
		Map<?, ?> result = new ServiceComponentRequestInvoker().run(paramMap, handle);
		JKKBpCommon.printBpDebugLog(this.getClass(), "面開発案件割引サービス一覧照会SC呼び出し完了" +
				result);
		
		return result;
	}
}
