/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名		：契約管理
*	モジュール名	：JKKFumeiKktkSvcKeiUpdCC
*	ソースファイル名：JKKFumeiKktkSvcKeiUpdCC.java
*	作成者			：FAP)鳩本
*	日付			：2012年09月28日
*＜機能概要＞
*	宅内機器型式が不明機器の場合の更新処理コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/09/28	FAP)鳩本	新規作成
*	v4.01.00	2013/02/05	FAP)鳩本	【IT1-2013-0000185】障害対応
*	v5.00.00	2013/02/20	FJ)田原		【ANK-1440-00-00】機器(ONU、V-ONU)情報のない現行データへの対応（２）
*	v5.00.01	2013/04/03	FJ) 田原	【IKK-2013-0000823】障害対応
*	v5.00.02	2013/04/05	FJ) 田原	【IKK-2013-0000832】障害対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
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 eo.ejb.cbs.cbsmsg.ECRA0010001CBSMsg;
import eo.ejb.cbs.cbsmsg.ECRA0010001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECRA0010001ConditionList;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341C233CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

public class JKKFumeiKktkSvcKeiUpdCC extends AbstractCommonComponent
{
	/** サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** 機器提供サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";
	/** 宅内機器一意照会（４） */
	private static final String TEMPLATE_ID_EKKA0020003 = "EKKA0020003";
	/** 機器提供サービス契約情報変更（不明機器） */
	private static final String TEMPLATE_ID_EKK0341C233 = "EKK0341C233";
	/** 進捗登録 */
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/** 宅内機器一意照会 */
	private static final String TEMPLATE_ID_EZM0411A010 = "EZM0411A010";
	/** 引当棚一意照会 */
	private static final String TEMPLATE_ID_EDK0451A010 = "EDK0451A010";
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/** 宅内機器一意照会 */
	private static final String TEMPLATE_ID_ECRA0010001 = "ECRA0010001";
	/** 宅内機器物流在庫一意照会 */
	private static final String TEMPLATE_ID_EKKA0020005 = "EKKA0020005";
	/** 機器出荷情報更新 */
	private static final String TEMPLATE_ID_EDKA0010003 = "EDKA0010003";
	/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
	// 定数項目
	/** 機能コード "1"(チェック＆更新)*/
	private static final String FUNC_CODE_1 = "1";
	/** 機能コード "2"(チェックのみ)*/
	private static final String FUNC_CODE_2 = "2";
	
	/** エラーフラグ（エラー）*/
	private static final String ERR_FLG_ERR = "E";
	/** エラーフラグ（ワーニング）*/
	private static final String ERR_FLG_WARNING = "W";
	/** 機器登録CC内で使用するサービス契約の更新タイムスタンプ格納キー */
	private static final String KK_COM_SVC_UP_DTM = "KK_COM_SVC_UP_DTM";
	
	/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
	/** 機器登録CC内で使用する異動登録時の更新タイムスタンプ格納キー */
	private static final String KK_COM_IDO_UP_DTM = "KK_COM_IDO_UP_DTM";
	/* ++++++++++ v4.01.00 追加完了 ++++++++++ */
	
	/** 機器提供サービス契約機種変更画面ID*/
	private static final String SCRN_ID_KKW108 = "KKW108";
	/** 進捗ステータス 不明機器判明 */
	private static final String PRG_STAT_G010 = "G010";
	/** 料金コース判別取得部品 */
	private static final String PCRS_MAP = "PCRS_MAP";
	
	/** 異動区分 機器契約変更*/
	private static final String IDO_DIV_00026 = "00026";
	/** 異動区分 登録内容修正 */
	private static final String IDO_DIV_00032 = "00032";
	
	/** 不明機器判定 進捗特記事項出力対象 */
	private static final String[] IDO_DIV_LIST = 
	{
		IDO_DIV_00026,
		IDO_DIV_00032
	};
	
	/** 進捗特記事項_変更前 */
	private static final String PRG_STAT_BEFORE = "(変更前)";
	/** 進捗特記事項_変更後 */
	private static final String PRG_STAT_AFTER = "(変更後)";
	/** 進捗特記事項_型番 */
	private static final String PRG_STAT_KIKI_MODEL_CD = "型番：";
	/** 進捗特記事項_機器製造番号 */
	private static final String PRG_STAT_KIKI_SEIZO_NO = "機器製造番号：";
	/** 全角空白 */
	private static final String SPACE_FULL = "　";
	
	/** 処理対象リスト格納キー */
	private static final String SHORI_LIST_ICHIRAN = "IchiranShoriList";
	/** 更新後リスト（処理対象リスト）格納キー */
	private static final String SHORI_LIST_KIKILIST_AF = "kikiList_af";
	
	/**
	 * 不明機器か判定し更新する。
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execFumeiKikiUpd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		String dataMapKey = fixedText;
		
		// SCマップから必要な情報を取り出す(S-I/F設定項目)
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// エラーフラグ
		ccMsg.put("err_flg", "");
		// メッセージ情報
		ArrayList<HashMap<String, Object>> messageInfo = new ArrayList<HashMap<String, Object>>();
		// メッセージコードリスト
		ccMsg.put("message_list", messageInfo);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 一時領域データ”
		HashMap<String, Object> temporaryData = new HashMap<String, Object>();
		
		// 共通領域を取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
		// サービス契約更新前タイムスタンプを共通領域に格納します。
		//setInitSvcUpdate(param, ccMsg);
		/* ++++++++++ v5.00.01 削除終了 ++++++++++ */
		// サービス契約データが存在しない場合取得します。
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)ccMsg.get("svc_kei_data");
		
		if(ekk0081a010cbsMsg == null)
		{
			// サービス契約一意照会
			ekk0081a010cbsMsg = execEKK0081A010(handle, scCall, param, dataMapKey);
		}
		// サービス契約一意照会取得結果をtemporaryDataに格納
		temporaryData.put(TEMPLATE_ID_EKK0081A010, ekk0081a010cbsMsg);
		
		// 変更前情報を取得する
//		CAANMsg ekk0341a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0341A010);
		CAANMsg ekk0341a010cbsMsg = (CAANMsg)ccMsg.get("kktk_svc_kei_data");
		
		if(ekk0341a010cbsMsg == null)
		{
			// 機器提供サービス契約一意照会の実行
			ekk0341a010cbsMsg = execEKK0341A010(handle, scCall, param, dataMapKey);
			
		}
		// 機器提供サービス契約一意照会取得結果をtemporaryDataに格納
		temporaryData.put(TEMPLATE_ID_EKK0341A010, ekk0341a010cbsMsg);
		
		/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
		// サービス契約更新前タイムスタンプを共通領域に格納します。
		//setInitSvcUpdate(param, ccMsg);
		setInitSvcUpdate(ccMsg, param, ekk0341a010cbsMsg);
		/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
		
		
		// 製造番号存在チェック
		if(!isTaknkikiSonzaiCheck(handle, scCall, param, dataMapKey))
		{
			return param;
		}
		
		/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
		// 在庫チェック(不明機器)
		if(!isZaikoFumeiKikiCheck(handle, scCall, param, dataMapKey, temporaryData))
		{
			return param;
		}
		
		/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
		// 機器出荷情報更新
		//execEDKA0010003(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v5.00.01 削除終了 ++++++++++ */
		
		// 不明機器更新
		execEKK0341C233(handle, scCall, param, dataMapKey);
		
		// 機器提供サービス契約の更新データを検索しワーク領域に格納します
		if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
		{
			setKikiIchiranIkkatsuList(handle, scCall, param, dataMapKey, temporaryData);
		}
		
		// 進捗登録
		execEKK1091D010(handle, scCall, param, dataMapKey, temporaryData);
		
		/**
		 * 画面表示データの取得１
		 * */
		if(SCRN_ID_KKW108.equals(ccMsg.get("check_scrn_id")))
		{
			setScreenData(handle, scCall, param, dataMapKey, temporaryData, ccMsg);
		}
		
		return param;
	}
	
	/**
	 * 宅内機器システム存在チェック
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return true:存在 false:存在しない
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isTaknkikiSonzaiCheck(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		CAANMsg[] ekka0020003CBSMsgList = null;
		
		if(SCRN_ID_KKW108.equals(ccMsg.get("check_scrn_id")))
		{
			ekka0020003CBSMsgList = execEKKA0020003(handle, scCall, param, dataMapKey, ccMsg);
				
			if(ekka0020003CBSMsgList == null || ekka0020003CBSMsgList.length == 0)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB4970-KW", "製造番号が存在しない", "", ERR_FLG_ERR);
//				return param;
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 機器一覧一括処理データ格納メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return IRequestParameterReadWrite
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setKikiIchiranIkkatsuList(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String ichiranIndex = getNullToStr((String) ccMsg.get("ichiranIndex"));
		
		if("".equals(ichiranIndex))
		{
			return;
		}
		
		// 機器提供サービス契約情報を取得
		// ***** EKK0341A010（機器提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = {
			{EKK0341A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0341A010},
			{EKK0341A010CBSMsg.FUNC_CODE,        "2"},
			{EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO,   ccMsg.get("kktk_svc_kei_no")},
			{EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, ""},
			{EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd")},
		};
		
		CAANMsg ekk0341a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
		
		int index = Integer.parseInt(ichiranIndex);
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>) workMap.get(SHORI_LIST_ICHIRAN);
		
		// 一覧処理マップ(格納するIndexのMapを取り出します。)
		HashMap<String, Object> ichiranShoriMap = ichiranShoriList.get(index);
		
		ArrayList<CAANMsg> shoriListKiki_af = null;
		
		// 更新後データが格納されている場合、リストを取得して格納（B-CAS,C-CASなど）
		if(ichiranShoriMap.containsKey(SHORI_LIST_KIKILIST_AF))
		{
			shoriListKiki_af = (ArrayList<CAANMsg>) ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
			
			shoriListKiki_af.add(ekk0341a010cbsMsg);
		}
		else
		{
			shoriListKiki_af = new ArrayList<CAANMsg>();
			
			shoriListKiki_af.add(ekk0341a010cbsMsg);
			
			ichiranShoriMap.put(SHORI_LIST_KIKILIST_AF, shoriListKiki_af);
		}
		
	}
	
	/**
	 * 機器提供サービス契約一意照会メソッド
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @return 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEKK0081A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK0081A010（サービス契約一意照会）*****
		Object[][] ekk0081a010IN = {
			{EKK0081A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0081A010},
			{EKK0081A010CBSMsg.FUNC_CODE,        FUNC_CODE_2},
			{EKK0081A010CBSMsg.KEY_SVC_KEI_NO,   ccMsg.get("svc_kei_no")},
			{EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, ""},
			{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd")},
		};
		
		return callSC(handle, scCall, param, dataMapKey, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)[0];
	}
	
	
	@SuppressWarnings("unchecked")
	private CAANMsg execEKK0341A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK0341A010（機器意提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = {
			{EKK0341A010CBSMsg.TEMPLATEID,          TEMPLATE_ID_EKK0341A010},
			{EKK0341A010CBSMsg.FUNC_CODE,           FUNC_CODE_2},
			{EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, ccMsg.get("kktk_svc_kei_no")},
			{EKK0341A010CBSMsg.KEY_GENE_ADD_DTM,    ""},
			{EKK0341A010CBSMsg.KEY_RSV_APLY_YMD,    ccMsg.get("unyo_ymd")},
 		};
		// S-I/F実行・出力結果を格納する。
		return callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
	}
	
	/**
	 * 宅内機器存在チェック<br>
	 * <br>
	 * 指定された宅内機器型式コードが宅内テーブルに存在しているかチェックを行う。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param tkMdlCd
	 * @param kkSeizoNo
	 * @return CAANMsg[]
	 * @throws Exception 
	 */
	private CAANMsg[] execEKKA0020003(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param,
											String dataMapKey,
											HashMap<String, Object> ccMsg) throws Exception
	{
		// ***** EKKA0020003（宅内機器一意照会（４））*****
		Object[][] ekka0020003IN = {
				{ EKKA0020003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020003 },
				{ EKKA0020003CBSMsg.FUNC_CODE, FUNC_CODE_1}
		};
		
		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		// ＫＥＹ＿宅内機器型式コード
		inMap.put(EKKA0020003CBSMsg1List.KEY_TK_MDL_CD, (String)ccMsg.get("taknkiki_model_cd"));
		// ＫＥＹ＿機器製造番号
		inMap.put(EKKA0020003CBSMsg1List.KEY_KK_SEIZO_NO, (String)ccMsg.get("kiki_seizo_no"));
		
		inList.add(inMap);
		
		CAANMsg[] ekka0020003CBSMsg2list 
						= callSCArray(handle, scCall, param, dataMapKey, ekka0020003IN, "EKKA0020003CBSMsg1List", inList)
															.getCAANMsgList(EKKA0020003CBSMsg.EKKA0020003CBSMSG2LIST);
		
		return ekka0020003CBSMsg2list;
	}
	
	/**
	 * 機器提供サービス契約情報変更（不明機器）を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0341C233(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK0341C233（機器提供サービス契約情報変更（不明機器））*****
		Object[][] ekk0341c233IN = {
				{EKK0341C233CBSMsg.TEMPLATEID,        TEMPLATE_ID_EKK0341C233},
				{EKK0341C233CBSMsg.FUNC_CODE,         (String)ccMsg.get("func_code")},
				{EKK0341C233CBSMsg.KKTK_SVC_KEI_NO,   (String)ccMsg.get("kktk_svc_kei_no")},
				{EKK0341C233CBSMsg.TAKNKIKI_MODEL_CD, (String)ccMsg.get("taknkiki_model_cd")},
				{EKK0341C233CBSMsg.KIKI_SEIZO_NO,     (String)ccMsg.get("kiki_seizo_no")},
				{EKK0341C233CBSMsg.UPD_DTM_BF,        getSvcUpDtm(param)},
		};
		// S-I/F 実行
		CAANMsg ekk0341c233OUT = callSC(handle, scCall, param, dataMapKey, ekk0341c233IN);
		
		// 更新年月日を更新する。
		setSvcUpDtm(param, ekk0341c233OUT.getString(EKK0341C233CBSMsg.UPD_DTM));
	}
	
	/**
	 * 進捗登録を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1091D010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約一意照会結果を取得する。
		CAANMsg ekk0081a010 = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 進捗登録SC
		// ***** EKK1091D010（進捗登録）*****
		Object[][] ekk1091d010IN = {
				{EKK1091D010CBSMsg.TEMPLATEID,             TEMPLATE_ID_EKK1091D010},
				{EKK1091D010CBSMsg.FUNC_CODE,              (String)ccMsg.get("func_code")},
				{EKK1091D010CBSMsg.MSKM_DTL_NO,            getMskmDtlNo(param, ekk0081a010)},
				{EKK1091D010CBSMsg.SEIKY_KEI_NO,           ""},
				{EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA,      ""},
				{EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD,   ""},
				{EKK1091D010CBSMsg.SVC_KEI_NO,             (String)ccMsg.get("svc_kei_no")},
				{EKK1091D010CBSMsg.SVC_KEI_UCWK_NO,        ""},
				{EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, ""},
				{EKK1091D010CBSMsg.KKTK_SVC_KEI_NO,        ""},
				{EKK1091D010CBSMsg.OP_SVC_KEI_NO,          ""},
				{EKK1091D010CBSMsg.SEIOPSVC_KEI_NO,        ""},
				{EKK1091D010CBSMsg.SBOP_SVC_KEI_NO,        ""},
				{EKK1091D010CBSMsg.WRIB_SVC_KEI_NO,        ""},
				{EKK1091D010CBSMsg.IDO_DIV,                (String)ccMsg.get("ido_div")},
				
				/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
//				{EKK1091D010CBSMsg.IDO_DTM,                JPCBPCommon.getSysDateTimeStamp()},
				{EKK1091D010CBSMsg.IDO_DTM,                getIdoUpDtm(param)},
				/* ++++++++++ v4.01.00 修正完了 ++++++++++ */
				
				{EKK1091D010CBSMsg.PRG_STAT,               PRG_STAT_G010},
				{EKK1091D010CBSMsg.PRG_MEMO,               ""},
				{EKK1091D010CBSMsg.PRG_TKJK_1,             getPrg_Stat(param, dataMapKey, temporaryData)},
				{EKK1091D010CBSMsg.PRG_TKJK_2,             ""},
		};
		
		// 登録データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		// 異動理由コード
		inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_CD, getNullToStr((String)ccMsg.get("ido_rsn_cd")));
		// 異動理由メモ
		inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, "");
		
		inList.add(inMap);
		
		callSCArray(handle, scCall, param, dataMapKey, ekk1091d010IN, "EKK1091D010CBSMsg1List", inList);
	}
	
	/**
	 * 宅内機器一意照会メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param key_taknkiki_model_cd
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEZM0411A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EZM0411A010（宅内機器一意照会）*****
		// 機能コード"1"固定
		Object[][] ezm0411a010IN = {
			{EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0411A010},
			{EZM0411A010CBSMsg.FUNC_CODE, FUNC_CODE_1},
			{EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, (String)ccMsg.get("taknkiki_model_cd")},
		};
		// S-I/F 実行
		return callSC(handle, scCall, param, dataMapKey, ezm0411a010IN).getCAANMsgList(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST)[0];
	}
	
	@SuppressWarnings("unchecked")
	private CAANMsg execEDK0451A010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		CAANMsg edk0451a010cbsMsg = null;
		if(!"".equals(getNullToStr((String)ccMsg.get("hambai_sbt"))))
		{
			// 棚コード取得処理
			// ***** EDK0451A010（引当棚一意照会）*****
			Object[][] edk0451a010IN = {
				{EDK0451A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EDK0451A010},
				{EDK0451A010CBSMsg.FUNC_CODE,        "1"},
				{EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD,   ccMsg.get("hambai_sbt")},
				{EDK0451A010CBSMsg.KEY_UNYO_YMD, ccMsg.get("unyo_ymd")},
			};
		
			edk0451a010cbsMsg = callSC(handle, scCall, param, dataMapKey, edk0451a010IN).getCAANMsgList(EDK0451A010CBSMsg.EDK0451A010CBSMSG1LIST)[0];
		}
		return edk0451a010cbsMsg;
	}
	
	
	/**
	 * (KKW108)画面表示内容を取得します。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @throws Throwable
	 */
	private void setScreenData(SessionHandle handle, 
								ServiceComponentRequestInvoker scCall, 
								IRequestParameterReadWrite param, 
								String dataMapKey,
								HashMap<String, Object> temporaryData,
								HashMap<String, Object> ccMsg) throws Throwable
	{
		
		/**
		 * 画面表示データの取得１
		 * */
		// 料金コース判別取得部品呼出
		Map<String, Object> pcrsData = getPcrsData(handle, param, ccMsg);
		// 検索結果を格納（料金コース判別取得部品）
		temporaryData.put(PCRS_MAP, pcrsData);
		// 名称データ等取得し返却します。
		setScrnReturnData1(handle, scCall, param, dataMapKey, temporaryData);
		
		/**
		 * 画面表示データの取得２
		 * */
		// 引当棚一意照会
		CAANMsg edk0451a010cbsMsg = execEDK0451A010(handle, scCall, param, dataMapKey, temporaryData);
		// 引当棚一意照会結果を格納
		temporaryData.put(TEMPLATE_ID_EDK0451A010, edk0451a010cbsMsg);
		// 名称データ等取得し返却します。
		setScrnReturnData2(param, dataMapKey, temporaryData);
		/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
		/**
		 * 画面表示データの取得３
		 * */
		// 名称データ等取得し返却します。
		setScrnReturnData3(param, dataMapKey, temporaryData);
		/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
	}
	
	/**
	 * 宅内機器型式取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return String
	 * @throws Throwable 
	 * @throws Exception
	 */
	private String getTknKikiKataNm(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData) throws Throwable
	{
		// 宅内機器型式一意照会の実行
		CAANMsg ezm0411a010OUT = execEZM0411A010(handle, scCall, param, dataMapKey, temporaryData);
		
		return ezm0411a010OUT.getString(EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_NM);
	}
	
	/**
	 * 申込明細番号を取得します。
	 * @param param リクエストパラメータ
	 * @param inMap
	 * @throws Exception 
	 */
	private String getMskmDtlNo(IRequestParameterReadWrite param, CAANMsg ekk0081a010cbsMsg) throws Exception
	{

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String mskmDtlNo = getNullToStr((String)workMap.get("mskm_dtl_no"));
		
		if("".equals(mskmDtlNo))
		{
			mskmDtlNo = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
		}

		return mskmDtlNo;
	}
	/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
//	/**
//	 * サービス契約の更新タイムスタンプを格納します。
//	 * @param param リクエストパラメータ
//	 * @param inMap
//	 * @throws Exception 
//	 */
//	private void setInitSvcUpdate(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
//	{
//		// 作業領域の取得
//		Map<Object, Object> workMap = param.getMappingWorkArea();
//		
//		String updDtm = "";
//		
//		if(workMap != null && workMap.containsKey(KK_COM_SVC_UP_DTM))
//		{
//			updDtm = (String)workMap.get(KK_COM_SVC_UP_DTM);
//		}
//		else
//		{
//			updDtm = (String)inMap.get("upd_dtm_svc_kei");
//		}
//		
//		workMap.put(KK_COM_SVC_UP_DTM, updDtm);
//	}
	
	/**
	 * サービス契約の更新タイムスタンプを格納します。
	 * @param ccMsg
	 * @param tempData
	 * @param param
	 * @param ekk0341a010OUT
	 * @throws RequestParameterException
	 */
	private void setInitSvcUpdate(HashMap<String, Object> inMap, 
			IRequestParameterReadWrite param, CAANMsg ekk0341a010OUT)throws RequestParameterException
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		String updDtm = "";
		
		if (workMap.get(KK_COM_SVC_UP_DTM) == null || "".equals(workMap.get(KK_COM_SVC_UP_DTM)))
		{
			String svc_kei_kaisen_ucwk_no = ekk0341a010OUT.getString(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			
			if (svc_kei_kaisen_ucwk_no == null || "".equals(svc_kei_kaisen_ucwk_no))
			{
				updDtm = (String)inMap.get("upd_dtm_svc_kei");
			}
			else
			{
				updDtm = (String)inMap.get("upd_dtm_svc_kei_kaisen_ucwk");
			}
		}
		else
		{
			updDtm = (String)workMap.get(KK_COM_SVC_UP_DTM);
		}
		
		workMap.put(KK_COM_SVC_UP_DTM, updDtm);
	}
	/* ++++++++++ v5.00.01 変更終了 ++++++++++ */
	
	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * @param param リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception 
	 */
	private String getSvcUpDtm(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		return (String)workMap.get(KK_COM_SVC_UP_DTM);
	}
	
	/**
	 * サービス契約の更新タイムスタンプを設定します。
	 * @param param リクエストパラメータ
	 * @param updDtm 更新時間
	 * @throws Exception 
	 */
	private void setSvcUpDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		if(updDtm != null && !"".equals(updDtm))
		{
			workMap.put(KK_COM_SVC_UP_DTM, updDtm);
		}
	}
	
	/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
	/**
	 * ワーク領域に保持している異動年月日時分秒を取得します。
	 * 設定値がない場合は共通部品より取得します。
	 * <br>
	 * @param param リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getIdoUpDtm(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		if("".equals(getNullToStr((String)workMap.get(KK_COM_IDO_UP_DTM))))
		{
			// 未設定時のみworkMapに新規格納
			workMap.put(KK_COM_IDO_UP_DTM, (JPCBPCommon.getSysDateTimeStamp()));
		}
		// workMapから取得
		return (String)workMap.get(KK_COM_IDO_UP_DTM);
	}
	/* ++++++++++ v4.01.00 修正完了 ++++++++++ */
	
	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "";
		}
		return str;
	}
	
	/**
	 * 料金コース取得メソッド
	 * 
	 * @param handle
	 * @param param
	 * @param ccMsg
	 * @return Map
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private Map<String, Object> getPcrsData(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> ccMsg) throws Throwable
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		paramMap.put("func_code", ccMsg.get("func_code"));
		
		// 宅内機器型式コード
		paramMap.put("taknkiki_model_cd", ccMsg.get("taknkiki_model_cd"));
		// 機器提供種別コード
		paramMap.put("kktk_sbt_cd", ccMsg.get("kktk_sbt_cd"));
		//販売種別コード
		paramMap.put("hambai_sbt_cd", ccMsg.get("hambai_sbt"));
		// 基準日
		paramMap.put("stdardymd", ccMsg.get("unyo_ymd"));
		
		Map<String, Object> jkkpcrDataMap = JKKBpCommon.getPcrsData(handle, param, paramMap);
		
		return jkkpcrDataMap;
	}
	
	/**
	 * 返却値設定メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable 
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setScrnReturnData1(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		Map<String, Object> pcrsData = (Map<String, Object>) temporaryData.get(PCRS_MAP);
		// 検索結果を格納（料金コース判別取得部品）
		
		// 機器提供サービコード
		ccMsg.put("kktk_svc_cd", getNullToStr((String) pcrsData.get("kktk_svc_cd")));
		// 機器提供サービスコード名
		ccMsg.put("kktk_svc_nm", getNullToStr((String) pcrsData.get("kktk_svc_nm")));
		// 宅内機器型式名
		ccMsg.put("taknkiki_model_nm", getTknKikiKataNm(handle, scCall, param, dataMapKey, temporaryData));
		
	}
	
	/**
	 * 返却値設定メソッド（更新処理の場合）
	 * @param param
	 * @param dataMapKey
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setScrnReturnData2(IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		CAANMsg edk0451a010cbsMsg = (CAANMsg) temporaryData.get(TEMPLATE_ID_EDK0451A010);
		
		if(edk0451a010cbsMsg != null)
		{
			ccMsg.put("soko_tana_cd", getNullToStr((String) edk0451a010cbsMsg.getString(EDK0451A010CBSMsg1List.SHELF_CD)));
			ccMsg.put("soko_tana_nm", getNullToStr((String) edk0451a010cbsMsg.getString(EDK0451A010CBSMsg1List.SHELF_NM)));
		}
		else
		{
			ccMsg.put("soko_tana_cd", "");
			ccMsg.put("soko_tana_nm", "");
		}
		
	}
	
	/**
	 * 進捗登録・特記事項表示項目を編集する。
	 * <br>
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return 編集文字列
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getPrg_Stat(IRequestParameterReadWrite param, 
								String dataMapKey,
								HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 異動区分チェック 対象異動区分以外の場合はエラー
		String ido_div = (String)ccMsg.get("ido_div");
		
		// 処理判定フラグ("1"=続行、"1"以外=当メソッド終了)
		String syori_judge_flg = "";
		
		for(int i=0; i<IDO_DIV_LIST.length; i++)
		{
			// 対象異動区分と一致すればfor文を抜けて次処理へ
			if(ido_div.equals(IDO_DIV_LIST[i]))
			{
				syori_judge_flg = "1";
				break;
			}
		}
		
		if(!"1".equals(syori_judge_flg))
		{
			// 対象外異動区分の場合は処理終了
			return "";
		}
		
		StringBuilder prg_tkjk = new StringBuilder();
		
		// 変更前情報を取得する
		CAANMsg ekk0341a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0341A010);
		
		if(ekk0341a010cbsMsg == null)
		{
			return prg_tkjk.toString();
		}
		String taknkiki_model_cd_bf = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
		String kiki_seizo_no_bf = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
		
		// 変更後情報を取得する
		String taknkiki_model_cd_af = (String)ccMsg.get("taknkiki_model_cd");
		String kiki_seizo_no_af = (String)ccMsg.get("kiki_seizo_no");
		
		// 特記事項に表示する文字列を結合する。
		
		// （変更前）を表示するか判定
		if(isPrgTkjkDisp(taknkiki_model_cd_bf) || isPrgTkjkDisp(kiki_seizo_no_bf))
		{
			prg_tkjk.append(PRG_STAT_BEFORE);
		}
		// 変更前型番
		if(isPrgTkjkDisp(taknkiki_model_cd_bf))
		{
			prg_tkjk.append(PRG_STAT_KIKI_MODEL_CD).append(taknkiki_model_cd_bf).append(SPACE_FULL);
		}
		// 変更前機器製造番号
		if(isPrgTkjkDisp(kiki_seizo_no_bf))
		{
			prg_tkjk.append(PRG_STAT_KIKI_SEIZO_NO).append(kiki_seizo_no_bf).append(SPACE_FULL);
		}
		// （変更後）を表示するか判定
		if(isPrgTkjkDisp(taknkiki_model_cd_af) || isPrgTkjkDisp(kiki_seizo_no_af))
		{
			prg_tkjk.append(PRG_STAT_AFTER);
		}
		// 変更後型番
		if(isPrgTkjkDisp(taknkiki_model_cd_af))
		{
			prg_tkjk.append(PRG_STAT_KIKI_MODEL_CD).append(taknkiki_model_cd_af).append(SPACE_FULL);
		}
		// 変更後機器製造番号
		if(isPrgTkjkDisp(kiki_seizo_no_af))
		{
			prg_tkjk.append(PRG_STAT_KIKI_SEIZO_NO).append(kiki_seizo_no_af).append(SPACE_FULL);
		}
		
		return prg_tkjk.toString();
	}
	
	/**
	 * 入力項目を進捗登録・特記事項に表示するか判定します。
	 * <br>
	 * @param arg0 進捗登録に表示する項目の設定値
	 * @return true:表示する false:表示しない
	 */
	private boolean isPrgTkjkDisp(String arg0)
	{
		if(!(arg0 == null) && !("".equals(arg0)))
		{
			return true;
		}
		return false;
	}
	
	
	
	
	/**
	 * メッセージIDを設定します。
	 * @param ccMsg パラメータMap
	 * @param pMessageId メッセージID
	 * @param pReplaceCha 置換文字列
	 * @param pErrItem エラー設定項目
	 * @param pErrFlg エラーフラグ
	 */
	private void setMessageInfo(HashMap<String, Object> ccMsg, String pMessageId, String pReplaceCha, String pErrItem, String pErrFlg)
	{

		// エラーフラグの設定
		// エラーの場合はそのまま設定。　ワーニングの場合はエラーが設定されていない場合、設定
		String errFlg = (String)ccMsg.get("err_flg");

		if("".equals(errFlg) || ERR_FLG_WARNING.equals(errFlg))
		{
			ccMsg.put("err_flg", pErrFlg);
		}

		HashMap<String, Object> messageMap = new HashMap<String, Object>();
		// メッセージIDを設定
		messageMap.put("messageId", pMessageId);
		// 置換文字列
		messageMap.put("replaceCha", pReplaceCha);
		// エラー設定項目
		messageMap.put("errItem", pErrItem);

		ArrayList<HashMap<String, Object>> messageInfo = (ArrayList<HashMap<String, Object>>)ccMsg.get("message_list");
		messageInfo.add(messageMap);

	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData) throws Exception
	{
		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);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		editErrorInfoCom(param, templates, (Integer)return_code, dataMapKey, mappingData);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", return_code.toString(), status);
		}
		return msg;
	}
	
	/**
	 * @param param
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInArrayMsg(IRequestParameterReadWrite param,
													Object[][] mappingData, 
													String inListMsgName, 
													ArrayList<HashMap<String, Object>> inList) 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[] templateArray = template.getCAANMsgList(inListMsgName);
		
		if (templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}
		
		for (int i = 0; i < inList.size(); i++)
		{
			HashMap childMap = (HashMap)inList.get(i);
			CAANMsg childTemplate = templateArray[i];
			if (childTemplate == null)
			{
				/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
				if("ECRA0010001ConditionList".equals(inListMsgName))
				{
					childTemplate = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sConditionList", svcIf));
				}
				else
				{
					childTemplate = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg1List", svcIf));
				}
				/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
			}
			
			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();
				
				if ("".equals(childMap.get(key)))
				{
					childTemplate.setNull(key);
				}
				else
				{
					childTemplate.set(key, (String)childMap.get(key));
				}
			}

			templateArray[i] = childTemplate;
		}
		
		template.set(inListMsgName, templateArray);
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSCArray(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData,
							String inListMsgName, 
							ArrayList<HashMap<String, Object>> inList)throws Exception
	{
		HashMap<String, Object> paramMap = editInArrayMsg(param, mappingData, inListMsgName, inList);
		
		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);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		editErrorInfoComArray(param, templates, (Integer)return_code, dataMapKey, mappingData, inListMsgName, inList);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", return_code.toString(), status);
		}
		return msg;
	}
	
	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoComArray(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey,
														Object[][] mappingData,
														String inListMsgName, 
														ArrayList<HashMap<String, Object>> inList) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			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);
		}

		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(dataMapKey);
		
		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName);
		
		for (int i = 0; i < inList.size(); i++)
		{
			HashMap childMap = (HashMap)inList.get(i);
			CAANMsg childTemplate = templateArray[i];
			
			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();
				/* ++++++++++ v5.00.02 削除開始 ++++++++++ */
				//if ((key).startsWith("key_"))
				//{
				/* ++++++++++ v5.00.02 削除終了 ++++++++++ */
					if (!childTemplate.isNull(key + "_err"))
					{
						if (!inMap.containsKey(key + "_err"))
						{
							inMap.put(key + "_err", childTemplate.getString(key + "_err"));
						}
					}
				/* ++++++++++ v5.00.02 削除開始 ++++++++++ */
				//}
				/* ++++++++++ v5.00.02 削除終了 ++++++++++ */
			}
		}
		
		if (!template.isNull(inListMsgName + "_err"))
		{
			if (!inMap.containsKey(inListMsgName + "_err"))
			{
				inMap.put(inListMsgName + "_err", template.getString(inListMsgName + "_err"));
			}
		}

		return param;
	}
	
	/**
	 * @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
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey,
														Object[][] mappingData) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			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);
		}

		HashMap<String, String> inMap = null;

		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if (!template.isNull(mappingData[i][0] + "_err"))
			{
				if (!inMap.containsKey(mappingData[i][0] + "_err"))
				{
					inMap.put(mappingData[i][0] + "_err", template.getString(mappingData[i][0] + "_err"));
				}
			}
		}
		return param;
	}
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */

	/**
	 * 在庫チェック（不明機器）メソッド<br>
	 * <br>
	 * 
	 * @param ccMsg
	 * @param ekka0020005CBSMsg
	 * @return boolean 在庫が足りる場合：true 在庫が足りない場合：false
	 */
	private boolean isZaikoFumeiKikiCheck(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 機器変更の子画面以外は処理しません。
		if(!SCRN_ID_KKW108.equals(ccMsg.get("check_scrn_id")))
		{
			return true;
		}
		
		// 宅内機器一意照会
		CAANMsg ecra0010001cbsMsg = execECRA0010001(handle, scCall, param, dataMapKey, temporaryData);
		// 宅内機器一意照会結果を格納
		temporaryData.put(TEMPLATE_ID_ECRA0010001, ecra0010001cbsMsg);

		CAANMsg ecra0010001CAANMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_ECRA0010001);

		// ***** EKKA0020005（宅内機器物流在庫一意照会）*****
		Object[][] ekka0020005IN = { { EKKA0020005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020005 }, { EKKA0020005CBSMsg.FUNC_CODE, FUNC_CODE_1 } };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		// ＫＥＹ＿管理場所識別コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, getNullToStr((String)ecra0010001CAANMsg
				.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SKBT_CD)));
		// ＫＥＹ＿管理場所コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, getNullToStr((String)ecra0010001CAANMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_CD)));
		// ＫＥＹ＿管理場所棚コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, getNullToStr((String)ecra0010001CAANMsg
				.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SLF_CD)));
		// ＫＥＹ＿宅内機器型式コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, (String)ccMsg.get("taknkiki_model_cd"));

		inList.add(inMap);

		CAANMsg[] ekka0020005CBSMsg2list = callSCArray(handle, scCall, param, dataMapKey, ekka0020005IN, "EKKA0020005CBSMsg1List", inList)
				.getCAANMsgList(EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);

		if(ekka0020005CBSMsg2list == null || ekka0020005CBSMsg2list.length == 0 || ekka0020005CBSMsg2list.length != inList.size())
		{
			// エラーメッセージを設定
			setMessageInfo(ccMsg, "EKBD070-KW", (String)ccMsg.get("taknkiki_model_cd") + "," + (String)ccMsg.get("kiki_seizo_no"),
					"kiki_model", ERR_FLG_ERR);
			// エラーメッセージを設定
			setMessageInfo(ccMsg, "EKBD070-KW", (String)ccMsg.get("taknkiki_model_cd") + "," + (String)ccMsg.get("kiki_seizo_no"),
					"kiki_seizo_no", ERR_FLG_ERR);

			return false;
		}

		return true;

	}

	/**
	 * 宅内機器一意照会メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param key_taknkiki_model_cd
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execECRA0010001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** ECRA0010001（宅内機器一意照会）*****
		// 機能コード"1"固定
		Object[][] ecra0010001IN = { { ECRA0010001CBSMsg.TEMPLATEID, TEMPLATE_ID_ECRA0010001 }, { ECRA0010001CBSMsg.FUNC_CODE, FUNC_CODE_1 } };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		// ＫＥＹ＿宅内機器型式コード
		inMap.put(ECRA0010001ConditionList.KEY_TK_MDL_CD, (String)ccMsg.get("taknkiki_model_cd"));
		// ＫＥＹ＿機器製造番号
		inMap.put(ECRA0010001ConditionList.KEY_KK_SEIZO_NO, (String)ccMsg.get("kiki_seizo_no"));
		// ＫＥＹ＿宅内機器照会種別コード
		inMap.put(ECRA0010001ConditionList.KEY_STBID, "");
		// ＫＥＹ＿宅内機器照会種別コード
		inMap.put(ECRA0010001ConditionList.KEY_TK_SHOKAI_SBT_CD, "1");
		inList.add(inMap);

		// 宅内機器一意照会
		CAANMsg ecra0010001cbsMsg = callSCArray(handle, scCall, param, dataMapKey, ecra0010001IN, ECRA0010001CBSMsg.ECRA0010001CONDITIONLIST, inList)
				.getCAANMsgList(ECRA0010001CBSMsg.ECRA0010001CBSMSG1LIST)[0];

		return ecra0010001cbsMsg;
	}

	/**
	 * EKKA0020005（宅内機器物流在庫一意照会）メソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getTknKikiButsuryuZaiko(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		CAANMsg ecra0010001CAANMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_ECRA0010001);

		// ***** EKKA0020005（宅内機器物流在庫一意照会）*****
		Object[][] ekka0020005IN = { { EKKA0020005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020005 }, { EKKA0020005CBSMsg.FUNC_CODE, FUNC_CODE_1 } };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		// ＫＥＹ＿管理場所識別コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, getNullToStr((String)ecra0010001CAANMsg
				.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SKBT_CD)));
		// ＫＥＹ＿管理場所コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, getNullToStr((String)ecra0010001CAANMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_CD)));
		// ＫＥＹ＿管理場所棚コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, getNullToStr((String)ecra0010001CAANMsg
				.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SLF_CD)));
		// ＫＥＹ＿宅内機器型式コード
		inMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, (String)ccMsg.get("taknkiki_model_cd"));

		inList.add(inMap);

		CAANMsg[] ekka0020005CBSMsg2list = callSCArray(handle, scCall, param, dataMapKey, ekka0020005IN, "EKKA0020005CBSMsg1List", inList)
				.getCAANMsgList(EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);

		return ekka0020005CBSMsg2list;
	}

	/**
	 * 返却値設定メソッド
	 * 
	 * @param param
	 * @param dataMapKey
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setScrnReturnData3(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		CAANMsg ecra0010001cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_ECRA0010001);

		if(ecra0010001cbsMsg != null)
		{
			ccMsg.put("zaiko_knri_plc_skbt_cd", getNullToStr((String)ecra0010001cbsMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SKBT_CD)));
			ccMsg.put("zaiko_knri_plc_cd", getNullToStr((String)ecra0010001cbsMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_CD)));
			ccMsg.put("zaiko_knri_plc_slf_cd", getNullToStr((String)ecra0010001cbsMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SLF_CD)));
		}
		else
		{
			ccMsg.put("zaiko_knri_plc_skbt_cd", "");
			ccMsg.put("zaiko_knri_plc_cd", "");
			ccMsg.put("zaiko_knri_plc_slf_cd", "");
		}

	}

	/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
//	/**
//	 * 機器出荷情報更新を実行します。 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @throws Exception
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEDKA0010003(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData) throws Exception
//	{
//
//		CAANMsg ekk0341a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0341A010);
//		CAANMsg ecra0010001CAANMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_ECRA0010001);
//
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		// ***** EDKA0010003（機器出荷情報更新）*****
//		Object[][] edka0010003IN = { { EDKA0010003CBSMsg.TEMPLATEID, TEMPLATE_ID_EDKA0010003 },
//				{ EDKA0010003CBSMsg.FUNC_CODE, (String)ccMsg.get("func_code") } };
//
//		// 検索データを格納します。
//		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
//
//		// 機器情報更新
//		HashMap<String, Object> inMap = new HashMap<String, Object>();
//
//		// ＫＥＹ＿宅内機器型式コード
//		inMap.put(EDKA0010003CBSMsg1List.KEY_TK_MDL_CD, (String)ccMsg.get("taknkiki_model_cd"));
//		// ＫＥＹ＿機器製造番号
//		inMap.put(EDKA0010003CBSMsg1List.KEY_KK_SEIZO_NO, (String)ccMsg.get("kiki_seizo_no"));
//		// 所有コード
//		inMap.put(EDKA0010003CBSMsg1List.SHOYU_CD, "1");
//		// 機器提供種別コード
//		inMap.put(EDKA0010003CBSMsg1List.KKTK_SBT_CD, getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD)));
//		// 設置場所番号
//		inMap.put(EDKA0010003CBSMsg1List.SETPLACE_NO, getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO)));
//		// サービス契約番号
//		inMap.put(EDKA0010003CBSMsg1List.SVC_KEI_NO, (String)ccMsg.get("svc_kei_no"));
//		// 管理場所識別コード
//		inMap.put(EDKA0010003CBSMsg1List.KNRI_PLC_SKBT_CD,
//				getNullToStr((String)ecra0010001CAANMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SKBT_CD)));
//		// 管理場所コード
//		inMap.put(EDKA0010003CBSMsg1List.KNRI_PLC_CD, getNullToStr((String)ecra0010001CAANMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_CD)));
//		// 管理場所棚コード
//		inMap.put(EDKA0010003CBSMsg1List.KNRI_PLC_SLF_CD, getNullToStr((String)ecra0010001CAANMsg.getString(ECRA0010001CBSMsg1List.KNRI_PLC_SLF_CD)));
//		// 実在庫数
//		inMap.put(EDKA0010003CBSMsg1List.JZAIKO_NUM, "-1");
//		// 配送受付(受注)数
//		inMap.put(EDKA0010003CBSMsg1List.HAISO_UK_JUCHU_NUM, "0");
//		// 当日配送出荷数
//		inMap.put(EDKA0010003CBSMsg1List.TJITU_HAISO_SHKA_NUM, "0");
//
//		inList.add(inMap);
//
//		callSCArray(handle, scCall, param, dataMapKey, edka0010003IN, EDKA0010003CBSMsg.EDKA0010003CBSMSG1LIST, inList);
//	}
	/* ++++++++++ v5.00.01 削除終了 ++++++++++ */
	/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
}