/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKMikmcstInfoSearchCC
*	ソースファイル名：JCKMikmcstInfoSearchCC.java
*	作成者			：FJ
*	日付			：2020年01月21日
*＜機能概要＞
*	見込顧客情報検索の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v48.00.00   2020/01/21  FJ)谷川     【ANK-3795-00-00】見込顧客システム構築対応
*   v48.00.01   2020/02/07  FJ)謝       【IT1-2020-0000006】対応
*   v48.00.02   2020/02/25  FJ)谷川     【ANK-3795-06-00】見込顧客検索返却項目変更
*   v49.00.00   2020/06/22  FJ)坂本     【ANK-3867-00-00】eフロント向けAPIの機能変更
**********************************************************************/
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.CharacterCheck;
import com.fujitsu.futurity.model.common.check.DatetimeCheck;
import com.fujitsu.futurity.model.common.check.EmsizeCharCheck;
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.ECK0281B001CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0281B001CBSMsg1List;

/**
 * 見込顧客情報検索の共通コンポーネントクラスです。
 * <br>
 * @author 富士通
 *
 */
public class JCKMikmcstInfoSearchCC extends AbstractCommonComponent
{
	/** テンプレートID(ECK0281B001) 見込顧客一覧照会 */
	private static final String TEMPLATE_ID_ECK0281B001 = "ECK0281B001";

	/** 処理結果 */
	private static final String RESULT = "result";

	/** 見込顧客番号 */
	private static final String POSSIBILITYCUSTOMERNO = "possibilityCustomerNo";

	/** 登録日時（から） */
	private static final String ENTRYTIMEFROM = "entryTimeFrom";

	/** 登録日時（まで） */
	private static final String ENTRYTIMETO = "entryTimeTo";

	/** 従業員番号 */
	private static final String ID = "id";

	/** 氏名（カナ） */
	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";

	/** チャネル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 NEGOTIATIONSTATUS = "negotiationStatus";

	/** 成約見込み */
	private static final String REALIZATIONPOSSIBILITY = "realizationPossibility";

	/** ご利用場所形態 */
	private static final String USEADDRESSFORM = "useAddressForm";

// ANK-3795-06-00 ADD START
	/** 販路制限解除年月 */
	private static final String MARKETLIMRELEASE = "marketLimRelease";
// ANK-3795-06-00 ADD END

	/** 項目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";

// ANK-3867-00-00 ADD START
	/** 次回対応予定日時（から） */
	private static final String NEXTSUPPORTDATEFROM = "nextSupportDateFrom";

	/** 次回対応予定日時（まで） */
	private static final String NEXTSUPPORTDATETO = "nextSupportDateTo";
// ANK-3867-00-00 ADD END
	
	/** 登録日時 */
	private static final String ENTRYTIME = "entryTime";

	/** 更新日時 */
	private static final String RENEWALTIME = "renewalTime";

	/** 見込顧客リスト */
	private static final String POSSIBILITYCUSTOMERLIST = "possibilityCustomerList";

	/** 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";

	/** 属性チェック 日時4 */
	private static final String ZOKU_CHK_DATETIME4 = "0";

	/** 属性チェック 半角数字1 */
	private static final String ZOKU_CHK_NUMBER1 = "1";

	/** 属性チェック 半角英数字1 */
	private static final String ZOKU_CHK_ENNUMBER1 = "2";

	/** 属性チェック 半角英数字8 */
	private static final String ZOKU_CHK_ENNUMBER8 = "3";

	/** 属性チェック 全角 */
	private static final String ZOKU_CHK_EMSIZE = "4";

	/** 属性チェック 全角英数字カナ */
	private static final String ZOKU_CHK_EMSIZEENNUMKANA = "5";

	/** 属性チェック E-mail */
	private static final String ZOKU_CHK_EMAIL = "6";

	/** 属性チェック TEL2 */
	private static final String ZOKU_CHK_TEL2 = "7";

	/** 属性チェック チェックなし */
	private static final String ZOKU_CHK_NO_CHECK = "8";

	/** 属性チェック 年月日1 */
	private static final String ZOKU_CHK_YMD1 = "9";

	/** 属性チェック 年月1 */
	private static final String ZOKU_CHK_YM1 = "10";

	/** 入力項目 */
	private static final String[] IN_PARAMETER = {
		ENTRYTIMEFROM,
		ENTRYTIMETO,
		ID,
		NAMEKANA,
		NAME,
		BIRTHDATE,
		MAILADDRESS,
		TELEPHONENUMBER,
		ZIPCODE,
		ADDRESS,
		CHANNEL1,
		CHANNEL2,
		CHANNEL3,
		AGENCYCODELIM,
		NEGOTIATIONSTATUS,
		REALIZATIONPOSSIBILITY,
		USEADDRESSFORM,
		ITEM001,
		ITEM002,
		ITEM003,
		ITEM004,
		ITEM005,
		ITEM006,
		ITEM007,
		ITEM008,
		ITEM009,
		ITEM010,
		ITEM011,
		ITEM012,
		ITEM013,
		ITEM014,
		ITEM015,
		ITEM016,
		ITEM017,
		ITEM018,
		ITEM019,
		ITEM020,
		ITEM021,
		ITEM022,
		ITEM023,
		ITEM024,
		ITEM025,
		ITEM026,
		ITEM027,
		ITEM028,
		ITEM029,
		ITEM030,
		ITEM031,
		ITEM032,
		ITEM033,
		ITEM034,
		ITEM035,
		ITEM036,
		ITEM037,
		ITEM038,
		ITEM039,
		ITEM040,
		ITEM041,
		ITEM042,
		ITEM043,
		ITEM044,
		ITEM045,
		ITEM046,
		ITEM047,
		ITEM048,
		ITEM049,
// ANK-3867-00-00 MOD START
//		ITEM050
		ITEM050,
		NEXTSUPPORTDATEFROM,
		NEXTSUPPORTDATETO
// ANK-3867-00-00 MOD END
	};

	/** ECK0281B001の入力項目 */
	private static final String[] IN_ECK0281B001 = {
		ECK0281B001CBSMsg.KEY_ENTRYTIMEFROM,
		ECK0281B001CBSMsg.KEY_ENTRYTIMETO,
		ECK0281B001CBSMsg.KEY_ID,
		ECK0281B001CBSMsg.KEY_NAMEKANA,
		ECK0281B001CBSMsg.KEY_NAME,
		ECK0281B001CBSMsg.KEY_BIRTHDATE,
		ECK0281B001CBSMsg.KEY_MAILADDRESS,
		ECK0281B001CBSMsg.KEY_TELEPHONENUMBER,
		ECK0281B001CBSMsg.KEY_ZIPCODE,
		ECK0281B001CBSMsg.KEY_ADDRESS,
		ECK0281B001CBSMsg.KEY_CHANNEL1,
		ECK0281B001CBSMsg.KEY_CHANNEL2,
		ECK0281B001CBSMsg.KEY_CHANNEL3,
		ECK0281B001CBSMsg.KEY_AGENCYCODELIM,
		ECK0281B001CBSMsg.KEY_NEGOTIATIONSTATUS,
		ECK0281B001CBSMsg.KEY_REALIZATIONPOSSIBILITY,
		ECK0281B001CBSMsg.KEY_USEADDRESSFORM,
		ECK0281B001CBSMsg.KEY_ITEM001,
		ECK0281B001CBSMsg.KEY_ITEM002,
		ECK0281B001CBSMsg.KEY_ITEM003,
		ECK0281B001CBSMsg.KEY_ITEM004,
		ECK0281B001CBSMsg.KEY_ITEM005,
		ECK0281B001CBSMsg.KEY_ITEM006,
		ECK0281B001CBSMsg.KEY_ITEM007,
		ECK0281B001CBSMsg.KEY_ITEM008,
		ECK0281B001CBSMsg.KEY_ITEM009,
		ECK0281B001CBSMsg.KEY_ITEM010,
		ECK0281B001CBSMsg.KEY_ITEM011,
		ECK0281B001CBSMsg.KEY_ITEM012,
		ECK0281B001CBSMsg.KEY_ITEM013,
		ECK0281B001CBSMsg.KEY_ITEM014,
		ECK0281B001CBSMsg.KEY_ITEM015,
		ECK0281B001CBSMsg.KEY_ITEM016,
		ECK0281B001CBSMsg.KEY_ITEM017,
		ECK0281B001CBSMsg.KEY_ITEM018,
		ECK0281B001CBSMsg.KEY_ITEM019,
		ECK0281B001CBSMsg.KEY_ITEM020,
		ECK0281B001CBSMsg.KEY_ITEM021,
		ECK0281B001CBSMsg.KEY_ITEM022,
		ECK0281B001CBSMsg.KEY_ITEM023,
		ECK0281B001CBSMsg.KEY_ITEM024,
		ECK0281B001CBSMsg.KEY_ITEM025,
		ECK0281B001CBSMsg.KEY_ITEM026,
		ECK0281B001CBSMsg.KEY_ITEM027,
		ECK0281B001CBSMsg.KEY_ITEM028,
		ECK0281B001CBSMsg.KEY_ITEM029,
		ECK0281B001CBSMsg.KEY_ITEM030,
		ECK0281B001CBSMsg.KEY_ITEM031,
		ECK0281B001CBSMsg.KEY_ITEM032,
		ECK0281B001CBSMsg.KEY_ITEM033,
		ECK0281B001CBSMsg.KEY_ITEM034,
		ECK0281B001CBSMsg.KEY_ITEM035,
		ECK0281B001CBSMsg.KEY_ITEM036,
		ECK0281B001CBSMsg.KEY_ITEM037,
		ECK0281B001CBSMsg.KEY_ITEM038,
		ECK0281B001CBSMsg.KEY_ITEM039,
		ECK0281B001CBSMsg.KEY_ITEM040,
		ECK0281B001CBSMsg.KEY_ITEM041,
		ECK0281B001CBSMsg.KEY_ITEM042,
		ECK0281B001CBSMsg.KEY_ITEM043,
		ECK0281B001CBSMsg.KEY_ITEM044,
		ECK0281B001CBSMsg.KEY_ITEM045,
		ECK0281B001CBSMsg.KEY_ITEM046,
		ECK0281B001CBSMsg.KEY_ITEM047,
		ECK0281B001CBSMsg.KEY_ITEM048,
		ECK0281B001CBSMsg.KEY_ITEM049,
// ANK-3867-00-00 MOD START
//		ECK0281B001CBSMsg.KEY_ITEM050
		ECK0281B001CBSMsg.KEY_ITEM050,
		ECK0281B001CBSMsg.KEY_NEXTSUPPORTDATEFROM,
		ECK0281B001CBSMsg.KEY_NEXTSUPPORTDATETO
// ANK-3867-00-00 MOD END
	};

	/**
	 * 見込顧客情報の検索を行う。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getMikmcstInfoSearch(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 見込顧客情報検索CCマップ
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		// 見込顧客情報レスポンス
		Map<String, Object> responseMsg = new HashMap<String, Object>();

		try
		{
			// 単項目チェック
			if (!checkUnitParam(ccMsg))
			{
				param.setControlMapData(SCControlMapKeys.RETURN_CODE, JKKStrConst.RETURN_CD_5000);
				param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
				return param;
			}

			// 見込顧客一覧照会のマッピング項目リスト
			List<List<Object>> setEck0281B001ColumnList = new ArrayList<List<Object>>();

			// 見込顧客一覧照会の上りマッピングの設定項目を取得
			for (int j = 0; j < IN_PARAMETER.length; j++)
			{
				// 入力パラメータに項目が設定されている場合のみマッピング
				if (ccMsg.containsKey(IN_PARAMETER[j]))
				{
					// サービスインターフェイス実行用のパラメータ設定用
					List<Object> setColumnList = new ArrayList<Object>();
					// 項目ＩＤを設定
					setColumnList.add(IN_ECK0281B001[j]);
					// 項目値を設定
					setColumnList.add(nullToStr((String)ccMsg.get(IN_PARAMETER[j])));
					// 項目設定を行ったリストを追加
					setEck0281B001ColumnList.add(setColumnList);
				}
			}

			// マッピング項目数取得
			// 入力パラメータありの項目数
			int setColumnCnt = setEck0281B001ColumnList.size();
			// サービスインターフェイスＩＤと機能コードの2項目
			setColumnCnt = setColumnCnt + 2;
			// 見込顧客一覧照会の上りマッピング用配列
			Object[][] eck0281B001In = new Object[setColumnCnt][2];

			// 配列への設定済項目数保持用
			int setCnt = 0;
			// サービスインターフェイスＩＤを設定
			eck0281B001In[setCnt][0] = ECK0281B001CBSMsg.TEMPLATEID;
			eck0281B001In[setCnt++][1] = TEMPLATE_ID_ECK0281B001;
			// 機能コードを設定
			eck0281B001In[setCnt][0] = ECK0281B001CBSMsg.FUNC_CODE;
			eck0281B001In[setCnt++][1] = JPCModelConstant.FUNC_CD_1;

			// 見込顧客一覧照会の上りマッピング
			for (int j = 0; j < setEck0281B001ColumnList.size(); j++)
			{
				// サービスインターフェイスの項目ＩＤを設定
				eck0281B001In[setCnt][0] = setEck0281B001ColumnList.get(j).get(0);
				// サービスインターフェイスの項目値を設定
				eck0281B001In[setCnt++][1] = setEck0281B001ColumnList.get(j).get(1);
			}

			// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

			// サービスIF実行
			CAANMsg eck0281b001Msg = callSC(handle, scCall, param, fixedText, eck0281B001In, new ECK0281B001CBSMsg().getContents());

			// 見込顧客一意照会明細
			CAANMsg[] eck0281b001Msg1List = eck0281b001Msg.getCAANMsgList(ECK0281B001CBSMsg.ECK0281B001CBSMSG1LIST);

			// サービスIF実行結果チェック
			if (!checkResult(param, ccMsg, eck0281b001Msg1List))
			{
				return param;
			}
			else
			{
				// 実行結果セット
				// 処理結果 
				responseMsg.put(RESULT, RESULT_OK);

				// 見込顧客リスト
				List<Map<String, String>> possibilityCustomerList = new ArrayList<Map<String, String>>();

				for (int i = 0; i < eck0281b001Msg1List.length; i++)
				{
					// 履歴情報マップ
					Map<String, String> possibilityCustomerMap = new HashMap<String, String>();
					// 見込顧客No
					possibilityCustomerMap.put(POSSIBILITYCUSTOMERNO, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.POSSIBILITYCUSTOMERNO)));
					// 登録日時
					possibilityCustomerMap.put(ENTRYTIME, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.ENTRYTIME)));
					// 更新日時
					possibilityCustomerMap.put(RENEWALTIME, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.RENEWALTIME)));
					// 氏名（カナ）
					possibilityCustomerMap.put(NAMEKANA, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.NAMEKANA)));
					// 氏名（漢字）
					possibilityCustomerMap.put(NAME, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.NAME)));
					// 生年月日
					possibilityCustomerMap.put(BIRTHDATE, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.BIRTHDATE)));
					// メールアドレス
					possibilityCustomerMap.put(MAILADDRESS, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.MAILADDRESS)));
					// 電話番号
					possibilityCustomerMap.put(TELEPHONENUMBER, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.TELEPHONENUMBER)));
					// 郵便番号
					possibilityCustomerMap.put(ZIPCODE, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.ZIPCODE)));
					// 住所
					possibilityCustomerMap.put(ADDRESS, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.ADDRESS)));
// ANK-3795-06-00 ADD START
					// チャネル1
					possibilityCustomerMap.put(CHANNEL1, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.CHANNEL1)));
					// チャネル2
					possibilityCustomerMap.put(CHANNEL2, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.CHANNEL2)));
					// チャネル3
					possibilityCustomerMap.put(CHANNEL3, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.CHANNEL3)));
					// 取扱コード制限
					possibilityCustomerMap.put(AGENCYCODELIM, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.AGENCYCODELIM)));
					// 販路制限解除年月
					possibilityCustomerMap.put(MARKETLIMRELEASE, nullToStr(eck0281b001Msg1List[i].getString(ECK0281B001CBSMsg1List.MARKETLIMRELEASE)));
// ANK-3795-06-00 ADD END
					possibilityCustomerList.add(possibilityCustomerMap);
				}
				responseMsg.put(POSSIBILITYCUSTOMERLIST, possibilityCustomerList);
			}
			// レスポンス返却
			param.setData(fixedText, responseMsg);
			// 正常終了
			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 eck0281b001MsgList
	 * @return チェックの判定
	 * @throws Exception
	 */
	private boolean checkResult(IRequestParameterReadWrite param, Map<String, Object> ccMsg, CAANMsg[] eck0281b001Msg1List)
	throws Exception
	{
		// 取得件数が0件の場合、業務エラーを設定する。
		if (eck0281b001Msg1List == null || eck0281b001Msg1List.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, EMPTY);
			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;
		}
		// 取得件数が500件を超える場合、業務エラーを設定する。
		else if (eck0281b001Msg1List.length > 500)
		{
			// エラーリスト
			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_2002);
			returnMap.put(ERROR_MESSAGE, EMPTY);
			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 = EMPTY;
		}
		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>>();

		// 登録日時（から）
		zokuCheck(ccMsg, ENTRYTIMEFROM, ZOKU_CHK_DATETIME4, 14, 14, errList);
		// 登録日時（まで）
		zokuCheck(ccMsg, ENTRYTIMETO, ZOKU_CHK_DATETIME4, 14, 14, errList);
		// 従業員番号
// IT1-2020-0000006 MOD START
//		zokuCheck(ccMsg, ID, ZOKU_CHK_NUMBER1, 6, 6, errList);
		zokuCheck(ccMsg, ID, ZOKU_CHK_ENNUMBER1, 6, 6, errList);
// IT1-2020-0000006 MOD END
		// 氏名（カナ）
		zokuCheck(ccMsg, NAMEKANA, ZOKU_CHK_EMSIZEENNUMKANA, 1, 121, errList);
		// 氏名（漢字）
		zokuCheck(ccMsg, NAME, ZOKU_CHK_EMSIZE, 1, 121, errList);
		// 生年月日
		zokuCheck(ccMsg, BIRTHDATE, ZOKU_CHK_YMD1, 8, 8, errList);
		// メールアドレス
		zokuCheck(ccMsg, MAILADDRESS, ZOKU_CHK_EMAIL, 1, 80, errList);
		// 電話番号
		zokuCheck(ccMsg, TELEPHONENUMBER, ZOKU_CHK_TEL2, 10, 11, errList);
		// 郵便番号
		zokuCheck(ccMsg, ZIPCODE, ZOKU_CHK_NUMBER1, 7, 7, errList);
		// 住所
		zokuCheck(ccMsg, ADDRESS, ZOKU_CHK_EMSIZE, 1, 120, errList);
		// チャネル1
		zokuCheck(ccMsg, CHANNEL1, ZOKU_CHK_EMSIZE, 1, 30, errList);
		// チャネル2
		zokuCheck(ccMsg, CHANNEL2, ZOKU_CHK_EMSIZE, 1, 30, errList);
		// チャネル3
		zokuCheck(ccMsg, CHANNEL3, ZOKU_CHK_EMSIZE, 1, 30, errList);
		// 取扱コード制限
		zokuCheck(ccMsg, AGENCYCODELIM, ZOKU_CHK_ENNUMBER8, 11, 11, errList);
		// 商談ステータス
		zokuCheck(ccMsg, NEGOTIATIONSTATUS, ZOKU_CHK_NUMBER1, 2, 2, errList);
		// 成約見込み
		zokuCheck(ccMsg, REALIZATIONPOSSIBILITY, ZOKU_CHK_NUMBER1, 2, 2, errList);
		// ご利用場所形態
		zokuCheck(ccMsg, USEADDRESSFORM, ZOKU_CHK_NUMBER1, 2, 2, errList);
		// 項目1
		zokuCheck(ccMsg, ITEM001, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目2
		zokuCheck(ccMsg, ITEM002, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目3
		zokuCheck(ccMsg, ITEM003, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目4
		zokuCheck(ccMsg, ITEM004, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目5
		zokuCheck(ccMsg, ITEM005, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目6
		zokuCheck(ccMsg, ITEM006, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目7
		zokuCheck(ccMsg, ITEM007, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目8
		zokuCheck(ccMsg, ITEM008, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目9
		zokuCheck(ccMsg, ITEM009, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目10
		zokuCheck(ccMsg, ITEM010, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目11
		zokuCheck(ccMsg, ITEM011, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目12
		zokuCheck(ccMsg, ITEM012, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目13
		zokuCheck(ccMsg, ITEM013, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目14
		zokuCheck(ccMsg, ITEM014, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目15
		zokuCheck(ccMsg, ITEM015, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目16
		zokuCheck(ccMsg, ITEM016, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目17
		zokuCheck(ccMsg, ITEM017, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目18
		zokuCheck(ccMsg, ITEM018, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目19
		zokuCheck(ccMsg, ITEM019, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目20
		zokuCheck(ccMsg, ITEM020, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目21
		zokuCheck(ccMsg, ITEM021, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目22
		zokuCheck(ccMsg, ITEM022, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目23
		zokuCheck(ccMsg, ITEM023, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目24
		zokuCheck(ccMsg, ITEM024, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目25
		zokuCheck(ccMsg, ITEM025, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目26
		zokuCheck(ccMsg, ITEM026, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目27
		zokuCheck(ccMsg, ITEM027, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目28
		zokuCheck(ccMsg, ITEM028, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目29
		zokuCheck(ccMsg, ITEM029, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目30
		zokuCheck(ccMsg, ITEM030, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目31
		zokuCheck(ccMsg, ITEM031, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目32
		zokuCheck(ccMsg, ITEM032, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目33
		zokuCheck(ccMsg, ITEM033, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目34
		zokuCheck(ccMsg, ITEM034, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目35
		zokuCheck(ccMsg, ITEM035, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目36
		zokuCheck(ccMsg, ITEM036, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目37
		zokuCheck(ccMsg, ITEM037, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目38
		zokuCheck(ccMsg, ITEM038, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目39
		zokuCheck(ccMsg, ITEM039, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目40
		zokuCheck(ccMsg, ITEM040, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目41
		zokuCheck(ccMsg, ITEM041, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目42
		zokuCheck(ccMsg, ITEM042, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目43
		zokuCheck(ccMsg, ITEM043, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目44
		zokuCheck(ccMsg, ITEM044, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目45
		zokuCheck(ccMsg, ITEM045, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目46
		zokuCheck(ccMsg, ITEM046, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目47
		zokuCheck(ccMsg, ITEM047, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目48
		zokuCheck(ccMsg, ITEM048, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目49
		zokuCheck(ccMsg, ITEM049, ZOKU_CHK_NO_CHECK, 1, 30, errList);
		// 項目50
		zokuCheck(ccMsg, ITEM050, ZOKU_CHK_NO_CHECK, 1, 30, errList);
// ANK-3867-00-00 ADD START
		// 次回対応予定日時（から）
		zokuCheck(ccMsg, NEXTSUPPORTDATEFROM, ZOKU_CHK_YMD1, 8, 8, errList);
		// 次回対応予定日時（まで）
		zokuCheck(ccMsg, NEXTSUPPORTDATETO, ZOKU_CHK_YMD1, 8, 8, errList);
		// エラーが存在する場合
// ANK-3867-00-00 ADD END
		if (errList.size() > 0)
		{
			ccMsg.put(ERROR_INFO, errList);
			return false;
		}

		return true;
	}

	/**
	 * <p>
	 * 引数値の属性チェックを行う。
	 * </p>
	 * @param ccMsg 識別コードマップ
	 * @param inNam 属性チェックを行う項目名
	 * @param inZoku 属性
	 * @param minLen 最小桁数
	 * @param maxLen 最大桁数
	 * @param errList エラーリスト
	 */
	private void zokuCheck (Map<String, Object> ccMsg, String inNam, String inZoku, int minLen, int maxLen, List<Map<String, String>> errList)
	{
		// エラーフラグ
		boolean errFlg = false;

		// 項目値取得
		String inVal = (String)ccMsg.get(inNam);

		// 必須チェックなし

		// 入力チェック（NULL または 空文字の場合、属性・桁数チェックは行わない。）
		if (!(inVal == null || EMPTY.equals(inVal)))
		{
			// 日時4チェック
			if (ZOKU_CHK_DATETIME4.equals(inZoku))
			{
				errFlg = DatetimeCheck.isDatetime4Check(inVal) ? false : true;
			}
			// 半角数字1チェック
			else if (ZOKU_CHK_NUMBER1.equals(inZoku))
			{
				errFlg = HalfCharCheck.isNumber1Check(inVal) ? false : true;
			}
			// 半角英数字1チェック
			else if (ZOKU_CHK_ENNUMBER1.equals(inZoku))
			{
				errFlg = HalfCharCheck.isEnNumber1Check(inVal) ? false : true;
			}
			// 半角英数字8チェック
			else if (ZOKU_CHK_ENNUMBER8.equals(inZoku))
			{
				errFlg = HalfCharCheck.isEnNumber8Check(inVal) ? false : true;
			}
			// 全角文字チェック
			else if (ZOKU_CHK_EMSIZE.equals(inZoku))
			{
				errFlg = EmsizeCharCheck.isEmsizeCheck(inVal) ? false : true;
			}
			// 全角英数字カナチェック
			else if (ZOKU_CHK_EMSIZEENNUMKANA.equals(inZoku))
			{
				errFlg = EmsizeCharCheck.isEmsizeEnNumKanaCheck(inVal) ? false : true;
			}
			// E-mail1チェック
			else if (ZOKU_CHK_EMAIL.equals(inZoku))
			{
				errFlg = HalfCharCheck.isEmail1Check(inVal) ? false : true;
			}
			// TEL2チェック
			else if (ZOKU_CHK_TEL2.equals(inZoku))
			{
				errFlg = HalfCharCheck.isTelno2Check(inVal) ? false : true;
			}
			// チェックなし（禁止文字のみチェック）
			else if (ZOKU_CHK_NO_CHECK.equals(inZoku))
			{
				errFlg = CharacterCheck.isUnusedCharCheck(inVal) ? false : true;
			}
			// 日付チェック(yyyyMMDD)
			else if (ZOKU_CHK_YMD1.equals(inZoku))
			{
				errFlg = DatetimeCheck.isDateCheck(inVal) ? false : true;
			}
			// 日付チェック(yyyyMM)
			else if (ZOKU_CHK_YM1.equals(inZoku))
			{
				errFlg = DatetimeCheck.isYearMonthCheck(inVal) ? false : true;
			}

			// 属性エラーあり
			if (errFlg)
			{
				errList.add(getFormErrInfMap(inNam, inVal));
				return;
			}

			// 桁数チェック
			if (minLen == maxLen)
			{
				// 桁数一致チェック
				errFlg = LengthCheck.isLength1Check(inVal, maxLen) ? false : true;
			}
			else
			{
				// 桁数範囲内チェック
				errFlg = LengthCheck.isLength2Check(inVal, minLen, maxLen) ? false : true;
			}

			// 桁数エラーあり
			if (errFlg)
			{
				errList.add(getLenErrInfMap(inNam, inVal));
				return;
			}
		}
		return;
	}

	/**
	 * 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 (EMPTY.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;
	}

	/**
	 * パラメタがNullの場合空白を返却する。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || EMPTY.equals(str.trim()))
		{
			return EMPTY;
		}
		return str;
	}

	/**
	 * 単項目チェックの必須エラーマップ作成メソッドです。
	 * 
	 * @param itemName 項目名
	 * @return returnMap
	 */
	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 returnMap
	 */
	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 returnMap
	 */
	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;
	}

}