/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKMikmcstInfoShokaiCC
*	ソースファイル名：JCKMikmcstInfoShokaiCC.java
*	作成者			：FJ
*	日付			：2020年01月16日
*＜機能概要＞
*	見込顧客情報照会の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v48.00.00   2020/01/16  FJ)谷川     【ANK-3795-00-00】見込顧客システム構築対応
*   v48.00.01   2020/02/18  FJ)谷川     【IT1-2020-0000008】対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.ECK0281A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0281A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0291B001CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0291B001CBSMsg1List;

/**
 * 見込顧客情報照会の共通コンポーネントクラスです。
 * <br>
 * @author 富士通
 *
 */
public class JCKMikmcstInfoShokaiCC extends AbstractCommonComponent
{
	/** テンプレートID(ECK0281A010) 見込顧客一意照会 */
	private static final String TEMPLATE_ID_ECK0281A010 = "ECK0281A010";

	/** テンプレートID(ECK0291B001) 見込顧客更新履歴一覧照会 */
	private static final String TEMPLATE_ID_ECK0291B001 = "ECK0291B001";

	/** 処理結果 */
	private static final String RESULT = "result";

	/** 見込顧客番号 */
	private static final String POSSIBILITYCUSTOMERNO = "possibilityCustomerNo";

	/** 氏名（カナ） */
	private static final String NAMEKANA = "nameKana";

	/** 氏名（漢字） */
	private static final String NAME = "name";

	/** 生年月日 */
	private static final String BIRTHDATE = "birthDate";

	/** メールアドレス */
	private static final String MAILADDRESS = "mailAddress";

	/** 電話番号 */
	private static final String TELEPHONENUMBER = "telephoneNumber";

	/** 郵便番号 */
	private static final String ZIPCODE = "zipCode";

	/** 住所 */
	private static final String ADDRESS = "address";

	/** 見込情報保有期限 */
	private static final String POSSIBILITYINFOTENURE = "possibilityInfoTenure";

	/** チャネル1 */
	private static final String CHANNEL1 = "channel1";

	/** チャネル2 */
	private static final String CHANNEL2 = "channel2";

	/** チャネル3 */
	private static final String CHANNEL3 = "channel3";

	/** 取扱コード制限 */
	private static final String AGENCYCODELIM = "agencyCodeLim";

	/** 販路指定解除年月 */
	private static final String MARKETLIMRELEASE = "marketLimRelease";

	/** 商談ステータス */
	private static final String NEGOTIATIONSTATUS = "negotiationStatus";

	/** 成約見込み */
	private static final String REALIZATIONPOSSIBILITY = "realizationPossibility";

	/** ご利用場所形態 */
	private static final String USEADDRESSFORM = "useAddressForm";

	/** 項目1 */
	private static final String ITEM001 = "item001";

	/** 項目2 */
	private static final String ITEM002 = "item002";

	/** 項目3 */
	private static final String ITEM003 = "item003";

	/** 項目4 */
	private static final String ITEM004 = "item004";

	/** 項目5 */
	private static final String ITEM005 = "item005";

	/** 項目6 */
	private static final String ITEM006 = "item006";

	/** 項目7 */
	private static final String ITEM007 = "item007";

	/** 項目8 */
	private static final String ITEM008 = "item008";

	/** 項目9 */
	private static final String ITEM009 = "item009";

	/** 項目10 */
	private static final String ITEM010 = "item010";

	/** 項目11 */
	private static final String ITEM011 = "item011";

	/** 項目12 */
	private static final String ITEM012 = "item012";

	/** 項目13 */
	private static final String ITEM013 = "item013";

	/** 項目14 */
	private static final String ITEM014 = "item014";

	/** 項目15 */
	private static final String ITEM015 = "item015";

	/** 項目16 */
	private static final String ITEM016 = "item016";

	/** 項目17 */
	private static final String ITEM017 = "item017";

	/** 項目18 */
	private static final String ITEM018 = "item018";

	/** 項目19 */
	private static final String ITEM019 = "item019";

	/** 項目20 */
	private static final String ITEM020 = "item020";

	/** 項目21 */
	private static final String ITEM021 = "item021";

	/** 項目22 */
	private static final String ITEM022 = "item022";

	/** 項目23 */
	private static final String ITEM023 = "item023";

	/** 項目24 */
	private static final String ITEM024 = "item024";

	/** 項目25 */
	private static final String ITEM025 = "item025";

	/** 項目26 */
	private static final String ITEM026 = "item026";

	/** 項目27 */
	private static final String ITEM027 = "item027";

	/** 項目28 */
	private static final String ITEM028 = "item028";

	/** 項目29 */
	private static final String ITEM029 = "item029";

	/** 項目30 */
	private static final String ITEM030 = "item030";

	/** 項目31 */
	private static final String ITEM031 = "item031";

	/** 項目32 */
	private static final String ITEM032 = "item032";

	/** 項目33 */
	private static final String ITEM033 = "item033";

	/** 項目34 */
	private static final String ITEM034 = "item034";

	/** 項目35 */
	private static final String ITEM035 = "item035";

	/** 項目36 */
	private static final String ITEM036 = "item036";

	/** 項目37 */
	private static final String ITEM037 = "item037";

	/** 項目38 */
	private static final String ITEM038 = "item038";

	/** 項目39 */
	private static final String ITEM039 = "item039";

	/** 項目40 */
	private static final String ITEM040 = "item040";

	/** 項目41 */
	private static final String ITEM041 = "item041";

	/** 項目42 */
	private static final String ITEM042 = "item042";

	/** 項目43 */
	private static final String ITEM043 = "item043";

	/** 項目44 */
	private static final String ITEM044 = "item044";

	/** 項目45 */
	private static final String ITEM045 = "item045";

	/** 項目46 */
	private static final String ITEM046 = "item046";

	/** 項目47 */
	private static final String ITEM047 = "item047";

	/** 項目48 */
	private static final String ITEM048 = "item048";

	/** 項目49 */
	private static final String ITEM049 = "item049";

	/** 項目50 */
	private static final String ITEM050 = "item050";

	/** 項目51 */
	private static final String ITEM051 = "item051";

	/** 項目52 */
	private static final String ITEM052 = "item052";

	/** 項目53 */
	private static final String ITEM053 = "item053";

	/** 項目54 */
	private static final String ITEM054 = "item054";

	/** 項目55 */
	private static final String ITEM055 = "item055";

	/** 項目56 */
	private static final String ITEM056 = "item056";

	/** 項目57 */
	private static final String ITEM057 = "item057";

	/** 項目58 */
	private static final String ITEM058 = "item058";

	/** 項目59 */
	private static final String ITEM059 = "item059";

	/** 項目60 */
	private static final String ITEM060 = "item060";

	/** 項目61 */
	private static final String ITEM061 = "item061";

	/** 項目62 */
	private static final String ITEM062 = "item062";

	/** 項目63 */
	private static final String ITEM063 = "item063";

	/** 項目64 */
	private static final String ITEM064 = "item064";

	/** 項目65 */
	private static final String ITEM065 = "item065";

	/** 項目66 */
	private static final String ITEM066 = "item066";

	/** 項目67 */
	private static final String ITEM067 = "item067";

	/** 項目68 */
	private static final String ITEM068 = "item068";

	/** 項目69 */
	private static final String ITEM069 = "item069";

	/** 項目70 */
	private static final String ITEM070 = "item070";

	/** 項目71 */
	private static final String ITEM071 = "item071";

	/** 項目72 */
	private static final String ITEM072 = "item072";

	/** 項目73 */
	private static final String ITEM073 = "item073";

	/** 項目74 */
	private static final String ITEM074 = "item074";

	/** 項目75 */
	private static final String ITEM075 = "item075";

	/** 項目76 */
	private static final String ITEM076 = "item076";

	/** 項目77 */
	private static final String ITEM077 = "item077";

	/** 項目78 */
	private static final String ITEM078 = "item078";

	/** 項目79 */
	private static final String ITEM079 = "item079";

	/** 項目80 */
	private static final String ITEM080 = "item080";

	/** 項目81 */
	private static final String ITEM081 = "item081";

	/** 項目82 */
	private static final String ITEM082 = "item082";

	/** 項目83 */
	private static final String ITEM083 = "item083";

	/** 項目84 */
	private static final String ITEM084 = "item084";

	/** 項目85 */
	private static final String ITEM085 = "item085";

	/** 項目86 */
	private static final String ITEM086 = "item086";

	/** 項目87 */
	private static final String ITEM087 = "item087";

	/** 項目88 */
	private static final String ITEM088 = "item088";

	/** 項目89 */
	private static final String ITEM089 = "item089";

	/** 項目90 */
	private static final String ITEM090 = "item090";

	/** 項目91 */
	private static final String ITEM091 = "item091";

	/** 項目92 */
	private static final String ITEM092 = "item092";

	/** 項目93 */
	private static final String ITEM093 = "item093";

	/** 項目94 */
	private static final String ITEM094 = "item094";

	/** 項目95 */
	private static final String ITEM095 = "item095";

	/** 項目96 */
	private static final String ITEM096 = "item096";

	/** 項目97 */
	private static final String ITEM097 = "item097";

	/** 項目98 */
	private static final String ITEM098 = "item098";

	/** 項目99 */
	private static final String ITEM099 = "item099";

	/** 項目100 */
	private static final String ITEM100 = "item100";

	/** 登録更新日時 */
	private static final String ENTRYUPDATETIME = "entryUpdateTime";

	/** 対応者 */
	private static final String RESPONDER = "responder";

	/** 従業員番号 */
	private static final String ID = "id";

	/** 履歴情報リスト */
	private static final String HYSTERESISLIST = "hysteresisList";

	/** メモ */
	private static final String MEMO = "memo";

	/** CCパラメータ：エラー情報 */
	private static final String ERROR_INFO = "ERROR_INFO";

	/** CCパラメータ：エラーコード */
	private static final String ERROR_CODE = "errCode";

	/** CCパラメータ：エラーメッセージ */
	private static final String ERROR_MESSAGE = "errMessage";

	/** 空白 */
	private static final String EMPTY = "";

	/** 処理結果(0:正常終了) */
	private static final String RESULT_OK = "0";

	/**
	 * 見込顧客情報の取得を行う。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getMikmcstInfoShokai(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 見込顧客情報照会CCマップ
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);

		try
		{
			// 単項目チェック
			if (!checkUnitParam(ccMsg))
			{
				param.setControlMapData(SCControlMapKeys.RETURN_CODE, JKKStrConst.RETURN_CD_5000);
				param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
				return param;
			}

			// 見込顧客番号
			String mikmcst_no = (String)ccMsg.get(POSSIBILITYCUSTOMERNO);

			// 見込顧客一意照会の上りマッピング
			Object[][] eck0281A010In =
			{
				{ECK0281A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0281A010},
				{ECK0281A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{ECK0281A010CBSMsg.KEY_MIKMCST_NO, mikmcst_no}
			};

			// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

			// サービスIF実行
			CAANMsg eck0281a010Msg = callSC(handle, scCall, param, fixedText, eck0281A010In, new ECK0281A010CBSMsg().getContents());

			// 見込顧客一意照会明細
			CAANMsg[] eck0281a010Msg1List = eck0281a010Msg.getCAANMsgList(ECK0281A010CBSMsg.ECK0281A010CBSMSG1LIST);

			// サービスIF実行結果チェック
			if (!checkResult(param, ccMsg, eck0281a010Msg1List))
			{
				return param;
			}
			else
			{
				// 見込顧客更新履歴一覧照会の上りマッピング
				Object[][] eck0291B001In =
				{
					{ECK0291B001CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0291B001},
					{ECK0291B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
					{ECK0291B001CBSMsg.KEY_MIKMCST_NO, mikmcst_no}
				};
				// サービスIF実行
				CAANMsg eck0291b001Msg = callSC(handle, scCall, param, fixedText, eck0291B001In, new ECK0291B001CBSMsg().getContents());

				// 見込顧客更新履歴一覧照会明細
				CAANMsg[] eck0291b001Msg1List = eck0291b001Msg.getCAANMsgList(ECK0291B001CBSMsg.ECK0291B001CBSMSG1LIST);

				// 実行結果セット
				// 処理結果 
				ccMsg.put(RESULT, RESULT_OK);

				// 見込顧客番号 
				ccMsg.put(POSSIBILITYCUSTOMERNO, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.MIKMCST_NO)));

				// 氏名（カナ）
				ccMsg.put(NAMEKANA, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.NM_KANA)));

				// 氏名（漢字）
				ccMsg.put(NAME, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.NM_KANJI)));

				// 生年月日
				ccMsg.put(BIRTHDATE, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.BIRTHD)));

				// メールアドレス
				ccMsg.put(MAILADDRESS, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.MLAD)));

				// 電話番号
				ccMsg.put(TELEPHONENUMBER, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.TELNO)));

				// 郵便番号
				ccMsg.put(ZIPCODE, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.PCD)));

				// 住所
				ccMsg.put(ADDRESS, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.AD)));

				// 見込情報保有期限
				ccMsg.put(POSSIBILITYINFOTENURE, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.MIKOMI_INF_HOYU_KIGEN)));

				// チャネル1 
				ccMsg.put(CHANNEL1, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.CHANNEL_1)));

				// チャネル2 
				ccMsg.put(CHANNEL2, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.CHANNEL_2)));

				// チャネル3 
				ccMsg.put(CHANNEL3, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.CHANNEL_3)));

				// 取扱コード制限 
				ccMsg.put(AGENCYCODELIM, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.TRACD_LMT_CD)));

				// 販路指定解除年月 
				ccMsg.put(MARKETLIMRELEASE, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.HANRO_LMT_RLS_YM)));

				// 商談ステータス
				ccMsg.put(NEGOTIATIONSTATUS, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.SHODAN_STAT_CD)));

				// 成約見込み
				ccMsg.put(REALIZATIONPOSSIBILITY, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.SEIYK_MIKOMI_CD)));

				// ご利用場所形態
				ccMsg.put(USEADDRESSFORM, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.USE_PLACE_FORM_CD)));

				// 項目1
				ccMsg.put(ITEM001, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_1)));

				// 項目2
				ccMsg.put(ITEM002, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_2)));

				// 項目3
				ccMsg.put(ITEM003, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_3)));

				// 項目4
				ccMsg.put(ITEM004, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_4)));

				// 項目5
				ccMsg.put(ITEM005, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_5)));

				// 項目6
				ccMsg.put(ITEM006, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_6)));

				// 項目7
				ccMsg.put(ITEM007, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_7)));

				// 項目8
				ccMsg.put(ITEM008, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_8)));

				// 項目9
				ccMsg.put(ITEM009, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_9)));

				// 項目10
				ccMsg.put(ITEM010, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_10)));

				// 項目11
				ccMsg.put(ITEM011, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_11)));

				// 項目12
				ccMsg.put(ITEM012, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_12)));

				// 項目13
				ccMsg.put(ITEM013, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_13)));

				// 項目14
				ccMsg.put(ITEM014, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_14)));

				// 項目15
				ccMsg.put(ITEM015, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_15)));

				// 項目16
				ccMsg.put(ITEM016, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_16)));

				// 項目17
				ccMsg.put(ITEM017, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_17)));

				// 項目18
				ccMsg.put(ITEM018, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_18)));

				// 項目19
				ccMsg.put(ITEM019, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_19)));

				// 項目20
				ccMsg.put(ITEM020, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_20)));

				// 項目21
				ccMsg.put(ITEM021, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_21)));

				// 項目22
				ccMsg.put(ITEM022, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_22)));

				// 項目23
				ccMsg.put(ITEM023, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_23)));

				// 項目24
				ccMsg.put(ITEM024, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_24)));

				// 項目25
				ccMsg.put(ITEM025, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_25)));

				// 項目26
				ccMsg.put(ITEM026, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_26)));

				// 項目27
				ccMsg.put(ITEM027, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_27)));

				// 項目28
				ccMsg.put(ITEM028, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_28)));

				// 項目29
				ccMsg.put(ITEM029, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_29)));

				// 項目30
				ccMsg.put(ITEM030, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_30)));

				// 項目31
				ccMsg.put(ITEM031, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_31)));

				// 項目32
				ccMsg.put(ITEM032, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_32)));

				// 項目33
				ccMsg.put(ITEM033, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_33)));

				// 項目34
				ccMsg.put(ITEM034, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_34)));

				// 項目35
				ccMsg.put(ITEM035, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_35)));

				// 項目36
				ccMsg.put(ITEM036, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_36)));

				// 項目37
				ccMsg.put(ITEM037, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_37)));

				// 項目38
				ccMsg.put(ITEM038, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_38)));

				// 項目39
				ccMsg.put(ITEM039, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_39)));

				// 項目40
				ccMsg.put(ITEM040, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_40)));

				// 項目41
				ccMsg.put(ITEM041, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_41)));

				// 項目42
				ccMsg.put(ITEM042, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_42)));

				// 項目43
				ccMsg.put(ITEM043, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_43)));

				// 項目44
				ccMsg.put(ITEM044, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_44)));

				// 項目45
				ccMsg.put(ITEM045, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_45)));

				// 項目46
				ccMsg.put(ITEM046, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_46)));

				// 項目47
				ccMsg.put(ITEM047, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_47)));

				// 項目48
				ccMsg.put(ITEM048, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_48)));

				// 項目49
				ccMsg.put(ITEM049, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_49)));

				// 項目50
				ccMsg.put(ITEM050, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_50)));

				// 項目51
				ccMsg.put(ITEM051, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_51)));

				// 項目52
				ccMsg.put(ITEM052, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_52)));

				// 項目53
				ccMsg.put(ITEM053, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_53)));

				// 項目54
				ccMsg.put(ITEM054, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_54)));

				// 項目55
				ccMsg.put(ITEM055, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_55)));

				// 項目56
				ccMsg.put(ITEM056, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_56)));

				// 項目57
				ccMsg.put(ITEM057, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_57)));

				// 項目58
				ccMsg.put(ITEM058, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_58)));

				// 項目59
				ccMsg.put(ITEM059, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_59)));

				// 項目60
				ccMsg.put(ITEM060, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_60)));

				// 項目61
				ccMsg.put(ITEM061, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_61)));

				// 項目62
				ccMsg.put(ITEM062, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_62)));

				// 項目63
				ccMsg.put(ITEM063, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_63)));

				// 項目64
				ccMsg.put(ITEM064, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_64)));

				// 項目65
				ccMsg.put(ITEM065, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_65)));

				// 項目66
				ccMsg.put(ITEM066, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_66)));

				// 項目67
				ccMsg.put(ITEM067, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_67)));

				// 項目68
				ccMsg.put(ITEM068, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_68)));

				// 項目69
				ccMsg.put(ITEM069, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_69)));

				// 項目70
				ccMsg.put(ITEM070, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_70)));

				// 項目71
				ccMsg.put(ITEM071, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_71)));

				// 項目72
				ccMsg.put(ITEM072, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_72)));

				// 項目73
				ccMsg.put(ITEM073, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_73)));

				// 項目74
				ccMsg.put(ITEM074, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_74)));

				// 項目75
				ccMsg.put(ITEM075, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_75)));

				// 項目76
				ccMsg.put(ITEM076, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_76)));

				// 項目77
				ccMsg.put(ITEM077, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_77)));

				// 項目78
				ccMsg.put(ITEM078, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_78)));

				// 項目79
				ccMsg.put(ITEM079, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_79)));

				// 項目80
				ccMsg.put(ITEM080, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_80)));

				// 項目81
				ccMsg.put(ITEM081, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_81)));

				// 項目82
				ccMsg.put(ITEM082, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_82)));

				// 項目83
				ccMsg.put(ITEM083, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_83)));

				// 項目84
				ccMsg.put(ITEM084, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_84)));

				// 項目85
				ccMsg.put(ITEM085, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_85)));

				// 項目86
				ccMsg.put(ITEM086, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_86)));

				// 項目87
				ccMsg.put(ITEM087, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_87)));

				// 項目88
				ccMsg.put(ITEM088, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_88)));

				// 項目89
				ccMsg.put(ITEM089, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_89)));

				// 項目90
				ccMsg.put(ITEM090, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_90)));

				// 項目91
				ccMsg.put(ITEM091, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_91)));

				// 項目92
				ccMsg.put(ITEM092, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_92)));

				// 項目93
				ccMsg.put(ITEM093, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_93)));

				// 項目94
				ccMsg.put(ITEM094, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_94)));

				// 項目95
				ccMsg.put(ITEM095, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_95)));

				// 項目96
				ccMsg.put(ITEM096, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_96)));

				// 項目97
				ccMsg.put(ITEM097, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_97)));

				// 項目98
				ccMsg.put(ITEM098, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_98)));

				// 項目99
				ccMsg.put(ITEM099, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_99)));

				// 項目100
				ccMsg.put(ITEM100, nullToStr(eck0281a010Msg1List[0].getString(ECK0281A010CBSMsg1List.KMK_100)));

				// 履歴情報リスト
				List<Map<String, String>> hysteresisList = new ArrayList<Map<String, String>>();

				// 見込顧客更新履歴一覧照会の取得結果が1件以上ある場合
				if (null != eck0291b001Msg1List && eck0291b001Msg1List.length > 0)
				{
					// 見込顧客更新履歴一覧照会の件数分処理を行う
					for (int i = 0; i < eck0291b001Msg1List.length; i++)
					{
						// 履歴情報マップ
						Map<String, String> hysteresisMap = new HashMap<String, String>();
						// 登録更新日時１７桁
						String workUpd17 = eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.MIKMCST_UPD_DTM);
						// 登録更新日時１４桁（年月日時分秒(yyyyMMddHHmmssSSS) ⇒ 年月日時分秒(yyyyMMddHHmmss)）
						String workUpd14 = workUpd17.substring(0, 14);
						// 登録更新日時
						hysteresisMap.put(ENTRYUPDATETIME, workUpd14);
// IT1-2020-0000008 MOD START
//						// 対応者
//						hysteresisMap.put(RESPONDER, eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.TAIOSHA_NM));
//						// 従業員番号
//						hysteresisMap.put(ID, eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.WORKER_NO));
//						// メモ
//						hysteresisMap.put(MEMO, eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.MEMO));
						// 対応者
						hysteresisMap.put(RESPONDER, nullToStr(eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.TAIOSHA_NM)));
						// 従業員番号
						hysteresisMap.put(ID, nullToStr(eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.WORKER_NO)));
						// メモ
						hysteresisMap.put(MEMO, nullToStr(eck0291b001Msg1List[i].getString(ECK0291B001CBSMsg1List.MEMO)));
// IT1-2020-0000008 MOD END
						// 履歴情報リストへ履歴情報マップを格納
						hysteresisList.add(hysteresisMap);
					}
				}
				// 見込顧客更新履歴一覧照会のデータが存在しない場合
				else
				{
					// 履歴情報マップ
					Map<String, String> hysteresisMap = new HashMap<String, String>();
					// 登録更新日時 
					hysteresisMap.put(ENTRYUPDATETIME, EMPTY);
					// 対応者
					hysteresisMap.put(RESPONDER, EMPTY);
					// 従業員番号
					hysteresisMap.put(ID, EMPTY);
					// メモ
					hysteresisMap.put(MEMO, EMPTY);
					// 履歴情報リストへ履歴情報マップを格納
					hysteresisList.add(hysteresisMap);
				}
				// 履歴情報リスト
				ccMsg.put(HYSTERESISLIST,hysteresisList);
			}
			// 正常終了
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, JKKStrConst.RETURN_CD_0000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
		}
		// サービスインターフェース呼び出しでエラーが発生した場合
		catch (SCCallException scCallEx)
		{
			// システムエラーを設定する
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, JKKStrConst.RETURN_CD_9000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR);
		}
		return param;
	}

	/**
	 * サービスインターファイス実行結果チェック
	 * @param param
	 * @param ccMsg
	 * @param eck0281a010MsgList
	 * @return チェックの判定
	 * @throws Exception
	 */
	private boolean checkResult(IRequestParameterReadWrite param, Map<String, Object> ccMsg, CAANMsg[] eck0281a010Msg1List)
	throws Exception
	{
		// 取得件数が0件の場合、業務エラーを設定する
		if (eck0281a010Msg1List == null || eck0281a010Msg1List.length == 0)
		{
			// エラーリスト
			List<Map<String, String>> errList = new ArrayList<Map<String, String>>();

			Map<String, String> returnMap = new HashMap<String, String>();

			// 業務エラー設定
			returnMap.put(ERROR_CODE, JKKStrConst.RETURN_CD_2001);
			returnMap.put(ERROR_MESSAGE, "");
			errList.add(returnMap);
			ccMsg.put(ERROR_INFO, errList);

			param.setControlMapData(SCControlMapKeys.RETURN_CODE, JKKStrConst.RETURN_CD_5000);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
			return false;
		}
		return true;
	}

	/**
	 * 項目名がnullかチェックする
	 * @param str 項目名
	 * @return 項目名
	 */
	private String nullToStr(String str)
	{
		if(str == null)
		{
			str = "";
		}
		return str;
	}

	/**
	 * 単項目チェック
	 * @param ccMsg
	 * @return チェックの判定
	 * @throws Exception
	 */
	private boolean checkUnitParam(Map<String, Object> ccMsg)
	throws Exception
	{
		// エラーリスト
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();

		String itemName = null;
		String itemValue = null;

		// 見込顧客番号
		itemName = POSSIBILITYCUSTOMERNO;
		itemValue = (String)ccMsg.get(itemName);
		// 必須チェック
		if ( itemValue == null || "".equals(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getReqErrInfMap(itemName));
		}
		else if (!HalfCharCheck.isNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getFormErrInfMap(itemName, itemValue));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 10))
		{
			// 桁数チェックエラー
			errList.add(getLenErrInfMap(itemName, itemValue));
		}

		// エラーが存在する場合
		if (errList.size() > 0)
		{
			ccMsg.put(ERROR_INFO, errList);
			return false;
		}

		return true;
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼び出し部品
	 * @param param リクエストパラメータ
	 * @param dataMapKey パラメータキー
	 * @param mappingData マッピングデータ
	 * @param contents CAANMsgのコンテンツ
	 * @return CAANMsg
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			Object[][] mappingData, Object[][] contents)
	throws Throwable
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);

		CAANMsg msg = templates[0];

		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);

		editErrorInfoCom(param, templates, (Integer)return_code, dataMapKey, mappingData, contents);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);

		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		// SCCallExceptionはスローしない

		return msg;
	}

	/**
	 * 共通項目のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param mappingData マッピングデータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param, Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());

		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());

		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());

		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));

		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));

		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));

		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)mappingData[0][1];

		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		for (int i = 0; i < mappingData.length; i++)
		{
			if ("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}

		CAANMsg[] templates = new CAANMsg[1];

		templates[0] = template;

		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * エラー情報を取得します。
	 * @param param リクエストパラメータ
	 * @param templates CAANMsgクラス
	 * @param returnCode リターンコード
	 * @param dataMapKey パラメータキー
	 * @param mappingData マッピングデータ
	 * @param contents CAANMsgのコンテンツ
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String dataMapKey,
			Object[][] mappingData, Object[][] contents)
	throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (0 != returnCode)
		{
			templateStatus = 9000;
		}

		if (null == JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)))
		{
			templateStatus = 0;
		}

		int bpStatus = 0;

		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);

		if (null == obj)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);

			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);

			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);

			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		Map<String, String> inMap = null;
		
		// ユーザデータ情報
		inMap = (Map<String, String>)param.getData(dataMapKey);

		for (int i = 0; null != contents && i < contents.length ; i++)
		{
			String itemNm = (String)contents[i][0];
			if (itemNm.endsWith("_err"))
			{
				String errCd = (String)template.getString(itemNm);
				if (!JKKStringUtil.isNullBlank(errCd))
				{
					inMap.put(itemNm, errCd);
				}
			}
		}
		return param;
	}

	/**
	 * 単項目チェックの必須エラーマップ作成メソッドです。
	 * 
	 * @param itemName 項目名
	 * @return
	 */
	private Map<String, String> getReqErrInfMap(String itemName)
	{
		Map<String, String> returnMap = new HashMap<String, String>();

		returnMap.put(ERROR_CODE, JKKStrConst.RETURN_CD_1001);
		returnMap.put(ERROR_MESSAGE, itemName + JKKStrConst.COLON);

		return returnMap;
	}

	/**
	 * 単項目チェックの属性エラーマップ作成メソッドです。
	 * 
	 * @param itemName 項目名
	 * @param itemValue 項目値
	 * @return
	 */
	private Map<String, String> getFormErrInfMap(String itemName, String itemValue)
	{
		Map<String, String> returnMap = new HashMap<String, String>();

		returnMap.put(ERROR_CODE, JKKStrConst.RETURN_CD_1002);
		returnMap.put(ERROR_MESSAGE, itemName + JKKStrConst.COLON + itemValue);

		return returnMap;
	}
	
	/**
	 * 単項目チェックの桁数エラーマップ作成メソッドです。
	 * 
	 * @param itemName 項目名
	 * @param itemValue 項目値
	 * @return
	 */
	private Map<String, String> getLenErrInfMap(String itemName, String itemValue)
	{
		Map<String, String> returnMap = new HashMap<String, String>();
		
		returnMap.put(ERROR_CODE, JKKStrConst.RETURN_CD_1003);
		returnMap.put(ERROR_MESSAGE, itemName + JKKStrConst.COLON + itemValue);

		return returnMap;
	}

}