/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKKojiInfoServerChkCC
*	ソースファイル名：JKKKojiInfoServerChkCC.java
*	作成者			：FJ
*	日付			：2012年04月22日
*＜機能概要＞
*	工事案件関連チェック処理の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/04/22	FJ			新規作成
*	v4.00.00	2012/09/05  FJ）中井	【ANK-0546-00-00】対応
*	v4.00.01	2012/10/09  FJ）中井	【ANK-1200-00-00】対応
*	v4.00.02	2012/11/03  FJ）中井	【ANK-1225-00-00】対応
*	v4.00.03	2013/01/30	 FJ）中井	【IT1-2013-0000171】対応
*	v4.00.04	2013/02/04	 FJ）中井	【IT2-2013-0000021】対応
*	v4.00.05	2013/02/18	FJ)古内		【OT-2013-0000136】対応
*	v5.00.00	2013/02/15	 FJ）中井	【ANK-1356-00-00】対応
*	v5.00.01	2013/04/03	 FJ）中井	【IT1-2013-0000732】対応
*	v5.00.02	2013/04/19	 FJ）中井	【IT2-2013-0000381】対応
*	v5.00.03	2013/05/04	FJ）中井	【IT1-2013-0001141】対応
*	v5.00.04	2013/05/10	FJ）中井	【IT1-2013-0001193】対応
*	v5.00.05	2013/06/15	FJ）中井	【ANK-1537-00-00】対応
*	v5.00.06	2013/07/01	FJ）中井	【IT1-2013-0001329】対応
*   v5.00.07	2013/07/29	 FJ) 中井	【LT-2013-0000676】対応
*   v5.00.08	2013/08/09	 FJ) 中井	【OT-2013-0000706】対応
*   v5.00.09	2013/08/22	 FJ) 中井	【OM-2013-0000582】対応
*   v5.00.10	2013/08/29	 FJ) 中井	【OM-2013-0001223】対応
*   v5.00.11	2013/08/29	 FJ) 中井	【OM-2013-0001594】対応
*   v7.00.00	2013/11/22	 FJ) 中井	【ANK-1578-00-00】対応
*   v6.00.00	2013/12/13	 FJ) 中井	【OM-2013-0004733】対応
*   v7.00.01	2014/01/29	 FJ) 中井	【IT1-2014-0000050】対応
*  v20.00.00    2015/12/08   FJ) 星野   【IT1-2015-0000147】対応
*  v29.00.00    2017/03/09   FJ) 中山   【OM-2016-0001967】EG切替中の撤去抑止対応
*  v31.00.00    2018/08/07   FJ) 三原   【IT1-2018-0000105】設備流用エラーメッセージ方法
*	v52.00.00   2021/01/17  FJ)星野 	【ANK-3910-00-00】定額サービスリース品追加対応
*  v75.00.00	2025/04/23	FJ)柴田	    【ANK-4673-00-00】テレビ新コース（スカパー用）導入対応　2025年6月フォロー案件
**********************************************************************/
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.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JPCUtilCommon;
import eo.ejb.cbm.entity.KU0011ETMsg;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021C040CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B007CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B007CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0801A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0801A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1951B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2011B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2011B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2541B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2541B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2601B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2601B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020005CBSMsg2List;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011B030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B030CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0021B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0021B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0171A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;
import eo.ejb.common.JKKModelCommon;


/**
 * 工事案件関連チェック処理を行います。<p>
 * <BR>
 * @author 富士通
 */
public class JKKKojiInfoServerChkCC extends AbstractCommonComponent
{
	/** テンプレートID(EKK0251B003) サービス契約回線内訳一覧照会（現在利用中）*/
	private static final String TEMPLATE_ID_EKK0251B003 = "EKK0251B003";
	/** テンプレートID(EKK0081B007) 回線利用中サービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0081B007 = "EKK0081B007";
	/** テンプレートID(EKK1091B001) 進捗一覧照会 */
//	private static final String TEMPLATE_ID_EKK1091B001 = "EKK1091B001";
	/** テンプレートID(EKU0081B010) サービス契約_工事案件一覧照会 */
//	private static final String TEMPLATE_ID_EKU0081B010 = "EKU0081B010";
	/** テンプレートID(EKK0021B001) 申込書番号指定一覧照会 */
	private static final String TEMPLATE_ID_EKK0021B001 = "EKK0021B001";
	/** テンプレートID(EKK0021B503) 申込書明細番号件数一覧照会 */
//	private static final String TEMPLATE_ID_EKK0021B503 = "EKK0021B503";
	// ANK-4673-00-00 ADD START
	/** テンプレートID(EKU0011A010) 工事案件一意照会 */
	private static final String TEMPLATE_ID_EKU0011A010 = "EKU0011A010";
	// ANK-4673-00-00 ADD END
	/** テンプレートID(EKK0801A010) 料金コース_機器提供サービス一意照会 */
	private static final String TEMPLATE_ID_EKK0801A010 = "EKK0801A010";
	/** テンプレートID(EKK0341B022) サービス対象機器提供サービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0341B022 = "EKK0341B022";
	/** テンプレートID(EDK0451A010) 引当棚一意照会 */
	private static final String TEMPLATE_ID_EDK0451A010 = "EDK0451A010";
	/** テンプレートID(EKKA0020005) 宅内機器物流在庫一意照会 */
	private static final String TEMPLATE_ID_EKKA0020005 = "EKKA0020005";
	/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
	/** テンプレートID(EKK2541B002) 割賦契約履歴一覧照会 */
	private static final String TEMPLATE_ID_EKK2541B002 = "EKK2541B002";
	/** テンプレートID(EKK2601B001) 主要項目削除実績一覧照会 */
	private static final String TEMPLATE_ID_EKK2601B001 = "EKK2601B001";
	/** テンプレートID(ETU0021B010) 同番移転一覧照会 */
	private static final String TEMPLATE_ID_ETU0021B010 = "ETU0021B010";
	/** テンプレートID(EKK1681B001) 異動予約一覧照会 */
	private static final String TEMPLATE_ID_EKK1681B001 = "EKK1681B001";
	/** テンプレートID(EZM0411A010) 宅内機器型式一意照会 */
	private static final String TEMPLATE_ID_EZM0411A010 = "EZM0411A010";
	/** テンプレートID(EKK2011B001) 住所変更申込一時保存一覧照会 */
	private static final String TEMPLATE_ID_EKK2011B001 = "EKK2011B001";
	/** テンプレートID(EKK1951B001) 住所変更申込電話番号一時保存一覧照会 */
	private static final String TEMPLATE_ID_EKK1951B001 = "EKK1951B001";
	/** テンプレートID(EZM0171A010) コード名称管理一意照会 */
	private static final String TEMPLATE_ID_EZM0171A010 = "EZM0171A010";
	/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v5.00.04 追加開始 ++++++++++ */
	/** テンプレートID(EKK0021A010) 申込明細一意照会 */
	private static final String TEMPLATE_ID_EKK0021A010 = "EKK0021A010";
	/** テンプレートID(EKK0021C040) 申込明細情報変更 */
	private static final String TEMPLATE_ID_EKK0021C040 = "EKK0021C040";
	/** テンプレートID(EKK0011A010) 申込一意照会 */
	private static final String TEMPLATE_ID_EKK0011A010 = "EKK0011A010";
	/** テンプレートID(EKK0011C020) 申込内容変更 */
	private static final String TEMPLATE_ID_EKK0011C020 = "EKK0011C020";
		
	/* ++++++++++ v5.00.04 追加終了 ++++++++++ */
	 /** テンプレートID(EKK0241B003)回線対象サービス契約一覧照会（サービス契約番号 */
//	private static final String TEMPLATE_ID_EKK0241B003 = "EKK0241B003";
	/** テンプレートID(EKK0241B002)サービス契約_工事案件一覧照会(基本工事取得) */
//	private static final String TEMPLATE_ID_EKU0081B020 = "EKU0081B020";
	/** * テンプレートID(EKK0081A010)サービス契約一意照会 */
//	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/* ++++++++++ v5.00.07 追加開始 ++++++++++ */
	/** サービス別宅内機器型式候補一覧照会 */
//	private static final String TEMPLATE_ID_EKK1861B001 = "EKK1861B001";
	/* ++++++++++ v5.00.07 追加終了 ++++++++++ */
	/** 業務パラメータ管理一意照会 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
//OM-2016-0001967 ADD START
	/** 工事案件一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKU0011B030 = "EKU0011B030";
//OM-2016-0001967 ADD END
	
	/** 機能コード（チェックのみ） */
	private static final String FUNC_CODE_2 = "2";
	
	/** エラーフラグ（エラー）*/
	private static final String ERR_FLG_ERR = "E";
	/** エラーフラグ（ワーニング）*/
	private static final String ERR_FLG_WARNING = "W";
	
	/** 異動区分(E-PON→GE-PON設備切替) */
	private static final String IDO_DIV_VALUE_00067 = "00067";
	/** 異動区分(撤去（解約）) */
	private static final String IDO_DIV_VALUE_00006 = "00006";
	/** 異動区分(移設工事) */
	private static final String IDO_DIV_VALUE_00021 = "00021";
	/** 異動区分(eoテレビ変更) */
	private static final String IDO_DIV_VALUE_00018 = "00018";
	/** 異動区分(光電話・宅内工事設定) */
	private static final String IDO_DIV_VALUE_00022 = "00022";
	/** 異動区分(登録内容修正) */
	private static final String IDO_DIV_VALUE_00032 = "00032";
	/** 異動区分(工事情報訂正) */
	private static final String IDO_DIV_VALUE_00035 = "00035";
	/* ++++++++++ v5.00.03 追加開始 ++++++++++ */
	/** 異動区分(コース変更) */
//	private static final String IDO_DIV_VALUE_00009 = "00009";
	/* ++++++++++ v5.00.03 追加終了 ++++++++++ */
	/** PON種別コード（GE-PON）*/
	private static final String PON_SBT_CD = "2";
	/** 料金グループコード(ｅｏ光ネットマンションホームタイプ) */
	private static final String PRC_GRP_CD_02 = "02";
	/** 料金グループコード(ｅｏ光ネットマンションメゾンタイプ) */
	private static final String PRC_GRP_CD_03 = "03";
	/** 料金グループコード(ｅｏ光ネットマンションマンションタイプ) */
	private static final String PRC_GRP_CD_04 = "04";
	/** 料金グループコード(ｅｏ光電話) */
	private static final String PRC_GRP_CD_10 = "10";
	/** 工事案件ステータス(工事完了済) */
//	private static final String KOJIAK_STAT_200 = "200";
	
	/** 機器提供サービスコード(ＢＢＲ) */
	private static final String KKTK_SVC_CD_C014 = "C014";
	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/** 機器提供サービスコード(多機能ＢＢＲ) */
	private static final String KKTK_SVC_CD_C024 = "C024";
	/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
	/** 機器提供サービスコード(ＰＬＣモデム) */
	private static final String KKTK_SVC_CD_C015 = "C015";
	/** 機器提供サービスコード(ＶＡ) */
	private static final String KKTK_SVC_CD_C004 = "C004";
	
	/** 機器提供サービス契約ステータス(受付済,照査済,締結済,サービス提供中,契約変更中,休止・中断中,停止中) */
	private static final String KKTK_SVC_KEI_STAT_IN = "010,020,030,100,110,210,220";
	
	/** 倉庫コード */
	private static final String SOKO_CD = "000001";
	/** 販売種別コード 標準（新品） */
	private static final String HANBAI_SBT_10 = "10";
	
	/** 同時番ポ希望有無（有） */
//	private static final String DOJI_BMP_KIBO_UM_ARI = "1";
	/** 同番移転ステータスが'021'(NTT送信待ち) */
	private static final String DOBANITEN_STAT_021 = "021";
	/** 同番移転ステータスが'021'(NTT送信済み) */
	private static final String DOBANITEN_STAT_022 = "022";
	
	/** 画面項目制御パターン83:住所変更画面 eo光ネット/eo光電話 住変（新設/撤去）*/
	private static final String SCKMCT_PTN_83 = "83";
	/** 画面項目制御パターン83:住所変更画面 eo光ネット/eo光電話 住変（新設）*/
	private static final String SCKMCT_PTN_81 = "81";
	/** 画面項目制御パターン7: eo光ネット,eo光電話 プラン変更（収容替） */
//	private static final String SCKMCT_PTN_7 = "7";
	/* ++++++++++ v5.00.03 追加開始 ++++++++++ */
	/** 画面項目制御パターン41: コース変更 eo光ネット */
//	private static final String SCKMCT_PTN_41 = "41";
	/* ++++++++++ v5.00.03 追加終了 ++++++++++ */
	
	/** 工事案件種別コード（新設）*/
	private static final String KOJIAK_SBT_CD_NEW = "001";
	/** 工事案件種別コード（撤去（解約））*/
	private static final String KOJIAK_SBT_CD_DSL = "002";
	/** 工事案件種別コード（住所変更(新設)）*/
	private static final String KOJIAK_SBT_CD_ADCHGA = "003";
	/** 工事案件種別コード（住所変更(撤去)）*/
	private static final String KOJIAK_SBT_CD_ADCHGB = "004";
	/** 工事案件種別コード（eoテレビ変更）*/
	private static final String KOJIAK_SBT_CD_EOTVCHG = "013";
	/* ++++++++++ v5.00.03 追加開始 ++++++++++ */
	/** 工事案件種別コード（プラン変更（収容替））*/
//	private static final String KOJIAK_SBT_CD_SHUYOUGAE = "009";
		
	/** ルーター種別（コンボ選択値）*/
//	private static final String NEW_ROUTER_SBT_BASIC = "0";
	/** ルーター種別（コンボ選択値）*/
//	private static final String NEW_ROUTER_SBT_WIFI = "1";
	/** ルーター種別（コンボ選択値）*/
//	private static final String NEW_ROUTER_SBT_NASI = "2";
	
	/** ファミリーパック有無（有）*/
	private static final String FAMILY_PACK_ARI = "有";

	/** ＯＰＭＳルーター種類コード（旧無線ルータ100M_G）*/
//	private static final String ROUTER_KIND_CD_OLDWIFI_100MG = "1";
	/** ＯＰＭＳルーター種類コード（旧無線ルータ100M_N）*/
//	private static final String ROUTER_KIND_CD_OLDWIFI_100MN = "2";
	/** ＯＰＭＳルーター種類コード（ベーシック100M）*/
//	private static final String ROUTER_KIND_CD_BASIC_100M = "3";
	/** ＯＰＭＳルーター種類コード（ベーシック1G）*/
//	private static final String ROUTER_KIND_CD_BASIC_1G = "7";
	/** ＯＰＭＳルーター種類コード（無線ルータ100M_G）*/
//	private static final String ROUTER_KIND_CD_WIFI_100MG = "4";
	/** ＯＰＭＳルーター種類コード（無線ルータ100M_N）*/
//	private static final String ROUTER_KIND_CD_WIFI_100MN = "5";
	/** ＯＰＭＳルーター種類コード（無線ルータ1G）*/
//	private static final String ROUTER_KIND_CD_WIFI_1G = "6";
	
	/** お客様直送品有無（有）*/
//	private static final String DIRECT_SHIP_ARI = "1";
	/* ++++++++++ v5.00.03 追加終了 ++++++++++ */
	/* ++++++++++ v5.00.05 追加開始 ++++++++++ */
	/** 住所変更ネット機器移動可（可）*/
	private static final String JH_NETKIKI_IDO_OK = "1";
	/** 移動機器保有有無（有）*/
	private static final String IDOKIKI_HOYU_UM_U = "1";
	/** 異動予約詳細コード（機器解約）*/
	private static final String IDO_RSV_DTL_CD_KIKI_KAIYAKU = "013";
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	/** 異動予約詳細コード（機器オプション解約）*/
	private static final String IDO_RSV_DTL_CD_KIKI_OPT_KAIYAKU = "024";
	/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
	/** 異動予約状態コード（予約手続中,未反映）*/
	private static final String IDO_RSV_STAT_CD_03_00 = "03,00";
	/* ++++++++++ v5.00.05 追加終了 ++++++++++ */
	/* ++++++++++ v5.00.07 追加開始 ++++++++++ */
	/** 料金コースコード（１番号コース）*/
//	private static final String PCRS_CD_1BANGO = "A31";
	/** 料金コースコード（２番号コース）*/
//	private static final String PCRS_CD_2BANGO = "A32";
	/** ポート数（１）*/
//	private static final String PORT_CNT_1 = "1";
	/** ポート数（２）*/
//	private static final String PORT_CNT_2 = "2";
	/* ++++++++++ v5.00.07 追加終了 ++++++++++ */
	/* ++++++++++ v6.00.00 追加開始 ++++++++++ */
	/** 割賦契約ステータス（完了済）*/
	private static final String KAP_KEI_STAT_KANRYO = "100";
	/* ++++++++++ v6.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
	/** 移動多機能ルーターチェック変更（変更有）*/
	private static final String CHG_TKN_ROUTER_IDO_CHG = "1";
	/** 移動多機能ルーターチェック変更（変更無）*/
	private static final String CHG_TKN_ROUTER_IDO_NOCHG = "0";
	/** 多機能ルーター機能移動状態（選択）*/
	private static final String KKOP_SVC_KEI_NO_SELECTED = "1";
	/** 多機能ルーター機能移動状態（非選択）*/
	private static final String KKOP_SVC_KEI_NO_UNSELECTED = "0";
	/** 多機能ルーター機能移動状態（機能無）*/
	private static final String KKOP_SVC_KEI_NO_STAT_NON = "00";
	/** 多機能ルーター機能移動状態（新設）*/
	private static final String KKOP_SVC_KEI_NO_STAT_ADD = "01";
	/** 多機能ルーター機能移動状態（撤去）*/
	private static final String KKOP_SVC_KEI_NO_STAT_CHG = "02";
	/** 多機能ルーター機能移動状態（交換）*/
	private static final String KKOP_SVC_KEI_NO_STAT_DEL = "03";
	/** 多機能ルーター機能移動状態（移動）*/
	private static final String KKOP_SVC_KEI_NO_STAT_IDO = "04";
	/** 住所変更明細種別コード（機器オプションサービス契約）*/
	private static final String ADCHG_DTL_SBT_CD_KKOP = "09";
	/* ++++++++++ v7.00.01 追加終了 ++++++++++ */


	/**
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite checkKojiInfoServer(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		String dataMapKey = fixedText;
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
		//住所変更明細
		HashMap<String, Object> jhDtlMsg = (HashMap<String, Object>)param.getData("jushoHenkoInfo");
		/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
		// 機能コード（チェックのみの場合、ワーニングチェックは実行しない判断で使用）
		String func_code = (String)ccMsg.get("func_code");
		// エラーフラグ
		ccMsg.put("err_flg", "");
		// メッセージ情報
		ArrayList<HashMap<String, Object>> messageInfo = new ArrayList<HashMap<String, Object>>();
		// メッセージコードリスト
		ccMsg.put("message_list", messageInfo);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		boolean eponGpon = false;
		String idoDiv = (String)ccMsg.get("ido_div");
		String kojiakSbtCd = (String)ccMsg.get("kojiak_sbt_cd");
		if (IDO_DIV_VALUE_00067.equals(idoDiv) 
				|| (KOJIAK_SBT_CD_ADCHGA.equals(kojiakSbtCd) || KOJIAK_SBT_CD_ADCHGB.equals(kojiakSbtCd) )
					&& (IDO_DIV_VALUE_00032.equals(idoDiv) || IDO_DIV_VALUE_00035.equals(idoDiv)) && !(Boolean)ccMsg.get("kojak_juhen"))
		{
			eponGpon = true;
		}

		
		// 異動区分がE-PON→GE-PON設備切替,移設工事,撤去（解約）,eoテレビ変更,光電話・宅内工事設定の場合
	/* ++++++++++ v5.00.04 修正開始 ++++++++++ */
		if ("".equals(kojiakSbtCd) && (eponGpon || IDO_DIV_VALUE_00021.equals(ccMsg.get("ido_div"))|| IDO_DIV_VALUE_00006.equals(ccMsg.get("ido_div")) 
	/* ++++++++++ v5.00.04 修正終了 ++++++++++ */
				|| IDO_DIV_VALUE_00018.equals(ccMsg.get("ido_div")) || IDO_DIV_VALUE_00022.equals(ccMsg.get("ido_div"))))
		{
			if((String)ccMsg.get("mskmsho_no") != null && !"".equals((String)ccMsg.get("mskmsho_no"))){
				// ***** EKK0021B001 申込書番号指定一覧照会 *****
				Object[][] ekk0021B001IN = {
					{EKK0021B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0021B001},
					{EKK0021B001CBSMsg.FUNC_CODE,     "1"},
					{EKK0021B001CBSMsg.KEY_MSKMSHO_NO, (String)ccMsg.get("mskmsho_no")},
				};
				CAANMsg[] ekk0021B001Out = callSC(handle, scCall, param, dataMapKey, ekk0021B001IN).getCAANMsgList(EKK0021B001CBSMsg.EKK0021B001CBSMSG1LIST);
				// 工事案件番号存在チェック
				if (ekk0021B001Out != null && ekk0021B001Out.length > 0)
				{
					// エラーメッセージを設定
					/* ++++++++++ v4.00.04 修正開始 ++++++++++ */
					setMessageInfo(ccMsg, "EKBD180-KW", "", "mskmsho_no1", ERR_FLG_ERR);
					/* ++++++++++ v4.00.04 修正終了 ++++++++++ */
					return param;
				}
			}
// ++++++++++++++ v4.00.05 ++++++++++++++++++
//			//撤去以外
//			if(!IDO_DIV_VALUE_00006.equals(ccMsg.get("ido_div")) && (String)ccMsg.get("mskmsho_dtl_no") != null && !"".equals((String)ccMsg.get("mskmsho_dtl_no"))){
//				// ***** EKK0021B503 申込書明細番号件数一覧照会 *****
//				Object[][]ekk0021B503IN = {
//					{EKK0021B503CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0021B503},
//					{EKK0021B503CBSMsg.FUNC_CODE,     "1"},
//					{EKK0021B503CBSMsg.KEY_MSKMSHO_DTL_NO, (String)ccMsg.get("mskmsho_dtl_no")},
//				};
//				CAANMsg[] ekk0021B503Out = callSC(handle, scCall, param, dataMapKey, ekk0021B503IN).getCAANMsgList(EKK0021B503CBSMsg.EKK0021B503CBSMSG1LIST);
//				// 工事案件番号存在チェック
//				if (ekk0021B503Out != null && ekk0021B503Out.length > 0)
//				{
//					if(!"0".equals(ekk0021B503Out[0].getString(EKK0021B503CBSMsg1List.MSKMSHO_DTL_NO_CNT))){
//						// エラーメッセージを設定
//						setMessageInfo(ccMsg, "EKBB200-KW", "", "mskmsho_dtl_no1", ERR_FLG_ERR);
//						return param;
//					}
//				}
//			}
// ++++++++++++++ v4.00.05 ++++++++++++++++++
		}
		// 異動区分がE-PON→GE-PON設備切替の場合
		/* ++++++++++ v5.00.01 修正開始 ++++++++++ */
		if (eponGpon)
		{
			/* ++++++++++ v5.00.01 修正終了 ++++++++++ */
			// ***** EKK0251B003 サービス契約回線内訳一覧照会（現在利用中）*****
			Object[][] ekk0251b003IN = {
				{EKK0251B003CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0251B003},
				{EKK0251B003CBSMsg.FUNC_CODE,      "1"},
				{EKK0251B003CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
			};
			CAANMsg[] ekk0251b003Out = callSC(handle, scCall, param, dataMapKey, ekk0251b003IN).getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST);
			if (ekk0251b003Out != null && ekk0251b003Out.length > 0)
			{
				// PON種別チェック
				if (PON_SBT_CD.equals(ekk0251b003Out[0].getString(EKK0251B003CBSMsg1List.PON_SBT_CD)))
				{
					// エラーメッセージを設定
					setMessageInfo(ccMsg, "EKBA250-KW", "", "", ERR_FLG_ERR);
					return param;
				}
				// ***** EKK0081B007 回線利用中サービス契約一覧照会 *****
				Object[][] ekk0081b007IN = {
					{EKK0081B007CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0081B007},
					{EKK0081B007CBSMsg.FUNC_CODE,                  "1"},
					{EKK0081B007CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, ekk0251b003Out[0].getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)},
					{EKK0081B007CBSMsg.KEY_OPE_YMD,                JCCBPCommon.getOpeDate(null)},
				};
				CAANMsg[] ekk0081b007Out = callSC(handle, scCall, param, dataMapKey, ekk0081b007IN).getCAANMsgList(EKK0081B007CBSMsg.EKK0081B007CBSMSG1LIST);
				if (ekk0081b007Out != null)
				{
					// 電話単独チェック
					// サービス契約がｅｏ光電話の場合
					if (PRC_GRP_CD_10.equals(ccMsg.get("prc_grp_cd")))
					{
						for (int i = 0; i < ekk0081b007Out.length; i++)
						{
							// 同一のサービス契約回線内訳にネットマンションのサービス契約が存在する場合
							if (PRC_GRP_CD_02.equals(ekk0081b007Out[i].getString(EKK0081B007CBSMsg1List.PRC_GRP_CD))
								|| PRC_GRP_CD_03.equals(ekk0081b007Out[i].getString(EKK0081B007CBSMsg1List.PRC_GRP_CD))
								|| PRC_GRP_CD_04.equals(ekk0081b007Out[i].getString(EKK0081B007CBSMsg1List.PRC_GRP_CD)))
							{
								// エラーメッセージを設定
								setMessageInfo(ccMsg, "EKBA240-KW", "", "", ERR_FLG_ERR);
								return param;
							}
						}
					}
					// 工事中工事案件の存在チェック
					/* ++++++++++ v5.00.01 修正開始 ++++++++++ */
//					for (int i = 0; i < ekk0081b007Out.length; i++)
//					{
//						// ***** EKK1091B001 進捗一覧照会 *****
//						Object[][] ekk1091b001IN = {
//							{EKK1091B001CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK1091B001},
//							{EKK1091B001CBSMsg.FUNC_CODE,      "1"},
//							{EKK1091B001CBSMsg.KEY_SVC_KEI_NO, ekk0081b007Out[i].getString(EKK0081B007CBSMsg1List.SVC_KEI_NO)},
//							{EKK1091B001CBSMsg.KEY_IDO_DIV,    (String)ccMsg.get("ido_div")},
//							{EKK1091B001CBSMsg.KEY_SORT_ITEM,  "2"},
//							{EKK1091B001CBSMsg.KEY_SORT_ORDER, "1"},
//						};
//						CAANMsg[] ekk1091b001Out = callSC(handle, scCall, param, dataMapKey, ekk1091b001IN).getCAANMsgList(EKK1091B001CBSMsg.EKK1091B001CBSMSG1LIST);
//						// 進捗にデータがあった場合
//						if (ekk1091b001Out != null && ekk1091b001Out.length > 0)
//						{
//							// ***** EKU0081B010 サービス契約_工事案件一覧照会 *****
//							Object[][] eku0081b010IN = {
//								{EKU0081B010CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKU0081B010},
//								{EKU0081B010CBSMsg.FUNC_CODE,      "1"},
//								{EKU0081B010CBSMsg.KEY_SVC_KEI_NO, ekk0081b007Out[i].getString(EKK0081B007CBSMsg1List.SVC_KEI_NO)},
//								{EKU0081B010CBSMsg.KEY_KOJIAK_NO,  ""},
//							};
//							CAANMsg[] eku0081b010Out = callSC(handle, scCall, param, dataMapKey, eku0081b010IN).getCAANMsgList(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST);
//							if (eku0081b010Out != null)
//							{
//								for (int j = 0; j < eku0081b010Out.length; j++)
//								{
//									// ***** EKU0011A010 工事案件一意照会 *****
//									Object[][] eku0011a010IN = {
//										{EKU0011A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKU0011A010},
//										{EKU0011A010CBSMsg.FUNC_CODE,     "1"},
//										{EKU0011A010CBSMsg.KEY_KOJIAK_NO, eku0081b010Out[j].getString(EKU0081B010CBSMsg1List.KOJIAK_NO)},
//									};
//									CAANMsg[] eku0011a010Out = callSC(handle, scCall, param, dataMapKey, eku0011a010IN).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
//									if (eku0011a010Out != null && eku0011a010Out.length > 0)
//									{
//										// 工事案件ステータスが工事完了済でない場合
//										if (!KOJIAK_STAT_200.equals(eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT)))
//										{
//											// エラーメッセージを設定
//											setMessageInfo(ccMsg, "EKBA260-KW", "", "", ERR_FLG_ERR);
//											return param;
//										}
//									}
//								}
//							}
//						}
//					}
					/* ++++++++++ v5.00.01 修正終了 ++++++++++ */
				}
			}
		}
		// ルーター、PLC登録台数チェック
		/* ++++++++++ v4.00.02 修正開始 ++++++++++ */
		if (("3".equals(ccMsg.get("sckmct_ptn")) || SCKMCT_PTN_83.equals(ccMsg.get("sckmct_ptn")) || SCKMCT_PTN_81.equals(ccMsg.get("sckmct_ptn"))) && FUNC_CODE_2.equals(func_code))
		/* ++++++++++ v4.00.02 修正終了 ++++++++++ */
		{
			// 登録件数
			int routerCnt = Integer.parseInt((String)ccMsg.get("router_cnt"));
			/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
			int tknRouterCnt = Integer.parseInt((String)ccMsg.get("tknRouter_cnt"));
			/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
			int plcCnt = Integer.parseInt((String)ccMsg.get("plc_cnt"));
			int vaCnt = Integer.parseInt((String)ccMsg.get("va_cnt"));
			//住所変更の場合新規側のサービス契約番号を使用する
			String svcKeiNo = "";
			if (SCKMCT_PTN_83.equals(ccMsg.get("sckmct_ptn")) || SCKMCT_PTN_81.equals(ccMsg.get("sckmct_ptn")))
			{
				svcKeiNo = (String)ccMsg.get("jh_new_svc_kei_no");
			}
			else
			{
				svcKeiNo = (String)ccMsg.get("svc_kei_no");
			}
			// ***** EKK0341B022 サービス対象機器提供サービス契約一覧照会 *****
			Object[][] eku0341b022IN = {
				{EKK0341B022CBSMsg.TEMPLATEID,            TEMPLATE_ID_EKK0341B022},
				{EKK0341B022CBSMsg.FUNC_CODE,             "1"},
				{EKK0341B022CBSMsg.KEY_SVC_KEI_NO,        svcKeiNo},
				{EKK0341B022CBSMsg.KEY_KKTK_SVC_KEI_STAT, KKTK_SVC_KEI_STAT_IN},
			};
			CAANMsg[] eku0341b022Out = callSC(handle, scCall, param, dataMapKey, eku0341b022IN).getCAANMsgList(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST);
			for (int i = 0; i < eku0341b022Out.length; i++)
			{
				// ルーター登録台数
				if (KKTK_SVC_CD_C014.equals(eku0341b022Out[i].getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)))
				{
					routerCnt++;
				}
				/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
				// 多機能ルーター登録台数
				else if (KKTK_SVC_CD_C024.equals(eku0341b022Out[i].getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)))
				{
					tknRouterCnt++;
				}
				/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
				// PLC登録台数
				else if (KKTK_SVC_CD_C015.equals(eku0341b022Out[i].getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)))
				{
					plcCnt++;
				}
				// VA登録台数
				else if (KKTK_SVC_CD_C004.equals(eku0341b022Out[i].getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)))
				{
					vaCnt++;
				}
			}
			// ルーター台数チェック(最大数)
			// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
//			int routerMax = 0;
			Object[][] ekk0801a010IN = editInMsgEKK0801A010(ccMsg, KKTK_SVC_CD_C014);
			CAANMsg[] ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
//			if(ekk0801a010Out != null && ekk0801a010Out.length > 0)
//			{
//				routerMax = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MAX_KKTK_SVC_CNT);
//			}
//			if (routerCnt > routerMax)
//			{
//				// エラーメッセージを設定
//				setMessageInfo(ccMsg, "EKB9130-NW", "", "", ERR_FLG_ERR);
//			}
			/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
			// 多機能ルーター台数チェック(最大数)
			// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
//			int tknRouterMax = 0;
//			ekk0801a010IN = editInMsgEKK0801A010(ccMsg, KKTK_SVC_CD_C024);
//			ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
//			if(ekk0801a010Out != null && ekk0801a010Out.length > 0)
//			{
//				tknRouterMax = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MAX_KKTK_SVC_CNT);
//			}
//			if (tknRouterCnt > tknRouterMax)
//			{
//				// エラーメッセージを設定
//				setMessageInfo(ccMsg, "EKB9130-NW", "", "", ERR_FLG_ERR);
//			}
			/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
			// PLC台数チェック(最大数)
			// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
			int plcMax = 0;
			ekk0801a010IN = editInMsgEKK0801A010(ccMsg, KKTK_SVC_CD_C015);
			ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
			if(ekk0801a010Out != null && ekk0801a010Out.length > 0)
			{
				plcMax = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MAX_KKTK_SVC_CNT);
			}
			if (plcCnt > plcMax)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB9130-NW", "", "stc_plc,plc_cnt", ERR_FLG_ERR);
			}
			// VA台数チェック(最大数)
			// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
//			int vaMax = 0;
//			ekk0801a010IN = editInMsgEKK0801A010(ccMsg, KKTK_SVC_CD_C004);
//			ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
//			if(ekk0801a010Out != null && ekk0801a010Out.length > 0)
//			{
//				vaMax = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MAX_KKTK_SVC_CNT);
//			}
//			if (vaCnt > vaMax)
//			{
//				// エラーメッセージを設定
//				setMessageInfo(ccMsg, "EKB9130-NW", "", "", ERR_FLG_ERR);
//			}
			
			if (SCKMCT_PTN_83.equals(ccMsg.get("sckmct_ptn")) || SCKMCT_PTN_81.equals(ccMsg.get("sckmct_ptn")))
			{
				//ルーターチェック（住所変更以外はSFLogic checkRouterで処理）
				// ファミリーパック有無 
				boolean family_pack_ari = (Boolean)ccMsg.get("family_pack");
				
				String family_pack_um = (String) ccMsg.get("family_pack_um");
				if(FAMILY_PACK_ARI.equals(family_pack_um))
				{
					family_pack_ari = true;
				}

				// 保有ルータコード 
				String hoyuRouterCd = (String)ccMsg.get("hoyu_router_cd");
				// 設置保有ルータ
				String settiHoyuRouter = "0";//なし
				String tgtRouter = "";
				boolean isIdoRouter = false;
				//設置ルーター
				if((String)ccMsg.get("setti_router_kind") != null && !"".equals((String)ccMsg.get("setti_router_kind")))
				{
					tgtRouter = (String)ccMsg.get("setti_router_kind");
				}				
				//移動ルーター
				else if((String)ccMsg.get("ido_router_kind") != null && !"".equals((String)ccMsg.get("ido_router_kind")))
				{
					tgtRouter = (String)ccMsg.get("ido_router_kind");
					isIdoRouter = true;
				}				
				//移動ルーターまたは設置ルータが選択されている場合
				if(tgtRouter != null && !"".equals(tgtRouter))
				{
					// ***** EKK0341B022 サービス対象機器提供サービス契約一覧照会 *****
					Object[][] ezm0411a010IN = {
						{EZM0411A010CBSMsg.TEMPLATEID,            TEMPLATE_ID_EZM0411A010},
						{EZM0411A010CBSMsg.FUNC_CODE,             "1"},
//						{EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, (String)ccMsg.get("setti_router_kind")},
						{EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, tgtRouter},
					};
					CAANMsg[] ezm0411a010Out = callSC(handle, scCall, param, dataMapKey, ezm0411a010IN).getCAANMsgList(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);
					if(ezm0411a010Out != null && ezm0411a010Out.length > 0)
					{
						// 設置ルーター保有ルータコード 
						String settiHoyuRouterCd = ezm0411a010Out[0].getString(EZM0411A010CBSMsg1List.HOYU_ROUTER_CD);
						if ("03".equals(settiHoyuRouterCd) || "04".equals(settiHoyuRouterCd) || "05".equals(settiHoyuRouterCd))
						{
							settiHoyuRouter = "1";//無線ルーター
						}
						else if ("01".equals(settiHoyuRouterCd) || "02".equals(settiHoyuRouterCd))
						{
							settiHoyuRouter = "2";//ベーシックルーター
						}
						
						/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
						// 料金コースのルーター速度種別と選択されている設置ルーターの型番号をチェックし速度が不一致の場合エラー
						String pcrsSpeedCd = (String)ccMsg.get("pcrs_router_cd");
						String routerSpeedSbtCd = ezm0411a010Out[0].getString(EZM0411A010CBSMsg1List.ROUTER_SPEED_SBT_CD);
						if ("10".equals(routerSpeedSbtCd) && ("03".equals(pcrsSpeedCd) || "04".equals(pcrsSpeedCd)))
						{
							if(isIdoRouter)
							{
								setMessageInfo(ccMsg, "EKB9120-KW", "", "router_ido_um1_i", ERR_FLG_ERR);
							}
							else
							{
								setMessageInfo(ccMsg, "EKB9120-KW", "", "router_kind1", ERR_FLG_ERR);
							}
							
						}
						/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
					}
					
					//設置ルーターの場合以下のチェックを行う
					if(!isIdoRouter)
					{
						// No.17 保有ルータが旧無線ルータで、選択されている設置ルータが無線ルータの場合
						if ("03".equals(hoyuRouterCd) && "1".equals(settiHoyuRouter))
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB2860--Q", "", "router_kind", ERR_FLG_WARNING);
						}
						// No.17 ファミリーパックなしかつ保有ルータがベーシックギガルータかつ選択されている設置ルータがなし以外の場合エラー
						if (!family_pack_ari && "02".equals(hoyuRouterCd) && !"0".equals(settiHoyuRouter))
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB2880-KW", "", "router_kind", ERR_FLG_ERR);
						}
						// No.17 保有ルータが新無線ギガルータかつ選択されている設置ルータがなし以外の場合エラー
						if ("05".equals(hoyuRouterCd) && !"0".equals(settiHoyuRouter))
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB2880-KW", "", "router_kind", ERR_FLG_ERR);
						}
						// No.18 ファミリーパック契約がありかつ、保有ルータが新無線ギガルータ以外でありかつ選択されている設置ルータが無線ルータ以外の場合エラー
						if (family_pack_ari && !"05".equals(hoyuRouterCd) && !"1".equals(settiHoyuRouter))
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB2870-KW", "", "router_kind", ERR_FLG_ERR);
						}
					}
				}
			}
		}
		// 入荷実績チェック
		//住所変更画面以外の場合
		if(!(Boolean)ccMsg.get("kojak_juhen"))
		{
			ArrayList inList = new ArrayList();
			HashMap inMap = null;
			ArrayList dataList = (ArrayList)ccMsg.get("taknkikiModelCdList");
			//チェック対象がない場合（撤去のみの場合など）はチェックを呼ばない。
			if(dataList != null && dataList.size() > 0){
				HashMap childMap = null;
				for (int i = 0; i < dataList.size(); i++)
				{
					childMap = (HashMap)dataList.get(i);
					
					String taknkikiModelCd = (String)childMap.get("taknkiki_model_cd");
					//宅内機器型番号がない場合は対象としない。
					if(taknkikiModelCd != null && !"".equals(taknkikiModelCd)){
						// ***** EDK0451A010 引当棚一意照会 *****
						Object[][] edk0451a010IN = {
							{EDK0451A010CBSMsg.TEMPLATEID,        TEMPLATE_ID_EDK0451A010},
							{EDK0451A010CBSMsg.FUNC_CODE,         "1"},
							{EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, childMap.get("hambai_sbt_cd")},
							{EDK0451A010CBSMsg.KEY_UNYO_YMD,      JCCBPCommon.getOpeDate(null)},
						};
						CAANMsg[] edk0451a010Out = callSC(handle, scCall, param, dataMapKey, edk0451a010IN).getCAANMsgList(EDK0451A010CBSMsg.EDK0451A010CBSMSG1LIST);
						
						if(edk0451a010Out != null && edk0451a010Out.length > 0){
							inMap = new HashMap();
							// ＫＥＹ＿管理場所識別コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, "1");
							// ＫＥＹ＿管理場所コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, SOKO_CD);
							// ＫＥＹ＿管理場所棚コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, edk0451a010Out[0].getString(EDK0451A010CBSMsg1List.SHELF_CD));
							// ＫＥＹ＿宅内機器型式コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, (String)childMap.get("taknkiki_model_cd"));
							inList.add(inMap);
						}
					}
				}
				// ***** EKKA0020005 宅内機器物流在庫一意照会 *****
				//対象がない場合は処理をスキップする。
				if(inList != null && inList.size() > 0){
					Object[][] ekka0020005IN = {
						{EKKA0020005CBSMsg.TEMPLATEID,      TEMPLATE_ID_EKKA0020005},
						{EKKA0020005CBSMsg.FUNC_CODE,       "1"},
					};
					CAANMsg[] ekka0020005Out = callSCArray(handle, scCall, param, dataMapKey, ekka0020005IN, "EKKA0020005CBSMsg1List", inList).getCAANMsgList(EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);
					if (ekka0020005Out == null || ekka0020005Out.length == 0)
					{
						for (int i = 0; i < dataList.size(); i++)
						{
							childMap = (HashMap)dataList.get(i);
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB4970-KW", "選択された型番の入荷実績がない", (String)childMap.get("errItem"), ERR_FLG_ERR);
						}
						return param;
					}
					else
					{
						for (int i = 0; i < dataList.size(); i++)
						{
							childMap = (HashMap)dataList.get(i);
							String tk_mdl_cd = (String)childMap.get("taknkiki_model_cd");
							for (int j = 0; j < ekka0020005Out.length; j++)
							{
								if (tk_mdl_cd.equals(ekka0020005Out[j].getString(EKKA0020005CBSMsg2List.TK_MDL_CD)))
								{
									tk_mdl_cd = "";
									break;
								}
							}
							// 入荷実績のない宅内機器型式を設定
							if (!"".equals(tk_mdl_cd))
							{
								// エラーメッセージを設定
								setMessageInfo(ccMsg, "EKB4970-KW", "選択された型番の入荷実績がない", (String)childMap.get("errItem"), ERR_FLG_ERR);
							}
						}
						messageInfo = (ArrayList)ccMsg.get("message_list");
						if (messageInfo.size() > 0)
						{
							for(HashMap msgMap:messageInfo)
							{
								if("EKB4970-KW".equals(msgMap.get("messageId")))
								{
									return param;
								}
							}
						}
						// 在庫数チェック
						for (int i = 0; i < dataList.size(); i++)
						{
							childMap = (HashMap)dataList.get(i);
							zaikoChk(ccMsg, dataList, ekka0020005Out, childMap, func_code);
						}
						messageInfo = (ArrayList)ccMsg.get("message_list");
						if (messageInfo.size() > 0)
						{
							for(HashMap msgMap:messageInfo)
							{
								if("EKB5850-KW".equals(msgMap.get("messageId")))
								{
									return param;
								}

							}
						}
					}
				}
			}
		}
		else
		//住所変更画面の場合
			/* ++++++++++ v4.00.02 追加開始 ++++++++++ */
		{
			ArrayList inList = new ArrayList();
			HashMap inMap = null;
			ArrayList dataList = (ArrayList)ccMsg.get("taknkikiModelCdList");
			//チェック対象がない場合（撤去のみの場合など）はチェックを呼ばない。
			if(dataList != null && dataList.size() > 0){
				HashMap childMap = null;
				for (int i = 0; i < dataList.size(); i++)
				{
					childMap = (HashMap)dataList.get(i);
					
					String taknkikiModelCd = (String)childMap.get("taknkiki_model_cd");
					//宅内機器型番号がない場合は対象としない。
					if(taknkikiModelCd != null && !"".equals(taknkikiModelCd)){
						// ***** EDK0451A010 引当棚一意照会 *****
						Object[][] edk0451a010IN = {
							{EDK0451A010CBSMsg.TEMPLATEID,        TEMPLATE_ID_EDK0451A010},
							{EDK0451A010CBSMsg.FUNC_CODE,         "1"},
							{EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, childMap.get("hambai_sbt_cd")},
							{EDK0451A010CBSMsg.KEY_UNYO_YMD,      JCCBPCommon.getOpeDate(null)},
						};
						CAANMsg[] edk0451a010Out = callSC(handle, scCall, param, dataMapKey, edk0451a010IN).getCAANMsgList(EDK0451A010CBSMsg.EDK0451A010CBSMSG1LIST);
						
						if(edk0451a010Out != null && edk0451a010Out.length > 0)
						{
							inMap = new HashMap();
							// ＫＥＹ＿管理場所識別コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, "1");
							// ＫＥＹ＿管理場所コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, SOKO_CD);
							// ＫＥＹ＿管理場所棚コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, edk0451a010Out[0].getString(EDK0451A010CBSMsg1List.SHELF_CD));
							// ＫＥＹ＿宅内機器型式コード
							inMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, (String)childMap.get("taknkiki_model_cd"));
							inList.add(inMap);
						}
					}
				}
				// ***** EKKA0020005 宅内機器物流在庫一意照会 *****
				//対象がない場合は処理をスキップする。
				if(inList != null && inList.size() > 0){
					Object[][] ekka0020005IN = {
						{EKKA0020005CBSMsg.TEMPLATEID,      TEMPLATE_ID_EKKA0020005},
						{EKKA0020005CBSMsg.FUNC_CODE,       "1"},
					};
					CAANMsg[] ekka0020005Out = callSCArray(handle, scCall, param, dataMapKey, ekka0020005IN, "EKKA0020005CBSMsg1List", inList).getCAANMsgList(EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);
					if (ekka0020005Out == null || ekka0020005Out.length == 0)
					{
						for (int i = 0; i < dataList.size(); i++)
						{
							childMap = (HashMap)dataList.get(i);
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB4970-KW", "選択された型番の入荷実績がない", (String)childMap.get("errItem"), ERR_FLG_ERR);
						}
						return param;
					}
					else
					{
						for (int i = 0; i < dataList.size(); i++)
						{
							childMap = (HashMap)dataList.get(i);
							String tk_mdl_cd = (String)childMap.get("taknkiki_model_cd");
							for (int j = 0; j < ekka0020005Out.length; j++)
							{
								if (tk_mdl_cd.equals(ekka0020005Out[j].getString(EKKA0020005CBSMsg2List.TK_MDL_CD)))
								{
									tk_mdl_cd = "";
									break;
								}
							}
							// 入荷実績のない宅内機器型式を設定
							if (!"".equals(tk_mdl_cd))
							{
								// エラーメッセージを設定
								setMessageInfo(ccMsg, "EKB4970-KW", "選択された型番の入荷実績がない", (String)childMap.get("errItem"), ERR_FLG_ERR);
							}
						}
						messageInfo = (ArrayList)ccMsg.get("message_list");
						if (messageInfo.size() > 0)
						{
							for(HashMap msgMap:messageInfo)
							{
								if("EKB4970-KW".equals(msgMap.get("messageId")))
								{
									return param;
								}
							}
						}
						// 在庫数チェック
						for (int i = 0; i < dataList.size(); i++)
						{
							childMap = (HashMap)dataList.get(i);
							zaikoChk(ccMsg, dataList, ekka0020005Out, childMap, func_code);
						}
						messageInfo = (ArrayList)ccMsg.get("message_list");
						if (messageInfo.size() > 0)
						{
							for(HashMap msgMap:messageInfo)
							{
								if("EKB5850-KW".equals(msgMap.get("messageId")))
								{
									return param;
								}

							}
						}
					}
				}
			}
		}
		/* ++++++++++ v4.00.02 追加終了 ++++++++++ */
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		/** テンプレートID(EKK2541B002) 割賦契約履歴一覧照会 */
		//割賦販売形態変更チェック
		String prcGrpCd = (String)ccMsg.get("prc_grp_cd");
		if (FUNC_CODE_2.equals(func_code) && IDO_DIV_VALUE_00006.equals(ccMsg.get("ido_div"))
				&& ("02".equals(prcGrpCd) || "03".equals(prcGrpCd) || "04".equals(prcGrpCd)) ){
			Object[][] ekk2541b002IN = {
					{EKK2541B002CBSMsg.TEMPLATEID,      TEMPLATE_ID_EKK2541B002},
					{EKK2541B002CBSMsg.FUNC_CODE,  "1"},
					{EKK2541B002CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
					};
			
			CAANMsg[] ekk2541b002Out = callSC(handle, scCall, param, dataMapKey, ekk2541b002IN).getCAANMsgList(EKK2541B002CBSMsg.EKK2541B002CBSMSG1LIST);
			for(CAANMsg ekk2541b002msg:ekk2541b002Out){
				/* ++++++++++ v6.00.00 修正開始 ++++++++++ */
				//割賦契約ステータスが完了済になっていない場合、かつ全ての日付が空白の場合チェック
				String kapKeiStat = ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_STAT_KK2541);
				if (KAP_KEI_STAT_KANRYO.compareTo(kapKeiStat) > 0 
					&& (ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_SEIKY_ENDYMD_KK2541) == null
						|| "".equals(ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_SEIKY_ENDYMD_KK2541)))
					&& (ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_DSL_YMD_KK2541) == null
						||"".equals(ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_DSL_YMD_KK2541)))
					&& (ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_CANCEL_YMD_KK2541) == null
						||"".equals(ekk2541b002msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_CANCEL_YMD_KK2541))))
				{
					// エラーメッセージを設定
					setMessageInfo(ccMsg, "EKBC280-KW", "", "", ERR_FLG_WARNING);
					break;
				}
				/* ++++++++++ v6.00.00 修正終了 ++++++++++ */
			}
		}
		
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		/* ++++++++++ v4.00.01 追加開始 ++++++++++ */
		/** テンプレートID(EKK2601B001) 主要項目削除実績一覧照会 */
		if (FUNC_CODE_2.equals(func_code)){
			//新規追加で申込書番号入力された場合
			if ("".equals(kojiakSbtCd) && (eponGpon || IDO_DIV_VALUE_00021.equals(ccMsg.get("ido_div"))|| IDO_DIV_VALUE_00006.equals(ccMsg.get("ido_div")) 
					|| IDO_DIV_VALUE_00018.equals(ccMsg.get("ido_div")) || IDO_DIV_VALUE_00022.equals(ccMsg.get("ido_div"))))
			{
				if((String)ccMsg.get("mskmsho_no") != null && !"".equals((String)ccMsg.get("mskmsho_no"))){
					/* ++++++++++ v5.00.07 追加開始（仕様未確定仮実装コメントアウト） ++++++++++ */
					if((String)ccMsg.get("mskmsho_dtl_no") != null && !"".equals((String)ccMsg.get("mskmsho_dtl_no")))
					{
						// ***** EKK0021B001 申込書番号指定一覧照会 *****
						Object[][] ekk0021B001IN = {
							{EKK0021B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0021B001},
							{EKK0021B001CBSMsg.FUNC_CODE,     "1"},
							{EKK0021B001CBSMsg.KEY_MSKMSHO_DTL_NO, (String)ccMsg.get("mskmsho_dtl_no")},
						};
						CAANMsg[] ekk0021B001Out = callSC(handle, scCall, param, dataMapKey, ekk0021B001IN).getCAANMsgList(EKK0021B001CBSMsg.EKK0021B001CBSMSG1LIST);
						// 申込書明細番号存在チェック
						if (ekk0021B001Out != null && ekk0021B001Out.length > 0)
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKBC370--Q", "", "", ERR_FLG_WARNING);
						}
						else
						{
						/* ++++++++++ v5.00.07 追加終了 ++++++++++ */
							//主要項目削除実績一覧照会
							Object[][] ekk2601B001IN = {
									{EKK2601B001CBSMsg.TEMPLATEID,      TEMPLATE_ID_EKK2601B001},
									{EKK2601B001CBSMsg.FUNC_CODE,  "1"},
									{EKK2601B001CBSMsg.KEY_MAJOR_KMK_SBT_CD,  "1"},
									{EKK2601B001CBSMsg.KEY_MSKMSHO_NO, (String)ccMsg.get("mskmsho_no")},
									};
							
							CAANMsg[] ekk2601B001Out = callSC(handle, scCall, param, dataMapKey, ekk2601B001IN).getCAANMsgList(EKK2601B001CBSMsg.EKK2601B001CBSMSG1LIST);
							for(CAANMsg ekk2601B001msg:ekk2601B001Out){
								if (ekk2601B001msg.getString(EKK2601B001CBSMsg1List.MSKMSHO_DTL_NO) != null
										&& ekk2601B001msg.getString(EKK2601B001CBSMsg1List.MSKMSHO_DTL_NO).equals((String)ccMsg.get("mskmsho_dtl_no")))
								{
									// エラーメッセージを設定
									setMessageInfo(ccMsg, "EKBC370--Q", "", "", ERR_FLG_WARNING);
									break;
								}
							}
						}
					}
				}
			}
		}
		/* ++++++++++ v4.00.01 追加終了 ++++++++++ */
		
		/* ++++++++++ v4.00.02 追加開始 ++++++++++ */
		//住所変更画面の場合
		if((Boolean)ccMsg.get("kojak_juhen"))
		{
			//ネット、電話の場合
			if (PRC_GRP_CD_10.equals(ccMsg.get("prc_grp_cd")) || PRC_GRP_CD_02.equals(ccMsg.get("prc_grp_cd"))
				|| PRC_GRP_CD_03.equals(ccMsg.get("prc_grp_cd")) || PRC_GRP_CD_04.equals(ccMsg.get("prc_grp_cd")))
			{
				//異動予約がある移動機器の機器提供サービス番号を保持する。
				/* ++++++++++ v5.00.05 修正開始 ++++++++++ */
				//idokikiKaiyakuYoyakuList:工事機器変更の共通コンポーネントで解約キャンセルを行う場合の判断で使用する。
				HashMap<String, String> idodataMap = new HashMap<String, String>();
				workMap.put("idokikiKaiyakuYoyakuList", idodataMap);
				
				// 移動ルータ解約予約
				boolean rKykFlg = true;
				boolean iniFlg = true;
				String rAri = (String)ccMsg.get("router_ari");
				Boolean rIdoum = (Boolean)ccMsg.get("router_ido_um");
				ArrayList rKsnLst = (ArrayList)ccMsg.get("routerKktkSvcNoList");
				HashMap<String, String> rtdataMap = null;
				for(int i = 0; i < rKsnLst.size();i++)
				{
					rtdataMap = (HashMap<String, String>) rKsnLst.get(i);
					String kktkSvcKeiNo = (String)rtdataMap.get("kktk_svc_kei_no");
					if(kktkSvcKeiNo != null && !"".equals(kktkSvcKeiNo))
					{
						//異動予約一覧照会
						Object[][] ekk1681B001IN = {
								{EKK1681B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK1681B001},
								{EKK1681B001CBSMsg.FUNC_CODE,     "1"},
								{EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo},
								{EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_KIKI_KAIYAKU},
								{EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_03_00},
								{EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)},
							};
						CAANMsg[] ekk1681B001Out = callSC(handle, scCall, param, dataMapKey, ekk1681B001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
						if (ekk1681B001Out != null && ekk1681B001Out.length > 0)
							// 自動解約される場合
						{
							//異動予約がある機器を設定
							idodataMap.put(kktkSvcKeiNo, kktkSvcKeiNo);
							//すべての機器が自動解約される場合
							if(iniFlg && rKsnLst.size() == i + 1)
							{
								//ルータは自動解約
								rKykFlg = false;
							}
						}
						else
						{
							// 自動解約されないものがある場合
							iniFlg = false;
						}
					}
					
				}
				/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
				/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
				// 移動多機能ルータ解約予約
				boolean tknrKykFlg = true;
				iniFlg = true;
				String tknrAri = (String)ccMsg.get("takino_router_ari");
				Boolean tknrIdoum = (Boolean)ccMsg.get("takino_router_ido_um");
				ArrayList tknrKsnLst = (ArrayList)ccMsg.get("takino_routerKktkSvcNoList");
				HashMap<String, String> tknrtdataMap = null;
				CAANMsg[] ekk1681B001Out1 = null;
				CAANMsg[] ekk1681B001Out2 = null;
				for(int i = 0; i < tknrKsnLst.size();i++)
				{
					tknrtdataMap = (HashMap<String, String>) tknrKsnLst.get(i);
					String kktkSvcKeiNo = (String)tknrtdataMap.get("kktk_svc_kei_no");
					String kkopSvcKeiNoNet = (String)tknrtdataMap.get("kkop_svc_kei_no_net");
					String kkopSvcKeiNoTel = (String)tknrtdataMap.get("kkop_svc_kei_no_tel");
//					if(kktkSvcKeiNo != null && !"".equals(kktkSvcKeiNo))
					if(kkopSvcKeiNoNet != null && !"".equals(kkopSvcKeiNoNet) || kkopSvcKeiNoTel != null && !"".equals(kkopSvcKeiNoTel))
					{
						if(kkopSvcKeiNoNet != null && !"".equals(kkopSvcKeiNoNet) )
						{
							//異動予約一覧照会
							Object[][] ekk1681B001IN = {
									{EKK1681B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK1681B001},
									{EKK1681B001CBSMsg.FUNC_CODE,     "1"},
									{EKK1681B001CBSMsg.KEY_KKOP_SVC_KEI_NO, kkopSvcKeiNoNet},
	//								{EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo},
									{EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_KIKI_OPT_KAIYAKU},
									{EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_03_00},
									{EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)},
								};
							ekk1681B001Out1 = callSC(handle, scCall, param, dataMapKey, ekk1681B001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
						}
						if(kkopSvcKeiNoNet != null && !"".equals(kkopSvcKeiNoNet) )
						{
							//異動予約一覧照会
							Object[][] ekk1681B001IN2 = {
									{EKK1681B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK1681B001},
									{EKK1681B001CBSMsg.FUNC_CODE,     "1"},
									{EKK1681B001CBSMsg.KEY_KKOP_SVC_KEI_NO, kkopSvcKeiNoTel},
									{EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_KIKI_OPT_KAIYAKU},
									{EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_03_00},
									{EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)},
								};
							ekk1681B001Out2 = callSC(handle, scCall, param, dataMapKey, ekk1681B001IN2).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
						}
						if (ekk1681B001Out1 != null && ekk1681B001Out1.length > 0 || ekk1681B001Out2 != null && ekk1681B001Out2.length > 0)
							// 自動解約される場合
						{
							//異動予約がある機器を設定
							if(ekk1681B001Out1 != null && ekk1681B001Out1.length > 0)
							{
								idodataMap.put(kkopSvcKeiNoNet, kkopSvcKeiNoNet);
							}
							if(ekk1681B001Out2 != null && ekk1681B001Out2.length > 0)
							{
								idodataMap.put(kkopSvcKeiNoTel, kkopSvcKeiNoTel);
							}
							//すべての機器が自動解約される場合
							if(iniFlg && tknrKsnLst.size() == i + 1)
							{
								//ルータは自動解約
								tknrKykFlg = false;
							}
						}
						else
						{
							// 自動解約されないものがある場合
							iniFlg = false;
						}
					}
					
				}
				/* ++++++++++ v7.00.01 修正終了 ++++++++++ */
				/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
				// 移動VA解約予約取得
				boolean vKykFlg = true;
				iniFlg = true;
				String vAri = (String)ccMsg.get("va_ari");
				Boolean vIdoum = (Boolean)ccMsg.get("va_ido_um");
				ArrayList vKsnLst = (ArrayList)ccMsg.get("vaKktkSvcNoList");
				HashMap<String, String> vadataMap = null;
				for(int i = 0; i < vKsnLst.size();i++)
				{
					vadataMap = (HashMap<String, String>) vKsnLst.get(i);
					String kktkSvcKeiNo = (String)vadataMap.get("kktk_svc_kei_no");
					if(kktkSvcKeiNo != null && !"".equals(kktkSvcKeiNo))
					{
						//異動予約一覧照会
						Object[][] ekk1681B001IN = {
								{EKK1681B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK1681B001},
								{EKK1681B001CBSMsg.FUNC_CODE,     "1"},
								{EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo},
								{EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_KIKI_KAIYAKU},
								{EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_03_00},
								{EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)},
							};
						CAANMsg[] ekk1681B001Out = callSC(handle, scCall, param, dataMapKey, ekk1681B001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
						if (ekk1681B001Out != null && ekk1681B001Out.length > 0)
						{
							//異動予約がある機器を設定
							idodataMap.put(kktkSvcKeiNo, kktkSvcKeiNo);
							//すべての機器が自動解約される場合
							if(iniFlg && vKsnLst.size() == i + 1)
							{
								//VAは自動解約
								vKykFlg = false;
							}
						}
						else
						{
							// 自動解約されないものがある場合
							iniFlg = false;
						}
					}
					
				}
				// 移動PLC解約予約
				boolean pKykFlg = true;
				iniFlg = true;
				String pAri = (String)ccMsg.get("plc_ari");
				Boolean pIdoum = (Boolean)ccMsg.get("plc_ido_um");
				ArrayList pKsnLst = (ArrayList)ccMsg.get("plcKktkSvcNoList");
				HashMap<String, String> plcdataMap = null;
				for(int i = 0; i < pKsnLst.size();i++)
				{
					plcdataMap = (HashMap<String, String>) pKsnLst.get(i);
					String kktkSvcKeiNo = (String)plcdataMap.get("kktk_svc_kei_no");
					if(kktkSvcKeiNo != null && !"".equals(kktkSvcKeiNo))
					{
						//異動予約一覧照会
						Object[][] ekk1681B001IN = {
								{EKK1681B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK1681B001},
								{EKK1681B001CBSMsg.FUNC_CODE,     "1"},
								{EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo},
								{EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_KIKI_KAIYAKU},
								{EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_03_00},
								{EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)},
							};
						CAANMsg[] ekk1681B001Out = callSC(handle, scCall, param, dataMapKey, ekk1681B001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
						if (ekk1681B001Out != null && ekk1681B001Out.length > 0)
						{
							//異動予約がある機器を設定
							idodataMap.put(kktkSvcKeiNo, kktkSvcKeiNo);
							//すべての機器が自動解約される場合
							if(iniFlg && pKsnLst.size() == i + 1)
							{
								//PLCは自動解約
								pKykFlg = false;
							}
						}
						else
						{
							// 自動解約されないものがある場合
							iniFlg = false;
						}
					}
					
					/* ++++++++++ v5.00.05 修正終了 ++++++++++ */
				}
				//住所変更時移動可能な料金プラン(jhNetkikiIdoOk)で、
				//移動ルーター、移動PLC、移動VAを保有している(rAri)が
				//移動有無チェックボックス(rIdoum)にチェックをつけていない場合、
				//確認メッセージを表示する。（自動解約されるもの(rKykFlg)は対象外）
				/* ++++++++++ v5.00.05 修正開始 ++++++++++ */
				String jhNetkikiIdoOk = (String)ccMsg.get("jh_netkiki_ido_ok");
				boolean stcRtFlg = false;
				boolean stcVaFlg = false;
				boolean stcPlcFlg = false;
//				if(ccMsg.get("setti_router_kind") != null && !"".equals(ccMsg.get("setti_router_kind")))
//				{
//					stcRtFlg = true;
//				}
//				if(ccMsg.get("setti_va_kind") != null && !"".equals(ccMsg.get("setti_va_kind")))
//				{
//					stcVaFlg = true;
//				}
//				if(ccMsg.get("setti_plc_kind") != null && !"".equals(ccMsg.get("setti_plc_kind")))
//				{
//					stcPlcFlg = true;
//				}
				/* ++++++++++ v7.00.00 修正開始 ++++++++++ */
				if (FUNC_CODE_2.equals(func_code) && JH_NETKIKI_IDO_OK.equals(jhNetkikiIdoOk)
						&& (IDOKIKI_HOYU_UM_U.equals(rAri) && !rIdoum && rKykFlg && !stcRtFlg
								|| IDOKIKI_HOYU_UM_U.equals(tknrAri) && !tknrIdoum && tknrKykFlg
								|| IDOKIKI_HOYU_UM_U.equals(vAri) && !vIdoum && vKykFlg && !stcVaFlg
							|| IDOKIKI_HOYU_UM_U.equals(pAri) && !pIdoum && pKykFlg && !stcPlcFlg))
				{
					setMessageInfo(ccMsg, "EKBC640--Q", "", "", ERR_FLG_WARNING);
				}
				/* ++++++++++ v5.00.05 修正終了 ++++++++++ */	
				/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
				
				
				//同番移転一覧照会
				if(ccMsg.get("svc_kei_no") != null && !"".equals(ccMsg.get("svc_kei_no"))){
					Object[][] etu0021B010IN = {
							{ETU0021B010CBSMsg.TEMPLATEID,    TEMPLATE_ID_ETU0021B010},
							{ETU0021B010CBSMsg.FUNC_CODE,     "1"},
							{ETU0021B010CBSMsg.SEARCH_TYPE,     "1"},
							{ETU0021B010CBSMsg.MAX_SEARCH_NUM,     "10000"},
							{ETU0021B010CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
						};
					CAANMsg[] etu0021B010Out = callSC(handle, scCall, param, dataMapKey, etu0021B010IN).getCAANMsgList(ETU0021B010CBSMsg.ETU0021B010CBSMSG1LIST);
					// 同番移転スキーマにレコードが存在し、同番移転ステータスが'021'(NTT送信待ち)、または'022'(NTT送信済み)の場合、エラー
					if (etu0021B010Out != null && etu0021B010Out.length > 0)
					{
						for(CAANMsg etu0021B010Msg:etu0021B010Out){
							String dobanitenStat = etu0021B010Msg.getString(ETU0021B010CBSMsg1List.DOBANITEN_STAT);
							if(DOBANITEN_STAT_021.equals(dobanitenStat) || DOBANITEN_STAT_022.equals(dobanitenStat)){
								// エラーメッセージを設定
								setMessageInfo(ccMsg, "EKBC660-KW", "", "", ERR_FLG_ERR);
								break;
							}
						}
					}
				}
		
				//電話予約情報
				/* ++++++++++ v4.00.03 修正開始 ++++++++++ */
				/* ++++++++++ v5.00.06 修正開始 ++++++++++ */
				//電話の場合
				if (PRC_GRP_CD_10.equals(ccMsg.get("prc_grp_cd")))
				{
					ArrayList<String> skkuLst = new ArrayList<String>();
					String svckku = (String)ccMsg.get("svc_kei_kaisen_ucwk_no");
					if(svckku != null && !"".equals(svckku)){
						skkuLst.add(svckku);
						//サービス契約回線内訳番号が異なれば撤去側もチェックする
						if(!svckku.equals(ccMsg.get("svc_kei_kaisen_ucwk_no_tekkyo"))){
							skkuLst.add((String)ccMsg.get("svc_kei_kaisen_ucwk_no_tekkyo"));
						}
					}
					for(String skkuNo :skkuLst)
					{
						// ***** EKK2011B001 住所変更申込一時保存一覧照会 *****
						if (FUNC_CODE_2.equals(func_code)){
							Object[][] ekk2011b010IN = {
								{EKK2011B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK2011B001},
								{EKK2011B001CBSMsg.FUNC_CODE,     "1"},
								{EKK2011B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,  skkuNo},
								{EKK2011B001CBSMsg.KEY_SYSID,  (String)ccMsg.get("sysid")},
							};
							CAANMsg[] ekk2011b010Out = callSC(handle, scCall, param, dataMapKey, ekk2011b010IN).getCAANMsgList(EKK2011B001CBSMsg.EKK2011B001CBSMSG1LIST);
							if (ekk2011b010Out != null && ekk2011b010Out.length > 0)
							{
								String adchm_tppv_no = "";
								for(int i=0; i < ekk2011b010Out.length; i++)
								{
									adchm_tppv_no = ekk2011b010Out[i].getString(EKK2011B001CBSMsg1List.ADCHM_TPPV_NO);
									if(adchm_tppv_no != null)
									{
										// ***** EKK1951B001 住所変更申込電話番号一時保存一覧照会 *****
										Object[][] ekk1951b010IN = {
											{EKK1951B001CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK1951B001},
											{EKK1951B001CBSMsg.FUNC_CODE,     "1"},
											{EKK1951B001CBSMsg.KEY_ADCHM_TPPV_NO,  adchm_tppv_no},
											{EKK1951B001CBSMsg.KEY_SYSID,  (String)ccMsg.get("sysid")},
										};
										CAANMsg[] ekk1951b010Out = callSC(handle, scCall, param, dataMapKey, ekk1951b010IN).getCAANMsgList(EKK1951B001CBSMsg.EKK1951B001CBSMSG1LIST);
										if (ekk1951b010Out != null && ekk1951b010Out.length > 0)
										{
											// エラーメッセージを設定
											setMessageInfo(ccMsg, "EKBC680-KW", "", "", ERR_FLG_WARNING);
											break;
										}
						/* ++++++++++ v5.00.06 修正終了 ++++++++++ */
									}
								}
							}
						}
						
					}
					/* ++++++++++ v4.00.03 修正終了 ++++++++++ */
					
					/* ++++++++++ v5.00.07 追加開始（仕様未確定仮実装コメントアウト） ++++++++++ */
					//電話の場合、新規設置VA機器と料金コースのポート数が合っていなければエラー
//					if(ccMsg.get("setti_va_kind") != null && !"".equals(ccMsg.get("setti_va_kind")))
//					{
//						// EKK1861B001（サービス別宅内機器型式候補一覧照会）
//						Object[][] ekk1861b001IN = {
//								{EKK1861B001CBSMsg.TEMPLATEID,                   TEMPLATE_ID_EKK1861B001},
//								{EKK1861B001CBSMsg.FUNC_CODE,                    "1"},
//								{EKK1861B001CBSMsg.KEY_TKMDL_CHSHT_JOKEN_SBT_CD, "10"},
//								{EKK1861B001CBSMsg.KEY_TAKNKIKI_MODEL_CD,        (String)ccMsg.get("setti_va_kind")},
//								{EKK1861B001CBSMsg.KEY_ADD_KH,                   "1"},
//								{EKK1861B001CBSMsg.KEY_BASE_YMD,                 (String)ccMsg.get("stdardYmd")},
//							};
//						
//							CAANMsg[] ekk1861b001Out = callSC(handle, scCall, param, dataMapKey, ekk1861b001IN).getCAANMsgList(EKK1861B001CBSMsg.EKK1861B001CBSMSG1LIST);
//							if (ekk1861b001Out != null && ekk1861b001Out.length > 0)
//							{
//								String portCnt = ekk1861b001Out[0].getString(EKK1861B001CBSMsg1List.PORT_CNT);
//								String pcrsCd = (String)ccMsg.get("pcrs_cd");
//								if (pcrsCd != null 	&& !"".equals(pcrsCd))
//								{
//									if(PCRS_CD_1BANGO.equals(pcrsCd) && !PORT_CNT_1.equals(portCnt) || PCRS_CD_2BANGO.equals(pcrsCd) && !PORT_CNT_2.equals(portCnt))
//									{
//										// エラーメッセージを設定(2013/07/24ID未定)
//										setMessageInfo(ccMsg, "EKBC680-KW", "", "", ERR_FLG_ERR);
//									}
//								}
//							}
//					}
					/* ++++++++++ v5.00.07 追加終了（仮実装コメントアウト） ++++++++++ */
				}
			}
			/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
			if(CHG_TKN_ROUTER_IDO_CHG.equals(ccMsg.get("chg_takino_router_ido_um")))
			{
				ArrayList adrChgDtlList = (ArrayList) jhDtlMsg.get("adrChgDtlList");
				HashMap<String, Object> childMap = null;
				String kkopStatNet = "";
				String kkopStatTel = "";
				for (int i = 0; i < adrChgDtlList.size(); i++)
				{
					childMap = (HashMap<String, Object>) adrChgDtlList.get(i);
					//種別コード"09"（機器オプション）の場合
					if(ADCHG_DTL_SBT_CD_KKOP.equals(childMap.get("adchg_dtl_sbt_cd")) )
					{
						if(KKOP_SVC_KEI_NO_SELECTED.equals(childMap.get("kkop_svc_kei_no_net_sel")) )
						{
							kkopStatNet = (String) childMap.get("kkop_svc_kei_no_net_stat");
						}
						else if(KKOP_SVC_KEI_NO_SELECTED.equals(childMap.get("kkop_svc_kei_no_tel_sel")) )
						{
							kkopStatTel = (String) childMap.get("kkop_svc_kei_no_tel_stat");
						}
					}
				}
				if((Boolean) ccMsg.get("takino_router_ido_um"))
				{
					//パターン無（画面非活性）
				}
				else
				{
					if(KKOP_SVC_KEI_NO_STAT_ADD.equals(kkopStatTel) || KKOP_SVC_KEI_NO_STAT_IDO.equals(kkopStatTel))
					{
						// エラーメッセージを設定
						setMessageInfo(ccMsg, "EKB1040-JW","移動多機能ルーターの電話アダプター機能,サービス契約中,移動の取消は", "", ERR_FLG_ERR);
					}
				}
				
			}
			/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
		}
		/* ++++++++++ v4.00.02 追加終了 ++++++++++ */

		/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
		if (FUNC_CODE_2.equals(func_code) && (IDO_DIV_VALUE_00032.equals(idoDiv) || IDO_DIV_VALUE_00035.equals(idoDiv)))
		{
			HashMap<String, Object> chgTvCrsMap = (HashMap<String, Object>)param.getData("chgTvCourseInfo");
			String bfr_pcrs_nm = "";
			String aft_pcrs_nm = "";
			String kojiak_sbt_cd = "";
			// ANK-4673-00-00 ADD START
			String bfr_pcrs_cd = "";
			String aft_pcrs_cd = "";
			String kojiak_no = "";
			// ANK-4673-00-00 ADD END
			if(chgTvCrsMap != null){
				bfr_pcrs_nm = (String)chgTvCrsMap.get("bfr_pcrs_nm");
				aft_pcrs_nm = (String)chgTvCrsMap.get("aft_pcrs_nm");
				kojiak_sbt_cd = (String)chgTvCrsMap.get("kojiak_sbt_cd");
				// ANK-4673-00-00 ADD START
				bfr_pcrs_cd = (String)chgTvCrsMap.get("bfr_pcrs_cd");
				aft_pcrs_cd = (String)chgTvCrsMap.get("aft_pcrs_cd");
				// ANK-4673-00-00 ADD END
			}
			if(!"".equals(bfr_pcrs_nm) && !"".equals(aft_pcrs_nm))
			{
				// 工事案件種別コードが新設の場合
				if (KOJIAK_SBT_CD_NEW.equals(kojiak_sbt_cd))
				{
					// ANK-4673-00-00 ADD START
					if (("AC1".equals(bfr_pcrs_cd) && "AC0".equals(aft_pcrs_cd))
							||("AC0".equals(bfr_pcrs_cd) && "AC1".equals(aft_pcrs_cd))
							||("A37".equals(bfr_pcrs_cd) && "AC0".equals(aft_pcrs_cd))
							||("A37".equals(bfr_pcrs_cd) && "AC1".equals(aft_pcrs_cd))
							||("AC0".equals(bfr_pcrs_cd) && "A37".equals(aft_pcrs_cd))
							||("AC1".equals(bfr_pcrs_cd) && "A37".equals(aft_pcrs_cd))){
						// ***** EKU0011A010 工事案件一意照会 *****
						kojiak_no = (String)chgTvCrsMap.get("kojiak_no");
						Object[][] eku0011a010IN = {
							{EKU0011A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKU0011A010},
							{EKU0011A010CBSMsg.FUNC_CODE,     "1"},
							{EKU0011A010CBSMsg.KEY_KOJIAK_NO, kojiak_no},
						};
						CAANMsg[] eku0011a010Out = callSC(handle, scCall, param, dataMapKey, eku0011a010IN).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
						if (eku0011a010Out != null && eku0011a010Out.length > 0)
						{
							// 工事案件ステータスが工事完了済でない場合
							String takniKojiFinRsvYmd = eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.TAKNI_KOJI_FIN_RSV_YMD);
							String opeDate = JCCBPCommon.getOpeDate(null);
							if (takniKojiFinRsvYmd != null){
								if (takniKojiFinRsvYmd.compareTo(opeDate) <=0 ){
									String convertedDateStr = takniKojiFinRsvYmd.substring(0,4) + "/" 
										+ takniKojiFinRsvYmd.substring(4,6) + "/" 
										+ takniKojiFinRsvYmd.substring(6);
									// エラーメッセージを設定
									setMessageInfo(ccMsg, "EKB5440-JW", "工事予定日("+convertedDateStr+")当日以降,コースを変更", "", ERR_FLG_ERR);
									return param;
								}
							}
						}
					}
					// ANK-4673-00-000 ADD END
					// エラーメッセージを設定
					setMessageInfo(ccMsg, "EKBD230--Q", bfr_pcrs_nm+","+aft_pcrs_nm, "", ERR_FLG_WARNING);
				}
				// 工事案件種別コードが住所変更(新設),eoテレビ変更の場合
				else if (KOJIAK_SBT_CD_ADCHGA.equals(kojiak_sbt_cd) || KOJIAK_SBT_CD_EOTVCHG.equals(kojiak_sbt_cd))
				{
					String cd_div_nm = "";
					Object[][] ezm0171A010IN = {
							{EZM0171A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EZM0171A010},
							{EZM0171A010CBSMsg.FUNC_CODE,     "1"},
							{EZM0171A010CBSMsg.KEY_CD_DIV, (String)chgTvCrsMap.get("koji_uk_optnty_ido_div")},
							{EZM0171A010CBSMsg.KEY_CD_SBT_CD, "CD00576"},
						};
						CAANMsg[] ezm0171A010Out = callSC(handle, scCall, param, dataMapKey, ezm0171A010IN).getCAANMsgList(EZM0171A010CBSMsg.EZM0171A010CBSMSG1LIST);
						// 工事受付契機異動区分名称
						if (ezm0171A010Out != null && ezm0171A010Out.length > 0)
						{
							cd_div_nm = ezm0171A010Out[0].getString(EZM0171A010CBSMsg1List.CD_DIV_NM);

						}
					// エラーメッセージを設定
					String msg =  cd_div_nm + ","+bfr_pcrs_nm+","+aft_pcrs_nm;
					setMessageInfo(ccMsg, "EKBD240--Q",msg , "", ERR_FLG_WARNING);
				}
				
			}
			
		}
		/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
		/* ++++++++++ v5.00.03 追加開始 ++++++++++ */		
		/* ++++++++++ v7.00.00 削除開始 ++++++++++ */
//		if(KOJIAK_SBT_CD_SHUYOUGAE.equals(ccMsg.get("kojiak_sbt_cd"))	&& (IDO_DIV_VALUE_00032.equals(idoDiv) || IDO_DIV_VALUE_00035.equals(idoDiv))
//				|| IDO_DIV_VALUE_00009.equals(idoDiv) && SCKMCT_PTN_41.equals(ccMsg.get("sckmct_ptn")))
//		{
//			//ファミリーパック有無
//			String family_pack_um = (String) ccMsg.get("family_pack_um");
//			//保有ルーターコード
////			String hoyu_router_cd = (String)ccMsg.get("hoyu_router_cd");
//			//保有ルーター速度種別コード
////			String router_speed_sbt_cd = (String)ccMsg.get("router_speed_sbt_cd");
//			//保有ルーター種類コード
//			String router_kind_cd = (String)ccMsg.get("router_kind_cd");
//			//ルーター種別（選択値 0:Basic 1:Wi-fi 2:なし)
//			String router_sbt = (String)ccMsg.get("router_sbt");
//			//直送機器有（0:なし 1:あり)
//			String direct_ship = (String)ccMsg.get("direct_ship");
//			
//			
//			if(FAMILY_PACK_ARI.equals(family_pack_um))
//			{
//				if(NEW_ROUTER_SBT_BASIC.equals(router_sbt))
//				{
//					if(ROUTER_KIND_CD_WIFI_1G.equals(router_kind_cd))
//					{
//						// エラーメッセージを設定
//						setMessageInfo(ccMsg, "EKB2880-KW", "", "router_kind", ERR_FLG_ERR);
//					}
//					else
//					{
//						// エラーメッセージを設定
//						setMessageInfo(ccMsg, "EKB2870-KW", "", "router_kind", ERR_FLG_ERR);
//					}
//				}
//				else if(NEW_ROUTER_SBT_WIFI.equals(router_sbt))
//				{
//					if( ROUTER_KIND_CD_WIFI_1G.equals(router_kind_cd))
//					{
//						// エラーメッセージを設定
//						setMessageInfo(ccMsg, "EKB2880-KW", "", "router_kind", ERR_FLG_ERR);
//					}
//					else if(ROUTER_KIND_CD_OLDWIFI_100MG .equals(router_kind_cd) || ROUTER_KIND_CD_OLDWIFI_100MN .equals(router_kind_cd))
//					{
//						setMessageInfo(ccMsg, "EKB2860--Q", "", "router_kind", ERR_FLG_WARNING);
//					}
//				}
//				else
//				{
//					if(!ROUTER_KIND_CD_WIFI_1G.equals(router_kind_cd))
//					{
//						// エラーメッセージを設定
//						setMessageInfo(ccMsg, "EKB2870-KW", "", "router_kind", ERR_FLG_ERR);
//					}
//				}
//				
//			}
//			else
//			{
//				if(NEW_ROUTER_SBT_BASIC.equals(router_sbt) || NEW_ROUTER_SBT_WIFI.equals(router_sbt))
//				{
//					if(ROUTER_KIND_CD_BASIC_1G.equals(router_kind_cd) || ROUTER_KIND_CD_WIFI_1G.equals(router_kind_cd))
//					{
//						// エラーメッセージを設定
//						setMessageInfo(ccMsg, "EKB2880-KW", "", "router_kind", ERR_FLG_ERR);
//					}
//					else if(NEW_ROUTER_SBT_WIFI.equals(router_sbt) 
//							&& (ROUTER_KIND_CD_OLDWIFI_100MG .equals(router_kind_cd) || ROUTER_KIND_CD_OLDWIFI_100MN .equals(router_kind_cd)))
//					{
//						setMessageInfo(ccMsg, "EKB2860--Q", "", "router_kind", ERR_FLG_WARNING);
//					}
//				}
//				else
//				{
//					//OK
//				}
//			}
//			
//			if(DIRECT_SHIP_ARI.equals(direct_ship) && KOJIAK_SBT_CD_SHUYOUGAE.equals(ccMsg.get("kojiak_sbt_cd")))
//			{
//				if(!NEW_ROUTER_SBT_NASI.equals(router_sbt))
//				{
//					// エラーメッセージを設定
//					String msg = "保有ルーター,契約変更中,変更";
//					setMessageInfo(ccMsg, "EKB1040-JW", msg, "router_kind", ERR_FLG_ERR);
//				}
//			}
//			
//		}
		/* ++++++++++ v7.00.00 削除終了 ++++++++++ */
		
	/* ++++++++++ v5.00.04 追加開始 ++++++++++ */
		//工事案件
		workMap.put("work_mskm_dtl_no", "");
		/* ++++++++++ v5.00.11 修正開始 ++++++++++ */
		if(ccMsg.get("mskm_dtl_no") != null && !"".equals(ccMsg.get("mskm_dtl_no")) && kojiakSbtCd != null && !"".equals(kojiakSbtCd))
		{
		/* ++++++++++ v5.00.11 修正終了 ++++++++++ */
			String mskm_dtl_no = (String) ccMsg.get("mskm_dtl_no");
			Object[][] ekk0021A010In = {
					{EKK0021A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0021A010},
					{EKK0021A010CBSMsg.FUNC_CODE,     "2"},
					{EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskm_dtl_no},
				};
			CAANMsg[] ekk0021A010Out = callSC(handle, scCall, param, dataMapKey, ekk0021A010In).getCAANMsgList(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
			/* ++++++++++ v20.00.00 ADD START ++++++++++ */
			boolean mskmDtlPnoFlg = false;
			if (ekk0021A010Out != null && ekk0021A010Out.length > 0)
			{
				// 住所変更工事の場合、申込明細のステータスをチェック
				// 撤去工事の申込明細は、住所変更キャンセル⇒再立上により申込取消されている可能性があるため
				if( (Boolean)ccMsg.get("kojak_juhen") )
				{
					String mskmDtlStat = ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_DTL_STAT);
					if("920".equals(mskmDtlStat)){
						// 申込明細がキャンセル済の場合は、申込明細番号(場所番号用)で再取得
						if(ccMsg.get("mskm_dtl_no_pno") != null && !"".equals(ccMsg.get("mskm_dtl_no_pno"))){
							mskmDtlPnoFlg = true;
							mskm_dtl_no = (String) ccMsg.get("mskm_dtl_no_pno");
							ekk0021A010In = new Object[][]{
									{EKK0021A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0021A010},
									{EKK0021A010CBSMsg.FUNC_CODE,     "2"},
									{EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskm_dtl_no},
								};
							ekk0021A010Out = callSC(handle, scCall, param, dataMapKey, ekk0021A010In).getCAANMsgList(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
						}
					}
				}
			}
			/* ++++++++++ v20.00.00 ADD END   ++++++++++ */
			if (ekk0021A010Out != null && ekk0021A010Out.length > 0)
			{
				Object[][] ekk0011A010In = {
						{EKK0011A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0011A010},
						{EKK0011A010CBSMsg.FUNC_CODE,     "2"},
						{EKK0011A010CBSMsg.KEY_MSKM_NO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_NO)},
					};
				CAANMsg[] ekk0011A010Out = callSC(handle, scCall, param, dataMapKey, ekk0011A010In).getCAANMsgList(EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST);

				if (ekk0011A010Out != null && ekk0011A010Out.length > 0)
				{
					HashMap inMap = (HashMap)param.getData("KKSV015001SC");
					Object[][] ekk0011C020In = {
							{EKK0011C020CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0011C020},
							{EKK0011C020CBSMsg.FUNC_CODE,     func_code},
							{EKK0011C020CBSMsg.MSKM_NO, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_NO)},
							{EKK0011C020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, inMap.get("kepco_custinfo_juju_doi_um")},
							/* ++++++++++ v5.00.08 追加開始 ++++++++++ */
							{EKK0011C020CBSMsg.KOJI_REQ_INFO_RRK_JIKO, inMap.get("koji_req_info_rrk_jiko")},
							/* ++++++++++ v5.00.10 削除開始 ++++++++++ */
//							{EKK0011C020CBSMsg.TEL_RRK_KIBO_TIME_CD, inMap.get("tel_rrk_kibo_time_cd")},
							/* ++++++++++ v5.00.10 削除終了 ++++++++++ */
							/* ++++++++++ v5.00.08 追加終了 ++++++++++ */
	
							{EKK0011C020CBSMsg.UPD_DTM_BF, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.UPD_DTM)},
							{EKK0011C020CBSMsg.MSKM_YMD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_YMD)},
							{EKK0011C020CBSMsg.MSKM_UK_DTM, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_UK_DTM)},
							{EKK0011C020CBSMsg.MSKM_SBT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_SBT_CD)},
							{EKK0011C020CBSMsg.MSKMSHO_ARIV_YMD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKMSHO_ARIV_YMD)},
							{EKK0011C020CBSMsg.MSKM_UK_TNT_USER_ID, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_UK_TNT_USER_ID)},
							{EKK0011C020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.TTL_BUSINESS_MSKM_OPT_CD)},
							{EKK0011C020CBSMsg.MSKM_RRKS_TELNO, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_RRKS_TELNO)},
							{EKK0011C020CBSMsg.MSKM_JSSIS_SBT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_JSSIS_SBT_CD)},
							{EKK0011C020CBSMsg.CUST_YOBO_JIKO, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.CUST_YOBO_JIKO)},
							{EKK0011C020CBSMsg.TEL_RRK_KIBOD_SBT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.TEL_RRK_KIBOD_SBT_CD)},
							/* ++++++++++ v5.00.10 修正開始 ++++++++++ */
							/* ++++++++++ v5.00.08 削除開始 ++++++++++ */
							{EKK0011C020CBSMsg.TEL_RRK_KIBO_TIME_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.TEL_RRK_KIBO_TIME_CD)},
							/* ++++++++++ v5.00.08 削除終了 ++++++++++ */
							/* ++++++++++ v5.00.10 修正終了 ++++++++++ */
							{EKK0011C020CBSMsg.TAKCHO_KIBOD_SBT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.TAKCHO_KIBOD_SBT_CD)},
							{EKK0011C020CBSMsg.TAKCHO_KIBO_TIME_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.TAKCHO_KIBO_TIME_CD)},
							{EKK0011C020CBSMsg.REFERER, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.REFERER)},
							{EKK0011C020CBSMsg.SHOSA_BF_RRK_JIKO_YH, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.SHOSA_BF_RRK_JIKO_YH)},
							{EKK0011C020CBSMsg.SHOSA_BF_RRK_JIKO, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.SHOSA_BF_RRK_JIKO)},
							{EKK0011C020CBSMsg.USE_SVC_KEIZK_SBT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.USE_SVC_KEIZK_SBT_CD)},
							{EKK0011C020CBSMsg.UK_TNTSHA_SKBT_CD, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.UK_TNTSHA_SKBT_CD)},
							/* ++++++++++ v5.00.08 削除開始 ++++++++++ */
//							{EKK0011C020CBSMsg.KOJI_REQ_INFO_RRK_JIKO, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.KOJI_REQ_INFO_RRK_JIKO)},
							/* ++++++++++ v5.00.08 削除終了 ++++++++++ */
// ANK-3910-00-00対応 20210117 星野 ADD START
							{EKK0011C020CBSMsg.TEGAK_SVC_MSKM_KIKI, ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.TEGAK_SVC_MSKM_KIKI)}
// ANK-3910-00-00対応 20210117 星野 ADD END
						};
					CAANMsg ekk0011C020out = callSC(handle, scCall, param, dataMapKey, ekk0011C020In);
					
					ArrayList inList = (ArrayList)inMap.get("EKK0011D020CBSMsg1List");
					HashMap childMap = (HashMap)inList.get(0);
					Object[][] ekk0021C040In = {
							{EKK0021C040CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0021C040},
							{EKK0021C040CBSMsg.FUNC_CODE,     func_code},
							{EKK0021C040CBSMsg.MSKM_DTL_NO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_DTL_NO)},
							{EKK0021C040CBSMsg.KOJI_APO_RRKS_SHITEI_CD, childMap.get("koji_apo_rrks_shitei_cd")},
							{EKK0021C040CBSMsg.KOJI_APO_RRKS_TELNO, childMap.get("koji_apo_rrks_telno")},
							{EKK0021C040CBSMsg.NEWCONST_BUKKEN_CD, childMap.get("newconst_bukken_cd")},
							{EKK0021C040CBSMsg.HUKKAT_ANKEN_FLG, childMap.get("hukkat_anken_flg")},
							{EKK0021C040CBSMsg.SAME_EQUIP_RE_MSKM_CD, childMap.get("same_equip_re_mskm_cd")},
							/* ++++++++++ v5.00.08 削除開始 ++++++++++ */
//							{EKK0021C040CBSMsg.RRK_WAY_HOKI, childMap.get("kojiak_biko")},
							/* ++++++++++ v5.00.08 削除終了 ++++++++++ */
							/* ++++++++++ v20.00.00 MOD START ++++++++++ */
//							{EKK0021C040CBSMsg.MSKMSHO_DTL_NO, inMap.get("mskmsho_dtl_no")},
//							{EKK0021C040CBSMsg.MSKMSHO_NO, inMap.get("mskmsho_no")},
							
							// 申込明細番号(場所番号用) で差換えた場合は、申込書番号・申込書明細番号は更新せず引継
							// CCパラメータで更新すると、撤去の申込書番号・申込書明細番号で新設の申込明細を更新してしまうため。
							// 住所変更工事の場合、この2項目は画面からの更新不可のため、引継で問題ない。
							{EKK0021C040CBSMsg.MSKMSHO_DTL_NO, mskmDtlPnoFlg ? ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_DTL_NO) : inMap.get("mskmsho_dtl_no")},
							{EKK0021C040CBSMsg.MSKMSHO_NO, mskmDtlPnoFlg ? ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_NO) : inMap.get("mskmsho_no")},
							/* ++++++++++ v20.00.00 MOD END ++++++++++ */
	
							{EKK0021C040CBSMsg.UPD_DTM_BF,  ekk0011C020out.getString(EKK0011C020CBSMsg.UPD_DTM)},
							{EKK0021C040CBSMsg.MSKM_YMD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_YMD)},
							{EKK0021C040CBSMsg.MSKM_FORM_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_FORM_CD)},
							{EKK0021C040CBSMsg.MSKM_DTL_SBT_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_DTL_SBT_CD)},
							{EKK0021C040CBSMsg.RRKS_KTAI_TELNO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.RRKS_KTAI_TELNO)},
							{EKK0021C040CBSMsg.RRKS_OFFC_NM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.RRKS_OFFC_NM)},
							{EKK0021C040CBSMsg.DT_RRKS_TELNO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.DT_RRKS_TELNO)},
							{EKK0021C040CBSMsg.NEW_MSKM_SBT_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.NEW_MSKM_SBT_CD)},
							{EKK0021C040CBSMsg.MSKM_OPTNTY_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_OPTNTY_CD)},
							{EKK0021C040CBSMsg.TAKCHO_KIBO_APO_KIGEN_YMD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD)},
							{EKK0021C040CBSMsg.RRK_JIKO_ADD_DTM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.RRK_JIKO_ADD_DTM)},
							{EKK0021C040CBSMsg.MSKM_RRKS_MLAD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKM_RRKS_MLAD)},
							{EKK0021C040CBSMsg.KOJI_PRG_TCHI_MLAD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KOJI_PRG_TCHI_MLAD)},
							{EKK0021C040CBSMsg.RRK_JIKO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.RRK_JIKO)},
							{EKK0021C040CBSMsg.RCNT_SHOKAI_YMD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.RCNT_SHOKAI_YMD)},
							{EKK0021C040CBSMsg.WEB_SHOKAI_CNT, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.WEB_SHOKAI_CNT)},
							{EKK0021C040CBSMsg.PC_SHOKAI_CNT, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.PC_SHOKAI_CNT)},
							{EKK0021C040CBSMsg.KTAI_SHOKAI_CNT, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KTAI_SHOKAI_CNT)},
							{EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KJSC_TCH_KTAI_MLAD)},
							{EKK0021C040CBSMsg.KJSC_TCH_PC_MLAD_CHG_YMD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KJSC_TCH_PC_MLAD_CHG_YMD)},
							{EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD_CHG_YMD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KJSC_TCH_KTAI_MLAD_CHG_YMD)},
							{EKK0021C040CBSMsg.ML_SEND_JGI_FLG, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.ML_SEND_JGI_FLG)},
							{EKK0021C040CBSMsg.ML_SEND_JGI_RSN_MEMO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.ML_SEND_JGI_RSN_MEMO)},
							{EKK0021C040CBSMsg.BMP_MSKM_RRKS_TLN, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.BMP_MSKM_RRKS_TLN)},
							{EKK0021C040CBSMsg.OP_SVC_HKTGI_UM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.OP_SVC_HKTGI_UM)},
							{EKK0021C040CBSMsg.DSL_ATICLE_SOHU_KIBO_UM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM)},
							{EKK0021C040CBSMsg.HNIN_CFM_ATICLE_SBT_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD)},
							{EKK0021C040CBSMsg.KEI_HUKA_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KEI_HUKA_CD)},
							{EKK0021C040CBSMsg.MAP_TEMP_UM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MAP_TEMP_UM)},
							{EKK0021C040CBSMsg.KCN_STB_MSKM_CNT, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KCN_STB_MSKM_CNT)},
							{EKK0021C040CBSMsg.KCN_STB_KIND_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.KCN_STB_KIND_CD)},
							{EKK0021C040CBSMsg.MANSSBSYS_RNKI_YO_KIJIRAN, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN)},
							{EKK0021C040CBSMsg.MANSION_ID, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MANSION_ID)},
							{EKK0021C040CBSMsg.CATID, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.CATID)},
							{EKK0021C040CBSMsg.MKM_UK_SBT_CD, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MKM_UK_SBT_CD)},
							{EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TNTSHA_NM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM)},
							{EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TELNO, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_TRAT_IF_TELNO)},
							{EKK0021C040CBSMsg.HNIN_CFM_ATICLE_NM, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.HNIN_CFM_ATICLE_NM)},
							/* ++++++++++ v5.00.08 追加開始 ++++++++++ */
							{EKK0021C040CBSMsg.RRK_WAY_HOKI, ekk0021A010Out[0].getString(EKK0021A010CBSMsg1List.RRK_WAY_HOKI)},
							/* ++++++++++ v5.00.08 追加終了 ++++++++++ */
						};
	
					callSC(handle, scCall, param, dataMapKey, ekk0021C040In);
					
					// 申込内容承認登録マップ.申込番号 ← 申込番号
					if (ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_NO) == null || "".equals(ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_NO))) {
						workMap.put("mskm_no", new String());
					} else {
						workMap.put("mskm_no", ekk0011A010Out[0].getString(EKK0011A010CBSMsg1List.MSKM_NO));
					}
					HashMap dslMap = (HashMap)param.getData("DslRunCC");
					if (dslMap == null) {
						dslMap = new HashMap();
						param.setData("DslRunCC", dslMap);
					}
					workMap.put("mskm_dtl_no", mskm_dtl_no);
					dslMap.put("mskm_dtl_no", mskm_dtl_no);
					workMap.put("work_mskm_dtl_no", mskm_dtl_no);
				}
			}
		}
		
		
		/* ++++++++++ v5.00.04 追加終了 ++++++++++ */
		/* ++++++++++ v5.00.09 削除開始 ++++++++++ */
//		if (IDO_DIV_VALUE_00006.equals(ccMsg.get("ido_div")))
//		{
//			//ネット、電話の場合
//			if (PRC_GRP_CD_10.equals(ccMsg.get("prc_grp_cd")) || PRC_GRP_CD_02.equals(ccMsg.get("prc_grp_cd"))
//				|| PRC_GRP_CD_03.equals(ccMsg.get("prc_grp_cd")) || PRC_GRP_CD_04.equals(ccMsg.get("prc_grp_cd")))
//			{
//				// 回線対象サービス契約一覧照会（サービス契約番号）
//				Object[][] ekk0241b003IN = {
//						{EKK0241B003CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0241B003},
//						{EKK0241B003CBSMsg.FUNC_CODE,     "1"},
//						{EKK0241B003CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
//					};
//				CAANMsg[] ekk0241b003Out = callSC(handle, scCall, param, dataMapKey, ekk0241b003IN).getCAANMsgList(EKK0241B003CBSMsg.EKK0241B003CBSMSG1LIST);
//				// サービス契約_工事案件一覧照会(基本工事取得)
//				if (ekk0241b003Out != null && ekk0241b003Out.length > 0)
//				{
//					Object[][] eku0081b020IN = {
//							{EKU0081B020CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKU0081B020},
//							{EKU0081B020CBSMsg.FUNC_CODE,     "2"},
//							{EKU0081B020CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
//							{EKU0081B020CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)ekk0241b003Out[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)},
//						};
//						CAANMsg[] eku0081b020Out = callSC(handle, scCall, param, dataMapKey, eku0081b020IN).getCAANMsgList(EKU0081B020CBSMsg.EKU0081B020CBSMSG1LIST);
//					if (eku0081b020Out != null && eku0081b020Out.length > 0)
//					{
//						// ***** EKU0011A010 工事案件一意照会 *****
//						Object[][] eku0011a010IN = {
//							{EKU0011A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKU0011A010},
//							{EKU0011A010CBSMsg.FUNC_CODE,     "1"},
//							{EKU0011A010CBSMsg.KEY_KOJIAK_NO, eku0081b020Out[0].getString(EKU0081B020CBSMsg1List.KOJIAK_NO)},
//						};
//						CAANMsg[] eku0011a010Out = callSC(handle, scCall, param, dataMapKey, eku0011a010IN).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
//						if (eku0011a010Out != null && eku0011a010Out.length > 0)
//						{
//							// 工事案件ステータスが工事完了済でない場合
//							if (ccMsg.get("svc_kei_no") != null && !"".equals(ccMsg.get("svc_kei_no")) 
//									&& !((String)ccMsg.get("svc_kei_no")).equals(eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.RNKI_SVC_KEI_NO)))
//							{
//								Object[][] ekk0081a010IN = {
//										{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
//										{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
//										{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
//										{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
//									};
//									CAANMsg[] ekk0081a010Out = callSC(handle, scCall, param, dataMapKey, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
//								Object[][] ekk0081a010IN2 = {
//										{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
//										{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
//										{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, eku0011a010Out[0].getString(EKU0011A010CBSMsg1List.RNKI_SVC_KEI_NO)},
//										{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
//									};
//									CAANMsg[] ekk0081a010Out2 = callSC(handle, scCall, param, dataMapKey, ekk0081a010IN2).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
//								if (ekk0081a010Out != null && ekk0081a010Out.length > 0 && ekk0081a010Out2 != null && ekk0081a010Out2.length > 0)
//								{
//									// エラーメッセージを設定
//									StringBuilder msg = new StringBuilder();
//									msg.append("お客さまＩＤ（");
//									msg.append(ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) + ":" + ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM) +"");
//									msg.append("）ではなく、前画面で（");
//									msg.append(ekk0081a010Out2[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) + ":" + ekk0081a010Out2[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM) +")");
//									msg.append(",選択しなおしてから撤去（解約）を処理");
//									setMessageInfo(ccMsg, "EKBD080-KW", msg.toString(), "", ERR_FLG_ERR);
//									return param;
//								}
//							}
//						}
//					}
//				}
//				
//			}
//			
//		}
		/* ++++++++++ v5.00.09 削除終了 ++++++++++ */
		
		//撤去（解約）時、解約希望日、回復日チェック
		if (FUNC_CODE_2.equals(func_code) && (IDO_DIV_VALUE_00006.equals(ccMsg.get("ido_div")) || KOJIAK_SBT_CD_DSL.equals(kojiakSbtCd))
				|| (IDO_DIV_VALUE_00032.equals(idoDiv) || IDO_DIV_VALUE_00035.equals(idoDiv)) && (Boolean)ccMsg.get("kojak_juhen"))
		{
//			String svcKeiNo = (String)ccMsg.get("svc_kei_no");
			String dslKiboYmd = (String)ccMsg.get("dsl_kibo_ymd");
			String dslKiboYmdOld = (String)ccMsg.get("dsl_kibo_ymd_old");
			if(dslKiboYmd != null && !"".equals(dslKiboYmd) && (!dslKiboYmd.equals(dslKiboYmdOld) || "".equals(dslKiboYmdOld)))
			{
//				if(ccMsg.get("svc_kei_no_jh_tekkyo") != null && !"".equals(ccMsg.get("svc_kei_no")))
//				{
//					svcKeiNo = (String)ccMsg.get("svc_kei_no");
//				}
//				Object[][] ekk0081a010IN = {
//					{EKK0081A010CBSMsg.TEMPLATEID,    TEMPLATE_ID_EKK0081A010},
//					{EKK0081A010CBSMsg.FUNC_CODE,     "2"},
//					{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo},
//					{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
//				};
//				CAANMsg[] ekk0081a010Out = callSC(handle, scCall, param, dataMapKey, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
//				if (ekk0081a010Out != null && ekk0081a010Out.length > 0 )
//				{
//					String kaihkYmd = ekk0081a010Out[0].getString(EKK0081A010CBSMsg1List.KAIHK_YMD);
//					if(kaihkYmd != null && !"".equals(kaihkYmd) && kaihkYmd.compareTo(dslKiboYmd) > 0)
//					{
//						setMessageInfo(ccMsg, "EKB1040-JW", "", "", ERR_FLG_ERR);
//					}
//				}
//				
				//未来日の制限チェック（７３０日以内）
				String addday = getWorkParameter(handle, scCall, param, fixedText, "KK_SVCENDYMD_CHKDCNT");
				if( dslKiboYmd.compareTo(JPCUtilCommon.addDay(JCCBPCommon.getOpeDate(null), Integer.parseInt(addday))) > 0)
				{
//					setMessageInfo(ccMsg, "EKB2990--Q", "解約希望日,運用日＋" + addday + "日", "", ERR_FLG_WARNING);
				}
			}
		}
		
//OM-2016-0001967 ADD START
		// 撤去（解約）
		if (JKKStrConst.CD00576_TK_DSL.equals(ccMsg.get("ido_div")))
		{
			// ネットホームタイプ、電話の場合
			if (JKKStrConst.CD00133_02.equals(prcGrpCd)
				|| JKKStrConst.CD00133_10.equals(prcGrpCd))
			{
				// 工事案件一覧照会（複合検索）
				Object[][] eku0011b030IN = {
						{EKU0011B030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011B030},
						{EKU0011B030CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
						{EKU0011B030CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no")},
						{EKU0011B030CBSMsg.KEY_KOJIAK_STAT, JKKStrConst.CD00474_130 + "," + JKKStrConst.CD00474_140 + "," + JKKStrConst.CD00474_150
							+ "," + JKKStrConst.CD00474_160 + "," + JKKStrConst.CD00474_170 + "," + JKKStrConst.CD00474_180 + "," + JKKStrConst.CD00474_190},
						{EKU0011B030CBSMsg.KEY_KOJIAK_SBT_CD, JKKStrConst.CD00577_ADCHG_TK},
				};
				
				CAANMsg[] eku0011b030Out = callSC(handle, scCall, param, dataMapKey, eku0011b030IN).getCAANMsgList(EKU0011B030CBSMsg.EKU0011B030CBSMSG1LIST);
				if (eku0011b030Out != null)
				{
					for (CAANMsg outMsg : eku0011b030Out)
					{
						// 工事受付契機異動区分が「E-PON→GE-PON設備切替」
						if (JKKStrConst.CD00576_EPON_GEPON_EQUIP_SWCH.equals(outMsg.getString(EKU0011B030CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV)))
						{
							setMessageInfo(ccMsg, "EKBA260-KW", "", "", ERR_FLG_ERR);
							break;
						}
					}
				}
			}
		}
//OM-2016-0001967 ADD END

		return param;
	}
	/* ++++++++++ v5.00.03 追加終了 ++++++++++ */

	/**
	 * 宅内機器在庫数チェック<br>
	 * <br>
	 * 指定された宅内機器型式コードの在庫数チェックを行う。
	 * @param ccMsg
	 * @param dataList
	 * @param msg
	 * @param dataMap
	 * @param func_code
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void zaikoChk(HashMap ccMsg, ArrayList dataList, CAANMsg[] msg, HashMap dataMap, String func_code) throws Exception
	{
		// 追加する宅内機器型式コードの数量取得
		String tk_mdl_cd = (String)dataMap.get("taknkiki_model_cd");
		String errItem = (String)dataMap.get("errItem");
		String hambai_sbt_cd = (String)dataMap.get("hambai_sbt_cd");
		
		int tk_cnt = 0;
		for (int i = 0; i < dataList.size(); i++)
		{
			HashMap childMap = (HashMap)dataList.get(i);
			if (tk_mdl_cd.equals(childMap.get("taknkiki_model_cd")))
			{
				tk_cnt++;
			}
		}
		int zaiko_cnt = 0;
		for (int i = 0; i < msg.length; i++)
		{
			if (tk_mdl_cd.equals(msg[i].getString(EKKA0020005CBSMsg2List.TK_MDL_CD)))
			{
				// 実在庫数
				int jzaiko_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.JZAIKO_CNT));
				// 配送受付受注数
				int haiso_uk_juchu_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.HAISO_UK_JUCHU_CNT));
				// 配送出荷指示数
				int haiso_shka_sji_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.HAISO_SHKA_SJI_CNT));
				// 予備機器配送指示数
				int ybkiki_haiso_sji_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.YBKIKI_HAISO_SJI_CNT));
				// 棚移動指示数
				int shelf_mv_sji_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.SHELF_MV_SJI_CNT));
				// 予備機器配送中数
				int ybkiki_haiso_chu_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.YBKIKI_HAISO_CHU_CNT));
				// 予備機器出荷完了数
				int ybkiki_shka_fin_cnt = Integer.parseInt(msg[i].getString(EKKA0020005CBSMsg2List.YBKIKI_SHKA_FIN_CNT));
				
				// 在庫数計算(実在庫数-(配送受付受注数+配送出荷指示数+予備機器配送指示数+棚移動指示数+予備機器配送中数+予備機器出荷完了数))
				zaiko_cnt = jzaiko_cnt - (haiso_uk_juchu_cnt + haiso_shka_sji_cnt + ybkiki_haiso_sji_cnt + shelf_mv_sji_cnt + ybkiki_haiso_chu_cnt + ybkiki_shka_fin_cnt);
				if (zaiko_cnt - tk_cnt < 0)
				{
					// エラーメッセージを設定
					if (HANBAI_SBT_10.equals(hambai_sbt_cd))
					{
						if (FUNC_CODE_2.equals(func_code))
						{
							// 新品
							setMessageInfo(ccMsg, "EKB5840--Q", tk_mdl_cd, errItem, ERR_FLG_WARNING);
						}
					}
					else
					{
						// リニューアル品
						setMessageInfo(ccMsg, "EKB5850-KW", tk_mdl_cd, errItem, ERR_FLG_ERR);
					}
				}
				break;
			}
		}
	}

	/**
	 * 料金コース_機器提供サービス一意照会用サービスインターフェイス作成。<br>
	 * <br>
	 * @param ccMsg
	 * @param kktkSvcCd
	 * @return Object[][]
	 * @exception RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public Object[][] editInMsgEKK0801A010(HashMap ccMsg, String kktkSvcCd) throws RequestParameterException
	{
		// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
		Object[][] ekk0801a010IN = {
			{EKK0801A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0801A010},
			{EKK0801A010CBSMsg.FUNC_CODE,        "2"},
			{EKK0801A010CBSMsg.KEY_PCRS_CD,      (String)ccMsg.get("pcrs_cd")},
			{EKK0801A010CBSMsg.KEY_KKTK_SVC_CD,  kktkSvcCd},
			{EKK0801A010CBSMsg.KEY_GENE_ADD_DTM, ""},
			{EKK0801A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)},
		};
		return ekk0801a010IN;
	}

	/**
	 * 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;
	}

	/**
	 * 工事案件関連チェック用サービスインターフェイス作成。<br>
	 * <br>
	 * @param param
	 * @param mappingData
	 * @return HashMap
	 * @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;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * <br>
	 * @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 = (HashMap<String, String>)param.getData(dataMapKey);
		for (int i = 0; i < mappingData.length; i++)
		{
			if (((String)mappingData[i][0]).startsWith("key_"))
			{
				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;
	}

	/**
	 * 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 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;
	}

	/**
	 * 工事案件関連チェック用サービスインターフェイス作成。<br>
	 * <br>
	 * @param param
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return HashMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInArrayMsg(IRequestParameterReadWrite param,
													Object[][] mappingData, 
													String inListMsgName, 
													ArrayList 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)
			{
				childTemplate = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg1List", svcIf));
			}
			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;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * <br>
	 * @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 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();
				if ((key).startsWith("key_"))
				{
					if (!childTemplate.isNull(key + "_err"))
					{
						if (!inMap.containsKey(key + "_err"))
						{
							inMap.put(key + "_err", childTemplate.getString(key + "_err"));
						}
					}
				}
			}
		}
		if (!template.isNull(inListMsgName + "_err"))
		{
			if (!inMap.containsKey(inListMsgName + "_err"))
			{
				inMap.put(inListMsgName + "_err", template.getString(inListMsgName + "_err"));
			}
		}
		return param;
	}

	/**
	 * 工事案件関連チェック用サービスインターフェイス作成。<br>
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return HashMap
	 * @exception RequestParameterException
	 */
	public  HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		return paramMap;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @exception RequestParameterException
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws RequestParameterException
	{
		for (int i = 0; i < templates.length; i++)
		{
			editErrorInfoCom(param, templates, returnCode, fixedText);
		}
		return param;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey) 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);
		
		Iterator<String> it = inMap.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			if (key.endsWith("_err"))
			{
				if (!template.isNull(key))
				{
					if (!inMap.containsKey(key))
					{
						inMap.put(key, template.getString(key));
					}
				}
			}
		}
		return param;
	}

	/**
	 * メッセージIDを設定します。
	 * @param ccMsg
	 * @param pMessageId
	 * @param pReplaceCha
	 * @param pErrItem
	 * @param pErrFlg
	 */
	@SuppressWarnings("unchecked")
	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 messageMap = new HashMap();
		// メッセージIDを設定
		messageMap.put("messageId", pMessageId);
		// 置換文字列
		messageMap.put("replaceCha", pReplaceCha);
		// エラー設定項目
		messageMap.put("errItem", pErrItem);
		// IT1-2018-0000105 ADD START
		// エラーフラグ
		messageMap.put("errFlg", pErrFlg);
		// IT1-2018-0000105 ADD END
		ArrayList messageInfo = (ArrayList)ccMsg.get("message_list");
		messageInfo.add(messageMap);
	}
	/**
	 * 業務パラメータを取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param keyword
	 * @return String
	 * @throws Exception
	 */
	private String getWorkParameter(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String keyword) throws Exception
	{
		// ***** EZM0321A010（業務パラメータ管理一意照会）*****
		Object[][] ezm0321a010IN = { { EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010 }
									, { EZM0321A010CBSMsg.FUNC_CODE, "1" }
									, { EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, keyword } };

		CAANMsg[] ezm0321a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0321a010IN).getCAANMsgList(
				EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);

		return ezm0321a010cbsMsg1list[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
	}

}
