/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUGetHaisoReqShiteiYmdCC
*   ソースファイル名：JFUGetHaisoReqShiteiYmdCC.java
*   作成者          ：富士通
*   日付            ：2021年09月01日
*＜機能概要＞
*   eo光ネットマンションタイプ（イーサ／VDSL／光コンセント）の
*   配送依頼指定年月日取得コンポーネント部品です。【開通前】
*
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v54.00      2021/09/07   FJ) 美濃原  新規作成	【OM-2021-0001250】配送予定日設定考慮漏れ
*   v60.00      2022/06/20   FJ）美濃原  【ANK-4244-00-00】【eo定期】MT既設賃貸対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

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.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EDK0011B090CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B090CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EDK0011D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B517CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B517CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B030CBSMsg1List;

/**
 * 配送依頼指定年月日取得コンポーネント部品です。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUGetHaisoReqShiteiYmdCC extends JFUBaseCC
{

	// ■■■■■■ パラメータ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
	/** IN項目:ネットのサービス契約番号 */
	private static final String IN_NET_SVC_KEI_NO = "net_svc_kei_no";
	/** IN項目:電話のサービス契約番号 */
	private static final String IN_TEL_SVC_KEI_NO = "tel_svc_kei_no";

	/** OUT項目:配送依頼指定年月日 */
	private static final String OUT_HAISO_REQ_SHITEI_YMD = EKK0341D010CBSMsg.HAISO_REQ_SHITEI_YMD;
	/** OUT項目:配送予定年月日 */
	private static final String OUT_HAISO_RSV_YMD = EDK0011D010CBSMsg.HAISO_RSV_YMD;

	/** WK:配送予定年月日 */
	private static final String WK_HAISO_RSV_YMD = "wk_haiso_rsv_ymd";

	// ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

	/* ■□ EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２ ■□ */
	/** テンプレートID(EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２ ) */
	private static final String TEMPLATE_ID_EKK0341B517 = "EKK0341B517";
	/** テンプレートID(EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２ ）明細) */
	private static final String TEMPLATE_ID_EKK0341B517_DETAIL = EKK0341B517CBSMsg.EKK0341B517CBSMSG1LIST;
	/** IN項目リスト(EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２ ) */
	private static final List<String> IN_COLUMN_LIST_EKK0341B517 = Arrays.asList(EKK0341B517CBSMsg.FUNC_CODE, EKK0341B517CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２ ) */
	private static final String ERROR_COLUMN_EKK0341B517 = EKK0341B517CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２ ) */
	private static final String TEMP_TEMPLATE_KEY_EKK0341B517 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0341B517 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EDK0011B090_契約機器配送対象物品一覧照会 ■□ */
	/** テンプレートID(EDK0011B090_契約機器配送対象物品一覧照会 ) */
	private static final String TEMPLATE_ID_EDK0011B090 = "EDK0011B090";
	/** テンプレートID(EDK0011B090_契約機器配送対象物品一覧照会 ）明細) */
	private static final String TEMPLATE_ID_EDK0011B090_DETAIL = EDK0011B090CBSMsg.EDK0011B090CBSMSG1LIST;
	/** IN項目リスト(EDK0011B090_契約機器配送対象物品一覧照会 ) */
	private static final List<String> IN_COLUMN_LIST_EDK0011B090 =
			Arrays.asList(EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO, EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO);
	/** 関連チェックエラー項目(EDK0011B090_契約機器配送対象物品一覧照会 ) */
	private static final String ERROR_COLUMN_EDK0011B090 = EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(EDK0011B090_契約機器配送対象物品一覧照会 ) */
	private static final String TEMP_TEMPLATE_KEY_EDK0011B090 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EDK0011B090 + TEMP_TEMPLATE_PRIFIX_SEP;

	/** 機器提供サービス契約ステータス 配送予定年月日抽出対象外 */
	private static final List<String> KIKI_SVC_KEI_STAT_TAISYOGAI = Arrays.asList(JFUStrConst.CD00056_910, JFUStrConst.CD00056_920);

	/* ■□ EKU0011B030_工事案件一覧照会（複合検索） ■□ */
	/** テンプレートID(EKU0011B030_工事案件一覧照会（複合検索）) */
	private static final String TEMPLATE_ID_EKU0011B030 = "EKU0011B030";
	/** テンプレートID(EKU0011B030_工事案件一覧照会（複合検索）) */
	private static final String TEMPLATE_ID_EKU0011B030_DETAIL = EKU0011B030CBSMsg.EKU0011B030CBSMSG1LIST;
	/** IN項目リスト(EKU0011B030_工事案件一覧照会（複合検索）) */
	private static final List<String> IN_COLUMN_LIST_EKU0011B030 =
			Arrays.asList(EKU0011B030CBSMsg.KEY_SVC_KEI_NO, EKU0011B030CBSMsg.KEY_KOJIAK_SBT_CD);
	/** 関連チェックエラー項目 */
	private static final String ERROR_COLUMN_EKU0011B030 = EKU0011B030CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(EKU0011B030_工事案件一覧照会（複合検索）) */
	private static final String TEMP_TEMPLATE_KEY_EKU0011B030 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKU0011B030 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * 各種通信機器申込み登録実行処理を行います。
	 * <br>
	 *
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite getHaisoReqShiteiYmd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 連携パラメータ
		HashMap inMap = (HashMap)param.getData(fixedText);
		if (inMap == null)
		{
			return param;
		}
		// 運用日付
		String opeDate = JCCBPCommon.getOpeDate(null);
		// IN項目:ネットのサービス契約番号
		String netSvcKeiNo = (String)inMap.get(IN_NET_SVC_KEI_NO);
		// IN項目:電話のサービス契約番号
		String telSvcKeiNo = (String)inMap.get(IN_TEL_SVC_KEI_NO);

		printDebugLog("■■■■■ ※配送予定年月日（配送依頼指定年月日）取得 ネットサービス契約番号[" + netSvcKeiNo + "]、電話サービス契約番号[" + telSvcKeiNo + "] ※ ■■■■■");

		// (a)同一回線場所（ネット／電話）において、配送依頼指定年月日が設定された出荷前機器（配送ステータスが受付済）が存在する場合
		//    配送依頼指定年月日を引き継ぐ。
		String haiso_req_shitei_ymd = getKktkSvcKeiInfo(handle, param, fixedText, opeDate);
		String haiso_rsv_ymd = JFUStrConst.EMPTY;
		printDebugLog("■■■■■ (a) 配送依頼指定年月日[" + haiso_req_shitei_ymd + "] ■■■■■");

		if (JFUBPCommon.isNull(haiso_req_shitei_ymd))
		{
			// (b)(c)同一回線場所（ネット）の「機器出荷予定日算出基準年月日」によって判定する。
			haiso_rsv_ymd = getKkshkaRsvdSnststdYmd(handle, param, fixedText, opeDate);
			if (JFUBPCommon.isNull(haiso_rsv_ymd))
			{
				// (d)上記以外の場合
				// 機器申込日を配送予定年月日に設定する。
				haiso_rsv_ymd = opeDate;
			}
		}
		else
		{
			haiso_rsv_ymd = haiso_req_shitei_ymd;
		}

		// OUT項目:配送予定年月日（配送依頼指定年月日）
		printDebugLog("■■■■■ ※返却値：配送予定年月日[" + haiso_rsv_ymd + "]、配送依頼指定年月日[" + haiso_req_shitei_ymd + "] ※ ■■■■■");

		inMap.put(OUT_HAISO_REQ_SHITEI_YMD, haiso_req_shitei_ymd);
		inMap.put(OUT_HAISO_RSV_YMD, haiso_rsv_ymd);

		return param;
	}

	/**
	 * 出荷前機器から配送予定年月日（配送依頼指定年月日）を取得する。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opeDate 運用日付
	 * @return 配送予定年月日（配送依頼指定年月日）
	 * @throws Exception
	 */
	private String getKktkSvcKeiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String opeDate) throws Exception
	{
		// 回線場所→ネット、電話のサービス契約→機器提供サービス契約→配送（EDK0011B090）

		HashMap<String, Object> inMap = (HashMap<String, Object>)(param.getData(fixedText));
		// IN項目:ネットのサービス契約番号
		String netSvcKeiNo = (String)inMap.get(IN_NET_SVC_KEI_NO);
		// IN項目:電話のサービス契約番号
		String telSvcKeiNo = (String)inMap.get(IN_TEL_SVC_KEI_NO);

		boolean ymdGetFlg = false;
		int int_haiso_req_shitei_ymd = 0;
		int int_ope_date = Integer.parseInt(opeDate);

		// ■(1)サービス、回線に紐づく機器を取得する。
		// ●EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0341B517);
		// 上りマッピング
		setEKK0341B517(param, fixedText, netSvcKeiNo, telSvcKeiNo, opeDate);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0341B517, TEMPLATE_ID_EKK0341B517_DETAIL, IN_COLUMN_LIST_EKK0341B517,
				ERROR_COLUMN_EKK0341B517);

		// ■(1)-1.機器の配送依頼指定年月日を取得する。
		for (HashMap kikiMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341B517), TEMPLATE_ID_EKK0341B517_DETAIL))
		{
			// 機器提供サービス契約番号
			String kktk_svc_kei_no = (String)kikiMap.get(EKK0341B517CBSMsg1List.KKTK_SVC_KEI_NO);
			// 機器変更番号
			String kiki_chg_no = (String)kikiMap.get(EKK0341B517CBSMsg1List.KIKI_CHG_NO);
			// 機器提供サービス契約ステータス
			String kktk_svc_kei_stat = (String)kikiMap.get(EKK0341B517CBSMsg1List.KKTK_SVC_KEI_STAT);
			// 宅内機器種別コード
			String taknkiki_sbt_cd = (String)kikiMap.get(EKK0341B517CBSMsg1List.TAKNKIKI_SBT_CD);
			// 宅内機器型式コード
			String taknkiki_model_cd = (String)kikiMap.get(EKK0341B517CBSMsg1List.TAKNKIKI_MODEL_CD);
			// 配送依頼指定年月日
			String haiso_req_shitei_ymd = (String)kikiMap.get(EKK0341B517CBSMsg1List.HAISO_REQ_SHITEI_YMD);

			printDebugLog("■■■■■ EKK0341B517   KKTK_SVC_KEI_NO[" + kktk_svc_kei_no + "]、KIKI_CHG_NO[" + kiki_chg_no + "]、KKTK_SVC_KEI_STAT["
					+ kktk_svc_kei_stat + "]、TAKNKIKI_SBT_CD[" + taknkiki_sbt_cd + "]、TAKNKIKI_MODEL_CD[" + taknkiki_model_cd
					+ "]、HAISO_REQ_SHITEI_YMD[" + haiso_req_shitei_ymd + "] ■■■■■");

			if (KIKI_SVC_KEI_STAT_TAISYOGAI.contains(kktk_svc_kei_stat))
			{
				// 機器提供サービス契約ステータスがキャンセル、解約は除外。
				// 休止、中断、サービス提供中については、配送依頼指定年月日が入っている場合は過去日になっているはず。
				continue;
			}
			if (!JFUBPCommon.isNull(haiso_req_shitei_ymd))
			{
				int chkYmd = Integer.parseInt(haiso_req_shitei_ymd);
				// 運用日付＜配送依頼指定年月日の場合
				if (int_ope_date < chkYmd)
				{
					// ■(1)-1-1.配送ステータスが受付済か判定する。
					if (!isHaisoUketsuke(handle, param, fixedText, kktk_svc_kei_no, kiki_chg_no))
					{
						continue;
					}

					// 配送依頼指定年月日が最小のものを取得する。
					int_haiso_req_shitei_ymd = getMinYmd(int_haiso_req_shitei_ymd, chkYmd);
					ymdGetFlg = true;
				}
			}
		}

		if (ymdGetFlg)
		{
			return String.valueOf(int_haiso_req_shitei_ymd);
		}
		return JFUStrConst.EMPTY;
	}

	/**
	 * 工事案件の機器出荷予定日算出基準年月日を元に<br>
	 * 配送予定年月日（配送依頼指定年月日）を取得する。<br>
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opeDate 運用日付
	 * @return 配送予定年月日（配送依頼指定年月日）
	 * @throws Exception
	 */
	private String getKkshkaRsvdSnststdYmd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String opeDate) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)(param.getData(fixedText));
		String net_svc_kei_no = (String)inMap.get(IN_NET_SVC_KEI_NO);

		String resultNetYmd = JFUStrConst.EMPTY;

		if (!JFUBPCommon.isNull(net_svc_kei_no))
		{
			// ネットのサービス契約番号
			HashMap<String, Object> resultMap = getKojiankInfo(handle, param, fixedText, opeDate, net_svc_kei_no);
			resultNetYmd = (String)resultMap.get(WK_HAISO_RSV_YMD);
			printDebugLog("■■■■■ (b)(c) ネットのサービス契約番号[" + net_svc_kei_no + "]、配送予定年月日[" + resultNetYmd + "] ■■■■■");
		}

		// 取得した日付を返却する。
		return resultNetYmd;
	}

	/**
	 * 工事案件の機器出荷予定日算出基準年月日を元に<br>
	 * 配送予定年月日を取得する。(サブ）
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opeDate 運用日付
	 * @param inSvcKeiNo サービス契約番号
	 * @return 配送予定年月日（配送依頼指定年月日）
	 * @throws Exception
	 */
	private HashMap<String, Object> getKojiankInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String opeDate,
			String inSvcKeiNo) throws Exception
	{
		// (b)同一回線場所（ネット）に「機器出荷予定日算出基準年月日」が設定された
		// 仕掛中工事（工事案件種別が新設／住所変更／コース変更　※撤去工事は除く）が存在し
		// 且つ「機器出荷予定日算出基準年月日」が申込より未来日の場合、「機器出荷予定日算出基準年月日」を配送予定年月日に設定する。
		// 「機器出荷予定日算出基準年月日」が過去日の場合、機器申込日を配送予定年月日に設定する。
		// ※仕掛中工事とは、工事案件.マンション工事案件状態コードが「130:登録済」以上、且つ「200:工事完了済」未満の工事。

		// (c)同一回線場所（ネット）の仕掛中工事（工事案件種別コードが新設／住所変更／コース変更　※撤去工事は除く）が存在して
		// 「機器出荷予定日算出基準年月日」が未設定の場合、「20991231」を配送予定年月日に設定する。

		HashMap<String, Object> inMap = (HashMap<String, Object>)(param.getData(fixedText));
		HashMap<String, Object> resultMap = new HashMap<String, Object>();

		// ■(1)工事案件の一覧を取得する。
		// ●EKU0011B030_工事案件一覧照会（複合検索）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKU0011B030);
		// 上りマッピング
		setEKU0011B030(param, fixedText, inSvcKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKU0011B030, TEMPLATE_ID_EKU0011B030_DETAIL, IN_COLUMN_LIST_EKU0011B030,
				ERROR_COLUMN_EKU0011B030);

		boolean existTaisyoStatus = false;
		int int_haiso_req_shitei_ymd = 0;
		int intOpeDate = Integer.parseInt(opeDate);

		// 注）工事案件は１レコードのみ取得のはず。
		for (HashMap dataMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKU0011B030), TEMPLATE_ID_EKU0011B030_DETAIL))
		{
			// 工事案件番号
			String kojiak_no = (String)dataMap.get(EKU0011B030CBSMsg1List.KOJIAK_NO);
			// 工事案件ステータス
			String kojiak_stat = (String)dataMap.get(EKU0011B030CBSMsg1List.KOJIAK_STAT);
			// マンション工事案件状態コード
			String mans_kojiak_stat_cd = (String)dataMap.get(EKU0011B030CBSMsg1List.MANS_KOJIAK_STAT_CD);
			// 機器出荷予定日算出基準年月日
			String kkshka_rsvd_snststd_ymd = (String)dataMap.get(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD);

			printDebugLog("■■■■■ 工事案件番号[" + kojiak_no + "]、工事案件ステータス[" + kojiak_stat + "]、マンション工事案件状態コード[" + mans_kojiak_stat_cd
					+ "]、機器出荷予定日算出基準年月日[" + kkshka_rsvd_snststd_ymd + "] ■■■■■");

			if (JFUBPCommon.isNull(mans_kojiak_stat_cd))
			{
				if ((!JFUBPCommon.isNull(kojiak_stat)) && (!JFUStrConst.CD00474_120.equals(kojiak_stat)))
				{
					// ＭＡＮＭＯＳ管理物件のローゼット済を想定
					mans_kojiak_stat_cd = kojiak_stat;
				}
				else
				{
					continue;
				}
			}

			int status = Integer.parseInt(mans_kojiak_stat_cd);
			if (status >= Integer.parseInt(JFUStrConst.CD01651_130) && status < Integer.parseInt(JFUStrConst.CD01651_200))
			{
				// 「マンション工事案件状態コード ＞＝"130"(受付済)」 かつ 「マンション工事案件状態コード ＜ "200"(工事完了済)」の場合
				existTaisyoStatus = true;

				if (!JFUBPCommon.isNull(kkshka_rsvd_snststd_ymd))
				{
					int chkYmd = Integer.parseInt(kkshka_rsvd_snststd_ymd);
					if (intOpeDate < chkYmd)
					{
						//「機器出荷予定日算出基準年月日」が申込より未来日
						int_haiso_req_shitei_ymd = chkYmd;
					}
					else
					{
						int_haiso_req_shitei_ymd = intOpeDate;
					}
				}
			}
		}

		// 返却値設定
		resultMap.put(WK_HAISO_RSV_YMD, JFUStrConst.EMPTY);
		if (existTaisyoStatus)
		{
			if (int_haiso_req_shitei_ymd == 0)
			{
				// 機器出荷予定日算出基準年月日が未指定の場合、20991231を返却
				resultMap.put(WK_HAISO_RSV_YMD, JFUStrConst.DEFAULT_YYYYMMDD);
			}
			else
			{
				resultMap.put(WK_HAISO_RSV_YMD, String.valueOf(int_haiso_req_shitei_ymd));
			}
		}
		return resultMap;
	}

	/**
	 * 上りマッピング項目設定(EKU0011B030_工事案件一覧照会（複合検索））を行います。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svc_kei_no サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setEKU0011B030(IRequestParameterReadWrite param, String fixedText, String svc_kei_no) throws RequestParameterException
	{
		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKU0011B030CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);
		// ＫＥＹ＿工事案件種別コード  新設、住変(新設) 、プラン変更（収容替）、プラン変更（工事なし）
		// ※ＭＴで収容替は発生しないはず。条件設定は行う。
		inMap.put(EKU0011B030CBSMsg.KEY_KOJIAK_SBT_CD, JFUStrConst.CD00577_001 + "," + JFUStrConst.CD00577_003 + "," + JFUStrConst.CD00577_009 + ","
				+ JFUStrConst.CD00577_010);
	}

	/**
	 * 日付の小さい方を返却する。
	 * 
	 * <br>
	 * @param saveYmd 候補日付
	 * @param inYmd2 比較日付（初期値でないこと）
	 * @return 日付
	 */
	private int getMinYmd(int saveYmd, int inYmd)
	{
		if (saveYmd == 0)
		{
			return inYmd;
		}
		if (saveYmd < inYmd)
		{
			return saveYmd;
		}
		return inYmd;
	}

	/**
	 * 上りマッピング項目設定(EKK0341B517_機器提供サービス契約一覧照会(接続機器情報)２）を行います。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param netSsvcKeiNo ネットのサービス契約番号
	 * @param telSvcKeiNo 電話のサービス契約番号
	 * @param opeDate 運用日
	 * @throws RequestParameterException
	 */
	private void setEKK0341B517(IRequestParameterReadWrite param, String fixedText, String netSsvcKeiNo, String telSvcKeiNo, String opeDate)
			throws RequestParameterException
	{
		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		StringBuffer sb = new StringBuffer();
		sb.append(netSsvcKeiNo);
		if (!JFUBPCommon.isNull(telSvcKeiNo))
		{
			sb.append(",");
			sb.append(telSvcKeiNo);
		}
		inMap.put(EKK0341B517CBSMsg.KEY_SVC_KEI_NO, sb.toString());
	}

	/**
	 * 機器の配送ステータスが対象か判定する。
	 * 
	 * <br>
	 * @param handle
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktk_svc_kei_no 機器提供サービス契約番号
	 * @param kiki_chg_no 機器変更番号
	 * @return true：対象、false：対象外
	 * @throws Exception
	 */
	private boolean isHaisoUketsuke(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String kktk_svc_kei_no,
			String kiki_chg_no) throws Exception
	{

		HashMap<String, Object> inMap = (HashMap<String, Object>)(param.getData(fixedText));

		// ●EDK0011B090_契約機器配送対象物品一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EDK0011B090);
		// 上りマッピング
		setEDK0011B090(param, fixedText, kktk_svc_kei_no);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EDK0011B090, TEMPLATE_ID_EDK0011B090_DETAIL, IN_COLUMN_LIST_EDK0011B090,
				ERROR_COLUMN_EDK0011B090);

		for (HashMap dataMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EDK0011B090), TEMPLATE_ID_EDK0011B090_DETAIL))
		{
			// 機器提供サービス契約番号
			String wk_kktk_svc_kei_no = (String)dataMap.get(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO);
			// 機器変更番号
			String wk_kiki_chg_no = (String)dataMap.get(EDK0011B090CBSMsg1List.KIKI_CHG_NO);

			if (!(kktk_svc_kei_no.equals(wk_kktk_svc_kei_no) && kiki_chg_no.equals(wk_kiki_chg_no)))
			{
				continue;
			}
			// 配送ステータス
			String haiso_stat = (String)dataMap.get(EDK0011B090CBSMsg1List.HAISO_STAT);
			// 配送予定年月日
			String haiso_rsv_ymd = (String)dataMap.get(EDK0011B090CBSMsg1List.HAISO_RSV_YMD);
			printDebugLog("■■■■■ EDK0011B090   KKTK_SVC_KEI_NO[" + kktk_svc_kei_no + "]、KIKI_CHG_NO[" + kiki_chg_no + "]、配送ステータス[" + haiso_stat
					+ "]、配送予定年月日[" + haiso_rsv_ymd + "] ■■■■■");

			if (JFUStrConst.CD00009_001.equals(haiso_stat))
			{
				// 受付済を対象とする
				return true;
			}
		}
		return false;

	}

	/**
	 * 上りマッピング項目設定(EDK0011B090_契約機器配送対象物品一覧照会）を行います。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktk_svc_kei_no 機器提供サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setEDK0011B090(IRequestParameterReadWrite param, String fixedText, String kktk_svc_kei_no) throws RequestParameterException
	{
		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO, kktk_svc_kei_no);
	}

	/**
	 * チェック処理を行います。
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@Override
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * デバッグログ出力
	 * @param debugMsg デバッグメッセージ
	 */
	public void printDebugLog(String debugMsg)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), debugMsg, null, null, null);
	}

}
