/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUKjscLoginCC
*   ソースファイル名：JFUKjscLoginCC.java
*   作成者          ：富士通
*   日付            ：2011年04月01日
*＜機能概要＞
*   工事進捗確認ログインコモンコンポーネント部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/01   FJ）馬場    新規作成
*   v2.00       2012/05/11   FJ)西川     【案件番号なし】工事進捗(携帯)対応 イレギュラーフラグマッピング追加
*   v2.00       2012/05/18   FJ)西川     【案件番号なし】工事進捗(携帯)対応 照会回数計算処理の実行判定追加,申込明細情報変更SIF変更対応
*                                                                           工事案件の照会回数初期値を申込明細から取得,ログイン可否フラグ初期化
*   v2.00       2012/05/30   FJ)西川     【案件番号なし】工事進捗(携帯)対応 工事案件の更新処理判定追加(NET/電話同一工事案件の照会回数更新不正対応)
*   v5.00       2012/09/30   FJ)文元     【OM-2013-0002364】住変時工事進捗ログイン対応
*   v6.00       2013/12/13   FJ)文元     【OM-2013-0005022】住変中の工事工程進捗が工事進捗画面で表示対象とならない不具合改修
*   v12.00      2015/02/08   FJ)西川     【OM-2015-0000218】住変中の工事工程進捗が工事進捗画面で表示対象とならない不具合改修
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

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 eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JPCUtilCommon;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0091B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0091B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0091B020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0091B030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0091B030CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0151B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0151B010CBSMsg1List;

/**
 * 工事進捗確認ログインコモンコンポーネント部品
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUKjscLoginCC extends JFUBaseCC
{

	/** サービスインターフェースID */
	private static final String SIF_EKK0021B504 = "EKK0021B504";
	private static final String SIF_EKU0091B030 = "EKU0091B030";
	private static final String SIF_EKU0151B010 = "EKU0151B010";
	private static final String SIF_EKU0011A010 = "EKU0011A010";
	private static final String SIF_EKU0011C010 = "EKU0011C010";
	private static final String SIF_EKK0021A010 = "EKK0021A010";
	private static final String SIF_EKK0021C040 = "EKK0021C040";
	private static final String SIF_EKU0091B020 = "EKU0091B020";
	private static final String SIF_EKK0011A010 = "EKK0011A010";

	/** 申込番号 */
	private static final String MSKM_NO = "mskm_no";

	/** 郵便番号 */
	private static final String PCD = "pcd";

	/** 遷移モード */
	private static final String SCREEN_MODE = "screen_mode";

	/** SYSID */
	private static final String SYSID = "sysid";

	/** ログイン可否フラグ */
	private static final String LOGIN_KH_FLG = "login_kh_flg";

	/** 工事案件情報 */
	private static final String KJAK_INFO = "kjak_info";

	/** 申込明細番号 */
	private static final String MSKM_DTL_NO = "mskm_dtl_no";

	/** 工事案件番号 */
	private static final String KJAK_NO = "kjak_no";

	/** キャンセルフラグ */
	private static final String CANCEL_FLG = "cancel_flg";

	/** イレギュラーフラグ */
	private static final String IRREGULAR_FLG = "irregular_flg";

	/** 料金コースコード */
	private static final String PCRC_CD = "pcrc_cd";

	/** エラー項目名 */
	private static final String ERR_COLUMN = "key_op_svc_cd_err";

	/** 料金グループコード_ｅｏ光ネットホームタイプ */
	private static final String PRC_GRP_CD_NET_HOME = "02";

	/** 料金グループコード_ｅｏ光電話 */
	private static final String PRC_GRP_CD_TEL = "10";

	/** 料金グループコード_ｅｏ光テレビ（Ｋ−ＣＡＴ） */
	private static final String PRC_GRP_CD_TV_KCAT = "11";

	/** 料金グループコード_ｅｏ光テレビ（ＫＣＮ） */
	private static final String PRC_GRP_CD_TV_KCN = "12";

	/** 料金グループコード_ｅｏ光テレビ（再送信） */
	private static final String PRC_GRP_CD_TV_RE_SEND = "13";

	/** 照会回数計算用定数_申込明細 */
	private static final String COUNT_UP_KK = "KK";

	/** 照会回数計算用定数_工事案件 */
	private static final String COUNT_UP_KU = "KU";

	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_MSKMSHO_PRE_CHK;
	private static final List<String> IN_COLUMN_LIST_KOJI_ANKEN_EKU0091B030;
	private static final List<String> IN_COLUMN_LIST_KOJI_SINCHOKU_ICHIRAN;
	private static final List<String> IN_COLUMN_LIST_KOJI_ANKEN_ICHII;
	private static final List<String> IN_COLUMN_LIST_KOJI_ANKEN_SHOKAI_SU_CHG;
	private static final List<String> IN_COLUMN_LIST_MSKM_MEISAI_ICHII;
	private static final List<String> IN_COLUMN_LIST_MSKM_MEISAI_CHG;
	private static final List<String> IN_COLUMN_LIST_MSKM_DTL_KOJI_ANKEN_ICHIRAN;
	private static final List<String> IN_COLUMN_LIST_MSKM_ICHII;

	/** IN項目値 */
	static
	{
		IN_COLUMN_LIST_MSKMSHO_PRE_CHK = Arrays.asList(EKK0021B504CBSMsg.KEY_MSKMSHO_NO);
		IN_COLUMN_LIST_KOJI_ANKEN_EKU0091B030 = Arrays.asList(EKU0091B030CBSMsg.KEY_MSKM_DTL_NO);
		IN_COLUMN_LIST_KOJI_SINCHOKU_ICHIRAN = Arrays.asList(EKU0151B010CBSMsg.KEY_KOJIAK_NO);
		IN_COLUMN_LIST_KOJI_ANKEN_ICHII = Arrays.asList(EKU0011A010CBSMsg.KEY_KOJIAK_NO);
		IN_COLUMN_LIST_KOJI_ANKEN_SHOKAI_SU_CHG =
				Arrays.asList(EKU0011C010CBSMsg.KOJIAK_NO, EKU0011C010CBSMsg.RCNT_SHOKAI_YMD, EKU0011C010CBSMsg.WEB_SHOKAI_CNT,
						EKU0011C010CBSMsg.PC_SHOKAI_CNT, EKU0011C010CBSMsg.KTAI_SHOKAI_CNT, EKU0011C010CBSMsg.UPD_DTM_BF);
		IN_COLUMN_LIST_MSKM_MEISAI_ICHII = Arrays.asList(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, EKK0021A010CBSMsg.KEY_GENE_ADD_DTM);
		IN_COLUMN_LIST_MSKM_MEISAI_CHG =
				Arrays.asList(EKK0021C040CBSMsg.MSKM_DTL_NO, EKK0021C040CBSMsg.MSKMSHO_NO, EKK0021C040CBSMsg.MSKMSHO_DTL_NO,
						EKK0021C040CBSMsg.MSKM_YMD, EKK0021C040CBSMsg.MSKM_FORM_CD, EKK0021C040CBSMsg.MSKM_DTL_SBT_CD,
						EKK0021C040CBSMsg.RRKS_KTAI_TELNO, EKK0021C040CBSMsg.RRKS_OFFC_NM, EKK0021C040CBSMsg.DT_RRKS_TELNO,
						EKK0021C040CBSMsg.NEW_MSKM_SBT_CD, EKK0021C040CBSMsg.MSKM_OPTNTY_CD, EKK0021C040CBSMsg.TAKCHO_KIBO_APO_KIGEN_YMD,
						EKK0021C040CBSMsg.KOJI_APO_RRKS_SHITEI_CD, EKK0021C040CBSMsg.KOJI_APO_RRKS_TELNO, EKK0021C040CBSMsg.RRK_JIKO_ADD_DTM,
						EKK0021C040CBSMsg.MSKM_RRKS_MLAD, EKK0021C040CBSMsg.KOJI_PRG_TCHI_MLAD, EKK0021C040CBSMsg.RRK_JIKO,
						EKK0021C040CBSMsg.RCNT_SHOKAI_YMD, EKK0021C040CBSMsg.WEB_SHOKAI_CNT, EKK0021C040CBSMsg.PC_SHOKAI_CNT,
						EKK0021C040CBSMsg.KTAI_SHOKAI_CNT, EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD, EKK0021C040CBSMsg.KJSC_TCH_PC_MLAD_CHG_YMD,
						EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD_CHG_YMD, EKK0021C040CBSMsg.ML_SEND_JGI_FLG, EKK0021C040CBSMsg.ML_SEND_JGI_RSN_MEMO,
						EKK0021C040CBSMsg.BMP_MSKM_RRKS_TLN, EKK0021C040CBSMsg.OP_SVC_HKTGI_UM, EKK0021C040CBSMsg.DSL_ATICLE_SOHU_KIBO_UM,
						EKK0021C040CBSMsg.RRK_WAY_HOKI, EKK0021C040CBSMsg.NEWCONST_BUKKEN_CD, EKK0021C040CBSMsg.HUKKAT_ANKEN_FLG,
						EKK0021C040CBSMsg.SAME_EQUIP_RE_MSKM_CD, EKK0021C040CBSMsg.HNIN_CFM_ATICLE_SBT_CD, EKK0021C040CBSMsg.KEI_HUKA_CD,
						EKK0021C040CBSMsg.MAP_TEMP_UM, EKK0021C040CBSMsg.KCN_STB_MSKM_CNT, EKK0021C040CBSMsg.KCN_STB_KIND_CD,
						EKK0021C040CBSMsg.MANSSBSYS_RNKI_YO_KIJIRAN, EKK0021C040CBSMsg.MANSION_ID, EKK0021C040CBSMsg.CATID,
						EKK0021C040CBSMsg.MKM_UK_SBT_CD, EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TNTSHA_NM, EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TELNO,
						EKK0021C040CBSMsg.UPD_DTM_BF, EKK0021C040CBSMsg.HNIN_CFM_ATICLE_NM);
		IN_COLUMN_LIST_MSKM_DTL_KOJI_ANKEN_ICHIRAN = Arrays.asList(EKU0091B020CBSMsg.KEY_KOJIAK_NO);
		IN_COLUMN_LIST_MSKM_ICHII = Arrays.asList(EKK0011A010CBSMsg.KEY_MSKM_NO);
	}

	// 工事進捗(携帯)対応 add start -------------------------------------

	/** IN項目:カウントアップ非実行フラグ */
	private static final String IN_PARAM_CNT_UP_NO_FLG = "cnt_up_no_flg";

	/** IN項目:ログイン機能区分 */
	private static final String IN_PARAM_LOGIN_FUNC_DIV = "login_func_div";

	/** カウントアップ非実行フラグ："1"(非実行) */
	private static final String CNT_UP_NO = "1";

	/** SC実行結果取得キー(申込明細一意照会) ※連番なし */
	private static final String TEMP_TEMPLATE_KEY_EKK0021A010 = TEMP_TEMPLATE_PRIFIX + SIF_EKK0021A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/** 最大照会回数 */
	private static final int MAX_SHOKAI_CNT = 999;

	/** Web照会回数(申込明細) */
	private static final String KK0021_WEB_SHOKAI_CNT = "kk0021_web_shokai_cnt";
	/** PC照会回数(申込明細) */
	private static final String KK0021_PC_SHOKAI_CNT = "kk0021_pc_shokai_cnt";
	/** 携帯照会回数(申込明細) */
	private static final String KK0021_KTAI_SHOKAI_CNT = "kk0021_ktai_shokai_cnt";
	/** 一時項目リスト(照会回数) */
	private static final List<String> TMP_COL_LIST_SHOKAI_CNT = Arrays.asList(KK0021_WEB_SHOKAI_CNT, KK0021_PC_SHOKAI_CNT, KK0021_KTAI_SHOKAI_CNT);

	/** ログイン工事案件種別コード（工事工程進捗が発生するもの） */
	private static final List<String> KOJIAK_SBT_CD_STEP_PRG_ARI_LIST =
			Arrays
					.asList(JFUStrConst.CD00577_001, JFUStrConst.CD00577_003, JFUStrConst.CD00577_008, JFUStrConst.CD00577_009,
							JFUStrConst.CD00577_012);

	/** ログイン対象の料金グループコード(02:eo光ネットホームタイプ,10:eo光電話,11:eo光テレビ(K-CAT),12:eo光テレビ(KCN),13:eo光テレビ(再送信))*/
	private static final List<String> PRC_GRP_CD_LIST =
			Arrays.asList(JFUStrConst.CD00133_02, JFUStrConst.CD00133_10, JFUStrConst.CD00133_11, JFUStrConst.CD00133_12, JFUStrConst.CD00133_13);

	/** ログイン除外対象の料金プランコード */
	private static final List<String> DENY_PPLAN_CD_LIST =
			Arrays.asList("PA3102", "PA3103", "PA3104", "PA3202", "PA3203", "PA3204", "PA3303", "PA3304", "PA3305", "PA3306", "PA3403", "PA3404",
					"PA3405", "PA3406", "PA3503", "PA3504", "PA3505", "PA3506", "PA3603", "PA3604", "PA3605", "PA3606", "PA4003", "PA4004", "PA4005",
					"PA4006", "PA4103", "PA4104", "PA4105", "PA4106");

	// 工事進捗(携帯)対応 add end   -------------------------------------

	/**
	 * 工事進捗確認ログイン処理.<br>
	 *
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	public IRequestParameterReadWrite login(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 新設
		// 住所変更(新設)
		// リンクSTB
		// プラン変更(収容替)
		// 面開発

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		// ●ログイン可否フラグを初期値(ログイン可)を設定

		inMap.put(LOGIN_KH_FLG, JFUStrConst.LOGIN_KH_FLG_TRUE);

		// ==============================================================

		// ●画面の入力値(MSKM_NO)が申込書番号かの判断する。=============

		// 申込書番号存在チェック一覧照会
		// 上りマッピング
		setInMapEKK0021B504(param, fixedText);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		setFuncCode(param, fixedText, "1");
		executeSC(handle, param, fixedText, SIF_EKK0021B504, EKK0021B504CBSMsg.EKK0021B504CBSMSG1LIST, IN_COLUMN_LIST_MSKMSHO_PRE_CHK, ERR_COLUMN);

		// 申込書番号存在チェック一覧照会データ取得件数判定
		int mskmNoInfoCnt = setInMapListCnt(param, fixedText, EKK0021B504CBSMsg.EKK0021B504CBSMSG1LIST);

		// 画面の入力値(MSKM_NO)が申込書番号又は申込書明細番号の場合にtrueを設定。
		boolean isInParamMskmNoInfo = (0 < mskmNoInfoCnt);

		// ==============================================================

		// ●申込明細番号、申込種別コード、SYSID、工事案件番号の取得を行う。

		// 申込情報[申込種別コード][SYSID]
		String[] mskmInfo;

		// 申込明細番号
		Set<String> mskmDtlNoSet = null;

		// 申込情報マップ(申込明細番号,工事案件番号)
		Set<String> kojiakNoPreSet = null;

		if (!isInParamMskmNoInfo)
		{
			// 画面の入力値(MSKM_NO)が工事案件番号の場合

			// 申込明細_工事案件一覧照会(EKU0091B020)
			// 上りマッピング
			setInMapEKU0091B020(param, fixedText);
			// 検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			setFuncCode(param, fixedText, "1");
			executeSC(handle, param, fixedText, SIF_EKU0091B020, EKU0091B020CBSMsg.EKU0091B020CBSMSG1LIST,
					IN_COLUMN_LIST_MSKM_DTL_KOJI_ANKEN_ICHIRAN, ERR_COLUMN);

			// 申込明細_工事案件一覧照会データ取得件数判定
			int kojiakCnt = setInMapListCnt(param, fixedText, EKU0091B020CBSMsg.EKU0091B020CBSMSG1LIST);

			// 件数が0件の場合
			if (0 == kojiakCnt)
			{
				// 件数が0件の場合
				// ログイン可否フラグにfalseを設定する
				setInMapLoginKhFlg(param, fixedText);
				// 処理を終了
				return param;
			}

			// 申込明細_工事案件一覧照会(EKU0091B020)下りマッピング
			mskmDtlNoSet = setOutMapEKU0091B020(param, fixedText);

			// 件数が0件の場合
			if (0 == mskmDtlNoSet.size())
			{
				// 件数が0件の場合

				// ログイン可否フラグにfalseを設定する
				setInMapLoginKhFlg(param, fixedText);
				// 処理を終了
				return param;
			}

			// 画面の入力値(MSKM_NO)が工事案件番号と判断できたと判定。
			kojiakNoPreSet = new LinkedHashSet<String>();
			for (Iterator mskmDtlNoList = mskmDtlNoSet.iterator(); mskmDtlNoList.hasNext();)
			{
				String mskmDtlNo = (String)mskmDtlNoList.next();
				kojiakNoPreSet.add(mskmDtlNo + JFUStrConst.COMMA + inMap.get(MSKM_NO));
			}

			// 申込種別コード取得
			mskmInfo = getMskmSbtCd(handle, param, fixedText, mskmDtlNoSet);
		}
		else
		{
			// 画面の入力値(MSKM_NO)が申込書番号の場合

			// 申込書番号存在チェック一覧照会(EKK0021B504)下りマッピング
			mskmDtlNoSet = setOutMapEKK0021B504(param, fixedText);
			// 件数が0件の場合
			if (0 == mskmDtlNoSet.size())
			{
				// 件数が0件の場合

				// ログイン可否フラグにfalseを設定する
				setInMapLoginKhFlg(param, fixedText);
				// 処理を終了
				return param;
			}

			// 申込種別コード取得
			mskmInfo = getMskmSbtCd(handle, param, fixedText, mskmDtlNoSet);
		}

		if (JFUBPCommon.isNull(mskmInfo[0]))
		{
			// 申込スキーマの申込種別コードが取得できない場合

			// ログイン可否フラグにfalseを設定する
			setInMapLoginKhFlg(param, fixedText);
			// 処理を終了
			return param;
		}

		// ==============================================================

		// ●工事案件番号の取得を行う。

		if (isInParamMskmNoInfo)
		{
			kojiakNoPreSet = new LinkedHashSet<String>();

			for (Iterator iterator = mskmDtlNoSet.iterator(); iterator.hasNext();)
			{
				String mskmDtlNo = (String)iterator.next();
				// 工事案件一覧照会（申込明細番号）
				// 上りマッピング
				setInMapEKU0091B030(param, fixedText, mskmDtlNo);
				// 検索エラーなし設定
				ignoreSearchError(param, fixedText);
				// サービスIF実行
				setFuncCode(param, fixedText, "1");
				executeSC(handle, param, fixedText, SIF_EKU0091B030, EKU0091B030CBSMsg.EKU0091B030CBSMSG1LIST, IN_COLUMN_LIST_KOJI_ANKEN_EKU0091B030,
						ERR_COLUMN);
				// 工事案件一覧照会（申込明細番号）の件数を取得する
				int kojiakCnt = setInMapListCnt(param, fixedText, EKU0091B030CBSMsg.EKU0091B030CBSMSG1LIST);
				if (kojiakCnt == 0)
				{
					continue;
				}
				ArrayList<HashMap<String, Object>> inMapList = getResutlEKU0091B030(param, fixedText);
				for (int i = 0; i < inMapList.size(); i++)
				{
					// 取得結果の1件目を取得
					HashMap<String, Object> outMapDtl = inMapList.get(i);
					kojiakNoPreSet.add(mskmDtlNo + JFUStrConst.COMMA + outMapDtl.get(EKU0091B030CBSMsg1List.KOJIAK_NO));
				}
			}
		}

		if (kojiakNoPreSet.size() == 0)
		{
			// 件数が0件の場合
			// ログイン可否フラグにfalseを設定する
			setInMapLoginKhFlg(param, fixedText);
			// 処理を終了
			return param;
		}

		// ==============================================================

		// ●工事案件情報を取得

		// 工事案件番号

		Map<String, String> kojiakNoMap = new HashMap<String, String>();
		String sysId = null;

		HashMap<String, String> initParamSetMap = new HashMap<String, String>();
		initParamSetMap.put(MSKM_DTL_NO, JFUStrConst.EMPTY);
		initParamSetMap.put(KJAK_NO, JFUStrConst.EMPTY);
		initParamSetMap.put(CANCEL_FLG, JFUStrConst.EMPTY);
		initParamSetMap.put(PCRC_CD, JFUStrConst.EMPTY);

		// 工事案件番号リスト(重複処理防止のため)
		ArrayList<HashMap<String, String>> kojiAnkenList = new ArrayList<HashMap<String, String>>();
		kojiAnkenList.add(initParamSetMap); // ネット用
		kojiAnkenList.add(initParamSetMap); // 電話用
		kojiAnkenList.add(initParamSetMap); // TV用

		ArrayList kjakNoList = new ArrayList();
		for (Iterator iterator = kojiakNoPreSet.iterator(); iterator.hasNext();)
		{
			String mskmDtlKojiakNo = (String)iterator.next();

			String[] mskmDtlKojiakNos = mskmDtlKojiakNo.split(JFUStrConst.COMMA);

			String mskmDtlNo = mskmDtlKojiakNos[0];
			String kojiakNo = mskmDtlKojiakNos[1];

			if (kjakNoList.contains(kojiakNo))
			{
				// 処理済みのため、次データへ
				continue;
			}
			else
			{
				// 未処理の場合、リストに保管
				kjakNoList.add(kojiakNo);
			}

			// 上りマッピング（工事案件一意照会）
			setInMapEKU0011A010_01(param, fixedText, kojiakNo);
			// 検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			setFuncCode(param, fixedText, "1");
			executeSC(handle, param, fixedText, SIF_EKU0011A010, EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST, IN_COLUMN_LIST_KOJI_ANKEN_ICHII,
					ERR_COLUMN);
			// 工事案件一意照会データ取得件数判定
			int inkojiAnkenCount = setInMapListCnt(param, fixedText, EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);

			if (0 == inkojiAnkenCount)
			{
				// 件数が0件の場合
				continue;
			}

			// 工事案件一意照会の結果の明細を取得
			HashMap<String, Object> inMapDtl = getResutlEKU0011A010(param, fixedText);

			// 工事案件種別コードを取得する
			String kojiakSbtCd = (String)inMapDtl.get(EKU0091B010CBSMsg1List.KOJIAK_SBT_CD);
			// 料金グループコードを取得する
			String prcGrpCd = (String)inMapDtl.get(EKU0091B010CBSMsg1List.PRC_GRP_CD);
			// 料金プランコードを取得する
			String pplanCd = (String)inMapDtl.get(EKU0011A010CBSMsg1List.PPLAN_CD);

			if (!KOJIAK_SBT_CD_STEP_PRG_ARI_LIST.contains(kojiakSbtCd) || !PRC_GRP_CD_LIST.contains(prcGrpCd) || DENY_PPLAN_CD_LIST.contains(pplanCd))
			{
				// 工事工程進捗が発生する工事案件種別でない場合、対象外。
				// 対象の料金グループ以外の場合、対象外。
				// 対象外の料金プランの場合、対象外。
				continue;
			}

			// P-ID
			String pid = (String)inMapDtl.get(EKU0011A010CBSMsg1List.PID);
			// オーナー契約番号
			String ownrKeiNo = (String)inMapDtl.get(EKU0011A010CBSMsg1List.OWNR_KEI_NO);
			// マンション物件コード
			String mansionBukkenCd = (String)inMapDtl.get(EKU0011A010CBSMsg1List.MANSION_BUKKEN_CD);
			// 転宅先郵便番号(工事実施先となる住所の郵便番号)
			String tentakuSakiPcd = (String)inMapDtl.get(EKU0011A010CBSMsg1List.TENTAKU_SAKI_PCD);

			if (!JFUBPCommon.isNull(pid) || !JFUBPCommon.isNull(ownrKeiNo) || !JFUBPCommon.isNull(mansionBukkenCd)
					|| !((String)inMap.get(PCD)).equals(tentakuSakiPcd))
			{
				// P-ID／オーナー契約番号／マンション物件コードが設定している場合は、マンション／メゾンの為、対象外。
				// 画面入力した郵便番号と異なるため、対象外。
				continue;
			}

			// 料金コースコードを取得する
			String pcrsCd = (String)inMapDtl.get(EKU0011A010CBSMsg1List.PCRS_CD);

			HashMap<String, String> kojiAnkenMap = new HashMap<String, String>();

			// 申込明細番号
			kojiAnkenMap.put(MSKM_DTL_NO, mskmDtlNo);
			// 工事案件番号
			kojiAnkenMap.put(KJAK_NO, kojiakNo);
			// 料金コースコード
			kojiAnkenMap.put(PCRC_CD, pcrsCd);

			// 料金グループコードを判定する
			if (PRC_GRP_CD_NET_HOME.equals(prcGrpCd))
			{
				// 料金グループコードが"02:eo光ネットホームタイプ"の場合、配列の[0]番目に申込明細番号を設定する。
				kojiAnkenList.set(0, kojiAnkenMap);

			}
			else if (PRC_GRP_CD_TEL.equals(prcGrpCd))
			{

				// 料金グループコードが"10:eo光電話"の場合、配列の[0]番目に申込明細番号を設定する。
				//配列の[0]番目に申込明細番号と工事案件番号を設定する。
				kojiAnkenList.set(1, kojiAnkenMap);
			}
			else if (PRC_GRP_CD_TV_KCAT.equals(prcGrpCd) || PRC_GRP_CD_TV_KCN.equals(prcGrpCd) || PRC_GRP_CD_TV_RE_SEND.equals(prcGrpCd))
			{
				// 料金グループコードが"11:eo光テレビ（Ｋ−ＣＡＴ）"の場合、もしくは
				// 料金グループコードが"12:eo光テレビ（ＫＣＮ）"の場合、もしくは
				// 料金グループコードが"13:eo光テレビ（再送信）"の場合
				//配列の[0]番目に申込明細番号と工事案件番号を設定する。
				kojiAnkenList.set(2, kojiAnkenMap);
			}
			sysId = (String)inMapDtl.get(EKU0011A010CBSMsg1List.SYSID);
			kojiakNoMap.put(mskmDtlNo, kojiakNo);
		}

		// 件数が0件の場合
		if (sysId == null)
		{
			// 件数が0件の場合
			// ログイン可否フラグにfalseを設定する
			setInMapLoginKhFlg(param, fixedText);
			// 処理を終了
			return param;
		}

		// SYSIDを設定する
		inMap.put(SYSID, sysId);
		// 工事案件情報を設定する。
		inMap.put(KJAK_INFO, kojiAnkenList);

		// ==============================================================

		// 工事案件番号リスト(重複処理防止のため)をクリア
		kjakNoList = new ArrayList();

		// 工事案件情報の件数分、繰り返す
		for (int i = 0; i < kojiAnkenList.size(); i++)
		{
			// 工事案件情報[i]にデータが設定されていない場合、次の工事案件情報を処理する。
			if (JFUStrConst.EMPTY.equals(((HashMap)kojiAnkenList.get(i)).get(MSKM_DTL_NO)))
			{
				continue;
			}
			// 工事工程進捗一覧照会（工事案件番号）
			// 上りマッピング
			setInMapEKU0151B010(param, fixedText, i);
			// 検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			setFuncCode(param, fixedText, "1");
			executeSC(handle, param, fixedText, SIF_EKU0151B010, EKU0151B010CBSMsg.EKU0151B010CBSMSG1LIST, IN_COLUMN_LIST_KOJI_SINCHOKU_ICHIRAN,
					ERR_COLUMN);

			// 工事工程進捗一覧照会（工事案件番号）の件数を取得する
			int kojiSinchokuCount = setInMapListCnt(param, fixedText, EKU0151B010CBSMsg.EKU0151B010CBSMSG1LIST);

			// 工事工程進捗一覧照会（工事案件番号）の件数を判定する
			if (0 < kojiSinchokuCount)
			{
				// 工事工程進捗一覧照会（工事案件番号）
				// 下りマッピング
				setOutMapEKU0151B010(param, fixedText, i);

				// 工事進捗が存在する場合、工事案件の照会回数を更新する

				// カウントアップ非実行フラグが"1"(非実行)でない場合
				//      ※空メールからのログイン時は照会回数のカウントアップを行わない
				if (!CNT_UP_NO.equals(inMap.get(IN_PARAM_CNT_UP_NO_FLG)))
				{
					// --------------------------------------------------------------------------
					// 工事案件更新判定
					// --------------------------------------------------------------------------
					// 工事案件情報[i].工事案件番号
					String kojiakNo = (String)((HashMap)kojiAnkenList.get(i)).get(KJAK_NO);
					// 工事案件情報[i].工事案件番号が工事案件リストに含まれる場合
					if (kjakNoList.contains(kojiakNo))
					{
						// 処理済みのため、次データへ
						continue;
					}
					else
					{
						// 未処理の場合、リストに保管
						kjakNoList.add(kojiakNo);
					}

					// --------------------------------------------------------------------------
					// 申込明細一意照会
					// --------------------------------------------------------------------------
					// 上りマッピング
					setInMapEKK0021A010(param, fixedText, i);
					// サービスIF実行
					setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
					executeSC(handle, param, fixedText, SIF_EKK0021A010, EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, IN_COLUMN_LIST_MSKM_MEISAI_ICHII,
							ERR_COLUMN);

					// --------------------------------------------------------------------------
					// 各照会回数を引継用に保持
					// --------------------------------------------------------------------------
					// ユーザデータ初期化
					initData(param, fixedText, TMP_COL_LIST_SHOKAI_CNT);

					// Web照会回数
					inMap.put(KK0021_WEB_SHOKAI_CNT, getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0021A010),
							EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, EKK0021A010CBSMsg1List.WEB_SHOKAI_CNT, 0));
					// PC照会回数
					inMap.put(KK0021_PC_SHOKAI_CNT, getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0021A010),
							EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, EKK0021A010CBSMsg1List.PC_SHOKAI_CNT, 0));
					// 携帯照会回数
					inMap.put(KK0021_KTAI_SHOKAI_CNT, getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0021A010),
							EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, EKK0021A010CBSMsg1List.KTAI_SHOKAI_CNT, 0));
					// --------------------------------------------------------------------------

					// 工事案件一意照会
					// 上りマッピング
					setInMapEKU0011A010(param, fixedText, i);

					setFuncCode(param, fixedText, "1");
					executeSC(handle, param, fixedText, SIF_EKU0011A010, EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST, IN_COLUMN_LIST_KOJI_ANKEN_ICHII,
							ERR_COLUMN);

					// 照会回数計算処理を実行する
					getShokaiCnt(param, fixedText, COUNT_UP_KU);

					// 上りマッピング
					setInMapEKU0011C010(param, fixedText, i);

					// 工事案件照会回数変更
					setFuncCode(param, fixedText, "1");
					executeSC(handle, param, fixedText, SIF_EKU0011C010, JFUStrConst.EMPTY, IN_COLUMN_LIST_KOJI_ANKEN_SHOKAI_SU_CHG,
							JFUStrConst.EMPTY);
				}
				// 工事進捗(携帯)対応 mod end   -------------------------------------
			}
			else
			{

				// 工事進捗が存在しない場合、申込明細の照会回数を更新する
				// 申込明細照会回数変更処理を呼び出す
				executeMskmDtlShokai(handle, param, fixedText, i);
			}
		}

		return param;
	}

	/**
	 * 上りマッピング項目設定(申込書番号存在チェック一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0021B504(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> workMap = inMap;

		// 申込書番号
		inMap.put(EKK0021B504CBSMsg.KEY_MSKMSHO_NO, workMap.get(MSKM_NO));
	}

	/**
	 * 下りマッピング項目設定(申込明細_工事案件一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private Set<String> setOutMapEKU0091B020(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 申込明細_工事案件一覧照会の結果を取得
		ArrayList inMapList = (ArrayList)inMap.get(EKU0091B020CBSMsg.EKU0091B020CBSMSG1LIST);

		Set<String> mskmDtlNoSet = new LinkedHashSet<String>();
		for (int i = 0; i < inMapList.size(); i++)
		{
			HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(i);
			// 申込明細番号を取得
			String mskmDtlNo = (String)inMapDtl.get(EKU0091B020CBSMsg1List.MSKM_DTL_NO);
			mskmDtlNoSet.add(mskmDtlNo);
		}

		return mskmDtlNoSet;
	}

	/**
	 * 下りマッピング項目設定(申込書番号存在チェック一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private Set<String> setOutMapEKK0021B504(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 申込明細_工事案件一覧照会の結果を取得
		ArrayList inMapList = (ArrayList)inMap.get(EKK0021B504CBSMsg.EKK0021B504CBSMSG1LIST);

		Set<String> mskmDtlNoSet = new LinkedHashSet<String>();
		for (int i = 0; i < inMapList.size(); i++)
		{
			HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(i);
			// 申込明細番号を取得
			String mskmDtlNo = (String)inMapDtl.get(EKK0021B504CBSMsg1List.MSKM_DTL_NO);
			mskmDtlNoSet.add(mskmDtlNo);
		}

		return mskmDtlNoSet;
	}

	/**
	 * 申込情報取得処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws Exception すべての例外
	 */
	private String[] getMskmSbtCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, Set<String> mskmDtlNoSet)
			throws Exception
	{
		String mskmDtlNo = null;
		for (Iterator iterator = mskmDtlNoSet.iterator(); iterator.hasNext();)
		{
			mskmDtlNo = (String)iterator.next();
			break;
		}

		// 申込明細一意照会
		// 上りマッピング
		setInMapEKK0021A010_01(param, fixedText, mskmDtlNo);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		setFuncCode(param, fixedText, "2");
		executeSC(handle, param, fixedText, SIF_EKK0021A010, EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, IN_COLUMN_LIST_MSKM_MEISAI_ICHII, ERR_COLUMN);

		// 申込一意照会
		// 上りマッピング
		setInMapEKK0011A010(param, fixedText);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		setFuncCode(param, fixedText, "2");
		executeSC(handle, param, fixedText, SIF_EKK0011A010, EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST, IN_COLUMN_LIST_MSKM_ICHII, ERR_COLUMN);

		// 下りマッピング
		// 申込情報[申込種別コード][SYSID]
		String[] mskmInfo = setOutMapEKK0011A010(param, fixedText);

		return mskmInfo;
	}

	/**
	 * 上りマッピング項目設定(申込明細_工事案件一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKU0091B020(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> workMap = inMap;

		// 申込書番号
		inMap.put(EKU0091B020CBSMsg.KEY_KOJIAK_NO, workMap.get(MSKM_NO));
	}

	/**
	 * 上りマッピング項目設定(申込明細一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0021A010_01(IRequestParameterReadWrite param, String fixedText, String mskmDtlNo) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿申込明細番号を設定する
		inMap.put(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
	}

	/**
	 * 上りマッピング項目設定(申込明細一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0011A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 申込明細一意照会の結果を取得
		ArrayList inMapList = (ArrayList)inMap.get(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
		// 取得結果の1件目を取得
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(0);
		// 申込番号を取得
		String mskmNo = (String)inMapDtl.get(EKK0021A010CBSMsg1List.MSKM_NO);

		// ＫＥＹ＿申込番号を設定する
		inMap.put(EKK0011A010CBSMsg.KEY_MSKM_NO, mskmNo);
	}

	/**
	 * 上りマッピング項目設定(工事案件一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKU0011A010_01(IRequestParameterReadWrite param, String fixedText, String kojiakNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// ＫＥＹ＿工事案件を設定する
		inMap.put(EKU0011A010CBSMsg.KEY_KOJIAK_NO, kojiakNo);
	}

	/**
	 * 下りマッピング項目設定(工事案件一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return 工事案件一意照会の結果
	 * @throws RequestParameterException
	 */
	private ArrayList<HashMap<String, Object>> getResutlEKU0091B030(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 工事案件一意照会の結果を取得
		ArrayList inMapList = (ArrayList)inMap.get(EKU0091B030CBSMsg.EKU0091B030CBSMSG1LIST);

		return inMapList;
	}

	/**
	 * 下りマッピング項目設定(工事案件一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return 工事案件一意照会の結果
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> getResutlEKU0011A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 工事案件一意照会の結果を取得
		ArrayList inMapList = (ArrayList)inMap.get(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
		// 取得結果の1件目を取得
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(0);

		return inMapDtl;
	}

	/**
	 * 下りマッピング項目設定(申込一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private String[] setOutMapEKK0011A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 申込一意照会の結果を取得
		ArrayList inMapList = (ArrayList)inMap.get(EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST);
		// 取得結果の1件目を取得
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(0);

		String[] mskmInfo = new String[2];
		// 申込種別コードを取得
		mskmInfo[0] = (String)inMapDtl.get(EKK0011A010CBSMsg1List.MSKM_SBT_CD);
		// SYSIDを取得
		mskmInfo[1] = (String)inMapDtl.get(EKK0011A010CBSMsg1List.SYSID);

		return mskmInfo;
	}

	/**
	 * 上りマッピング項目設定(申込明細_工事案件一覧照会（申込明細番号）)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKU0091B030(IRequestParameterReadWrite param, String fixedText, String mskmDtlNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// ＫＥＹ＿申込明細番号を設定する。
		inMap.put(EKU0091B030CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
	}

	/**
	 * 上りマッピング項目設定(申込明細一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0021A010(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		ArrayList inMapList = (ArrayList)inMap.get(KJAK_INFO);

		// 工事案件情報を取得する
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(kojiAkCnt);

		// ＫＥＹ＿申込明細番号を設定する
		inMap.put(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, inMapDtl.get(MSKM_DTL_NO));
	}

	/**
	 * 上りマッピング項目設定(申込明細照会回数変更)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kojiAkCnt 工事案件のインデックス
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0021C040(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 工事案件情報を取得する
		ArrayList kojiAnkenList = (ArrayList)inMap.get(KJAK_INFO);
		HashMap<String, Object> kojiAnkenMap = (HashMap<String, Object>)kojiAnkenList.get(kojiAkCnt);

		// 登録する値の設定
		// 申込明細番号を設定する
		inMap.put(EKK0021C040CBSMsg.MSKM_DTL_NO, kojiAnkenMap.get(MSKM_DTL_NO));

		// 申込明細一意照会情報を取得する
		ArrayList inMapList = (ArrayList)inMap.get(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(0);

		// 申込書番号を設定する
		inMap.put(EKK0021C040CBSMsg.MSKMSHO_NO, inMapDtl.get(EKK0021A010CBSMsg1List.MSKMSHO_NO));

		// ANK-1199-00-00
		// 申込書明細番号を設定する
		inMap.put(EKK0021C040CBSMsg.MSKMSHO_DTL_NO, inMapDtl.get(EKK0021A010CBSMsg1List.MSKMSHO_DTL_NO));

		// 申込年月日を設定する
		inMap.put(EKK0021C040CBSMsg.MSKM_YMD, inMapDtl.get(EKK0021A010CBSMsg1List.MSKM_YMD));

		// 申込形態コードを設定する
		inMap.put(EKK0021C040CBSMsg.MSKM_FORM_CD, inMapDtl.get(EKK0021A010CBSMsg1List.MSKM_FORM_CD));

		// 申込明細種別コードを設定する
		inMap.put(EKK0021C040CBSMsg.MSKM_DTL_SBT_CD, inMapDtl.get(EKK0021A010CBSMsg1List.MSKM_DTL_SBT_CD));

		// 連絡先携帯電話番号を設定する
		inMap.put(EKK0021C040CBSMsg.RRKS_KTAI_TELNO, inMapDtl.get(EKK0021A010CBSMsg1List.RRKS_KTAI_TELNO));

		// 連絡先勤務先名を設定する
		inMap.put(EKK0021C040CBSMsg.RRKS_OFFC_NM, inMapDtl.get(EKK0021A010CBSMsg1List.RRKS_OFFC_NM));

		// 昼間連絡先電話番号を設定する
		inMap.put(EKK0021C040CBSMsg.DT_RRKS_TELNO, inMapDtl.get(EKK0021A010CBSMsg1List.DT_RRKS_TELNO));

		// 新規申込種別コードを設定する
		inMap.put(EKK0021C040CBSMsg.NEW_MSKM_SBT_CD, inMapDtl.get(EKK0021A010CBSMsg1List.NEW_MSKM_SBT_CD));

		// 申込契機コードを設定する
		inMap.put(EKK0021C040CBSMsg.MSKM_OPTNTY_CD, inMapDtl.get(EKK0021A010CBSMsg1List.MSKM_OPTNTY_CD));

		// 宅内調査希望アポ期限年月日を設定する
		inMap.put(EKK0021C040CBSMsg.TAKCHO_KIBO_APO_KIGEN_YMD, inMapDtl.get(EKK0021A010CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD));

		// 工事アポ連絡先指定コードを設定する
		inMap.put(EKK0021C040CBSMsg.KOJI_APO_RRKS_SHITEI_CD, inMapDtl.get(EKK0021A010CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD));

		// 工事アポ連絡先電話番号を設定する
		inMap.put(EKK0021C040CBSMsg.KOJI_APO_RRKS_TELNO, inMapDtl.get(EKK0021A010CBSMsg1List.KOJI_APO_RRKS_TELNO));

		// 連絡事項登録年月日時分秒を設定する
		inMap.put(EKK0021C040CBSMsg.RRK_JIKO_ADD_DTM, inMapDtl.get(EKK0021A010CBSMsg1List.RRK_JIKO_ADD_DTM));

		// 申込連絡先メールアドレスを設定する
		inMap.put(EKK0021C040CBSMsg.MSKM_RRKS_MLAD, inMapDtl.get(EKK0021A010CBSMsg1List.MSKM_RRKS_MLAD));

		// 工事進捗通知メールアドレスを設定する
		inMap.put(EKK0021C040CBSMsg.KOJI_PRG_TCHI_MLAD, inMapDtl.get(EKK0021A010CBSMsg1List.KOJI_PRG_TCHI_MLAD));

		// 連絡事項を設定する
		inMap.put(EKK0021C040CBSMsg.RRK_JIKO, inMapDtl.get(EKK0021A010CBSMsg1List.RRK_JIKO));

		// 最新照会年月日を設定する
		inMap.put(EKK0021C040CBSMsg.RCNT_SHOKAI_YMD, JCCBPCommon.getOpeDate(null));

		// Web照会回数を設定する
		inMap.put(EKK0021C040CBSMsg.WEB_SHOKAI_CNT, inMapDtl.get(EKK0021A010CBSMsg1List.WEB_SHOKAI_CNT));

		// PC照会回数を設定する
		inMap.put(EKK0021C040CBSMsg.PC_SHOKAI_CNT, inMapDtl.get(EKK0021A010CBSMsg1List.PC_SHOKAI_CNT));

		// 携帯照会回数を設定する
		inMap.put(EKK0021C040CBSMsg.KTAI_SHOKAI_CNT, inMapDtl.get(EKK0021A010CBSMsg1List.KTAI_SHOKAI_CNT));

		// 工事進捗通知形態メールアドレスを設定する
		inMap.put(EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD, inMapDtl.get(EKK0021A010CBSMsg1List.KJSC_TCH_KTAI_MLAD));

		// 工事進捗通知PCメールアドレス変更年月日を設定する
		inMap.put(EKK0021C040CBSMsg.KJSC_TCH_PC_MLAD_CHG_YMD, inMapDtl.get(EKK0021A010CBSMsg1List.KJSC_TCH_PC_MLAD_CHG_YMD));

		// 工事進捗通知携帯メールアドレス変更年月日を設定する
		inMap.put(EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD_CHG_YMD, inMapDtl.get(EKK0021A010CBSMsg1List.KJSC_TCH_KTAI_MLAD_CHG_YMD));

		// メール送信除外フラグを設定する
		inMap.put(EKK0021C040CBSMsg.ML_SEND_JGI_FLG, inMapDtl.get(EKK0021A010CBSMsg1List.ML_SEND_JGI_FLG));

		// メール送信除外理由メモを設定する
		inMap.put(EKK0021C040CBSMsg.ML_SEND_JGI_RSN_MEMO, inMapDtl.get(EKK0021A010CBSMsg1List.ML_SEND_JGI_RSN_MEMO));

		// 番ポ申込連絡先電話番号を設定する
		inMap.put(EKK0021C040CBSMsg.BMP_MSKM_RRKS_TLN, inMapDtl.get(EKK0021A010CBSMsg1List.BMP_MSKM_RRKS_TLN));

		// オプションサービス引継有無を設定する
		inMap.put(EKK0021C040CBSMsg.OP_SVC_HKTGI_UM, inMapDtl.get(EKK0021A010CBSMsg1List.OP_SVC_HKTGI_UM));

		// 解約書類送付希望有無を設定する
		inMap.put(EKK0021C040CBSMsg.DSL_ATICLE_SOHU_KIBO_UM, inMapDtl.get(EKK0021A010CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM));

		// 連絡先手段補記を設定する
		inMap.put(EKK0021C040CBSMsg.RRK_WAY_HOKI, inMapDtl.get(EKK0021A010CBSMsg1List.RRK_WAY_HOKI));

		// 新築物件コードを設定する
		inMap.put(EKK0021C040CBSMsg.NEWCONST_BUKKEN_CD, inMapDtl.get(EKK0021A010CBSMsg1List.NEWCONST_BUKKEN_CD));

		// 復活案件フラグ
		inMap.put(EKK0021C040CBSMsg.HUKKAT_ANKEN_FLG, inMapDtl.get(EKK0021A010CBSMsg1List.HUKKAT_ANKEN_FLG));

		// 同一設備再申込コードを設定する
		inMap.put(EKK0021C040CBSMsg.SAME_EQUIP_RE_MSKM_CD, inMapDtl.get(EKK0021A010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD));

		// 本人確認書類種別コードを設定する
		inMap.put(EKK0021C040CBSMsg.HNIN_CFM_ATICLE_SBT_CD, inMapDtl.get(EKK0021A010CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD));

		// 契約付加コード
		inMap.put(EKK0021C040CBSMsg.KEI_HUKA_CD, inMapDtl.get(EKK0021A010CBSMsg1List.KEI_HUKA_CD));

		// 地図添付有無を設定する
		inMap.put(EKK0021C040CBSMsg.MAP_TEMP_UM, inMapDtl.get(EKK0021A010CBSMsg1List.MAP_TEMP_UM));

		// KCNSTB申込台数を設定する
		inMap.put(EKK0021C040CBSMsg.KCN_STB_MSKM_CNT, inMapDtl.get(EKK0021A010CBSMsg1List.KCN_STB_MSKM_CNT));

		// KCNSTB種類コードを設定する
		inMap.put(EKK0021C040CBSMsg.KCN_STB_KIND_CD, inMapDtl.get(EKK0021A010CBSMsg1List.KCN_STB_KIND_CD));

		// マンション設備システム連携用記事欄
		inMap.put(EKK0021C040CBSMsg.MANSSBSYS_RNKI_YO_KIJIRAN, inMapDtl.get(EKK0021A010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN));

		// マンションID
		inMap.put(EKK0021C040CBSMsg.MANSION_ID, inMapDtl.get(EKK0021A010CBSMsg1List.MANSION_ID));

		// CAT-ID
		inMap.put(EKK0021C040CBSMsg.CATID, inMapDtl.get(EKK0021A010CBSMsg1List.CATID));

		// 申込受付種別コード
		inMap.put(EKK0021C040CBSMsg.MKM_UK_SBT_CD, inMapDtl.get(EKK0021A010CBSMsg1List.MKM_UK_SBT_CD));

		// 申込書取扱情報担当者名
		inMap.put(EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TNTSHA_NM, inMapDtl.get(EKK0021A010CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM));

		// 申込書取扱情報電話番号
		inMap.put(EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TELNO, inMapDtl.get(EKK0021A010CBSMsg1List.MSKMSHO_TRAT_IF_TELNO));

		// ----------------------------------------------------------
		// 申込明細一意照会.最終更新年月日時分秒を取得
		String lastUpdDtmMskm =
				getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0021A010), EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST,
						EKK0021A010CBSMsg1List.LAST_UPD_DTM, 0);
		// ----------------------------------------------------------

		// 更新年月日時分秒（更新前）を設定する
		inMap.put(EKK0021C040CBSMsg.UPD_DTM_BF, lastUpdDtmMskm);

		// 本人確認書類名
		inMap.put(EKK0021C040CBSMsg.HNIN_CFM_ATICLE_NM, inMapDtl.get(EKK0021A010CBSMsg1List.HNIN_CFM_ATICLE_NM));
	}

	/**
	 * 上りマッピング項目設定(工事工程進捗一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKU0151B010(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.remove(EKU0151B010CBSMsg.EKU0151B010CBSMSG1LIST);

		ArrayList inMapList = (ArrayList)inMap.get(KJAK_INFO);

		// 工事案件マップ.工事案件一覧照会明細を取得する
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(kojiAkCnt);

		// ＫＥＹ＿工事案件番号を設定する。
		inMap.put(EKU0151B010CBSMsg.KEY_KOJIAK_NO, inMapDtl.get(KJAK_NO));
	}

	/**
	 * 下りマッピング項目設定(工事工程進捗一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException
	 */
	private void setOutMapEKU0151B010(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 工事案件情報を取得する。
		ArrayList kojiAnkenMapList = (ArrayList)inMap.get(KJAK_INFO);
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)kojiAnkenMapList.get(kojiAkCnt);

		// キャンセルフラグを設定する
		ArrayList inMapList = (ArrayList)inMap.get(EKU0151B010CBSMsg.EKU0151B010CBSMSG1LIST);
		inMapDtl.put(CANCEL_FLG, ((HashMap<String, Object>)inMapList.get(0)).get(EKU0151B010CBSMsg1List.CANCEL_FLG));

		// 工事進捗(携帯)対応 -------------------------------------
		// イレギュラーフラグを設定する
		inMapDtl.put(IRREGULAR_FLG, ((HashMap<String, Object>)inMapList.get(0)).get(EKU0151B010CBSMsg1List.IRREGULAR_FLG));
		// 工事進捗(携帯)対応 -------------------------------------
	}

	/**
	 * 上りマッピング項目設定(工事案件一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEKU0011A010(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		ArrayList inMapList = (ArrayList)inMap.get(KJAK_INFO);

		// 工事案件マップ.工事案件一覧照会明細を取得する
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(kojiAkCnt);

		// ＫＥＹ＿工事案件番号を設定する。
		inMap.put(EKU0011A010CBSMsg.KEY_KOJIAK_NO, inMapDtl.get(KJAK_NO));
	}

	/**
	 * 上りマッピング項目設定(工事案件照会回数変更)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException
	 */
	private void setInMapEKU0011C010(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 工事案件情報を取得する
		ArrayList kojiAnkenList = (ArrayList)inMap.get(KJAK_INFO);
		HashMap<String, Object> kojiAnkenMap = (HashMap<String, Object>)kojiAnkenList.get(kojiAkCnt);

		// 工事案件一覧照会データを取得する
		ArrayList inMapList = (ArrayList)inMap.get(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(0);

		// 工事案件番号を設定する
		inMap.put(EKU0011C010CBSMsg.KOJIAK_NO, kojiAnkenMap.get(KJAK_NO));

		// 最新照会年月日を設定する
		inMap.put(EKU0011C010CBSMsg.RCNT_SHOKAI_YMD, JCCBPCommon.getOpeDate(null));

		// Web照会回数を設定する
		inMap.put(EKU0011C010CBSMsg.WEB_SHOKAI_CNT, inMapDtl.get(EKU0011A010CBSMsg1List.WEB_SHOKAI_CNT));

		// PC照会回数を設定する
		inMap.put(EKU0011C010CBSMsg.PC_SHOKAI_CNT, inMapDtl.get(EKU0011A010CBSMsg1List.PC_SHOKAI_CNT));

		// 携帯照会回数を設定する
		inMap.put(EKU0011C010CBSMsg.KTAI_SHOKAI_CNT, inMapDtl.get(EKU0011A010CBSMsg1List.KTAI_SHOKAI_CNT));

		// 更新年月日時分秒（更新前）を設定する
		inMap.put(EKU0011C010CBSMsg.UPD_DTM_BF, inMapDtl.get(EKU0011A010CBSMsg1List.UPD_DTM));
	}

	/**
	 * 申込明細照会回数変更処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kojiAkCnt 工事案件のインデックス
	 * @throws Exception すべての例外
	 */
	private void executeMskmDtlShokai(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws Exception
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 工事進捗(携帯)対応 --------------------------------------
		// カウントアップ非実行フラグが"1"(非実行)でない場合
		//      ※空メールからのログイン時は照会回数のカウントアップを行わない
		// -------------------------------------------------------------------

		// IN項目:カウントアップ非実行フラグ
		String cnt_up_no_flg = (String)inMap.get(IN_PARAM_CNT_UP_NO_FLG);

		// カウントアップ非実行フラグが"1"(非実行)でない場合
		if (!CNT_UP_NO.equals(cnt_up_no_flg))
		{
			// 申込明細一意照会
			// 上りマッピング
			setInMapEKK0021A010(param, fixedText, kojiAkCnt);

			// サービスIF実行
			setFuncCode(param, fixedText, "2");
			executeSC(handle, param, fixedText, SIF_EKK0021A010, EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, IN_COLUMN_LIST_MSKM_MEISAI_ICHII,
					ERR_COLUMN);

			// 照会回数計算処理を実行する。
			getShokaiCnt(param, fixedText, COUNT_UP_KK);

			// 上りマッピング
			setInMapEKK0021C040(param, fixedText, kojiAkCnt);

			// 申込明細情報変更
			setFuncCode(param, fixedText, "1");
			executeSC(handle, param, fixedText, SIF_EKK0021C040, JFUStrConst.EMPTY, IN_COLUMN_LIST_MSKM_MEISAI_CHG, JFUStrConst.EMPTY);
		}

		// 工事案件情報削除処理
		delMapKojiAnkenInfo(param, fixedText, kojiAkCnt);

		ArrayList kojiAnkenMapList = (ArrayList)inMap.get(KJAK_INFO);

		int kojiCnt = 0;

		for (int i = 0; i < kojiAnkenMapList.size(); i++)
		{
			if (JFUStrConst.EMPTY.equals(((HashMap)kojiAnkenMapList.get(i)).get(MSKM_DTL_NO)))
			{
				kojiCnt += 1;
			}
		}
		if (kojiAnkenMapList.size() == kojiCnt)
		{
			// 遷移モードに"4:受付中"を設定する
			setInMapScreenMode(param, fixedText);
		}
	}

	/**
	 * ログイン可否フラグ設定処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param listName 取得明細名
	 * @throws RequestParameterException
	 * @throws ParseException
	 */
	private void setInMapLoginKhFlg(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ログイン可否フラグ
		inMap.put(LOGIN_KH_FLG, JFUStrConst.LOGIN_KH_FLG_FALSE);
	}

	/**
	 * 遷移モード設定処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param listName 取得明細名
	 * @throws RequestParameterException
	 * @throws ParseException
	 */
	private void setInMapScreenMode(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// 遷移モード("4":受付中)
		inMap.put(SCREEN_MODE, JFUStrConst.SCREEN_MODE_UK);

	}

	/**
	 * 照会回数計算処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param div 計算区分
	 * @throws RequestParameterException
	 * @throws ParseException
	 */
	private void getShokaiCnt(IRequestParameterReadWrite param, String fixedText, String div) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// IN項目:ログイン機能区分
		String inMaploginFuncDiv = (String)inMap.get(IN_PARAM_LOGIN_FUNC_DIV);

		if (JFUBPCommon.isNull(inMaploginFuncDiv))
		{
			// 未設定の場合、"1"(PC)を設定
			inMaploginFuncDiv = JFUStrConst.LOGIN_FUNC_DIV_PC;
		}

		// ------------------------------------------------------------------

		String listNm = null;
		String webShokaiCntNm = null;
		String pcShokaiCntNm = null;
		String ktaiShokaiCntNm = null;

		// 工事進捗(携帯)対応 -----------------------------------------------
		//  ・計算区分が工事案件の場合、申込明細の照会回数を引き継ぐよう修正
		//  ・最大照会回数は工事案件のスキーマ桁数にあわせ、999に統一
		//  ・携帯照会回数のカウントアップ処理を追加
		// ------------------------------------------------------------------
		int kk0021_web_shokai_cnt = 0;
		int kk0021_pc_shokai_cnt = 0;
		int kk0021_ktai_shokai_cnt = 0;

		// 計算区分を判定する
		if (COUNT_UP_KK.equals(div))
		{
			// 申込明細の場合
			// 申込明細の項目名を設定する
			listNm = EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST;
			webShokaiCntNm = EKK0021A010CBSMsg1List.WEB_SHOKAI_CNT;
			pcShokaiCntNm = EKK0021A010CBSMsg1List.PC_SHOKAI_CNT;
			ktaiShokaiCntNm = EKK0021A010CBSMsg1List.KTAI_SHOKAI_CNT;
		}
		else
		{
			// 工事案件の場合
			// 工事案件の項目名を設定する
			listNm = EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST;
			webShokaiCntNm = EKU0011A010CBSMsg1List.WEB_SHOKAI_CNT;
			pcShokaiCntNm = EKU0011A010CBSMsg1List.PC_SHOKAI_CNT;
			ktaiShokaiCntNm = EKU0011A010CBSMsg1List.KTAI_SHOKAI_CNT;

			// ------------------------------------------------------------------
			// 申込明細一意照会で取得した照会回数の取得
			// ------------------------------------------------------------------
			String tmpCnt = (String)inMap.get(KK0021_WEB_SHOKAI_CNT);
			kk0021_web_shokai_cnt = JFUBPCommon.isNull(tmpCnt) ? 0 : Integer.valueOf(tmpCnt).intValue();
			tmpCnt = (String)inMap.get(KK0021_PC_SHOKAI_CNT);
			kk0021_pc_shokai_cnt = JFUBPCommon.isNull(tmpCnt) ? 0 : Integer.valueOf(tmpCnt).intValue();
			tmpCnt = (String)inMap.get(KK0021_KTAI_SHOKAI_CNT);
			kk0021_ktai_shokai_cnt = JFUBPCommon.isNull(tmpCnt) ? 0 : Integer.valueOf(tmpCnt).intValue();
			// ------------------------------------------------------------------
		}

		// 処理対象のリストを取得する。
		ArrayList inMapList = (ArrayList)inMap.get(listNm);
		HashMap<String, Object> inMapDtl = (HashMap<String, Object>)inMapList.get(0);

		// ------------------------------------------------------------------
		// 各照会回数を取得する
		// ------------------------------------------------------------------
		// Web照会回数
		int webShokaiCnt = getCurrentShokaiCnt(inMapDtl, webShokaiCntNm, div, kk0021_web_shokai_cnt);
		// PC照会回数
		int pcShokaiCnt = getCurrentShokaiCnt(inMapDtl, pcShokaiCntNm, div, kk0021_pc_shokai_cnt);
		// 携帯照会回数
		int ktaiShokaiCnt = getCurrentShokaiCnt(inMapDtl, ktaiShokaiCntNm, div, kk0021_ktai_shokai_cnt);

		// ------------------------------------------------------------------
		// ■カウントアップ
		// ------------------------------------------------------------------
		// Web照会回数が最大照会数より小さい場合
		if (MAX_SHOKAI_CNT > webShokaiCnt)
		{
			// Web照会回数をに +1を行う
			webShokaiCnt++;
		}
		else
		{
			webShokaiCnt = MAX_SHOKAI_CNT;
		}

		// "1"(PCログイン)の場合
		if (JFUStrConst.LOGIN_FUNC_DIV_PC.equals(inMaploginFuncDiv))
		{
			// PC照会回数が最大照会数より小さい場合
			if (MAX_SHOKAI_CNT > pcShokaiCnt)
			{
				// PC照会回数をに +1を行う
				pcShokaiCnt++;
			}
			else
			{
				pcShokaiCnt = MAX_SHOKAI_CNT;
			}

		}
		// "1"(PCログイン)以外の場合
		else
		{
			// 携帯照会回数が最大照会数より小さい場合
			if (MAX_SHOKAI_CNT > ktaiShokaiCnt)
			{
				// 携帯照会回数をに +1を行う
				ktaiShokaiCnt++;
			}
			else
			{
				ktaiShokaiCnt = MAX_SHOKAI_CNT;
			}
		}

		// ------------------------------------------------------------------
		// ■マップに格納
		// ------------------------------------------------------------------
		inMapDtl.put(webShokaiCntNm, Integer.toString(webShokaiCnt));
		inMapDtl.put(pcShokaiCntNm, Integer.toString(pcShokaiCnt));
		inMapDtl.put(ktaiShokaiCntNm, Integer.toString(ktaiShokaiCnt));
		// ------------------------------------------------------------------
	}

	/**
	 * 現在の照会回数取得処理
	 * <br>
	 * @param inMapDtl		取得元の明細マップ
	 * @param colNm			項目名
	 * @param div			計算区分
	 * @param mskmDtlCnt	申込明細の照会回数
	 * @return 現在の照会回数
	 */
	private int getCurrentShokaiCnt(HashMap<String, Object> inMapDtl, String colNm, String div, int mskmDtlCnt)
	{
		// 計算区分が"KU"の場合は初期値は申込明細の値
		int shokaiCnt = COUNT_UP_KU.equals(div) ? 0 : mskmDtlCnt;

		if (inMapDtl == null)
		{
			return shokaiCnt;
		}

		// 照会回数取得
		String tmpShokaiCnt = JPCUtilCommon.trim((String)inMapDtl.get(colNm));

		// 値が未設定、または、0でない場合
		if (!JFUBPCommon.isNull(tmpShokaiCnt) && !JFUStrConst.S_ZERO.equals(tmpShokaiCnt))
		{
			// 取得した明細から取得
			shokaiCnt = Integer.valueOf(tmpShokaiCnt).intValue();
		}
		return shokaiCnt;
	}

	/**
	 * リスト件数取得処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param listName 取得明細名
	 * @throws RequestParameterException
	 */
	private int setInMapListCnt(IRequestParameterReadWrite param, String fixedText, String listName) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap)param.getData(fixedText);

		int listCnt = 0;
		ArrayList<HashMap<String, Object>> list = (ArrayList)inMap.get(listName);
		if (list == null)
		{
			return listCnt;
		}

		return list.size();
	}

	/**
	 * チェック処理
	 *
	 * <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;
	}

	/**
	 * 工事案件情報削除処理
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void delMapKojiAnkenInfo(IRequestParameterReadWrite param, String fixedText, int kojiAkCnt) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		ArrayList kojiAnkenMapList = (ArrayList)inMap.get(KJAK_INFO);

		if (kojiAnkenMapList != null)
		{
			HashMap<String, String> dummyMap = new HashMap<String, String>();
			dummyMap.put(MSKM_DTL_NO, JFUStrConst.EMPTY);
			dummyMap.put(KJAK_NO, JFUStrConst.EMPTY);
			dummyMap.put(CANCEL_FLG, JFUStrConst.EMPTY);
			dummyMap.put(PCRC_CD, JFUStrConst.EMPTY);

			// 工事案件情報を空で上書きする。
			kojiAnkenMapList.set(kojiAkCnt, dummyMap);
		}
	}
}
