/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JFUFrntHisukZkup
 *   ソースファイル名：JFUFrntHisukZkup.java
 *   作成者          ：富士通
 *   日付            ：2013年02月15日
 *＜機能概要＞
 *   Web受付機器受注数連携部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v5.00       2013/02/15   FJ）中谷    新規作成【ANK-1398-00-00】フロントSでの機器受注時の在庫件数処理追加
 *   v5.00       2013/11/14   FJ）中谷    変更【OM-2013-0004319】宅内在庫更新連携不備対応
 *   
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0341B029CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B029CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg2List;
import eo.ejb.cbs.cbsmsg.EKKA0020504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020504CBSMsg1List;

/**
 * Web受付機器受注数連携部品です。
 * 
 * <br>
 * 
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUWebKikiRnkiCC extends JFUBaseNetChgCommonCC
{

	/** IN項目:機能コード */
	private static final String IN_PARAM_FUNC_CD = "func_code";
	/** IN項目:機器提供サービス契約番号 */
	private static final String IN_PARAM_KKTK_SVC_KEI_NO = "kktk_svc_kei_no";
	/** IN項目:機器変更番号 */
	private static final String IN_PARAM_KIKI_CHG_NO = "kiki_chg_no";
	/** IN項目:配送受付在庫更新種別コード */
	private static final String IN_PARAM_HISUK_ZKUP_SBT_CD = "hisuk_zkup_sbt_cd";
	
	/** OUT項目:在庫有無 */
	private static final String OUT_PARAM_ZK_UM = "zk_um";
	/** OUT項目:エラーレベル */
	private static final String OUT_PARAM_ERROR_LEVEL = "error_level";
	/** OUT項目:リターンコード */
	private static final String OUT_PARAM_RETURN_CD = "return_Cd";
	/** OUT項目:リターンメッセージ */
	private static final String OUT_PARAM_RETURN_MESSAGE = "return_Message";

	/** 関連チェックでエラー発生 */
	public static final int RELATION_ERR = 1100;

	/** エラーレベル(000:正常) */
	private static final String ERROR_LEVEL_000 = "000";
	/** エラーレベル(400:排他) */
	private static final String ERROR_LEVEL_400 = "400";
	/** エラーレベル(444:異常) */
	private static final String ERROR_LEVEL_444 = "444";
	/** エラーレベル(999:システムエラー) */
	private static final String ERROR_LEVEL_999 = "999";
	/** リターンコード(1:異常) */
	private static final String RETURN_CD_1 = "1";

	/* ■□ 宅内機器物流在庫一意照会SC ■□ */
	/** テンプレートID(宅内機器物流在庫一意照会) */
	private static final String TEMPLATE_ID_1 = "EKKA0020005";
	/** テンプレートID(宅内機器物流在庫一意照会明細リスト) */
	private static final List<String> TEMPLATE_ID_1_DETAIL_LIST =
			Arrays.asList(EKKA0020005CBSMsg.EKKA0020005CBSMSG1LIST, EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);
	/** IN項目リスト(宅内機器物流在庫一意照会) */
	private static final List<String> IN_COLUMN_LIST_1 = new ArrayList();
	/** IN項目リスト(宅内機器物流在庫一意照会・明細部) */
	private static final List<String> IN_COLUMN_LIST_1_DETAIL =
			Arrays.asList(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD,
					EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, EKKA0020005CBSMsg1List.KEY_GDS_STAT_CD);
	/** 関連チェックエラー項目(宅内機器物流在庫一意照会) */
	private static final String ERROR_COLUMN_1 = EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD_ERR;
	/** SC実行結果取得キー(宅内機器物流在庫一意照会) */
	private static final String TEMP_TEMPLATE_KEY_1 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_1 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 宅内機器物流在庫更新SC ■□ */
	/** テンプレートID(宅内機器物流在庫更新) */
	private static final String TEMPLATE_ID_2 = "EKKA0020504";
	/** テンプレートID(宅内機器物流在庫更新明細リスト) */
	private static final List<String> TEMPLATE_ID_2_DETAIL_LIST = Arrays.asList(EKKA0020504CBSMsg.EKKA0020504CBSMSG1LIST);
	/** IN項目リスト(宅内機器物流在庫更新) */
	private static final List<String> IN_COLUMN_LIST_2 = new ArrayList();
	/** IN項目リスト(宅内機器物流在庫更新・明細部) */
	private static final List<String> IN_COLUMN_LIST_2_DETAIL =
			Arrays.asList(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, EKKA0020504CBSMsg1List.KEY_KNRI_PLC_CD,
					EKKA0020504CBSMsg1List.KEY_KNRI_PLC_SLF_CD, EKKA0020504CBSMsg1List.KEY_TK_MDL_CD, EKKA0020504CBSMsg1List.JZAIKO_NUM,
					EKKA0020504CBSMsg1List.HAISO_UK_JUCHU_NUM, EKKA0020504CBSMsg1List.HAISO_SHKA_SJI_NUM, EKKA0020504CBSMsg1List.YBKKHAI_SJI_NUM,
					EKKA0020504CBSMsg1List.SLF_MV_SJI_NUM, EKKA0020504CBSMsg1List.YBKKHAI_CHU_NUM, EKKA0020504CBSMsg1List.TJITU_NYUKA_NUM,
					EKKA0020504CBSMsg1List.TJITU_HAISO_SHKA_NUM, EKKA0020504CBSMsg1List.TJITU_DSL_TK_HMPIN_NUM,
					EKKA0020504CBSMsg1List.TJITU_TRB_KOKAN_HMPIN_NUM, EKKA0020504CBSMsg1List.SLF_MV_NYUKA_FIN_NUM,
					EKKA0020504CBSMsg1List.SLF_MV_SHKA_FIN_NUM, EKKA0020504CBSMsg1List.YOBI_KKSHKA_FIN_NUM, EKKA0020504CBSMsg1List.PLN_GAI_NYUKA_NUM,
					EKKA0020504CBSMsg1List.PLN_GAI_SHKA_NUM);
	/** 関連チェックエラー項目(宅内機器物流在庫更新) */
	private static final String ERROR_COLUMN_2 = null;
	/** SC実行結果取得キー(宅内機器物流在庫更新) */
	private static final String TEMP_TEMPLATE_KEY_2 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_2 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 機器提供サービス契約一覧照会（機器変更番号）SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final String TEMPLATE_ID_3 = "EKK0341B029";
	/** テンプレートID(機器提供サービス契約一覧照会（機器変更番号）明細) */
	private static final String TEMPLATE_ID_3_DETAIL = EKK0341B029CBSMsg.EKK0341B029CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final List<String> IN_COLUMN_LIST_3 = Arrays.asList(EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO, EKK0341B029CBSMsg.KEY_KIKI_CHG_NO);
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final String ERROR_COLUMN_3 = EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(機器提供サービス契約一覧照会（機器変更番号）) */
	private static final String TEMP_TEMPLATE_KEY_3 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_3 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/**
	 * Web受付機器受注数連携処理を行います。
	 * 
	 * <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	public IRequestParameterReadWrite cngZaiko(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		HashMap inMap = null;
		String inMapFuncCd = null;

		try
		{
			// ユーザデータ取得
			inMap = (HashMap)param.getData(fixedText);
			// IN項目:機能コード
			inMapFuncCd = (String)inMap.get(IN_PARAM_FUNC_CD);

			// IN項目:機器提供サービス契約番号
			String inMapKktkSvcKeiNo = (String)inMap.get(IN_PARAM_KKTK_SVC_KEI_NO);
			// IN項目:機器変更番号
			String inMapKikiChgNo = (String)inMap.get(IN_PARAM_KIKI_CHG_NO);
			// IN項目:配送受付在庫更新種別コード 
			String inMapHisukZkupSbtCd = (String)inMap.get(IN_PARAM_HISUK_ZKUP_SBT_CD);
			
			// ●機器提供サービス契約一覧照会（機器変更番号）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_3);
			// 上りマッピング
			setInMapKikiSearch(param, fixedText, inMapKktkSvcKeiNo, inMapKikiChgNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_3, TEMPLATE_ID_3_DETAIL, IN_COLUMN_LIST_3, ERROR_COLUMN_3);
			// 機器情報
			HashMap kikiInfoMap = getTemplateListMap(inMap, TEMP_TEMPLATE_KEY_3, TEMPLATE_ID_3_DETAIL, JFUStrConst.I_ZERO);

			// 機能コード(1:登録)
			if (JPCModelConstant.FUNC_CD_1.equals(inMapFuncCd))
			{
				// ●宅内機器物流在庫更新
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_2);
				// 検索エラーなし設定(API呼出の為、設定する。)
				ignoreSearchError(param, fixedText);
				// 上りマッピング
				setInMapTaknkikiZaikoUpd(param, fixedText, kikiInfoMap, inMapHisukZkupSbtCd);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_2, TEMPLATE_ID_2_DETAIL_LIST, IN_COLUMN_LIST_2, ERROR_COLUMN_2);

				// OUT項目:エラーレベル
				String errorLevel = getTemplateValue(inMap, TEMP_TEMPLATE_KEY_2, EKKA0020504CBSMsg.ERROR_LEVEL);
				inMap.put(OUT_PARAM_ERROR_LEVEL, JFUBPCommon.isNull(errorLevel) ? ERROR_LEVEL_000 : errorLevel);

				// OUT項目:リターンコード
				inMap.put(OUT_PARAM_RETURN_CD, getTemplateValue(inMap, TEMP_TEMPLATE_KEY_2, EKKA0020504CBSMsg.RETURN_CD));
				// OUT項目:リターンメッセージ
				inMap.put(OUT_PARAM_RETURN_MESSAGE, getTemplateValue(inMap, TEMP_TEMPLATE_KEY_2, EKKA0020504CBSMsg.RETURN_MESSAGE));
			}
			// 機能コード(2:チェック)
			else if (JPCModelConstant.FUNC_CD_2.equals(inMapFuncCd))
			{
				// ●宅内機器物流在庫一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_1);
				// 検索エラーなし設定
				ignoreSearchError(param, fixedText);
				// 上りマッピング
				setInMapTaknkikiZaikoSearch(param, fixedText, kikiInfoMap);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_1, TEMPLATE_ID_1_DETAIL_LIST, IN_COLUMN_LIST_1, ERROR_COLUMN_1);

				// 在庫データが存在した場合
				if (isExistsTemplateDetail(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL_LIST.get(JFUStrConst.I_ONE)))
				{
					// 在庫情報
					HashMap zkMap =
							getTemplateListMap(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL_LIST.get(JFUStrConst.I_ONE), JFUStrConst.I_ZERO);

					// 実在庫数
					long jaikoCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.JZAIKO_CNT));
					// 配送受付（受注）数
					long haisoUkJuchuCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.HAISO_UK_JUCHU_CNT));
					// 配送出荷指示数
					long haisoShkaSjiCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.HAISO_SHKA_SJI_CNT));
					// 棚移動指示数
					long shelfMvSjiCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.SHELF_MV_SJI_CNT));
					// 予備機器配送指示数
					long ybkikiHaisoSjiCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.YBKIKI_HAISO_SJI_CNT));
					// 予備機器配送中数
					long ybkikiHaisoChuCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.YBKIKI_HAISO_CHU_CNT));
					// 予備機器出荷完了数
					long ybkikiShkaFinCnt = Long.parseLong((String)zkMap.get(EKKA0020005CBSMsg2List.YBKIKI_SHKA_FIN_CNT));

					// 在庫数算出
					long zaikoCnt =
							jaikoCnt - (haisoUkJuchuCnt + haisoShkaSjiCnt + shelfMvSjiCnt + ybkikiHaisoSjiCnt + ybkikiHaisoChuCnt + ybkikiShkaFinCnt);

					// 在庫有
					if (zaikoCnt > JFUStrConst.I_ZERO)
					{
						// OUT項目:在庫有無
						inMap.put(OUT_PARAM_ZK_UM, JFUStrConst.CD00002_1);
					}
					// 在庫無し
					else
					{
						// OUT項目:在庫有無
						inMap.put(OUT_PARAM_ZK_UM, JFUStrConst.CD00002_0);
					}

				}
				// 在庫データなし
				else
				{
					// OUT項目:在庫有無
					inMap.put(OUT_PARAM_ZK_UM, null);
				}

				// OUT項目:エラーレベル
				String errorLevel = getTemplateValue(inMap, TEMP_TEMPLATE_KEY_1, EKKA0020005CBSMsg.ERROR_LEVEL);
				inMap.put(OUT_PARAM_ERROR_LEVEL, JFUBPCommon.isNull(errorLevel) ? ERROR_LEVEL_000 : errorLevel);

				// OUT項目:リターンコード
				inMap.put(OUT_PARAM_RETURN_CD, getTemplateValue(inMap, TEMP_TEMPLATE_KEY_1, EKKA0020005CBSMsg.RETURN_CD));
				// OUT項目:リターンメッセージ
				inMap.put(OUT_PARAM_RETURN_MESSAGE, getTemplateValue(inMap, TEMP_TEMPLATE_KEY_1, EKKA0020005CBSMsg.RETURN_MESSAGE));
			}
		}
		catch (SCCallException e)
		{
			// 宅内機器物流在庫更新(機能コード1)の場合、
			if (JPCModelConstant.FUNC_CD_1.equals(inMapFuncCd) && RELATION_ERR == e.getStatusCD())
			{
				// OUT項目:エラーレベル
				inMap.put(OUT_PARAM_ERROR_LEVEL, ERROR_LEVEL_400);
			}
			else
			{

				// OUT項目:エラーレベル
				inMap.put(OUT_PARAM_ERROR_LEVEL, ERROR_LEVEL_444);
				// OUT項目:リターンコード
				inMap.put(OUT_PARAM_RETURN_CD, RETURN_CD_1);
				// OUT項目:リターンメッセージ
				inMap.put(OUT_PARAM_RETURN_MESSAGE, e.getMessage() + "(" + e.getErrorLevel() + ":" + e.getStatusCD() + ")");

				throw e;
			}
		}
		catch (CCException e)
		{
			// OUT項目:エラーレベル
			inMap.put(OUT_PARAM_ERROR_LEVEL, ERROR_LEVEL_444);
			// OUT項目:リターンコード
			inMap.put(OUT_PARAM_RETURN_CD, RETURN_CD_1);
			// OUT項目:リターンメッセージ
			inMap.put(OUT_PARAM_RETURN_MESSAGE, e.getMessage() + "(" + e.getErrorLevel() + ")");

			throw e;
		}
		catch (Throwable e)
		{
			// OUT項目:エラーレベル
			inMap.put(OUT_PARAM_ERROR_LEVEL, ERROR_LEVEL_999);
			// OUT項目:リターンコード
			inMap.put(OUT_PARAM_RETURN_CD, RETURN_CD_1);
			// OUT項目:リターンメッセージ
			inMap.put(OUT_PARAM_RETURN_MESSAGE, e.getMessage());

			throw e;
		}
		finally
		{
			// 一時領域削除
			super.deleteTempArea(param, fixedText);
		}
		return param;
	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約一覧照会（機器変更番号）)を行います。
	 * 
	 * <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kikiChgNo 機器変更番号
	 * @throws RequestParameterException
	 */
	private void setInMapKikiSearch(IRequestParameterReadWrite param, String fixedText, String kktkSvcKeiNo, String kikiChgNo)
			throws RequestParameterException
	{
		// 機能コード設定(1:世代の最大)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿機器提供サービス契約番号
		inMap.put(EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		// ＫＥＹ＿機器変更番号
		inMap.put(EKK0341B029CBSMsg.KEY_KIKI_CHG_NO, kikiChgNo);
	}

	/**
	 * 上りマッピング項目設定(宅内機器物流在庫一意照会)を行います。
	 * 
	 * <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kikiChgNo 機器変更番号
	 * @throws RequestParameterException
	 */
	private void setInMapTaknkikiZaikoSearch(IRequestParameterReadWrite param, String fixedText, HashMap kikiInfoMap)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		ArrayList list = new ArrayList();
		HashMap childMap = new HashMap();

		for (String key : IN_COLUMN_LIST_1_DETAIL)
		{
			childMap.put(key, null);
		}

		// 機器情報リスト
		List<String> kikiInfoList = getKikiInfoList(kikiInfoMap);

		// ＫＥＹ＿管理場所識別コード
		childMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, kikiInfoList.get(JFUStrConst.I_ZERO));
		// ＫＥＹ＿管理場所コード
		childMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, kikiInfoList.get(JFUStrConst.I_ONE));
		// ＫＥＹ＿管理場所棚コード
		String knriPlcSlfCd = kikiInfoList.get(JFUStrConst.I_TWO);
		childMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, knriPlcSlfCd);
		// ＫＥＹ＿宅内機器型式コード
		childMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, kikiInfoMap.get(EKK0341B029CBSMsg1List.TAKNKIKI_MODEL_CD));

		// ＫＥＹ＿商品状態コード
		if (JFUStrConst.CD00544_005.equals(knriPlcSlfCd))
		{
			// 棚コードが「返品棚」の場合
			childMap.put(EKKA0020005CBSMsg1List.KEY_GDS_STAT_CD, JFUStrConst.CD00274_1);
		}
		else
		{
			// 棚コードが「返品棚」以外の場合
			childMap.put(EKKA0020005CBSMsg1List.KEY_GDS_STAT_CD, null);
		}

		list.add(childMap);

		inMap.put(EKKA0020005CBSMsg.EKKA0020005CBSMSG1LIST, list);

	}

	/**
	 * 上りマッピング項目設定(宅内機器物流在庫更新)を行います。
	 * 
	 * <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kikiChgNo 機器変更番号
	 * @param hisukZkupSbtCd 配送受付在庫更新種別コード
	 * @throws RequestParameterException
	 */
	private void setInMapTaknkikiZaikoUpd(IRequestParameterReadWrite param, String fixedText, HashMap kikiInfoMap, String hisukZkupSbtCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		ArrayList list = new ArrayList();
		HashMap childMap = new HashMap();

		for (String key : IN_COLUMN_LIST_2_DETAIL)
		{
			childMap.put(key, null);
		}

		// 機器情報リスト
		List<String> kikiInfoList = getKikiInfoList(kikiInfoMap);

		// ＫＥＹ＿管理場所識別コード
		childMap.put(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, kikiInfoList.get(JFUStrConst.I_ZERO));
		// ＫＥＹ＿管理場所コード
		childMap.put(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_CD, kikiInfoList.get(JFUStrConst.I_ONE));
		// ＫＥＹ＿管理場所棚コード
		childMap.put(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_SLF_CD, kikiInfoList.get(JFUStrConst.I_TWO));
		// ＫＥＹ＿宅内機器型式コード
		childMap.put(EKKA0020504CBSMsg1List.KEY_TK_MDL_CD, kikiInfoMap.get(EKK0341B029CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 実在庫数
		childMap.put(EKKA0020504CBSMsg1List.JZAIKO_NUM, JFUStrConst.S_ZERO);
		
		// 配送受付（受注）数
		if(JFUStrConst.CD01617_1.equals(hisukZkupSbtCd)){
			childMap.put(EKKA0020504CBSMsg1List.HAISO_UK_JUCHU_NUM, JFUStrConst.S_ONE);
		} else {
			childMap.put(EKKA0020504CBSMsg1List.HAISO_UK_JUCHU_NUM, JFUStrConst.S_MINUS_ONE);
		}
		
		// 配送出荷指示数
		childMap.put(EKKA0020504CBSMsg1List.HAISO_SHKA_SJI_NUM, JFUStrConst.S_ZERO);
		// 予備機器配送指示数
		childMap.put(EKKA0020504CBSMsg1List.YBKKHAI_SJI_NUM, JFUStrConst.S_ZERO);
		// 棚移動指示数
		childMap.put(EKKA0020504CBSMsg1List.SLF_MV_SJI_NUM, JFUStrConst.S_ZERO);
		// 予備機器配送中数
		childMap.put(EKKA0020504CBSMsg1List.YBKKHAI_CHU_NUM, JFUStrConst.S_ZERO);
		// 当日入荷数
		childMap.put(EKKA0020504CBSMsg1List.TJITU_NYUKA_NUM, JFUStrConst.S_ZERO);
		// 当日配送出荷数
		childMap.put(EKKA0020504CBSMsg1List.TJITU_HAISO_SHKA_NUM, JFUStrConst.S_ZERO);
		// 当日解約撤去返品数
		childMap.put(EKKA0020504CBSMsg1List.TJITU_DSL_TK_HMPIN_NUM, JFUStrConst.S_ZERO);
		// 当日故障交換返品数
		childMap.put(EKKA0020504CBSMsg1List.TJITU_TRB_KOKAN_HMPIN_NUM, JFUStrConst.S_ZERO);
		// 棚移動入荷完了数
		childMap.put(EKKA0020504CBSMsg1List.SLF_MV_NYUKA_FIN_NUM, JFUStrConst.S_ZERO);
		// 棚移動出荷完了数
		childMap.put(EKKA0020504CBSMsg1List.SLF_MV_SHKA_FIN_NUM, JFUStrConst.S_ZERO);
		// 予備機器出荷完了数
		childMap.put(EKKA0020504CBSMsg1List.YOBI_KKSHKA_FIN_NUM, JFUStrConst.S_ZERO);
		// 計画外入荷数
		childMap.put(EKKA0020504CBSMsg1List.PLN_GAI_NYUKA_NUM, JFUStrConst.S_ZERO);
		// 計画外出荷数
		childMap.put(EKKA0020504CBSMsg1List.PLN_GAI_SHKA_NUM, JFUStrConst.S_ZERO);
		list.add(childMap);

		inMap.put(EKKA0020504CBSMsg.EKKA0020504CBSMSG1LIST, list);

	}

	/**
	 * 機器情報リストを返却します。
	 * 
	 * <br>
	 * 
	 * @param kikiInfoMap 機器情報マップ
	 * @return 機器情報リスト([0]:管理場所識別コード,[1]:管理場所コード,[2]:管理場所棚コード)
	 */
	private List<String> getKikiInfoList(HashMap kikiInfoMap)
	{
		List<String> kikiInfoList = new ArrayList<String>();

		// 管理場所識別コード
		String kikiStiJiKriplaceSkcd = (String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD);
		String knriPlcSkbtCd = JFUBPCommon.isNull(kikiStiJiKriplaceSkcd) ? JFUStrConst.CD01527_1 : kikiStiJiKriplaceSkcd;

		// 管理場所識別コードを設定
		kikiInfoList.add(knriPlcSkbtCd);

		// 倉庫
		if (JFUStrConst.CD01527_1.equals(knriPlcSkbtCd))
		{
			// 機器引当指定倉庫コードを設定
			kikiInfoList.add((String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD));
			// 機器引当指定倉庫棚コードを設定
			kikiInfoList.add((String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD));
		}
		// 工事会社
		else if (JFUStrConst.CD01527_2.equals(knriPlcSkbtCd))
		{
			// 機器指定時工事会社コードを設定
			kikiInfoList.add((String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_STI_JI_KOCOMP_CD));
			// 機器指定時工事会社棚コードを設定
			kikiInfoList.add((String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD));
		}
		// 預託先オフィス
		else if (JFUStrConst.CD01527_3.equals(knriPlcSkbtCd))
		{
			// 機器指定時預託先オフィスコードを設定
			kikiInfoList.add((String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD));
			// 機器指定時預託先オフィス棚コードを設定
			kikiInfoList.add((String)kikiInfoMap.get(EKK0341B029CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD));
		}
		return kikiInfoList;
	}
}
