/********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：住所変更ＳＯＤ発行キャンセルコンポーネント部品
 *  ソースファイル名：JKKAdchgInitDspCC.java
 *  作成者          ：FJ
 *  日付            ：2012年11月20日
 *＜機能概要＞
 *  住所変更で発行されたＳＯＤのキャンセルを行う部品。
 *  
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *  v4.00.00    2012/11/20  FJ          新規作成
 *  v7.00.01    2014/03/04  FJ          OM-2014-0000944
 *  v8.00.00    2014/04/04  金田        IT2-2014-0000180
 *  v8.01.00    2014/04/10  星野        OM-2014-0001466
 *  v8.02.00    2014/04/21  阮         【IT2-2014-0000196】住変キャンセル時にVLANオーダの解約オーダ発行不要のため削除
 *  v8.03.00    2014/05/15  阮         【OM-2014-0001731】SOD異常応答（住変キャンセル時に旧ルータ・多機能ルータ機器の解約・消去オーダ発行不要のため削除）
 *  v8.04.00    2014/05/15  阮         【OM-2014-0001732】SOD異常応答（住変キャンセル時にOA機器向けの登録オーダ発行不要のため削除 ）
 *  v8.05.00    2014/05/25  星野        OM-2014-0001911対応
 *  v10.00.00   2014/10/11  星野        OM-2014-0002802対応
 *  v15.00.00   2015/08/06  FJ)谷口    【OM-2015-0001574】ネット追加申込で住変キャンセル時にFTTH認証とメールの解約・消去オーダーが発行されない
 *  v23.00.00   2016/02/22  FJ)澤田   【IT2-2016-0000004】電話申込が存在してネットのキャンセルを行ったら工事案件が取り消さない
 *  v26.00.00   2016/08/03  FJ)藤本    【ANK-2765-00-00】認証IDの統一化
 *  v25.00.00   2016/08/08  FJ)森脇    【OM-2016-0001640】対応
 *  v40.00.00   2018/10/30  FJ)北谷    【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
 *  v61.00.00	2023/02/08	FJ)西窪	   【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
 *  v70.00.00	2024/04/02	FJ)北谷	   【#84028】住変キャンセル時HGWSOD応答異常
 *  v72.00.00	2024/11/26	FJ)星野    【ANK-4494-00-00】【eo定期】 双方向番ポ対応 STEP2
 *  v73.00.00	2025/01/09	FJ) 星野   【IT2-2025-0000001】
 ********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKAdchgHakkoSODConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKHakkoSODConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
import com.fujitsu.futurity.bp.custom.constant.JKKTelnoStatJudgeConstCC;
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.IRequestParameterReadOnly;
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.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B008CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B008CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191B502CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B502CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B008CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B008CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B019CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B022CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0411A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1041B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1041B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1081C011CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1081D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1551D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ESC0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

public class JKKAdchgCancelHakkoSODCC extends AbstractCommonComponent {
	/** 前レコード変更前オプションサービス契約番号 */
	private String mae_recode_chbf_op_svc_kei_no = "";
	/** 前レコード変更前オプションサービス契約世代登録年月日 */
	private String mae_recode_chbf_op_svc_kei_gene_add_dtm = "";
	/** 前レコード変更後オプションサービス契約番号 */
	private String mae_recode_chaf_op_svc_kei_no = "";
	/** 前レコード変更後オプションサービス契約世代登録年月日 */
	private String mae_recode_chaf_op_svc_kei_gene_add_dtm = "";
	/** 前レコードサービス契約番号 */
	private String mae_recode_ch_svc_kei_no = "";
	
	/** 同一処理番号 */
	private String same_trn_no = "";
	/** 料金グループコード */
	private String prc_grp_cd = "";
	/** 料金コースコード */
	private String pcrs_cd = "";
	/** サービス契約ステータス */
	private String svc_kei_stat = "";
	/** 異動区分 */
	private String ido_div = "";
	// ANK-0099-00-00 2012/05/25 kitatani start
	/** 処理区分 */
	private String syori_div = "";
	// ANK-0099-00-00 2012/05/25 kitatani end
	/** 申込明細番号 */
	private String mskm_dtl_no = "";
	
	/** オプションサービス契約番号（Ｅメール）*/
	private String op_svc_kei_no_ml = "";
	/** オプションサービス契約番号（Ｅメール）のマップ*/
	private Map<String, String[]> op_svc_kei_no_ml_map = null;   // ST1-2012-0000319 2012/08/20 add
	/** オプションサービス契約番号（Ｍｙホームページ） */
	private String op_svc_kei_no_hp = "";
	/** オプションサービス契約番号（メーリングリスト） */
	private String op_svc_kei_no_mlist = "";
	/** オプションサービス契約番号（メーリングリスト）のマップ */
	private Map<String, String> op_svc_kei_no_mlist_map = null;   // ST1-2012-0000319 2012/08/20 add
	/** オプションサービス契約番号（ダイヤルアップ接続）*/
	private String op_svc_kei_no_dial = "";
	/** オプションサービス契約番号（マルチセッション）*/
	private String op_svc_kei_no_mltise = "";
	// 2012-02-29 開始
	/** オプションサービス契約番号（IPV6） 【ANK-0046-00-01】IPV6対応 2012-02-29追加 */
	private String op_svc_kei_no_ipv6 = "";
	// 2012-02-29 終了
	/** オプションサービス契約番号（固定グローバルＩＰアドレス）*/
	private String op_svc_kei_no_fixipad = "";
	/** オプションサービス契約番号（番号置換）*/
	private String op_svc_kei_no_tikan = "";
	/** オプションサービス契約番号 */
	private String op_svc_kei_no = "";
	// 2012-02-29 開始
	/** サービス契約番号  【ANK-0046-00-01】IPV6対応 2012-02-29追加 */
	private String svc_kei_no1 = "";
	// 2012-02-29 終了
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
	/** オプションサービス契約番号（フェムトセル）*/
	private String op_svc_kei_no_fmtcel = "";
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応

	/** サブオプションサービス契約番号（メールエイリアス） */
	private String sbop_svckeino_alias = "";
	/** サブオプションサービス契約番号（メールエイリアス） のマップ*/
	private Map<String, String[]> sbop_svckeino_alias_map = null;   // ST1-2012-0000319 2012/08/20 add
	/** サブオプションサービス契約番号（メールウィルスチェック） */
	private String sbop_svckeino_mlvirus = "";
	/** サブオプションサービス契約番号（メールウィルスチェック） のマップ*/
	private Map<String, String[]> sbop_svckeino_mlvirus_map = null;   // ST1-2012-0000319 2012/08/20 add
	/** 区切り文字 */
	private static String SEP = ":";
	
	/** サービス契約内訳 */
	private String[] svc_kei_ucwk_no = null;

	/** 機器提供サービス契約番号 */
	private String[] kktk_svc_kei_no = null;

	/** オプションサービス契約世代登録年月日時分秒（Ｅメール）*/
	private String op_gadtm_ml = "";
	/** オプションサービス契約世代登録年月日時分秒（Ｍｙホームページ） */
	private String op_gadtm_hp = "";
	/** オプションサービス契約世代登録年月日時分秒（メーリングリスト） */
	private String op_gadtm_mlist = "";
	/** オプションサービス契約世代登録年月日時分秒（ダイヤルアップ接続）*/
	private String op_gadtm_dial = "";
	/** オプションサービス契約世代登録年月日時分秒（マルチセッション）*/
	private String op_gadtm_mltise = "";
	/** オプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス）*/
	private String op_gadtm_fixipad = "";
	/** オプションサービス契約世代登録年月日時分秒（番号置換）*/
	private String op_gadtm_tikan = "";
	/** オプションサービス契約世代登録年月日時分秒 */
	private String op_gadtm = "";
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
	/** オプションサービス契約世代登録年月日時分秒（フェムトセル）*/
	private String op_gadtm_fmtcel = "";
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
	
	/** サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） */
	private String sbop_gadtm_alias = "";
	/** サブオプションサービス契約世代登録年月日時分秒（メールウィルスチェック） */
	private String sbop_gadtm_mlvirus = "";

	/** サービス契約内訳世代登録年月日時分秒 */
	private String[] svc_kei_ucwk_gadtm = null;

	/** 機器提供サービス契約世代登録年月日時分秒 */
	private String[] kktk_svc_kei_gadtm = null;
	/** 宅内機器型式コード */
	private String[] taknkiki_model_cd = null;
	/** 機器製造番号 */
	private String[] kiki_seizo_no = null;

// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
	/** サービス契約回線内訳番号 */
	private String svc_kei_kaisen_ucwk_no = null;
	/** サービス契約回線内訳世代登録年月日時分秒 */
	private String svc_kei_kaisen_ucwk_gadtm = null;
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
	
	// 2012-02-29 開始
	/** オプションサービスＩＳＰ（IPV6関連情報） 【ANK-0046-00-01】IPV6対応 2012-02-29追加 */
	private String op_gadtm_ipv6 = "";		// オプションサービス契約世代登録年月日時分秒（IPV6）
	private String op_addr_ipv6 = "";					// IPV6アドレス
	private boolean op_addr_kakutei_ipv6 = false;		// IPV6アドレス確定済み
	private String taknkiki_model_cd_ipv6 = "";			// 宅内機器型式コード
	private String kiki_seizo_no_ipv6 = "";				// 機器製造番号
	private String kiki_ipv6_taio_flg = "";				// 機器IPV6対応フラグ
	private boolean kiki_shukka_sumi_ipv6 = false;		// 機器出荷済み
	private String ipv6_svc_kei_ucwk_no = "";			// サービス契約内訳番号
	private String ipv6_svc_kei_ucwk_gadtm = "";		// サービス契約内訳世代登録年月日時分秒
	private String ipv6_kktk_svc_kei_no = "";			// 機器提供サービス契約番号
	private String ipv6_kktk_svc_kei_gadtm = "";		// 機器提供サービス契約世代登録年月日時分秒
//	private HashMap<String, String> checkUcwkMap = null;		// ダブり発行防止用ワーク
	
	/** IPV6 SOD発行のパターン 【ANK-0046-00-01】IPV6対応 2012-02-29追加 */
	private int sod_pattern_ipv6 = 0;
	/** IPV6機器提供複数対応 【ANK-0046-00-01】IPV6対応 2012-02-29追加 */
//	private HashMap<String, String> kktkHash = null;
//	private ArrayList<HashMap> kktkArray = null;
	/** オーダー発行条件 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復 2012-02-29追加 */
	private String odr_hakkou_jyoken = "";
	/** 要求種別 2012-02-29追加 */
	private String yokyu_sbt = "";
//	private int taishouIdx = 0;		// 処理対象のデータのみカウントアップ 【ANK-0046-00-01】IPV6対応
	// 2012-02-29 終了
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD START
	private String port_out_no = "";	// ポートアウト番号
	private String port_out_gene_add_dtm = "";	// ポートアウト世代登録年月日
	private String telNo = ""; // 電話番号
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD END

	/** 添え字（CUI） */
	private int index_cui = 0;
	/** 添え字（DEV） */
	private int index_dev = 1;
	/** 添え字（WiFi） */
	private int index_wifi = 2;
	
	/** メールアドレス */
	private String mlad = "";
	
	// ST2-2012-0001527 2012/08/14 start
	/** Eメール存在フラグ */
	private boolean eml_flg = false;
	// ST2-2012-0001527 2012/08/14 end
	/** メーリングリスト存在フラグ */
	private boolean mlist_flg = false;
	/** ダイヤルアップ接続存在フラグ */
	private boolean dial_flg = false;
	/** マルチセッション存在フラグ */
	private boolean mltise_flg = false;
	/** 固定グローバルＩＰアドレス存在フラグ */
	private boolean fixipad_flg = false;
	/** URL設定フラグ */
	private boolean url_flg = false;
	/** メールエイリアス存在フラグ */
	private boolean alias_flg = false;
	/** メール容量追加存在フラグのリスト */
	private List<String> mlcapa_flg_list = null;   // ST1-2012-0000319 2012/08/20 
//	/** メール容量追加存在フラグ */
//	private boolean mlcapa_flg = false;
	/** メールウィルスチェック存在フラグ */
	private boolean mlvirus_flg = false;
	/** ホームページ容量追加存在フラグ */
	private boolean hpcapa_flg = false;
	/** ホームページアクセス分析存在フラグ */
	private boolean hpaccess_flg = false;
	/** Wi-Fiスポット有無フラグ（同一SYSIDで他のWiFiスポットがあればTrue） */
	private boolean wifi_flg = false;
	/** BBR存在フラグ */
	private boolean bbr_flg = false;
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
	/** フェムトセル存在フラグ */
	private boolean fmtcel_flg = false;
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
	
	private boolean bmpJisshiFlg = false;
	// IT1-2012-0002287対応 20121208 星野 ADD START

	/** 利用場所変更処理済フラグ */
	private boolean isChgPlaceZumi = false;
// IT1-2012-0002287対応 20121208 星野 ADD END
	
	
	/** セッションハンドル保持域 */
	private static ThreadLocal<SessionHandle> keepSesHandle = new ThreadLocal<SessionHandle>()
	{
		// 保持域への設定はinitialValue()ではなくset()を使用する為、
		// initialValue()は実装しない
	};
	
// OM-2013-0003213対応 20131011 星野 ADD START
	/** Radius認証・解約 用フラグ */
	private boolean isRadiusZumi = false;
	/** VAキャッシュリスト */
	private ArrayList<String> va_kiki_list = null;
// OM-2013-0003213対応 20131011 星野 ADD END

// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
	/** VA交換前機器提供サービス契約世代登録年月日時分秒（OLS解約/撤去用） */
	private String[] chbf_kktk_svc_kei_gadtm = null;

	private String fixedText = null;

	// ANK-2765-00-00 ADD START
	/** 料金プランコード */
	private String pplan_cd = "";
	/** 旧VR識別判定用サービス詳細コード */
	private String old_vrsb_jdg_svc_dtl_cd = "";
	// ANK-2765-00-00 ADD END

	/** 機器提供サービスコード（多機能ルータ） */
	public static final String KKTK_SVC_CD_MFR = "C024";
	
	/** 宅内機器種別コード（多機能ルータ） */
	public static final String TAKNKIKI_SBT_CD_MFR = "R0";
	
	// ANK-4315-00-00 ADD START
	/** 機器提供サービスコード（ｅｏホームゲートウェイ） */
	public static final String KKTK_SVC_CD_HGW = "C025";
	
	/** 宅内機器種別コード（ｅｏホームゲートウェイ） */
	public static final String TAKNKIKI_SBT_CD_HGW = "S0";

	// ANK-4315-00-00 ADD END
	
	/** 項目値：機器オプションサービスコード=BBR */
	public static final String KKOP_SVC_CD_BBR = "G01";
	
	/** 項目値：機器オプションサービスコード=VA */
	public static final String KKOP_SVC_CD_VA = "G02";
	
	/** 機器オプションサービス契約番号 */
	private String[] kkop_svc_kei_va = null;

	/** 機器オプションサービス契約番号 */
	private String[] kkop_svc_kei_va_gadtm = null;

	/** 機器オプションサービス契約番号 */
	private String[] kkop_svc_kei_router = null;

	/** 機器オプションサービス契約番号 */
	private String[] kkop_svc_kei_router_gadtm = null;

	/** サービスオーダコード：26(多機能ルータ向け情報) */
	public static final String SVC_ORDER_CD_MFROUTER = "26";
	
	/** オーダ内容コード：401(多機能ルーター設定・登録(ルーター機能・登録)) */
	public static final String ODR_NAIYO_CD_401 = "401";
	/** オーダ内容コード：402(多機能ルーター設定・変更(ルーター機能・登録)) */
	public static final String ODR_NAIYO_CD_402 = "402";
	/** オーダ内容コード：403(多機能ルーター設定・変更(ルーター機能・パスワード変更)) */
	public static final String ODR_NAIYO_CD_403 = "403";
	/** オーダ内容コード：404(多機能ルーター設定・変更(ルーター機能・接続情報変更)) */
	public static final String ODR_NAIYO_CD_404 = "404";
	/** オーダ内容コード：405(多機能ルーター設定・変更(ルーター機能・解約)) */
	public static final String ODR_NAIYO_CD_405 = "405";
	/** オーダ内容コード：406(多機能ルーター設定・登録(VA機能・登録)) */
	public static final String ODR_NAIYO_CD_406 = "406";
	/** オーダ内容コード：407(多機能ルーター設定・変更(VA機能・登録)) */
	public static final String ODR_NAIYO_CD_407 = "407";
	/** オーダ内容コード：408(多機能ルーター設定・変更(VA機能・電話番号追加)) */
	public static final String ODR_NAIYO_CD_408 = "408";
	/** オーダ内容コード：409(多機能ルーター設定・変更(VA機能・電話番号変更)) */
	public static final String ODR_NAIYO_CD_409 = "409";
	/** オーダ内容コード：410(多機能ルーター設定・変更(VA機能・電話番号解約)) */
	public static final String ODR_NAIYO_CD_410 = "410";
	/** オーダ内容コード：411(多機能ルーター設定・変更(VA機能・発信者番号通知登録)) */
	public static final String ODR_NAIYO_CD_411 = "411";
	/** オーダ内容コード：412(多機能ルーター設定・変更(VA機能・発信者番号通知解約)) */
	public static final String ODR_NAIYO_CD_412 = "412";
	/** オーダ内容コード：413(多機能ルーター設定・変更(VA機能・VLAN-ID変更)) */
	public static final String ODR_NAIYO_CD_413 = "413";
	/** オーダ内容コード：414(多機能ルーター設定・変更(VA機能・割込電話登録)) */
	public static final String ODR_NAIYO_CD_414 = "414";
	/** オーダ内容コード：415(多機能ルーター設定・変更(VA機能・VA変更1番号)) */
	public static final String ODR_NAIYO_CD_415 = "415";
	/** オーダ内容コード：416(多機能ルーター設定・変更(VA機能・VA変更2番号)) */
	public static final String ODR_NAIYO_CD_416 = "416";
	/** オーダ内容コード：417(多機能ルーター設定・変更(VA機能・解約)) */
	public static final String ODR_NAIYO_CD_417 = "417";
	/** オーダ内容コード：418(多機能ルーター設定・変更(ルーター機能・無線/有線変更)) */
	public static final String ODR_NAIYO_CD_418 = "418";
	/** オーダ内容コード：419(多機能ルーター設定・解約(ルーター機能・解約)) */
	public static final String ODR_NAIYO_CD_419 = "419";
	/** オーダ内容コード：420(多機能ルーター設定・消去(ルーター機能・解約)) */
	public static final String ODR_NAIYO_CD_420 = "420";
	/** オーダ内容コード：421(多機能ルーター設定・解約(VA機能・解約)) */
	public static final String ODR_NAIYO_CD_421 = "421";
	/** オーダ内容コード：422(多機能ルーター設定・消去(VA機能・解約)) */
	public static final String ODR_NAIYO_CD_422 = "422";
	/** オーダ内容コード：423(多機能ルーター設定・解約(機器返却)) */
	public static final String ODR_NAIYO_CD_423 = "423";
	/** オーダ内容コード：424(多機能ルーター設定・消去(機器返却)) */
	public static final String ODR_NAIYO_CD_424 = "424";
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
	
	// OM-2015-0001574 20150806 ADD START
	/** ネットキャンセルオーダ発行済フラグ */
	private boolean isNetClOdrHkZumi = false;
	// OM-2015-0001574 20150806 ADD END

	/**
	 * サービスオーダ発行処理
	 * <br>
	 * パラメータの件数分<br>
	 * サービスオーダ登録処理を呼び出します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite cancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		try {
			/** リソース保持 */
			// セッションハンドルをローカル変数に保持
			keepSesHandle.set( handle );
			
			// ユーザデータ情報
			HashMap inMap = (HashMap)param.getData(fixedText);
			
			String funcCD = (String)inMap.get(JCMConstants.FUNC_CODE_KEY);
			
			// オーダ発行対象サービス契約リスト 取得
			ArrayList odr_hakko_svc_kei_list = (ArrayList)inMap.get(JKKAdchgHakkoSODConstCC.ODR_HAKKO_SVC_KEI_LIST);
			
			if(isBlank(funcCD) || JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCD)
					|| null == odr_hakko_svc_kei_list || 0 == odr_hakko_svc_kei_list.size()){
				// 取得したデータリストが無い、または0件の場合、正常終了として処理を終了する。
				String formatStatus = String.format("%1$04d", 0);
				String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
				param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
				param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
				return param;
			}
			
			Iterator<HashMap<String, Object>> odr_hakko_svc_kei_Ite = odr_hakko_svc_kei_list.iterator();
			// オーダ発行対象サービス契約リスト 繰り返し
			while( odr_hakko_svc_kei_Ite.hasNext() )
			{
				// 前レコードをクリアする
				this.mae_recode_chaf_op_svc_kei_no = "";
				this.mae_recode_chaf_op_svc_kei_gene_add_dtm = "";
				this.mae_recode_chbf_op_svc_kei_no = "";
				this.mae_recode_chbf_op_svc_kei_gene_add_dtm = "";
				this.mae_recode_ch_svc_kei_no = "";
				// 同一処理番号もクリアする
				this.same_trn_no = "";
				
				// 配列の初期化
				svc_kei_ucwk_no = new String[1];
				kktk_svc_kei_no = new String[1];
				svc_kei_ucwk_gadtm = new String[1];
				kktk_svc_kei_gadtm = new String[1];
				taknkiki_model_cd = new String[1];
				kiki_seizo_no = new String[1];
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
				chbf_kktk_svc_kei_gadtm = new String[1];
				kkop_svc_kei_va = new String[1];
				kkop_svc_kei_va_gadtm = new String[1];
				kkop_svc_kei_router = new String[1];
				kkop_svc_kei_router_gadtm = new String[1];
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END

				// 対象データマップ
				HashMap<String, Object> trgt_data_map = (HashMap<String, Object>)odr_hakko_svc_kei_Ite.next();
				if (null != trgt_data_map)
				{
					// 利用サービス変更区分の取得
					String use_svc_chg_div = (String)trgt_data_map.get(JKKAdchgHakkoSODConstCC.USE_SVC_CHG_DIV);
					// 発行契機対象リストの取得
					ArrayList<HashMap<String, Object>> hakko_trgr_trgt_list = (ArrayList<HashMap<String, Object>>)trgt_data_map.get(JKKAdchgHakkoSODConstCC.HAKKO_TRGR_TRGT_LIST);
					if( null == hakko_trgr_trgt_list || 0 == hakko_trgr_trgt_list.size() )
					{
						continue;
					}
					Iterator<HashMap<String, Object>> hakko_trgr_trgt_Ite = hakko_trgr_trgt_list.iterator();
					// 発行契機対象リスト 繰り返し
					while( hakko_trgr_trgt_Ite.hasNext() )
					{
						// 発行契機対象データマップ
						HashMap<String, Object> hakko_trgr_trgt_data_map = (HashMap<String, Object>)hakko_trgr_trgt_Ite.next();
						// 対象データリスト（サービス契約＋機器）の取得
						ArrayList<HashMap<String, Object>> kiki_trgt_data_list = (ArrayList<HashMap<String, Object>>)hakko_trgr_trgt_data_map.get(JKKAdchgHakkoSODConstCC.KIKI_TRGT_DATA_LIST);
						// 対象データリスト（サービス契約＋オプション）の取得
						ArrayList<HashMap<String, Object>> opt_trgt_data_list = (ArrayList<HashMap<String, Object>>)hakko_trgr_trgt_data_map.get(JKKAdchgHakkoSODConstCC.OPT_TRGT_DATA_LIST);
						// オーダ発行契機区分の取得
						String odr_exec_div = (String)trgt_data_map.get(JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV);
						
						// IT1-2012-0002287対応 20121208 星野 ADD START
						// 利用場所変更処理済フラグをリセット
						this.isChgPlaceZumi = false;
						// IT1-2012-0002287対応 20121208 星野 ADD END

						Iterator<HashMap<String, Object>> kiki_trgt_data_list_Ite = kiki_trgt_data_list.iterator();
						Iterator<HashMap<String, Object>> opt_trgt_data_list_Ite = opt_trgt_data_list.iterator();
						
// OM-2013-0003213対応 20131011 星野 ADD START
						isRadiusZumi = false;
						va_kiki_list = new ArrayList<String>();
// OM-2013-0003213対応 20131011 星野 ADD END
						// OM-2015-0001574 20150806 ADD START
						isNetClOdrHkZumi = false;
						// OM-2015-0001574 20150806 ADD END
						/**
						 * 対象データリスト（サービス契約＋機器）
						 */
						while( kiki_trgt_data_list_Ite.hasNext() )
						{
							HashMap<String, Object> kiki_sodMap = kiki_trgt_data_list_Ite.next();
							/** 対象サービス判定 */
							String taishoSvc = svcKeiJdg(param, kiki_sodMap);
							/** ｅｏ光ネット */
							if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(taishoSvc))
							{
								// 光ネット サービスオーダー発行処理
								param = hakkoSODNet(param, kiki_sodMap, fixedText, use_svc_chg_div, odr_exec_div);
							}
							/** ｅｏ光電話 */
							else if (JKKHakkoSODConstCC.SVC_KIND_TEL.equals(taishoSvc))
							{
								// 光電話 サービスオーダー発行処理
								param = hakkoSODTel(param, kiki_sodMap, fixedText, use_svc_chg_div, odr_exec_div);
							}
							// それ以外
							else
							{
								// なにもしない
							}
						}
						
						/**
						 * 対象データリスト（サービス契約＋オプション）
						 */
						while( opt_trgt_data_list_Ite.hasNext() )
						{
							HashMap<String, Object> kiki_sodMap = opt_trgt_data_list_Ite.next();
							/** 対象サービス判定 */
							String taishoSvc = svcKeiJdg(param, kiki_sodMap);
							/** ｅｏ光ネット */
							if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(taishoSvc))
							{
								// 光ネット サービスオーダー発行処理
								param = hakkoSODNet(param, kiki_sodMap, fixedText, use_svc_chg_div, odr_exec_div);
							}
							/** ｅｏ光電話 */
							else if (JKKHakkoSODConstCC.SVC_KIND_TEL.equals(taishoSvc))
							{
								// 光電話 サービスオーダー発行処理
								param = hakkoSODTel(param, kiki_sodMap, fixedText, use_svc_chg_div, odr_exec_div);
							}
							// それ以外
							else
							{
								// なにもしない
							}
						}
					}
				}
			}
		}
		finally
		{
			// Holderクラスのリソース解放
			// ・セッションハンドル保持域
			if(keepSesHandle.get() != null){
				keepSesHandle.remove();
			}
		}
		
		return param;
	}

	/**
	 * チェック処理<br>
	 * サービスコンポーネント実行用CAANMsgを返却します。<br>
	 * <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Throwableがスローされます 。
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap paramMap = new HashMap();
		
		return paramMap;
	}
	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得<br>
	 * 業務データ取得・書込用I/Fをそのまま返却します。<br>
	 * <br>
	 * @param param デルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		return param;
	}
	
	/**
	 * オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br>
	 * <br>
	 * 渡されたオーダ内容コードから、必要な情報をマッピングして<br>
	 * 各オーダテーブルへの登録を行う。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle
	 * @param param
	 * @param orderNaiyoCd
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSOD(SessionHandle handle, 
														IRequestParameterReadWrite param, 
														String orderNaiyoCd) throws Throwable
	{

		
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			/**
			 * マップ初期化処理
			 */
			// オーダ発行条件(サービス契約番号は初期化しない)
			inMap.put("svc_kei_ucwk_no", "");											// サービス契約内訳番号
			inMap.put("kktk_svc_kei_no", "");											// 機器提供サービス契約番号
			inMap.put("op_svc_kei_no", "");												// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");											// サブオプションサービス契約番号
			inMap.put("seiopsvc_kei_no", "");											// 請求オプションサービス契約番号
			inMap.put("order_sbt_cd", "");												// オーダ種別コード
			inMap.put("svc_order_cd", "");												// サービスオーダコード
			inMap.put("yokyu_sbt_cd", "");												// 要求種別コード
			inMap.put("odr_hakko_joken_cd", "");										// オーダ発行条件コード
			inMap.put("same_trn_no", "");												// 同一処理番号
			inMap.put("taknkiki_model_cd", "");											// 宅内機器型式コード
			inMap.put("kiki_seizo_no", "");												// 機器製造番号
			inMap.put("mlad", "");														// メールアドレス
			inMap.put("spot_login_sysid", "");											// スポットログインＳＹＳＩＤ
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
			inMap.put("svc_kei_kaisen_ucwk_no", "");									// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
			inMap.put("send_req_fin_dtm", "");											// 送信依頼完了年月日時分秒
			
			// オーダ情報作成ワーク(サービス契約の世代は初期化しない)
			inMap.put("odr_hakko_joken_no", "");		// オーダ発行条件番号
			inMap.put("odr_naiyo_cd", "");				// オーダ内容コード
			inMap.put("svkeiuw_gadtm", "");				// サービス契約内訳世代登録年月日時分秒
			inMap.put("kktsvkei_gadtm", "");			// 機器提供サービス契約世代登録年月日時分秒
			inMap.put("opsvkei_gadtm", "");				// オプションサービス契約世代登録年月日時分秒
			inMap.put("sbopsvkei_gadtm", "");			// サブオプションサービス契約世代登録年月日時分秒
			inMap.put("seiopsvkei_gadtm", "");			// 請求オプションサービス契約世代登録年月日時分秒
			// 以下実質SODバッチ側で使ってない部分(念のため初期化)
			inMap.put("huka_inf_kei_no", "");			// 付加情報契約番号
			inMap.put("huka_inf_kei_gadtm", "");		// 付加情報契約世代登録年月日時分秒
			inMap.put("chbf_svkei_gadtm", "");			// 変更前サービス契約世代登録年月日時分秒
			inMap.put("chbf_svkeiuw_gadtm", "");		// 変更前サービス契約内訳世代登録年月日時分秒
			inMap.put("chbf_kktsvkei_gadtm", "");		// 変更前機器提供サービス契約世代登録年月日時分秒
			inMap.put("chbf_opsvkei_gadtm", "");		// 変更前オプションサービス契約世代登録年月日時分秒
			inMap.put("chbf_sbopsvkei_gadtm", "");		// 変更前サブオプション契約世代登録年月日時分秒
			inMap.put("chbf_seiopsvkei_gadtm", "");		// 変更前請求オプション契約世代登録年月日時分秒
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
			inMap.put("kkop_svc_kei_no_1", "");			// 機器オプションサービス契約（ルーター）
			inMap.put("kko_svkei_gadtm_1", "");			// 機器オプションサービス契約（ルーター）世代年月日
			inMap.put("kkop_svc_kei_no_2", "");			// 機器オプションサービス契約（VA）
			inMap.put("kko_svkei_gadtm_2", "");			// 機器オプションサービス契約（VA）世代年月日
			inMap.put("huka_inf_kei_no", "");
			inMap.put("huka_inf_kei_gadtm", "");
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START

			if(JKKHakkoSODConstCC.ODR_NAIYO_CD_101.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);							// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_101);							// オーダ内容コード（FTTH認証・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);									// サービス契約内訳世代登録年月日時分秒
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);								// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_102.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・パスワード変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_102);					// オーダ内容コード（FTTH認証・パスワード変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);						// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_103.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);		// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);			// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_103);					// オーダ内容コード（FTTH認証・解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_104.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);		// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);			// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_104);					// オーダ内容コード（FTTH認証・消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_105.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);					// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);					// 要求種別コード（回復）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_105);				// オーダ内容コード（FTTH認証・回復）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);						// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fixipad);						// オプションサービス契約番号（固定グローバルＩＰアドレス）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fixipad);							// オプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);					// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_106.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・一時停止
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);							// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_106);					// オーダ内容コード（FTTH認証・一時停止）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_107.equals(orderNaiyoCd))
			{
				/**
				 * FTTH認証・停止解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);						// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_107);				// オーダ内容コード（FTTH認証・停止解除）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);						// サービス契約内訳世代登録年月日時分秒
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);					// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_108.equals(orderNaiyoCd))
			{
				/**
				 * メール・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);														// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);					// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_108);				// オーダ内容コード（メール・登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_109.equals(orderNaiyoCd))
			{
				/**
				 * メール・パスワード変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", mlad);												// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);		// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_109);		// オーダ内容コード（メール・パスワード変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);					// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", op_gadtm_ml);							// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_110.equals(orderNaiyoCd))
			{
				/**
				 * メール・エイリアス登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);														// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);					// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_110);						// オーダ内容コード（メール・エイリアス登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);									// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);										// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, this.sbop_svckeino_alias);		//2012-01-17追加、サブオプションサービス契約番号
				inMap.put(EKK1551D010CBSMsg.SBOPSVKEI_GADTM, this.sbop_gadtm_alias);		//2012-01-17追加、サブオプションサービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_111.equals(orderNaiyoCd))
			{
				/**
				 * メール・エイリアス変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);														// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);					// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_111);				// オーダ内容コード（メール・エイリアス変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, this.sbop_svckeino_alias);		//2012-01-17追加、サブオプションサービス契約番号
				inMap.put(EKK1551D010CBSMsg.SBOPSVKEI_GADTM, this.sbop_gadtm_alias);		//2012-01-17追加、サブオプションサービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_112.equals(orderNaiyoCd))
			{
				/**
				 * メール・エイリアス解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);																// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);								// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);							// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);								// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_112);						// オーダ内容コード（メール・エイリアス解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);									// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);										// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, this.sbop_svckeino_alias);		//2012-01-17追加、サブオプションサービス契約番号
				inMap.put(EKK1551D010CBSMsg.SBOPSVKEI_GADTM, this.sbop_gadtm_alias);		//2012-01-17追加、サブオプションサービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_113.equals(orderNaiyoCd))
			{
				/**
				 * メール・メールボックス容量変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);															// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);						// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_113);							// オーダ内容コード（メール・メールボックス容量変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);										// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);											// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_114.equals(orderNaiyoCd))
			{
				/**
				 * メール・ウイルスチェック登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);															// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);						// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_114);				// オーダ内容コード（メール・ウイルスチェック登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_115.equals(orderNaiyoCd))
			{
				/**
				 * メール・ウイルスチェック解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);															// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);						// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_115);				// オーダ内容コード（メール・ウイルスチェック解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, this.sbop_svckeino_mlvirus);	//2012-01-17追加、サブオプションサービス契約番号
				inMap.put(EKK1551D010CBSMsg.SBOPSVKEI_GADTM, this.sbop_gadtm_mlvirus);		//2012-01-17追加、サブオプションサービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_116.equals(orderNaiyoCd))
			{
				/**
				 * メール・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);															// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);						// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_116);				// オーダ内容コード（メール・解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_117.equals(orderNaiyoCd))
			{
				/**
				 * メール・解約(スケジュール日付あり)
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);															// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);						// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_117);				// オーダ内容コード（メール・解約(スケジュール日付あり)）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_118.equals(orderNaiyoCd))
			{
				/**
				 * メール・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", mlad);												// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);		// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);			// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_118);			// オーダ内容コード（メール・消去）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);						// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_119.equals(orderNaiyoCd))
			{
				/**
				 * メール・解約(スケジュール日付あり)
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);														// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);					// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);						// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_119);				// オーダ内容コード（メール・解約(スケジュール日付あり)）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);							// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);								// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_120.equals(orderNaiyoCd))
			{
				/**
				 * メール・回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("mlad", this.mlad);														// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_MAIL);					// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);					// 要求種別コード（回復）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_120);					// オーダ内容コード（メール・回復）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ml);								// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ml);									// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_121.equals(orderNaiyoCd))
			{
				/**
				 * WEB・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);							// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);							// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_121);			// オーダ内容コード（WEB・登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);						// オプションサービス契約番号（Myホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);							// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_122.equals(orderNaiyoCd))
			{
				/**
				 * WEB・パスワード変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);			// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_122);			// オーダ内容コード（WEB・パスワード変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);						// オプションサービス契約番号（Myホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);							// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_123.equals(orderNaiyoCd))
			{
				/**
				 * WEB・ホームページ容量変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);								// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);								// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);								// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_123);				// オーダ内容コード（WEB・ホームページ容量変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);							// オプションサービス契約番号（Ｍｙホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);								// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_124.equals(orderNaiyoCd))
			{
				/**
				 * WEB・アクセス分析登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);						// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_124);				// オーダ内容コード（WEB・アクセス分析登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);							// オプションサービス契約番号（Ｍｙホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);								// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_125.equals(orderNaiyoCd))
			{
				/**
				 * WEB・アクセス分析解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);							// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_125);		// オーダ内容コード（WEB・アクセス分析解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);					// オプションサービス契約番号（Ｍｙホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);						// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_126.equals(orderNaiyoCd))
			{
				/**
				 * WEB・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);							// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_126);				// オーダ内容コード（WEB・解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);							// オプションサービス契約番号（Myホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);								// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_127.equals(orderNaiyoCd))
			{
				/**
				 * WEB・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);							// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);							// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_127);				// オーダ内容コード（WEB・消去）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);							// オプションサービス契約番号（Myホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);								// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_128.equals(orderNaiyoCd))
			{
				/**
				 * WEB・回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_WEB);							// サービスオーダコード（WEB）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);						// 要求種別コード（回復）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_128);				// オーダ内容コード（WEB・回復）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_hp);							// オプションサービス契約番号（Myホームページ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_hp);								// オプションサービス契約世代登録年月日時分秒（Myホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_129.equals(orderNaiyoCd))
			{
				/**
				 * ML・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ML);							// サービスオーダコード（ML）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);							// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_129);					// オーダ内容コード（ML・登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mlist);							// オプションサービス契約番号（メーリングリスト）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mlist);								// オプションサービス契約世代登録年月日時分秒（メーリングリスト）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_131.equals(orderNaiyoCd))
			{
				/**
				 * ML・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ML);							// サービスオーダコード（ML）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_131);					// オーダ内容コード（ML・解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mlist);							// オプションサービス契約番号（メーリングリスト）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mlist);								// オプションサービス契約世代登録年月日時分秒（メーリングリスト）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_132.equals(orderNaiyoCd))
			{
				/**
				 * ML・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ML);			// サービスオーダコード（ML）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);			// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_132);					// オーダ内容コード（ML・消去）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mlist);	// オプションサービス契約番号（メーリングリスト）
				inMap.put("opsvkei_gadtm", op_gadtm_mlist);			// オプションサービス契約世代登録年月日時分秒（メーリングリスト）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_133.equals(orderNaiyoCd))
			{
				/**
				 * ML・回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);													// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ML);													// サービスオーダコード（ML）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);												// 要求種別コード（回復）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);								// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);																	// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_133);					// オーダ内容コード（ML・回復）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mlist);							// オプションサービス契約番号（メーリングリスト）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mlist);								// オプションサービス契約世代登録年月日時分秒（メーリングリスト）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_134.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);									// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);								// サービスオーダコード（ダイアルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);									// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_134);						// オーダ内容コード（ダイヤルアップ接続・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);								// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);									// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_135.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・パスワード変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);							// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);		// サービスオーダコード（ダイアルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_135);					// オーダ内容コード（ダイアルアップ接続・パスワード変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);	// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);		// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);			// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_136.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・プラン変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);								// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);							// サービスオーダコード（ダイアルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);								// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_136);					// オーダ内容コード（ダイアルアップ接続・プラン変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);							// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);								// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_137.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);						// サービスオーダコード（ダイアルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_137);					// オーダ内容コード（ダイヤルアップ接続・解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);							// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);								// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_138.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);									// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);								// サービスオーダコード（ダイアルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);									// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_138);					// オーダ内容コード（ダイヤルアップ接続・消去）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);							// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);									// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_140.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・一時停止
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);		// サービスオーダコード（ダイヤルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);			// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_140);					// オーダ内容コード（ダイアルアップ接続・一時停止）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);							// オプションサービス契約番号
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);									// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ接続）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_141.equals(orderNaiyoCd))
			{
				/**
				 * ダイアルアップ接続・停止解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DUPCON);		// サービスオーダコード（ダイヤルアップ接続）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);		// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_141);					// オーダ内容コード（ダイアルアップ接続・停止解除）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_dial);							// オプションサービス契約番号（ダイヤルアップ接続）
				inMap.put("opsvkei_gadtm", this.op_gadtm_dial);									// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ接続）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_142.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(動的)・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定				
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);								// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);							// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);								// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_142);						// オーダ内容コード（マルチセッション(動的)・登録）
				// ST2-2012-0000488 2012/04/06 ADD START
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				// ST2-2012-0000488 2012/04/06 ADD END
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);								// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);									// オプションサービス契約世代登録年月日時分秒（マルチセッション）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);							// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_143.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(動的)・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);									// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);								// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);									// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_143);							// オーダ内容コード（マルチセッション(動的)・解約）
				if (null != svc_kei_ucwk_no)
				{
					inMap.put(EKK1551D010CBSMsg.SVC_KEI_UCWK_NO, svc_kei_ucwk_no[0]);		//2012-01-17追加、サービス契約内訳番号
					inMap.put(EKK1551D010CBSMsg.SVKEIUW_GADTM, svc_kei_ucwk_gadtm[0]);		//2012-01-17追加、サービス契約内訳番号
				}
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);									// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);										// オプションサービス契約世代登録年月日時分秒（マルチセッション）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);								// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_144.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(静的)・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);									// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);								// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);									// 要求種別コード（新規登録）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_144);					// オーダ内容コード（マルチセッション(静的)・登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);							// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);								// オプションサービス契約世代登録年月日時分秒（マルチセッション）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);						// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_145.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(静的)・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);									// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);								// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);									// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_145);							// オーダ内容コード（マルチセッション(静的)・解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);									// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);										// オプションサービス契約世代登録年月日時分秒（マルチセッション）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_146.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(静的)・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);										// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);									// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);										// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);					// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);														// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_146);						// オーダ内容コード（マルチセッション(静的)・消去）
// IT1-2013-000XXXX対応 20130502 星野 MOD START
//				// ST2-2012-0000488 2012/04/06 MOD START
//				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
//				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
//				// ST2-2012-0000488 2012/04/06 MOD END
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);				// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);					// オプションサービス契約世代登録年月日時分秒（マルチセッション）
// IT1-2013-000XXXX対応 20130502 星野 MOD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_147.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ROUTER);		// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);			// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);	// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);			// 機器製造番号
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_147);						// オーダ内容コード（ルーター向け接続情報・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);		// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);		// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);		// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);		// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_148.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・パスワード変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ROUTER);		// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_148);						// オーダ内容コード（ルーター向け接続情報・パスワード変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);		// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);		// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);		// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);		// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_163.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ROUTER);		// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_163);						// オーダ内容コード（ルーター向け接続情報・変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);		// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);		// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);		// オプションサービス契約番号（IPV6）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);				// オプションサービス契約世代登録年月日時分秒（IPV6）
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);		// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);		// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);	// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);			// 機器製造番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_149.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ROUTER);		// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);			// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);					// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);							// 機器製造番号
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_149);			// オーダ内容コード（ルーター向け接続情報・解約）
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);						// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);						// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_150.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ROUTER);		// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);			// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);					// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);							// 機器製造番号
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_150);			// オーダ内容コード（ルーター向け接続情報・消去）
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);						// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);						// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_152.equals(orderNaiyoCd))
			{
				/**
				 * 固定IPアドレス・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);													// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);												// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);													// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);								// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);																	// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_152);					// オーダ内容コード（固定IPアドレス・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);						// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fixipad);						// オプションサービス契約番号（固定グローバルＩＰアドレス）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fixipad);								// オプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);						// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_153.equals(orderNaiyoCd))
			{
				/**
				 * 固定IPアドレス・回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);										// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);									// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);										// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);					// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);														// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_153);					// オーダ内容コード（固定IPアドレス・回復）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);						// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fixipad);						// オプションサービス契約番号（固定グローバルＩＰアドレス）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fixipad);								// オプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);						// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}

			// ST2-2012-0000488 2012/04/06 ADD START
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_154.equals(orderNaiyoCd))
			{
				/**
				 * 固定IPアドレス・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);					// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);						// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_154);	// オーダ内容コード（固定IPアドレス・解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);			// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);			// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}

			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_161.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(静的)・回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);					// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);					// 要求種別コード（回復）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_161);	// オーダ内容コード（マルチセッション(静的)・回復）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);			// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);				// オプションサービス契約世代登録年月日時分秒（マルチセッション）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);		// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}

			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_162.equals(orderNaiyoCd))
			{
				/**
				 * マルチセッション(静的)・セッション数変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);					// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_162);	// オーダ内容コード（マルチセッション(静的)・セッション数変更）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_mltise);			// オプションサービス契約番号（マルチセッション）
				inMap.put("opsvkei_gadtm", this.op_gadtm_mltise);				// オプションサービス契約世代登録年月日時分秒（マルチセッション）
				// ANK-2765-00-00 ADD START
				inMap.put("huka_inf_kei_no", this.old_vrsb_jdg_svc_dtl_cd);		// 付加情報契約番号（旧VR識別判定用サービス詳細コード）
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST2-2012-0000488 2012/04/06 ADD END
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_164.equals(orderNaiyoCd))
			{
				/**
				 * フェムトセル・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);							// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_164);							// オーダ内容コード（フェムトセル・登録）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fmtcel);									// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fmtcel);										// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				// ※付加情報契約番号が必須だが、フェムトセルのSODは発行されることがないため対応しない(ANK-2765-00-00)

				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_166.equals(orderNaiyoCd))
			{
				/**
				 * フェムトセル・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_166);							// オーダ内容コード（フェムトセル・解約）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fmtcel);									// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fmtcel);										// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_167.equals(orderNaiyoCd))
			{
				/**
				 * フェムトセル・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);							// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_167);							// オーダ内容コード（フェムトセル・消去）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fmtcel);									// オプションサービス契約番号（ダイヤルアップ）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fmtcel);										// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_168.equals(orderNaiyoCd))
			{
				/**
				 * フェムトセル・一時停止
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);							// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_168);							// オーダ内容コード（フェムトセル・一時停止）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fmtcel);									// オプションサービス契約番号
				inMap.put("opsvkei_gadtm", this.op_gadtm_fmtcel);										// オプションサービス契約世代登録年月日時分秒（フェムトセル）
				// ※付加情報契約番号が必須だが、フェムトセルのSODは発行されることがないため対応しない(ANK-2765-00-00)

				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_169.equals(orderNaiyoCd))
			{
				/**
				 * フェムトセル・停止解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_FTTH);						// サービスオーダコード（FTTH認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);						// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_169);							// オーダ内容コード（フェムトセル・停止解除）
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_fmtcel);									// オプションサービス契約番号（フェムトセル）
				inMap.put("opsvkei_gadtm", this.op_gadtm_fmtcel);										// オプションサービス契約世代登録年月日時分秒（フェムトセル）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応

			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_201.equals(orderNaiyoCd))
			{
				/**
				 * 光電話・新規登録
				 */
				// オーダ発行条件
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_EOH_TEL_NEW_KEI_ODR);		// サービスオーダコード（光電話新規契約オーダ）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（光電話サービス開始条件）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				
				// オーダ情報作成ワーク
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_201);			// オーダ内容コード（光電話・新規登録）
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_202.equals(orderNaiyoCd))
			{
				/**
				 * Radius認証・登録
				 */
				// (1) オーダ発行条件
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_RADIUS);					// サービスオーダコード（Radius）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_202);		// オーダ内容コード（Radius認証・登録）
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);			// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);	// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_203.equals(orderNaiyoCd))
			{
				/**
				 * Radius認証・VLAN-ID変更
				 */
				// (1) オーダ発行条件
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_RADIUS);					// サービスオーダコード（Radius）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_203);						// オーダ内容コード（Radius認証・VLAN-ID変更）
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
//				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
//				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_204.equals(orderNaiyoCd))
			{
				/**
				 * Radius認証・解約
				 */
				// (1) オーダ発行条件
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_RADIUS);					// サービスオーダコード（Radius）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);						// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_204);		// オーダ内容コード（Radius認証・解約）
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);			// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);	// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_205.equals(orderNaiyoCd))
			{
				/**
				 * Radius認証・消去
				 */
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_206.equals(orderNaiyoCd))
			{
				/**
				 * Radius認証・回復
				 */
				// (1) オーダ発行条件
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_RADIUS);					// サービスオーダコード（Radius）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);					// 要求種別コード（回復）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_206);		// オーダ内容コード（Radius認証・回復）
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);			// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);	// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_207.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_207);			// オーダ内容コード（OLS設定・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);					// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);				// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);				// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);		// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_208.equals(orderNaiyoCd))
			{
				/**
				 *  OLS設定・電話番号追加
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_208);				// オーダ内容コード（OLS設定・電話番号追加）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);						// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);						// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);					// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);					// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);			// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_209.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・電話番号解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_209);			// オーダ内容コード（OLS設定・電話番号解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);					// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);				// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no);							// オプションサービス契約番号（固定グローバルＩＰアドレス）
				inMap.put("opsvkei_gadtm", this.op_gadtm);								// オプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス）
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);				// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);		// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_210.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・電話番号変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_210);						// オーダ内容コード（OLS設定・電話番号変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);							// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_211.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・発信者番号通知登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_211);						// オーダ内容コード（OLS設定・発信者番号通知登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);							// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_212.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・発信者番号通知解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_212);						// オーダ内容コード（OLS設定・発信者番号通知解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);							// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_213.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・VLAN-ID変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_213);						// オーダ内容コード（OLS設定・VLAN-ID変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);							// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_214.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・割込電話登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);				// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				
				// 共通部
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_214);									// オーダ内容コード（OLS設定・割込電話登録）
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);											// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);										// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);										// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);								// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_215.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);						// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_215);			// オーダ内容コード（OLS設定・解約）
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);				// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);				// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);		// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_216.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);						// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_216);			// オーダ内容コード（OLS設定・消去）
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);				// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);				// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);		// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_218.equals(orderNaiyoCd))
			{
				/**
				 * SIP・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);				// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);				// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);				// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);									// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_218);		// オーダ内容コード（SIP・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
				
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_219.equals(orderNaiyoCd))
			{
				/**
				 * SIP・オプション一括登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_219);							// オーダ内容コード（SIP・オプション一括登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);									// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_220.equals(orderNaiyoCd))
			{
				/**
				 * SIP・トーキ登録
				 */
				/**
				 * SIP・オプション一括登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_TOKI);						// 要求種別コード（トーキ）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_220);							// オーダ内容コード（SIP・オプション一括登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);										// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);										// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_221.equals(orderNaiyoCd))
			{
				/**
				 * SIP・トーキ解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_221);							// オーダ内容コード（SIP・トーキ消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);									// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_222.equals(orderNaiyoCd))
			{
				/**
				 * SIP・トーキ消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);							// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_222);							// オーダ内容コード（SIP・トーキ消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);									// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_223.equals(orderNaiyoCd))
			{
				/**
				 * SIP・一時停止
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);		// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);		// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);		// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_223);		// オーダ内容コード（SIP・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
				
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_224.equals(orderNaiyoCd))
			{
				/**
				 * SIP・停止解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);		// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);		// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);	// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_224);		// オーダ内容コード（SIP・停止解除）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
				
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_225.equals(orderNaiyoCd))
			{
				/**
				 * SIP・番ポ情報登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);					// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);					// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);					// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);										// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_225);					// オーダ内容コード（SIP・番ポ情報登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_226.equals(orderNaiyoCd))
			{
				/**
				 * SIP・番ポ情報削除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);					// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);					// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);					// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);										// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_226);					// オーダ内容コード（SIP・番ポ情報登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_227.equals(orderNaiyoCd))
			{
				/**
				 * SIP・WEBカスコンパスワード変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);					// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);					// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);					// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);										// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_227);					// オーダ内容コード（SIP・番ポ情報登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_228.equals(orderNaiyoCd))
			{
				/**
				 * SIP・リモート暗証番号初期化
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);					// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);					// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);					// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);										// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_228);					// オーダ内容コード（SIP・番ポ情報登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_229.equals(orderNaiyoCd))
			{
				/**
				 * SIP・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);						// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);						// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_229);					// オーダ内容コード（SIP・解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_230.equals(orderNaiyoCd))
			{
				/**
				 * SIP・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);									// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);									// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);									// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_230);									// オーダ内容コード（SIP・消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);											// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);										// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_231.equals(orderNaiyoCd))
			{
				/**
				 * SIP・発信者番号通知登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_231);							// オーダ内容コード（SIP・発信者番号通知登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_232.equals(orderNaiyoCd))
			{
				/**
				 * SIP・発信者番号通知解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_232);							// オーダ内容コード（SIP・発信者番号通知解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_234.equals(orderNaiyoCd))
			{
				/**
				 * SIP・割込電話登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);									// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);											// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_234);							// オーダ内容コード（SIP・割込電話登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_235.equals(orderNaiyoCd))
			{
				/**
				 * SIP・割込電話解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_235);							// オーダ内容コード（SIP・割込電話解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_236.equals(orderNaiyoCd))
			{
				/**
				 * SIP・転送電話登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_236);							// オーダ内容コード（SIP・転送電話登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
				
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_237.equals(orderNaiyoCd))
			{
				/**
				 * SIP・転送電話解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_237);							// オーダ内容コード（SIP・転送電話解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
				
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_238.equals(orderNaiyoCd))
			{
				/**
				 * SIP・転送電話選択登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_238);							// オーダ内容コード（SIP・転送電話選択登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_239.equals(orderNaiyoCd))
			{
				/**
				 * SIP・転送電話選択解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_239);							// オーダ内容コード（SIP・転送電話選択解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_240.equals(orderNaiyoCd))
			{
				/**
				 * SIP・発信者番号表示登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_240);							// オーダ内容コード（SIP・発信者番号表示登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_241.equals(orderNaiyoCd))
			{
				/**
				 * SIP・発信者番号表示解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_241);							// オーダ内容コード（SIP・発信者番号表示解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_242.equals(orderNaiyoCd))
			{
				/**
				 * SIP・非通知着信拒否登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_242);							// オーダ内容コード（SIP・非通知着信拒否登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_243.equals(orderNaiyoCd))
			{
				/**
				 * SIP・非通知着信拒否解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_243);							// オーダ内容コード（SIP・非通知着信拒否解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_244.equals(orderNaiyoCd))
			{
				/**
				 * SIP・迷惑電話着信拒否登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_244);							// オーダ内容コード（SIP・迷惑電話着信拒否登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_245.equals(orderNaiyoCd))
			{
				/**
				 * SIP・迷惑電話着信拒否解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_245);							// オーダ内容コード（SIP・迷惑電話着信拒否解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_246.equals(orderNaiyoCd))
			{
				/**
				 * SIP・指定番号着信拒否登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_246);							// オーダ内容コード（SIP・指定番号着信拒否登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_247.equals(orderNaiyoCd))
			{
				/**
				 * SIP・指定番号着信拒否解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_247);							// オーダ内容コード（SIP・指定番号着信拒否解約）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_248.equals(orderNaiyoCd))
			{
				/**
				 * 番号置換・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);								// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_NO_TIKAN);						// サービスオーダコード（番号置換）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);								// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_248);								// オーダ内容コード（番号置換・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);										// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);										// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_tikan);										// オプションサービス契約番号
				inMap.put("opsvkei_gadtm", this.op_gadtm_tikan);											// オプションサービス契約世代登録年月日時分秒
				
				
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_249.equals(orderNaiyoCd))
			{
				/**
				 * 番号置換・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_NO_TIKAN);				// サービスオーダコード（番号置換）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);						// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_249);								// オーダ内容コード（番号置換・消去）
				inMap.put("svc_kei_ucwk_no",  this.svc_kei_ucwk_no[0]);										// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm",  this.svc_kei_ucwk_gadtm[0]);									// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_tikan);										// オプションサービス契約番号
				inMap.put("opsvkei_gadtm", this.op_gadtm_tikan);											// オプションサービス契約世代登録年月日時分秒
				
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_250.equals(orderNaiyoCd))
			{
				/**
				 * 緊急通報・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_RMG);						// オーダ種別コード（緊急通報）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_EMG);						// サービスオーダコード（緊急通報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_250);					// オーダ内容コード（SIP・番ポ情報登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_251.equals(orderNaiyoCd))
			{
				/**
				 * 緊急通報・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_RMG);						// オーダ種別コード（緊急通報）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_EMG);						// サービスオーダコード（緊急通報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_251);					// オーダ内容コード（緊急通報・変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_252.equals(orderNaiyoCd))
			{
				/**
				 * 緊急通報・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_RMG);						// オーダ種別コード（緊急通報）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_EMG);						// サービスオーダコード（緊急通報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);						// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_252);					// オーダ内容コード（緊急通報・消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);							// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);							// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_255.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・ポート番号変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_255);						// オーダ内容コード（OLS設定・ポート番号変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);							// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_256.equals(orderNaiyoCd))
			{
				/**
				 * OLS設定・VA変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_OLS);						// サービスオーダコード（OLS）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_256);						// オーダ内容コード（OLS設定・VA変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);							// 機器提供サービス契約世代登録年月日時分秒
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);							// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);					// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD START
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_265.equals(orderNaiyoCd))
			{
				/**
				 * ENUM設定・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ENUM);					// サービスオーダコード（ENUM設定）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_265);						// オーダ内容コード（ENUM設定・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("huka_inf_kei_no", this.port_out_no);										// 付加情報契約番号（ポートアウト番号）
				inMap.put("huka_inf_kei_gadtm", this.port_out_gene_add_dtm);						// 付加情報契約世代登録年月日時分秒（ポートアウト世代登録年月日時分秒）
				inMap.put("telno", this.telNo);														// 電話番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_266.equals(orderNaiyoCd))
			{
				/**
				 * ENUM設定・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ENUM);					// サービスオーダコード（ENUM設定）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);						// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_266);						// オーダ内容コード（ENUM設定・消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("huka_inf_kei_no", this.port_out_no);										// 付加情報契約番号（ポートアウト番号）
				inMap.put("huka_inf_kei_gadtm", this.port_out_gene_add_dtm);						// 付加情報契約世代登録年月日時分秒（ポートアウト世代登録年月日時分秒）
				inMap.put("telno", this.telNo);														// 電話番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD END
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_301.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);					// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_301);		// オーダ内容コード（Wi-Fiスポット・登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_302.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);		// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_302);	// オーダ内容コード（Wi-Fiスポット・変更）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);			// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);			// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_303.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);				// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);				// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);					// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);										// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_303);				// オーダ内容コード（Wi-Fiスポット・消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);						// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);						// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_304.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・一時停止
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);		// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);			// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_304);		// オーダ内容コード（Wi-Fiスポット・一時停止）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);	// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_305.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・停止解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);		// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);		// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_305);			// オーダ内容コード（Wi-Fiスポット・停止解除）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);	// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_306.equals(orderNaiyoCd))
			{
				/**
				 * WiMAX・CUI登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_CUI);						// サービスオーダコード（CUI）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_306);		// オーダ内容コード（WiMAX・CUI登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_307.equals(orderNaiyoCd))
			{
				/**
				 * WiMAX・DEV登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DEV);						// サービスオーダコード（DEV）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_307);		// オーダ内容コード（WiMAX・DEV登録）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_308.equals(orderNaiyoCd))
			{
				/**
				 * WiMAX・CUI消去
				 */
				// CUI
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);				// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_CUI);					// サービスオーダコード（CUI）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);					// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);											// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_308);		// オーダ内容コード（WiMAX・CUI消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_309.equals(orderNaiyoCd))
			{
				/**
				 * WiMAX・DEV消去
				 */
				// DEV
				// (3) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);				// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DEV);					// サービスオーダコード（DEV）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);					// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (4) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_309);		// オーダ内容コード（WiMAX・DEV消去）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_310.equals(orderNaiyoCd))
			{
				/**
				 * WiMAX・CUI一時停止
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_CUI);						// サービスオーダコード（CUI）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);						// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_310);			// オーダ内容コード（WiMAX・CUI一時停止）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);					// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_311.equals(orderNaiyoCd))
			{
				/**
				 * WiMAX・CUI停止解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_CUI);			// サービスオーダコード（CUI）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);		// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);									// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_311);			// オーダ内容コード（WiMAX・CUI停止解除）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);					// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_313.equals(orderNaiyoCd))
			{
				/**
				 * e-mobile・解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DSL);			// サービスオーダコード（解約）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);			// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_313);			// オーダ内容コード（e-mobile・解約）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_314.equals(orderNaiyoCd))
			{
				/**
				 * e-mobile・一時中断
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_PAUSE);		// サービスオーダコード（一時中断）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP);			// 要求種別コード（一時停止）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_314);			// オーダ内容コード（e-mobile・一時中断）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_315.equals(orderNaiyoCd))
			{
				/**
				 * e-mobile・一時中断解除
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_PAUSE_RLS);	// サービスオーダコード（中断解除）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_STP_RLS);		// 要求種別コード（停止解除）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_315);			// オーダ内容コード（e-mobile・一時中断解除）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
			else if (ODR_NAIYO_CD_419.equals(orderNaiyoCd))
			{
					/**
					 * 多機能ルーター設定・解約(ルーター機能・解約)
					 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);			// オーダ種別コード（電話）
				inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);						// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);			// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);					// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);							// 機器製造番号
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("kktk_svc_kei_no",this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号(多機能ルータ)
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// OM-2014-0002802対応 20141011 星野 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_419);							// オーダ内容コード（多機能ルーター設定・解約(ルーター機能・解約)）
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);						// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);						// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);			// 機器オプションサービス契約（ルーター）
				inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);	// 機器オプションサービス契約（ルーター）世代登録年月日
				inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);				// 機器オプションサービス契約（VA）
				inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);		// 機器オプションサービス契約（VA）世代登録年月日
				inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
				inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);			// サービス契約回線内訳世代登録年月日
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if (ODR_NAIYO_CD_420.equals(orderNaiyoCd))
			{
				/**
				 * 多機能ルーター設定・消去(ルーター機能・解約)
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);			// オーダ種別コード（電話）
				inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);						// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);			// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);					// 宅内機器型式コード
				inMap.put("kiki_seizo_no", kiki_seizo_no[0]);							// 機器製造番号
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("kktk_svc_kei_no",this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号(多機能ルータ)
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_420);							// オーダ内容コード（多機能ルーター設定・消去(ルーター機能・解約)）
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);						// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);						// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);					// 機器オプションサービス契約（ルーター）
				inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);			// 機器オプションサービス契約（ルーター）世代登録年月日
				inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);						// 機器オプションサービス契約（VA）
				inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);				// 機器オプションサービス契約（VA）世代登録年月日
				inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
				inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);			// サービス契約回線内訳世代登録年月日
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if (ODR_NAIYO_CD_421.equals(orderNaiyoCd))
			{
				/**
				 * 多機能ルーター設定・解約(ルーター機能・解約)
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("kktk_svc_kei_no",this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号(多機能ルータ)
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svc_kei_kaisen_ucwk_no", svc_kei_kaisen_ucwk_no);
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);									// サービスオーダコード（多機能ルータ）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);						// 要求種別コード（解約）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_421);						// オーダ内容コード（多機能ルーター設定・解約(ルーター機能・解約)）
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				if (!JKKStringUtil.isNullEmpty(this.chbf_kktk_svc_kei_gadtm[0])) {
					inMap.put("kktsvkei_gadtm", this.chbf_kktk_svc_kei_gadtm[0]);	// 転居前機器提供サービス契約世代登録年月日時分秒
				} else {
					inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);		// 機器提供サービス契約世代登録年月日時分秒
				}
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);			// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);	// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
				inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);			// 機器オプションサービス契約（ルーター）
				inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);	// 機器オプションサービス契約（ルーター）世代登録年月日
				inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);				// 機器オプションサービス契約（VA）
				inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);		// 機器オプションサービス契約（VA）世代登録年月日
				inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
				inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);			// サービス契約回線内訳世代登録年月日
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if (ODR_NAIYO_CD_422.equals(orderNaiyoCd))
			{
				/**
				 * 多機能ルーター設定・消去(ルーター機能・解約)
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("kktk_svc_kei_no",this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号(多機能ルータ)
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svc_kei_kaisen_ucwk_no", svc_kei_kaisen_ucwk_no);
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);									// サービスオーダコード（多機能ルータ）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);						// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_422);			// オーダ内容コード（多機能ルーター設定・消去(ルーター機能・解約)）
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
				if (!JKKStringUtil.isNullEmpty(this.chbf_kktk_svc_kei_gadtm[0])) {
					inMap.put("kktsvkei_gadtm", this.chbf_kktk_svc_kei_gadtm[0]);		// 転居前機器提供サービス契約世代登録年月日時分秒
				} else {
					inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				}
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);				// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);		// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
				inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);			// 機器オプションサービス契約（ルーター）
				inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);	// 機器オプションサービス契約（ルーター）世代登録年月日
				inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);				// 機器オプションサービス契約（VA）
				inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);		// 機器オプションサービス契約（VA）世代登録年月日
				inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
				inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);			// サービス契約回線内訳世代登録年月日
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD START
			else if (ODR_NAIYO_CD_417.equals(orderNaiyoCd))
			{
				/**
				 * 多機能ルーター設定・変更(ルーター機能・解約)
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
// OM-2014-0002802対応 20141011 星野 ADD START
				inMap.put("kktk_svc_kei_no",this.kktk_svc_kei_no[0]);								// 機器提供サービス契約番号(多機能ルータ)
				inMap.put("svc_kei_kaisen_ucwk_no", svc_kei_kaisen_ucwk_no);
// OM-2014-0002802対応 20141011 星野 ADD END
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);								// サービス契約内訳番号
				inMap.put("svc_kei_kaisen_ucwk_no", this.svc_kei_kaisen_ucwk_no);					// サービス契約回線内訳番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);						// オーダ種別コード（電話）
				inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);									// サービスオーダコード（多機能ルータ）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_417);			// オーダ内容コード（多機能ルーター設定・変更(VA機能・解約)）
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
				if (!JKKStringUtil.isNullEmpty(this.chbf_kktk_svc_kei_gadtm[0])) {
					inMap.put("kktsvkei_gadtm", this.chbf_kktk_svc_kei_gadtm[0]);		// 転居前機器提供サービス契約世代登録年月日時分秒
				} else {
					inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				}
				inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("huka_inf_kei_no", this.svc_kei_kaisen_ucwk_no);				// 付加情報契約番号（サービス契約回線内訳番号）
				inMap.put("huka_inf_kei_gadtm", this.svc_kei_kaisen_ucwk_gadtm);		// 付加情報契約世代登録年月日時分秒（サービス契約回線内訳世代登録年月日時分秒）
				inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);			// 機器オプションサービス契約（ルーター）
				inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);	// 機器オプションサービス契約（ルーター）世代登録年月日
				inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);				// 機器オプションサービス契約（VA）
				inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);		// 機器オプションサービス契約（VA）世代登録年月日
				inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
				inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);			// サービス契約回線内訳世代登録年月日
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD END
		}
		return param;
	}
	
	// 2012-02-29 開始
	/**
	 * 追加分のオーダ発行条件・オーダ情報作成ワーク登録判定・登録処理<br>
	 * <br>
	 * 渡されたオーダ内容コードから、必要な情報をマッピングして<br>
	 * 各オーダテーブルへの登録を行う。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle
	 * @param param
	 * @param orderNaiyoCd
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite tsuikabunAddSOD(SessionHandle handle, 
														IRequestParameterReadWrite param, 
														String orderNaiyoCd) throws Throwable
	{
		// 2012-02-29 追加したメソッド  【ANK-0048-00-01】国際電話停止オプション 【ANK-0046-00-01】IPV6対応
		// 2012-02-29 【ANK-0085-00-01】モバイル3G回復、 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復
		
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (null != inMap)
		{
			/**
			 * マップ初期化処理
			 */
			// オーダ発行条件(サービス契約番号は初期化しない)
			inMap.put("svc_kei_ucwk_no", "");											// サービス契約内訳番号
			inMap.put("kktk_svc_kei_no", "");											// 機器提供サービス契約番号
			inMap.put("op_svc_kei_no", "");												// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");											// サブオプションサービス契約番号
			inMap.put("seiopsvc_kei_no", "");											// 請求オプションサービス契約番号
			inMap.put("order_sbt_cd", "");												// オーダ種別コード
			inMap.put("svc_order_cd", "");												// サービスオーダコード
			inMap.put("yokyu_sbt_cd", "");												// 要求種別コード
			inMap.put("odr_hakko_joken_cd", "");										// オーダ発行条件コード
			inMap.put("same_trn_no", "");												// 同一処理番号
			inMap.put("taknkiki_model_cd", "");											// 宅内機器型式コード
			inMap.put("kiki_seizo_no", "");												// 機器製造番号
			inMap.put("mlad", "");														// メールアドレス
			inMap.put("spot_login_sysid", "");											// スポットログインＳＹＳＩＤ
			inMap.put("send_req_fin_dtm", "");											// 送信依頼完了年月日時分秒
			
			// オーダ情報作成ワーク(サービス契約の世代は初期化しない)
			inMap.put("odr_hakko_joken_no", "");		// オーダ発行条件番号
			inMap.put("odr_naiyo_cd", "");				// オーダ内容コード
			inMap.put("svkeiuw_gadtm", "");				// サービス契約内訳世代登録年月日時分秒
			inMap.put("kktsvkei_gadtm", "");			// 機器提供サービス契約世代登録年月日時分秒
			inMap.put("opsvkei_gadtm", "");				// オプションサービス契約世代登録年月日時分秒
			inMap.put("sbopsvkei_gadtm", "");			// サブオプションサービス契約世代登録年月日時分秒
			inMap.put("seiopsvkei_gadtm", "");			// 請求オプションサービス契約世代登録年月日時分秒
			// 以下実質SODバッチ側で使ってない部分(念のため初期化)
			inMap.put("huka_inf_kei_no", "");			// 付加情報契約番号
			inMap.put("huka_inf_kei_gadtm", "");		// 付加情報契約世代登録年月日時分秒
			inMap.put("chbf_svkei_gadtm", "");			// 変更前サービス契約世代登録年月日時分秒
			inMap.put("chbf_svkeiuw_gadtm", "");		// 変更前サービス契約内訳世代登録年月日時分秒
			inMap.put("chbf_kktsvkei_gadtm", "");		// 変更前機器提供サービス契約世代登録年月日時分秒
			inMap.put("chbf_opsvkei_gadtm", "");		// 変更前オプションサービス契約世代登録年月日時分秒
			inMap.put("chbf_sbopsvkei_gadtm", "");		// 変更前サブオプション契約世代登録年月日時分秒
			inMap.put("chbf_seiopsvkei_gadtm", "");		// 変更前請求オプション契約世代登録年月日時分秒
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
			inMap.put("kkop_svc_kei_no_1", "");	// 機器オプションサービス契約（ルーター）
			inMap.put("kkop_svc_kei_no_2", "");	// 機器オプションサービス契約（VA）
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
			
			if(JKKHakkoSODConstCC.ODR_NAIYO_CD_163.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_ROUTER);		// サービスオーダコード（ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号

				// IPV6対応の オーダー発行条件ワーク出力のための退避物から
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);		// オプションサービス契約番号（IPV6）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);			// オプションサービス契約世代登録年月日時分秒（IPV6）
				inMap.put("svc_kei_ucwk_no", this.ipv6_svc_kei_ucwk_no);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.ipv6_svc_kei_ucwk_gadtm);	// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.ipv6_kktk_svc_kei_no);	// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.ipv6_kktk_svc_kei_gadtm);	// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd_ipv6);	// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no_ipv6);			// 機器製造番号

				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_163);		// オーダ内容コード（ルーター向け接続情報・変更）

				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_155.equals(orderNaiyoCd))
			{
				/**
				 * IPV6・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_IPV6);			// サービスオーダコード (IPV6)
				inMap.put("yokyu_sbt_cd", this.yokyu_sbt);							// 要求種別コード
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				// IPV6対応の オーダー発行条件ワーク出力のための退避物から
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);		// オプションサービス契約番号（IPV6）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);			// オプションサービス契約世代登録年月日時分秒（IPV6）
				inMap.put("svc_kei_ucwk_no", this.ipv6_svc_kei_ucwk_no);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.ipv6_svc_kei_ucwk_gadtm);	// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.ipv6_kktk_svc_kei_no);	// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.ipv6_kktk_svc_kei_gadtm);	// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd_ipv6);	// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no_ipv6);			// 機器製造番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_155);					// オーダ内容コード（IPV6・登録）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_156.equals(orderNaiyoCd))
			{
				/**
				 * IPV6・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_IPV6);						// サービスオーダコード (IPV6)
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
				// IPV6対応の オーダー発行条件ワーク出力のための退避物から
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);		// オプションサービス契約番号（IPV6）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);			// オプションサービス契約世代登録年月日時分秒（IPV6）
				inMap.put("svc_kei_ucwk_no", this.ipv6_svc_kei_ucwk_no);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.ipv6_svc_kei_ucwk_gadtm);	// サービス契約内訳世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_156);					// オーダ内容コード（IPV6・変更）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST2-2012-0001703 2012/09/21 DEL START
			// IPV6の解約時には消去オーダのみでいい為、解約オーダを削除(要求種別が解約というのはV6には存在しない)
//			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_157.equals(orderNaiyoCd))
//			{
//				/**
//				 * IPV6・解約
//				 */
//				// (1) オーダ発行条件登録
//				// サービスオーダ発行CC作業マップ設定
//				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
//				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_IPV6);				// サービスオーダコード (IPV6)
//				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DSL);							// 要求種別コード（解約）
//				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
//				inMap.put("same_trn_no", this.same_trn_no);												// 同一処理番号
//				// IPV6対応の オーダー発行条件ワーク出力のための退避物から
//				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);		// オプションサービス契約番号（IPV6）
//				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);			// オプションサービス契約世代登録年月日時分秒（IPV6）
//				inMap.put("svc_kei_ucwk_no", this.ipv6_svc_kei_ucwk_no);	// サービス契約内訳番号
//				inMap.put("svkeiuw_gadtm", this.ipv6_svc_kei_ucwk_gadtm);	// サービス契約内訳世代登録年月日時分秒
//				inMap.put("kktk_svc_kei_no", this.ipv6_kktk_svc_kei_no);	// 機器提供サービス契約番号
//				inMap.put("kktsvkei_gadtm", this.ipv6_kktk_svc_kei_gadtm);	// 機器提供サービス契約世代登録年月日時分秒
//				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd_ipv6);	// 宅内機器型式コード
//				inMap.put("kiki_seizo_no", this.kiki_seizo_no_ipv6);			// 機器製造番号
//				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//				// オーダ発行条件登録実行
//				param = executeOdrHakkoJokenAdd(handle, param);
//
//				// (2) オーダ情報作成ワーク登録
//				// サービスオーダ発行CC作業マップ設定
//				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_157);					// オーダ内容コード（IPV6・解約）
//				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//				// オーダ情報作成ワーク登録実行
//				param = executeOdrInfoSakseiWkAdd(handle, param);
//			}
			// ST2-2012-0001703 2012/09/21 DEL END
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_158.equals(orderNaiyoCd))
			{
				/**
				 * IPV6・消去
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);			// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_IPV6);				// サービスオーダコード (IPV6)
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);			// 要求種別コード（消去）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号
				// IPV6対応の オーダー発行条件ワーク出力のための退避物から
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);		// オプションサービス契約番号（IPV6）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);			// オプションサービス契約世代登録年月日時分秒（IPV6）
				inMap.put("svc_kei_ucwk_no", this.ipv6_svc_kei_ucwk_no);	// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.ipv6_svc_kei_ucwk_gadtm);	// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.ipv6_kktk_svc_kei_no);	// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.ipv6_kktk_svc_kei_gadtm);	// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd_ipv6);	// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no_ipv6);			// 機器製造番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_158);					// オーダ内容コード（IPV6・消去）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_253.equals(orderNaiyoCd))
			{
				/**
				 * SIP・国際電話停止登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_253);							// オーダ内容コード（国際電話停止登録）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_254.equals(orderNaiyoCd))
			{
				/**
				 * SIP・国際電話停止解約
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);							// オーダ種別コード（電話）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SIP);							// サービスオーダコード（SIP）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);							// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);									// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);								// サービス契約内訳世代登録年月日時分秒
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_254);							// オーダ内容コード（国際電話停止解約）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_301.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・登録
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);					// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);						// 要求種別コード（新規）
				// 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復
				inMap.put("odr_hakko_joken_cd", this.odr_hakkou_jyoken);			// オーダ発行条件コード  2012-02-29
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_301);		// オーダ内容コード（Wi-Fiスポット・登録）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_302.equals(orderNaiyoCd))
			{
				/**
				 * Wi-Fiスポット・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);		// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_SPOT);		// サービスオーダコード（SPOT認証）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				// 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復
				inMap.put("odr_hakko_joken_cd", this.odr_hakkou_jyoken);			// オーダ発行条件コード  2012-02-29
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);			// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);			// サービス契約内訳世代登録年月日時分秒
				inMap.put("same_trn_no", this.same_trn_no);								// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_302);	// オーダ内容コード（Wi-Fiスポット・変更）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_316.equals(orderNaiyoCd))
			{
				// 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復
				/**
				 * WiMAX・CUI回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_CUI);						// サービスオーダコード（CUI）
				// *** inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);						// 要求種別コード（回復）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);							// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_316);		// オーダ内容コード（WiMAX・CUI回復）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			else if(JKKHakkoSODConstCC.ODR_NAIYO_CD_317.equals(orderNaiyoCd))
			{
				// 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復
				/**
				 * WiMAX・DEV回復
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd[0]);							// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no[0]);									// 機器製造番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);					// オーダ種別コード（モバイル）
				inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DEV);						// サービスオーダコード（DEV）
				// *** inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_KAIHK);						// 要求種別コード（回復）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);							// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);	// オーダ発行条件コード（即時発行）
				inMap.put("svc_kei_ucwk_no", this.svc_kei_ucwk_no[0]);				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.kktk_svc_kei_no[0]);				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.kktk_svc_kei_gadtm[0]);			// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("same_trn_no", this.same_trn_no);											// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
				
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_317);		// オーダ内容コード（WiMAX・DEV回復）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
			}
			else if(ODR_NAIYO_CD_404.equals(orderNaiyoCd))
			{
				/**
				 * ルーター向け接続情報・変更
				 */
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);			// オーダ種別コード（電話）
				inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);		// サービスオーダコード（多機能ルーター向け接続情報）
				inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);			// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);									// 同一処理番号

				// IPV6対応の オーダー発行条件ワーク出力のための退避物から
				inMap.put("op_svc_kei_no", this.op_svc_kei_no_ipv6);			// オプションサービス契約番号（IPV6）
				inMap.put("opsvkei_gadtm", this.op_gadtm_ipv6);					// オプションサービス契約世代登録年月日時分秒（IPV6）
				inMap.put("svc_kei_ucwk_no", this.ipv6_svc_kei_ucwk_no);		// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", this.ipv6_svc_kei_ucwk_gadtm);		// サービス契約内訳世代登録年月日時分秒
				inMap.put("kktk_svc_kei_no", this.ipv6_kktk_svc_kei_no);		// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", this.ipv6_kktk_svc_kei_gadtm);		// 機器提供サービス契約世代登録年月日時分秒
				inMap.put("taknkiki_model_cd", this.taknkiki_model_cd_ipv6);	// 宅内機器型式コード
				inMap.put("kiki_seizo_no", this.kiki_seizo_no_ipv6);			// 機器製造番号
				inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);			// 機器オプションサービス契約（ルーター）
				inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);	// 機器オプションサービス契約（ルーター）世代登録年月日
				inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);				// 機器オプションサービス契約（VA）
				inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);		// 機器オプションサービス契約（VA）世代登録年月日
				// 回線内訳の一意照会を行い、カレントの世代年月日を取得
				HashMap<String, Object> ekk0251a010Map = runEKK0251A010(param, handle, svc_kei_kaisen_ucwk_no);
				String svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);
				inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
				inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);		// サービス契約回線内訳世代登録年月日

				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);

				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_404);		// オーダ内容コード（多機能ルーター設定・変更(ルーター機能・接続情報変更)）

				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
	// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
			}
		}
		return param;
	}
	// 2012-02-29 終了

	/**
	 * 同一処理番号採番処理
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param fixedText ユーザ任意文字列
	 * @param same_trn_no 同一処理番号
	 * @return モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getSame_trn_no(IRequestParameterReadWrite param 
			, SessionHandle handle 
			, String fixedText 
			, String[] same_trn_no) throws Throwable
	{
		// 必要情報の設定
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		HashMap<String, Object> resultHash = new HashMap<String, Object>();
		
		// 同一処理番号採番SIFの呼び出し
		callEKK1081C011SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
		same_trn_no[0] = (String)((HashMap)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011)).get(JKKHakkoSODConstCC.SAME_TRN_NO);
		return param;
	}

	/**
	 * シンプルな同一処理番号取得メソッド
	 * 
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @return 同一処理番号
	 * @throws Throwable 任意の例外
	 */
	private String getSame_trn_no(IRequestParameterReadWrite param, SessionHandle handle) throws Throwable
	{
		// 同一処理番号の採番
		String[] sameTrnNo = new String[1];
		getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
		return sameTrnNo[0];
	}


	/**
	 * サービス種類判定処理
	 * <br>
	 * 料金グループコードよりサービス種類を判定します。<br>
	 * <br>
	 * @return サービス種類コード
	 */
	private String jdgSvcKind()
	{
		String svc_kind = JKKHakkoSODConstCC.SVC_KIND_ELSE;
		
		// 料金グループコードが
		// ｅｏ光ネットホームタイプ または
		// ｅｏ光ネットメゾンタイプ または
		// ｅｏ光ネットマンションタイプ
		if (JKKHakkoSODConstCC.PRC_GRP_CD_NET_HM.equals(prc_grp_cd) ||
				JKKHakkoSODConstCC.PRC_GRP_CD_NET_MZ.equals(prc_grp_cd) ||
				JKKHakkoSODConstCC.PRC_GRP_CD_NET_MT.equals(prc_grp_cd))
		{
			svc_kind = JKKHakkoSODConstCC.SVC_KIND_NET;	// eo光ネット
		}
		// ｅｏモバイル（Ｗｉ−Ｆｉ）
		// ｅｏモバイル（ＥＭ）
		// ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
		else if (JKKHakkoSODConstCC.PRC_GRP_CD_MOB_WIFI.equals(prc_grp_cd) ||
					JKKHakkoSODConstCC.PRC_GRP_CD_MOB_EM.equals(prc_grp_cd) ||
					JKKHakkoSODConstCC.PRC_GRP_CD_MOB_UQ.equals(prc_grp_cd) ||
					// ANK-0099-00-00 2012/05/25 kitatani start
					JKKHakkoSODConstCC.PRC_GRP_CD_MAIL.equals(prc_grp_cd))
					// ANK-0099-00-00 2012/05/25 kitatani end
		{
			svc_kind = JKKHakkoSODConstCC.SVC_KIND_MOB;	// eo光モバイル
		}
		// ｅｏ光電話
		else if (JKKHakkoSODConstCC.PRC_GRP_CD_TEL.equals(prc_grp_cd))
		{
			svc_kind = JKKHakkoSODConstCC.SVC_KIND_TEL;	// eo光電話
		}

		// ST2-2012-0000555 2012/03/30 ADD START
		// ｅｏＡＤＳＬ
		else if (JKKHakkoSODConstCC.PRC_GRP_CD_EACCESS.equals(prc_grp_cd)
				|| JKKHakkoSODConstCC.PRC_GRP_CD_FLETS.equals(prc_grp_cd))
		{
			svc_kind = JKKHakkoSODConstCC.SVC_KIND_ADSL;
		}
		// ST2-2012-0000555 2012/03/30 ADD END

		return svc_kind;
	}

	/**
	 * オプションサービス種類判定処理
	 * オプションサービスコードから、ネットか電話の判定と
	 * サブオプションの照会フラグを判断します。
	 * @param op_svc_cd
	 * @return サービス種類コード,照会フラグ
	 */
	private String[] jdgOpSvcKind(String op_svc_cd)
	{
		String[] retInfo = new String[2];
		
		
		if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals(op_svc_cd)	// 【ANK-0046-00-01】IPV6対応 2012-02-29追加
				|| JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(op_svc_cd)
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
				|| JKKHakkoSODConstCC.OP_SVC_CD_FMTCEL.equals(op_svc_cd)
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
		)
		{
			// ネットの場合
			retInfo[0] = JKKHakkoSODConstCC.SVC_KIND_NET;
			if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd)
					|| JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd))
			{
				// サブオプションを見る必要がある
				retInfo[1] = "1";
			}
			else
			{
				retInfo[1] = "0";
			}
		}
		else if(JKKHakkoSODConstCC.OP_SVC_CD_WARKMI.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_DSP.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_MWKTEL.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_STINO.equals(op_svc_cd)
				|| JKKHakkoSODConstCC.OP_SVC_CD_KOKUSAI_STP.equals(op_svc_cd)	// 【ANK-0046-00-01】IPV6対応 2012-02-29追加
				|| JKKHakkoSODConstCC.OP_SVC_CD_N050.equals(op_svc_cd))
		{
			// 電話の場合
			retInfo[0] = JKKHakkoSODConstCC.SVC_KIND_TEL;
			if(JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(op_svc_cd)
					|| JKKHakkoSODConstCC.OP_SVC_CD_DSP.equals(op_svc_cd))
			{
				// サブオプションを見る必要がある
				retInfo[1] = "1";
			}
			else
			{
				retInfo[1] = "0";
			}
		}
		else
		{
			retInfo = null;
		}
		
		
		return retInfo;
	}
	
	// IT2-2016-0000004 2016/02/22 DEL START
//	/**
//	 * サービス種類判定処理(料金コースコード)
//	 * <br>
//	 * 料金コースコードよりサービス種類を判定します。<br>
//	 * <br>
//	 * @return サービス種類コード
//	 */
//	private String jdgSvcKind_PcrsCd()
//	{
//		String svc_kind = JKKHakkoSODConstCC.SVC_KIND_ELSE;
//		
//		// ネットの場合
//		if (JKKHakkoSODConstCC.PCRS_CD_100M.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_100M_PRM.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_1G.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_100M_VPN.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_200M.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_MEZON_100M.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_MEZON_100M_PRM.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_MEZON_1G.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_MEZON_200M.equals(pcrs_cd))
//		{
//			svc_kind = JKKHakkoSODConstCC.SVC_KIND_NET;	// eo光ネット
//		}
//		// モバイルの場合
//		else if (JKKHakkoSODConstCC.PCRS_CD_EMOBILE_7M.equals(pcrs_cd) ||
//					JKKHakkoSODConstCC.PCRS_CD_EMOBILE_21M.equals(pcrs_cd) ||
//					JKKHakkoSODConstCC.PCRS_CD_UQWIMAX_B.equals(pcrs_cd) ||
//					JKKHakkoSODConstCC.PCRS_CD_UQWIMAX_W.equals(pcrs_cd) ||
//					JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals(pcrs_cd) ||
//					// ANK-0099-00-00 2012/05/25 kitatani start
//					JKKHakkoSODConstCC.PCRS_CD_MAILADDRESS.equals(pcrs_cd))
//					// ANK-0099-00-00 2012/05/25 kitatani end
//		{
//			svc_kind = JKKHakkoSODConstCC.SVC_KIND_MOB;	// eo光モバイル
//		}
//		// ｅｏ光電話
//		else if (JKKHakkoSODConstCC.PCRS_CD_TEL_1BAN.equals(pcrs_cd) ||
//					JKKHakkoSODConstCC.PCRS_CD_TEL_2BAN.equals(pcrs_cd))
//		{
//			svc_kind = JKKHakkoSODConstCC.SVC_KIND_TEL;	// eo光電話
//		}
//		// ｅｏＡＤＳＬ
//		else if (JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS12M1.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS12M2.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS24M1.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS24M2.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS1M1.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS1M2.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS40M1.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS40M2.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS50M1.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_EACCESS50M2.equals(pcrs_cd) ||
//				JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals(pcrs_cd))
//		{
//			svc_kind = JKKHakkoSODConstCC.SVC_KIND_ADSL;	// eoADSL
//		}
//		//ネット マンションタイプ
//		else if	(JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_VDSL2.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_VDSL3.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_VDSL4.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_VDSL5.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_METHER.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_GETHER.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_MHIKARI.equals(pcrs_cd) || 
//				JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_GHIKARI.equals(pcrs_cd))
//		{
//			svc_kind = JKKHakkoSODConstCC.SVC_KIND_NET;	// eo光ネット
//		}
//
//		return svc_kind;
//	}
	// IT2-2016-0000004 2016/02/22 DEL END
	
	/**
	 * サービス追加オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private IRequestParameterReadWrite svcAddOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> sodMap) throws Throwable
	{
		// 同一処理番号取得
		getSameTrnNo(handle, param);
		
		// サービス種類判定
		String svc_kind = jdgSvcKind();
		
		// ST2-2012-0000555 2012/03/30 MOD START
		// eo光ネットの場合
		if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind))
		// ST2-2012-0000555 2012/03/30 MOD END
		{
			// オプションサービス契約一覧照会（サービス契約番号）
			param = getOpSvcKeiList(handle, param);
			// オプションサービス契約＜ISP＞一意照会
			param = getOpSvcKeiIsp(handle, param);
			// サブオプションサービス契約一覧照会
			param = getSbOpSvcKeiList(handle, param);
			// サービス契約内訳一覧照会
			param = getSvcKeiUtwkList(handle, param);
// ▼ 2012/04/20 巻取@残対応
			// ルータの機器提供サービス契約情報を取得
			param = getKktkSvcKeiList(handle, param, JKKHakkoSODConstCC.KKTK_SVC_CD_BBR);
// ▲ 2012/04/20 巻取@残対応
			// インターネットサービス新規契約処理
			param = newNet(handle, param, sodMap);
		}
		// eo光電話の場合
		else if (JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind))
		{
			//↓↓↓2012-07-24追加　ST2-2012-0001384対応（工事未完了での転送電話オプションＳＯＤ）↓↓↓
			//照査時、転送電話オプション用ＳＯＤ発行
			param = addTensoDenwaOp(handle, param, sodMap);
			//↑↑↑2012-07-24追加　ST2-2012-0001384対応（工事未完了での転送電話オプションＳＯＤ）↑↑↑

			// 光電話の新規登録処理
			param = addSODTelNew(handle, param);
		}
//モバイルは対象外
//		// eo光モバイルの場合
//		else if (JKKHakkoSODConstCC.SVC_KIND_MOB.equals(svc_kind))
//		{
//			// オプションサービス契約一覧照会（サービス契約番号）
//			param = getOpSvcKeiList(handle, param);
//			// オプションサービス契約＜ISP＞一意照会
//			param = getOpSvcKeiIsp(handle, param);
//			// ANK-0099-00-00 2012/05/25 kitatani start
//			// サブオプションサービス契約一覧照会
//			param = getSbOpSvcKeiList(handle, param);
//			// ANK-0099-00-00 2012/05/25 kitatani end
//			// サービス契約内訳一覧照会
//			param = getSvcKeiUtwkList(handle, param);
//			// サービス契約内訳一覧照会（SYSID）
//			param = getSvcKeiUtwkListSysid(handle, param);
//			// サービス契約内訳一意照会
//			param = getSvcKeiUtwk(handle, param);
//			
//			// モバイルサービス新規契約処理
//			param = newMobail(handle, param);
//		}
		
		// 2012-02-29 開始
		// IPV6オプションのオーダー発行 【ANK-0046-00-01】IPV6対応 2012-02-29 追加
		this.sod_pattern_ipv6 = 1;			// 新規なので、発行するとしたら IPV6 登録に相当する
		addIpv6SODAft(handle, param, "", "", JKKHakkoSODConstCC.SVC_KEI_STAT_100, sodMap);
		// 2012-02-29 終了
		
		return param;
	}

	/**
	 * 転送電話オプション用ＳＯＤ登録
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param sodMap 入力マップ（現在未使用）
	 * @return リクエストパラメータ
	 * @throws Throwable 任意の例外
	 * @since 2012-07-24追加　ST2-2012-00001384対応
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addTensoDenwaOp(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String,Object> sodMap) throws Throwable
	{
		boolean isOrdered = false;

		// サービス契約内訳一覧照会
		param = getSvcKeiUtwkList(handle, param);
		
		//インスタンス変数のサービス契約番号をローカルに格納し直し
		ArrayList<String[]> svcKeiUcwkNos = new ArrayList<String[]>();
		for (int i = 0; i < this.svc_kei_ucwk_no.length; i++)
		{
			if (!JKKBpCommon.isNull(this.svc_kei_ucwk_no[i]) && !"".equals(this.svc_kei_ucwk_no[i]))
			{
				svcKeiUcwkNos.add(new String[]{this.svc_kei_ucwk_no[i], this.svc_kei_ucwk_gadtm[i]});
			}
		}
		
		//addSODメソッド内での利用に合わせてインスタンス変数を調整
		this.svc_kei_ucwk_no = new String[1];
		this.svc_kei_ucwk_gadtm = new String[1];

		for (String[] svcKeiUcwkNo : svcKeiUcwkNos)
		{
			// EKK0191A010_サービス契約内訳＜eo光電話＞一意照会
			HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
			HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
			inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svcKeiUcwkNo[0]);
			inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, svcKeiUcwkNo[1]);
			
			callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
			// 結果の取得
			HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);

			// 番ポ有無＝無しの場合
			if(!JKKHakkoSODConstCC.BMP_UM_ARI.equals((String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM)))
			{
				this.svc_kei_ucwk_no[0] = svcKeiUcwkNo[0];
				this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkNo[1];
	
				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashOp = new HashMap<String, Object>();
				HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
				inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svcKeiUcwkNo[0]);				// サービス契約内訳番号
				
				callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
				CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
				
				//オプションデータの件数分繰り返し
				for(int j = 0 ; j < msgList.length ; j ++)
				{
					HashMap<String, Object> eKK0351B002Hash = msgList[j].getMsgData();
					// オプションサービスコード
					String opSvcCd = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();
					// オプションサービスコード
					String opSvcKeiStat = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();
					
					// 転送電話の場合の場合
					if(JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(opSvcCd))
					{
						//解約済でもキャンセル済でもない場合
						if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(opSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(opSvcKeiStat)))
						{
							// SIP・登録
							param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_218);
	
							// SIP・転送電話登録
							param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_236);
							
							isOrdered = true;
						}
					}
				}
			}
		}

		//転送電話オプション用ＳＯＤ発行条件を登録した場合、同一処理番号を採番し直し（Z1オーダと分けるため）
		if (isOrdered)
		{
			// 同一処理番号の採番
			String[] sameTrnNo = new String[1];
			getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
			this.same_trn_no = sameTrnNo[0];
		}

		return param;
	}
	
	/**
	 * 中断受付オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText リクエストデータマップＩＤ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite stpUkOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText, HashMap<String, Object> sodMap) throws Throwable
	{
		// ※当メソッドは使用されていないため対応しない(ANK-2765-00-00)
		int statusCode = 0;											// サービスインターフェイス実行ステータス

		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		
		// (1) 中断受付必須パラメータの取得
		String sys_id = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID);			// SYSID
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);	// サービス契約番号
		
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);	// サービス契約内訳番号
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);	// 変更後サービス契約内訳世代登録年月日時分秒
		
		// (2) サービス契約情報の取得
		// Aサービス契約の確認
		// サービス種類判定
		// IT2-2016-0000004 2016/02/22 MOD START
		//String svc_kind = jdgSvcKind_PcrsCd();
		String svc_kind = jdgSvcKind();
		// IT2-2016-0000004 2016/02/22 MOD END
		
		// eo光ネット、フレッツの場合
		if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) ||
				JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals(pcrs_cd))
		{
			
			//マンションタイプ（プライベート）の場合は以降のSOD発行は行わない
			//※FTTH認証は発行不可、またダイヤルアップ接続は契約不可
			if(isMansionPrvate())
			{
				return param;
			}

			// 上りマッピング
			HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
			HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
			
			inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);						// サービス契約番号
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
//			inHashMltise.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_DUP);	// オプションサービスコード＿ダイヤルアップ接続
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応

			// (3) ネットサービスの中断処理
			//   @ダイヤルアップ接続オプションの確認
			// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
			statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}

// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
			// 下りマッピング
			CAANMsg[] msgList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
			String op_svc_kei_no = "";
			String op_svc_kei_stat = "";
			String op_gene_add_dtm = "";
			String op_svc_cd = "";
			for(int i = 0 ; i < msgList.length ; i ++)
			{
				HashMap<String, Object> retHash = msgList[i].getMsgData();
				op_svc_kei_no = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);		// オプションサービス契約番号取得
				op_gene_add_dtm = (String)retHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM);		// オプションサービス契約世代登録年月日時分秒
				op_svc_kei_stat = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス取得
				op_svc_cd = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD);				// オプションサービスコード取得

				// ダイヤルアップ接続の場合
				if(JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd))
				{	
					// オプションサービス契約ステータスが「休止・中断中」の場合
					if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
					{
						this.op_svc_kei_no_dial = op_svc_kei_no;	// オプションサービス契約番号
						this.op_gadtm_dial = op_gene_add_dtm;		// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ接続）
						dial_flg = true;
					}
				}
				// フェムトセルの場合
				else if(JKKHakkoSODConstCC.OP_SVC_CD_FMTCEL.equals(op_svc_cd))
				{
					// オプションサービス契約ステータスが「休止・中断中」の場合
					if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
					{
						this.op_svc_kei_no_fmtcel = op_svc_kei_no;	// オプションサービス契約番号
						this.op_gadtm_fmtcel = op_gene_add_dtm;		// オプションサービス契約世代登録年月日時分秒（フェムトセル）
						fmtcel_flg = true;
					}
				}
			}
			
			// ダイヤルアップ接続 または フェムトセルが存在する場合
			if(dial_flg || fmtcel_flg)
			{
				// A-1同一処理番号の採番
				// ダイヤルアップ接続オプションが存在する場合のみ採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
			}
			else
			{
				this.same_trn_no = "";
			}
			
			// A-2オーダ設定
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
			
			// FTTH認証・一時停止
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_106);
			
			// ダイヤルアップ接続が登録されており、「休止･中断中」の場合
			if(dial_flg)
			{
				// ダイヤルアップ接続・一時停止
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_140);
			}
			// フェムトセルが登録されており、「休止･中断中」の場合
			if(fmtcel_flg)
			{
				// フェムトセル・一時停止
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_168);
			}
//			// 下りマッピング
//			CAANMsg[] msgList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//			String op_svc_kei_no = "";
//			String op_svc_kei_stat = "";
//			String op_gene_add_dtm = "";
//			for(int i = 0 ; i < msgList.length ; i ++)
//			{
//				HashMap<String, Object> retHash = msgList[i].getMsgData();
//				op_svc_kei_no = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);		// オプションサービス契約番号取得
//				op_svc_kei_stat = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス取得
//				op_gene_add_dtm = (String)retHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM);		// オプションサービス契約世代登録年月日時分秒
//			}
//			
//			// オプションサービス契約ステータスが「休止・中断中」の場合
//			if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
//			{
//				// A-1同一処理番号の採番
//				// ダイヤルアップ接続オプションが存在する場合のみ採番
//				String[] sameTrnNo = new String[1];
//				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
//				this.same_trn_no = sameTrnNo[0];
//			}
//			else
//			{
//				this.same_trn_no = "";
//			}
//			
//			// A-2オーダ設定
//			this.svc_kei_ucwk_no = new String[1];
//			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
//			this.svc_kei_ucwk_gadtm = new String[1];
//			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
//			
//			// FTTH認証・一時停止
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_106);
//			
//			// オプションサービス契約ステータスが「休止・中断中」の場合
//			if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
//			{
//				// ダイヤルアップ接続オプションが存在する場合のみ
//				this.op_svc_kei_no_dial = op_svc_kei_no;	// オプションサービス契約番号
//				this.op_gadtm_dial = op_gene_add_dtm;		// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ接続）
//				
//				// ダイアルアップ接続・一時停止
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_140);
//			}
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
		}
		// eo光モバイルの場合
		else if (JKKHakkoSODConstCC.SVC_KIND_MOB.equals(svc_kind))
		{
			// (4) モバイルサービスの中断処理
			// サービス契約情報の料金コースがSpotWiFiの場合
			if(JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals(pcrs_cd))
			{
				this.same_trn_no = "";
			}
			// 前回処理レコードと今回処理レコードのサービス契約番号が異なる場合
			else if(chgSvcKeiJdg(svc_kei_no))
			{
				// @同一処理番号の採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
			}
			
			// Aサービス契約内訳情報の取得
			// EKK0161A010_サービス契約内訳一意照会
			// 必要情報の設定
			HashMap<String, Object> inEKK0161A010Hash = new HashMap<String, Object>();
			HashMap<String, Object> retEKK0161A010Hash = new HashMap<String, Object>();
			
			if (null != svc_kei_ucwk_no && 0 < svc_kei_ucwk_no.length())		//2012-04-02追加　IT1-2012-0000363対応ＰＴバグＦｉｘ
			{
				inEKK0161A010Hash.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
				inEKK0161A010Hash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 世代登録年月日時分秒
				
				statusCode = callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
			}
			HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)retEKK0161A010Hash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
			String ucwkPcrsCd = null;
			if (null != eKK0161A010Hash)		//2012-04-02追加　IT1-2012-0000363対応ＰＴバグＦｉｘ
			{
				// サービス契約内訳情報の料金コース取得
				ucwkPcrsCd = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.PCRS_CD);
			}
			// A-4 料金コースの確認
			// eモバイルの場合
			if (JKKHakkoSODConstCC.PCRS_CD_EMOBILE_7M.equals(pcrs_cd) ||
				JKKHakkoSODConstCC.PCRS_CD_EMOBILE_21M.equals(pcrs_cd))
			{
				// Beモバイルの中断処理
				/* 2012-03-28追加　IT1-2012-0000363対応
				 * KKSV0197「サービス契約中断受付」にて先サービス契約番号が指定されている場合にサービス契約が中断されている
				 */
				String saki_svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SAKI_SVC_KEI_NO);	// 先サービス契約番号
				if (null != saki_svc_kei_no && 0 < saki_svc_kei_no.length())
				{
					// e-mobile・一時中断
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_314);
				}
			}
			// WiMAXの場合
			if(JKKHakkoSODConstCC.PCRS_CD_WIMAX.equals(ucwkPcrsCd))
			{
				// CWiMAXの中断処理
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0]	= svc_kei_ucwk_no;			// サービス契約内訳番号
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	// サービス契約内訳世代登録年月日時分秒
				
				// WiMAX・CUI一時停止
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_310);
			}
			// SpotWiFiの場合
			else if(JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals(ucwkPcrsCd))
			{
				// DWiFiスポットの中断処理
				// EKK0161B003_サービス契約内訳一覧照会（SYSID）
				// 必要情報の設定
				HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
				
				inHashUcwk.put(JKKHakkoSODConstCC.SYSID, sys_id);		// SYSID
				
				statusCode = callEKK0161B003SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				// 必要情報の取得
				CAANMsg[] msgListUcwk = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B003);
				
				// WiFiスポットの件数をカウント
				int wifiSpotCnt = 0;
				for(int j = 0 ; j < msgListUcwk.length ; j ++)
				{
					HashMap<String, Object> eKK0161B003Hash = msgListUcwk[j].getMsgData();
					String tmp_svc_kei_ucwk_no = (String)eKK0161B003Hash.get(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO);
					
					// EKK0161A010_サービス契約内訳一意照会
					// 必要情報の設定
					HashMap<String, Object> inHashUcwkWifi = new HashMap<String, Object>();
					HashMap<String, Object> resultHashUcwkWifi = new HashMap<String, Object>();
					
					inHashUcwkWifi.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, tmp_svc_kei_ucwk_no);	// サービス契約内訳番号
					inHashUcwkWifi.put(JKKHakkoSODConstCC.OPE_DATE, JCCBPCommon.getOpeDate(null));	// 運用日
					
					statusCode = callEKK0161A010SC(param, handle, inHashUcwkWifi, resultHashUcwkWifi, JKKHakkoSODConstCC.FUNC_CODE_2);
					if(0 != statusCode)
					{
						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
					}

					HashMap<String, Object> eKK0161A010HashWifi = (HashMap<String, Object>)resultHashUcwkWifi.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
					String pcrsCdWifi = (String)eKK0161A010HashWifi.get(EKK0161A010CBSMsg1List.PCRS_CD);
					
					// 料金コースが「A45」の場合
					if(JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals(pcrsCdWifi))
					{
						wifiSpotCnt++;
					}
				}
				// 2件以上の場合
				if(wifiSpotCnt >= 2)
				{
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
					// Wi-Fiスポット・変更
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_302);
				}
				// 1件の場合
				else if(wifiSpotCnt == 1)
				{
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
					// Wi-Fiスポット・一時停止
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_304);
				}
			}
			
			// 完了したものを退避
			if(!isBlank(this.same_trn_no))
			{
				this.mae_recode_ch_svc_kei_no = new String(svc_kei_no);
			}
		}
		// eo光電話の場合
		else if (JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind))
		{
			// (5) 電話サービスの中断処理
			// @光電話の中断処理
			//↓↓↓2012-10-03変更　残件対応（番ポの再利用停止）↓↓↓
//			this.same_trn_no = "";
			if (JKKHakkoSODConstCC.IDO_DIV_USESTP.equals(this.ido_div))
			{
				this.same_trn_no = getSame_trn_no(param, handle);
			}
			else
			{
				this.same_trn_no = "";
			}
			//↑↑↑2012-10-03変更　残件対応（番ポの再利用停止）↑↑↑
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;

			// SIP・一時停止
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_223);

			//利用停止の場合のみ、番号置換とトーキにかかるＳＯＤ発行処理を行う
			if (JKKHakkoSODConstCC.IDO_DIV_USESTP.equals(this.ido_div))
			{
				//↓↓↓2012-10-03追加　残件対応（番ポの再利用停止）↓↓↓
				// 050ナンバープラスオプションの取得と番号置換・消去ＳＯＤ発行
				ArrayList<HashMap<String, Object>> kk0351MapList = getOpSvcKei4Eohtel(param, handle, svc_kei_ucwk_no, JKKHakkoSODConstCC.OP_SVC_CD_N050);
	
				for(HashMap<String, Object> eKK0351A010SCHash : kk0351MapList)
				{
					String kk0351No = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);			// オプションサービス契約番号
					String op_gene_add_dtm = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM);	// 世代登録年月日時分秒
					String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
					String op_svc_kei_stat = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス
					
					// オプションサービス契約ステータが「停止中」に更新され、サービス契約情報の申込明細番号と一致の場合
					if(JKKHakkoSODConstCC.SVC_KEI_STAT_220.equals(op_svc_kei_stat) && op_mskm_dtl_no.equals(this.mskm_dtl_no))
					{
						this.op_svc_kei_no_tikan = kk0351No;			// オプションサービス契約番号;
						this.op_gadtm_tikan = op_gene_add_dtm;			// 世代登録年月日時分秒
						
						// 番号置換・消去
						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_249);
					}
				}

				// EKK0191A010_サービス契約内訳＜eo光電話＞一意照会
				HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
				inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
				inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
				
				statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				// 結果の取得
				HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
				
				// 番ポ有の場合
				if(JKKHakkoSODConstCC.BMP_UM_ARI.equals((String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM)))
				{
					// SIP・番ポ情報削除
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_226);
				}

				// トーキ（移転先登録）終了
				// ※ addItnTokiSOD() 内部で 221 SIP・トーキ消去も出しています
				param = addItnTokiSOD(handle, param, svc_kei_ucwk_no, JKKHakkoSODConstCC.ODR_NAIYO_CD_221);
				//↑↑↑2012-10-03追加　残件対応（番ポの再利用停止）↑↑↑
			}
		}
		
		return param;
	}

	/**
	 * 解約オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite dslOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		// ※当メソッドは使用されていないため対応しない(ANK-2765-00-00)
		int statusCode = 0;											// サービスインターフェイス実行ステータス

		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);

		// (1) 解約必須パラメータの取得
		String sys_id = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID);															// SYSID
		String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号

		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒

		// (2) サービス契約情報の取得
		// Aサービス契約の確認
		// サービス種類判定
		// IT2-2016-0000004 2016/02/22 MOD START
		//String svc_kind = jdgSvcKind_PcrsCd();
		String svc_kind = jdgSvcKind();
		// IT2-2016-0000004 2016/02/22 MOD END
		
		// eo光ネット、またはeoADSLの場合
		if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) ||
				JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind))
		{
			// (3) ネットサービスの解約処理
			boolean getSameTrnNoFlg = false;		// 同一処理番号採番フラグ
			ArrayList eKK0351A010SCHashList = new ArrayList();	// オプションサービス契約リスト
			HashMap<String, Object> eKK0341A010SCHash = null;	// 機器提供サービス契約一意照会結果

			// 解約するオプションがあるか確認 (同一処理番号の採番対象の有無を確認するため先に対象データ取得)
			// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
			HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
			HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
			inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
			
			statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			CAANMsg[] msgEKK0351B002SCList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
			
			for(int i = 0 ; i < msgEKK0351B002SCList.length ; i ++)
			{
				HashMap<String, Object> eKK0351B002SCHash = msgEKK0351B002SCList[i].getMsgData();
				String op_svc_cd = eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
				
				//   Eメール、Myホームページ、メーリングリスト、ダイヤルアップ接続、マルチセッションの存在を確認
				if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd) ||
					JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd) ||
					JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd) ||
					JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals(op_svc_cd) ||		// 【ANK-0046-00-01】IPV6対応 2012-02-29追加
					JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd) ||
					JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd))
				{
					// EKK0351A010_オプションサービス契約一意照会
					HashMap<String, Object> inHashSvcKei = new HashMap<String, Object>();
					HashMap<String, Object> resultHashSvcKei = new HashMap<String, Object>();
					inHashSvcKei.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));	// オプションサービス契約番号
					inHashSvcKei.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));		// 世代登録年月日時分秒
					
					statusCode = callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, JKKHakkoSODConstCC.FUNC_CODE_1);
					if(0 != statusCode)
					{
						// 0でない場合はエラー
						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
					}
					HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashSvcKei.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
					String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);	// 申込明細番号
					String op_svc_dlre_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_DLRE_CD);	// サービス解約理由コード
//					String op_svc_cancel_rsn_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード
					
					op_mskm_dtl_no = shkkaChr(op_mskm_dtl_no);	// nullの場合に空文字初期化
					
					// 異動区分＝解約     ⇒ オプションの申込明細番号がサービス契約情報の申込明細番号と一致する または
					// 異動区分＝強制解約 ⇒ サービス解約理由コード＝強制解約 または
					// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
					if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
						(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
						// 20120601 ST2-2012-0001006 START
						//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(op_svc_cancel_rsn_cd)))
						(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && op_mskm_dtl_no.equals(this.mskm_dtl_no)))
						// 20120601 ST2-2012-0001006 END
					{
						// マルチセッションの場合
						if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd))
						{
							// 固定グローバルIPアドレス存在チェック
							for(int j = 0 ; j < msgEKK0351B002SCList.length ; j++)
							{
								HashMap<String, Object> eKK0351B002SCHashFix = msgEKK0351B002SCList[j].getMsgData();
								String op_svc_cd_fix = eKK0351B002SCHashFix.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
								String op_svc_kei_stat_fix = eKK0351B002SCHashFix.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス
								
								// 解約済、キャンセル済の固定グローバルIPアドレスの場合
								if(JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(op_svc_cd_fix) &&
									(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(op_svc_kei_stat_fix) ||
											JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(op_svc_kei_stat_fix)))
								{
									eKK0351A010SCHashList.add(eKK0351A010SCHash);	// オプションサービス契約リスト追加
									getSameTrnNoFlg = true;		// 同一処理番号採番あり
									break;
								}
							}
						}
						// 20120405 ＭｙホームページのSOD発行条件追加 START
						// Ｍｙホームページの場合
						else if(JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd))
						{

							// EKK0361A010_オプションサービス契約<ISP>一意照会
							HashMap<String, Object> inHashOpSvcKeiIsp = new HashMap<String, Object>();
							HashMap<String, Object> resultHashOpSvcKeiIsp = new HashMap<String, Object>();
							
							inHashOpSvcKeiIsp.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
							inHashOpSvcKeiIsp.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));
							
							callEKK0361A010SC(param, handle, inHashOpSvcKeiIsp, resultHashOpSvcKeiIsp, JKKHakkoSODConstCC.FUNC_CODE_1);
							HashMap<String, Object> eKK0361A010SCHash = (HashMap<String, Object>)resultHashOpSvcKeiIsp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010);
							
							String urlDomain = (String)eKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_DOMAIN);
							String urlAccount = (String)eKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);
							
							if (!isBlank(urlDomain) && !isBlank(urlAccount))
							{
								// URL(ドメイン)・URL(アカウント)が設定されている場合
								
								eKK0351A010SCHashList.add(eKK0351A010SCHash);	// オプションサービス契約リスト追加
								getSameTrnNoFlg = true;		// 同一処理番号採番あり
							}
						}
						// 20120405 ＭｙホームページのSOD発行条件追加 END
						// 上記以外の場合
						else
						{
							eKK0351A010SCHashList.add(eKK0351A010SCHash);	// オプションサービス契約リスト追加
							getSameTrnNoFlg = true;		// 同一処理番号採番あり
						}
					}
				}
			}// end of msgEKK0351B002SCList

			// B-4 BBRの存在判定
			// 解約する機器があるか確認 (同一処理番号の採番対象の有無を確認するため先に対象データ取得)
			// 機器提供サービス契約一覧照会（サービス契約番号）
			HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
			HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
			inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
			
			statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008);
			
			for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
			{
				HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
				String tmp_kktk_svc_cd = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_CD);	// 機器提供サービスコード	
				
				// 機器提供サービスコード=BBRの場合
				if(JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(tmp_kktk_svc_cd))
				{
					String tmp_kktk_svc_kei_no = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
					String tmp_gene_add_dtm = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.GENE_ADD_DTM);		// 世代登録年月日時分秒
					
					// EKK0341A010_機器提供サービス契約一意照会
					HashMap<String, Object> inHashKktk2 = new HashMap<String, Object>();
					HashMap<String, Object> resultHashKktk2 = new HashMap<String, Object>();
					inHashKktk2.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, tmp_kktk_svc_kei_no);
					inHashKktk2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, tmp_gene_add_dtm);
					
					statusCode = callEKK0341A010SC(param, handle, inHashKktk2, resultHashKktk2, JKKHakkoSODConstCC.FUNC_CODE_1);
					if(0 != statusCode)
					{
						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
					}
					HashMap<String, Object> retHash = (HashMap<String, Object>)resultHashKktk2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
					String kk_mskm_dtl_no = (String)retHash.get(EKK0341A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
					String kk_kiki_seizo_no = (String)retHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
					String kk_svc_dlre_cd = (String)retHash.get(EKK0341A010CBSMsg1List.SVC_DLRE_CD);		// サービス解約理由コード
//					String kk_svc_cancel_rsn_cd = (String)retHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード
					
					// 機器製造番号が設定されていない場合は処理対象外
					if(isBlank(kk_kiki_seizo_no))
					{
						continue;
					}
					kk_mskm_dtl_no = shkkaChr(kk_mskm_dtl_no);	// nullの場合に空文字初期化
					
					// 異動区分＝解約     ⇒ 機器提供サービス契約情報の「申込明細番号」＝サービス契約情報の「申込明細番号」 または
					// 異動区分＝強制解約 ⇒ サービス解約理由コード＝強制解約 または
					// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
					if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && kk_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
						(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(kk_svc_dlre_cd)) ||
						// 20120601 ST2-2012-0001006 START
						//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(kk_svc_cancel_rsn_cd)))
						(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && kk_mskm_dtl_no.equals(this.mskm_dtl_no)))
						// 20120601 ST2-2012-0001006 END
					{
						// 同時解約されたBBRでかつ既に新規登録SODが出ているので解約、消去SODを発行
						eKK0341A010SCHash = retHash;
						getSameTrnNoFlg = true;		// 同一処理番号採番あり
						break;
					}
				}
			}// end of msgEKK0341B008SCList
			
			// @FTTH認証の解約
			// FTTH認証ID以外に解約するオプション、機器がある場合
			if(getSameTrnNoFlg)
			{
				// @-1同一処理番号の採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
			}
			else
			{
				this.same_trn_no = "";
			}
			
			// eoADSLではない、または、フレッツの場合
			if(!JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind) ||
					JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals(pcrs_cd))
			{
				
				//マンションタイプ（プライベート）の場合はFTTH認証を送信しない
				if(!isMansionPrvate())
				{
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
					// FTTH認証・解約
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
				}
				
			}
			
			// 対象のオプションサービス契約数分繰り返す
			for(int i=0; i < eKK0351A010SCHashList.size(); i++)
			{
				HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)eKK0351A010SCHashList.get(i);
				String op_svc_cd = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
				String op_svc_kei_no = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
				String op_gene_add_dtm = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM).toString();	// オプションサービス契約世代登録年月日時分秒
				
				// マルチセッションの場合
				if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd))
				{
					// P付き認証IDに対してのSODを発行
					this.op_svc_kei_no_mltise = op_svc_kei_no;
					this.op_gadtm_mltise = op_gene_add_dtm;
					// マルチセッション(静的)・解約
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
				}
				else
				{
					//オプション設定オーダ制御のマッピング
					HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
					HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
					HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
					HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
					HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
					
					// SOD基本情報
					opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);			// SYSID
					opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);		// 異動区分
					// サービス契約情報
					opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);	// サービス契約番号
					// サービス契約内訳情報
					opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
					opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
					// オプションサービス契約情報
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
					
					// SODマップ設定
					opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
					opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
					opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
					opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
					
					// オプション設定オーダ制御処理
					opSetOdrCtrl(handle, param, fixedText, opSodMap);
				}
			}// end of eKK0351A010SCHashList
			
			// BBRの解約
			if(eKK0341A010SCHash != null)
			{
				this.kktk_svc_kei_no = new String[1];
				kktk_svc_kei_no[0] = (String)eKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
				this.kktk_svc_kei_gadtm = new String[1];
				kktk_svc_kei_gadtm[0] = (String)eKK0341A010SCHash.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
				this.taknkiki_model_cd = new String[1];
				taknkiki_model_cd[0] = (String)eKK0341A010SCHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
				this.kiki_seizo_no = new String[1];
				kiki_seizo_no[0] = (String)eKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
				
				// ルーター向け接続情報・解約
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_149);
				// ルーター向け接続情報・消去
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_150);
			}
		}
		// eo光モバイルの場合
		else if (JKKHakkoSODConstCC.SVC_KIND_MOB.equals(svc_kind))
		{
			// (4) モバイルサービスの解約処理
			//↓↓↓2012-05-30 削除 IT1-2012-0000554↓↓↓
			// eモバイルの強制解約の場合は処理なし
//			if(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) &&
//				(JKKHakkoSODConstCC.PCRS_CD_EMOBILE_7M.equals(pcrs_cd) ||
//					JKKHakkoSODConstCC.PCRS_CD_EMOBILE_21M.equals(pcrs_cd)))
//			{
//				return param;
//			}
			//↑↑↑2012-05-30 削除 IT1-2012-0000554↑↑↑
			
			// サービス契約情報の料金コースがSpotWiFiの場合
			if(JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals(pcrs_cd))
			{
				this.same_trn_no = "";
			}
			// 前回処理レコードと今回処理レコードのサービス契約番号が異なる場合
			else if(chgSvcKeiJdg(svc_kei_no))
			{
				// @同一処理番号の採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
			}
			
			// ANK-0099-00-00 2012/05/25 kitatani start
			String ucwkPcrsCd = null;
			if(!JKKHakkoSODConstCC.PCRS_CD_MAILADDRESS.equals(pcrs_cd)){
				// Aサービス契約内訳情報の取得
				// EKK0161A010_サービス契約内訳一意照会
				// 必要情報の設定
				HashMap<String, Object> inEKK0161A010Hash = new HashMap<String, Object>();
				HashMap<String, Object> retEKK0161A010Hash = new HashMap<String, Object>();

				inEKK0161A010Hash.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
				inEKK0161A010Hash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 世代登録年月日時分秒

				statusCode = callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}

				HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)retEKK0161A010Hash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);

				// サービス契約内訳情報の料金コース取得
				ucwkPcrsCd = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.PCRS_CD);
			}
			// ANK-0099-00-00 2012/05/25 kitatani end
			
			// A-4 料金コースの確認
			// eモバイルの場合
			if (JKKHakkoSODConstCC.PCRS_CD_EMOBILE_7M.equals(pcrs_cd) ||
				JKKHakkoSODConstCC.PCRS_CD_EMOBILE_21M.equals(pcrs_cd))
			{
				//↓↓↓2012-05-30 変更 IT1-2012-0000554↓↓↓
				//2012-04-04　キャンセル異動の場合は e-mobile・解約SOD は出さない
				//2012-05-30　強制解約異動の場合は e-mobile・解約SOD は出さない
				if (!(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) ||		//2012-04-04追加　ST2-2012-0000484対応
						JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div)))		
				{
				//↑↑↑2012-05-30 変更 IT1-2012-0000554↑↑↑
					// Beモバイルの解約処理
					// e-mobile・解約
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_313);
					//↓↓↓2012-05-30 追加 IT1-2012-0000554↓↓↓
					//2012-05-30　強制解約異動の場合は e-mobile・解約SOD は出さない
					if(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSLFIX.equals(ido_div))
					{
						//強制解約確定の場合、オプション、SpotWiFi解約SODは強制解約で出しているためここで終了
						return param;
					}
					//↑↑↑↑2012-05-30 追加 IT1-2012-0000554↑↑↑
				}
				// B-1 モバイルオプションの確認
				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
				HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
				inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
				
				statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0351B002SCList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
				
				for(int i = 0 ; i < msgEKK0351B002SCList.length ; i ++)
				{
					// B-2 オプションの種類の確認
					HashMap<String, Object> eKK0351B002SCHash = msgEKK0351B002SCList[i].getMsgData();
					String op_svc_cd = eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
					
					//   Eメール、Myホームページ、メーリングリストの存在を確認
					if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd))
					{
						// EKK0351A010_オプションサービス契約一意照会
						HashMap<String, Object> inHashSvcKei = new HashMap<String, Object>();
						HashMap<String, Object> resultHashSvcKei = new HashMap<String, Object>();
						inHashSvcKei.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));	// オプションサービス契約番号
						inHashSvcKei.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));		// 世代登録年月日時分秒
						
						statusCode = callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, JKKHakkoSODConstCC.FUNC_CODE_1);
						if(0 != statusCode)
						{
							throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
						}
						HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashSvcKei.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
						String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
						String op_svc_kei_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);		// オプションサービス契約番号
						String op_gene_add_dtm = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM);	// オプションサービス契約世代登録年月日時分秒
						String op_svc_dlre_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_DLRE_CD);		// サービス解約理由コード
//						String op_svc_cancel_rsn_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード
						
						op_mskm_dtl_no = shkkaChr(op_mskm_dtl_no);	// nullの場合に空文字初期化
						
						// 異動区分＝解約     ⇒ オプションの申込明細番号がサービス契約情報の申込明細番号と一致する または
						// 異動区分＝強制解約 ⇒ オプションのサービス解約理由コード＝強制解約 または
						// 異動区分＝強制解約確定 ⇒ オプションのサービス解約理由コード＝強制解約 または
						// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
						if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
							(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
							(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSLFIX.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
							// 20120601 ST2-2012-0001006 START
							//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(op_svc_cancel_rsn_cd)))
							(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && op_mskm_dtl_no.equals(this.mskm_dtl_no)))
							// 20120601 ST2-2012-0001006 END
						{
							//オプション設定オーダ制御のマッピング
							HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
							HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
							HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
							HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
							HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
							
							// SOD基本情報
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);				// SYSID
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);			// 異動区分
							// サービス契約情報
							opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);		// サービス契約番号
							// サービス契約内訳情報
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
							// オプションサービス契約情報
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
							
							// SODマップ設定
							opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
							opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
							
							// オプション設定オーダ制御処理
							opSetOdrCtrl(handle, param, fixedText, opSodMap);
						}
					}
				}// end of msgEKK0351B002SCList
			}
			// WiMAXの場合
			if(JKKHakkoSODConstCC.PCRS_CD_WIMAX.equals(ucwkPcrsCd))
			{
				// CWiMAXの解約処理
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	// サービス契約内訳世代登録年月日時分秒

				this.kktk_svc_kei_no = new String[1];
				this.kktk_svc_kei_gadtm = new String[1];
		
				// ST1-2012-0000481 2012/08/30 start
				if(JKKHakkoSODConstCC.PCRS_CD_UQWIMAX_B.equals(pcrs_cd))
				{
					// 機器提供サービス契約一覧照会（サービス契約番号）
					HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
					HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
					inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
					
					statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
					if(0 != statusCode)
					{
						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
					}
					CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008);

					HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[0].getMsgData();
					
					kktk_svc_kei_no[0] = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
					kktk_svc_kei_gadtm[0] = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
				}
				else
				{
					kktk_svc_kei_no[0] = "";	// 機器提供サービス契約番号
					kktk_svc_kei_gadtm[0] = "";	// 機器提供サービス契約世代登録年月日時分秒
				}
				// ST1-2012-0000481 2012/08/30 end
//				for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
//				{
//					HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
//					
//					String tmp_kktk_svc_kei_no = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
//					
//					// EKK0341A010_機器提供サービス契約一意照会
//					HashMap<String, Object> inHashKktk2 = new HashMap<String, Object>();
//					HashMap<String, Object> resultHashKktk2 = new HashMap<String, Object>();
//					inHashKktk2.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, tmp_kktk_svc_kei_no);
//					inHashKktk2.put(JKKHakkoSODConstCC.OPE_DATE, JCCBPCommon.getOpeDate(null));		//カレント検索なので意味無いけどマッピング
//					
//					statusCode = callEKK0341A010SC(param, handle, inHashKktk2, resultHashKktk2, JKKHakkoSODConstCC.FUNC_CODE_2);
//					
//					if(0 != statusCode)
//					{
//						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//					}
//					
//					//カレント検索でデータが取得できたらループから抜ける
//					HashMap<String, Object> retHash = (HashMap<String, Object>)resultHashKktk2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
//					kktk_svc_kei_no[0] = (String)retHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
//					kktk_svc_kei_gadtm[0] = (String)retHash.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
//					break;
//				}// end of msgEKK0341B008SCList
				
				//2012-04-04　キャンセル異動の場合は UQ-WiMAX・解約SOD は出さない
				if (!JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div))		//2012-04-04追加　ST2-2012-0000484対応
				{
					// WiMAX・CUI消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_308);
					
					// WiMAX・DEV消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_309);
				}
				// C-1 モバイルオプションの確認
				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
				HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
				inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
				
				statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0351B002SCList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
				
				for(int i = 0 ; i < msgEKK0351B002SCList.length ; i ++)
				{
					// C-2 オプションの種類の確認
					HashMap<String, Object> eKK0351B002SCHash = msgEKK0351B002SCList[i].getMsgData();
					String op_svc_cd = eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
					
					//   Eメール、Myホームページ、メーリングリストの存在を確認
					if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd))
					{
						// EKK0351A010_オプションサービス契約一意照会
						HashMap<String, Object> inHashSvcKei = new HashMap<String, Object>();
						HashMap<String, Object> resultHashSvcKei = new HashMap<String, Object>();
						inHashSvcKei.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));	// オプションサービス契約番号
						inHashSvcKei.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));		// 世代登録年月日時分秒
						
						statusCode = callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, JKKHakkoSODConstCC.FUNC_CODE_1);
						if(0 != statusCode)
						{
							throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
						}
						HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashSvcKei.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
						String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
						String op_svc_kei_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);		// オプションサービス契約番号
						String op_gene_add_dtm = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM);	// オプションサービス契約世代登録年月日時分秒
						String op_svc_dlre_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_DLRE_CD);		// サービス解約理由コード
//						String op_svc_cancel_rsn_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード


						op_mskm_dtl_no = shkkaChr(op_mskm_dtl_no);	// nullの場合に空文字初期化
						
						// 異動区分＝解約     ⇒ オプションの申込明細番号がサービス契約情報の申込明細番号と一致する または
						// 異動区分＝強制解約 ⇒ オプションのサービス解約理由コード＝強制解約 または
						// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
						if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
							(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
							// 20120601 ST2-2012-0001006 START
							//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(op_svc_cancel_rsn_cd)))
							(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && op_mskm_dtl_no.equals(this.mskm_dtl_no)))
							// 20120601 ST2-2012-0001006 END
						{
							//オプション設定オーダ制御のマッピング
							HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
							HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
							HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
							HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
							HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
							
							// SOD基本情報
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);			// SYSID
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);		// 異動区分
							// サービス契約情報
							opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);	// サービス契約番号
							// サービス契約内訳情報
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
							// オプションサービス契約情報
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
							
							// SODマップ設定
							opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
							opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
							
							// オプション設定オーダ制御処理
							opSetOdrCtrl(handle, param, fixedText, opSodMap);
						}
					}
				}// end of msgEKK0351B002SCList
			}
			// SpotWiFiの場合
			else if(JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals(ucwkPcrsCd))
			{
				// DWiFiスポットの解約処理
				// EKK0161B003_サービス契約内訳一覧照会（SYSID）
				// 必要情報の設定
				HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
				
				inHashUcwk.put(JKKHakkoSODConstCC.SYSID, sys_id);		// SYSID
				
				statusCode = callEKK0161B003SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				// 必要情報の取得
				CAANMsg[] msgListUcwk = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B003);
				
				// D-4 同一SYSIDでのWiFi利用判断
				boolean wifiSpotUm = false;
				for(int i = 0 ; i < msgListUcwk.length ; i ++)
				{
					HashMap<String, Object> eKK0161B003Hash = msgListUcwk[i].getMsgData();
					String tmp_svc_kei_ucwk_no = (String)eKK0161B003Hash.get(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO);
					
					// EKK0161A010_サービス契約内訳一意照会
					// 必要情報の設定
					HashMap<String, Object> inHashUcwkWifi = new HashMap<String, Object>();
					HashMap<String, Object> resultHashUcwkWifi = new HashMap<String, Object>();
					
					inHashUcwkWifi.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, tmp_svc_kei_ucwk_no);	// サービス契約内訳番号
					inHashUcwkWifi.put(JKKHakkoSODConstCC.OPE_DATE, JCCBPCommon.getOpeDate(null));	// 運用日
					
					statusCode = callEKK0161A010SC(param, handle, inHashUcwkWifi, resultHashUcwkWifi, JKKHakkoSODConstCC.FUNC_CODE_2);
					if(0 != statusCode)
					{
						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
					}
					
					HashMap<String, Object> eKK0161A010HashWifi = (HashMap<String, Object>)resultHashUcwkWifi.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
					String pcrsCdWifi = (String)eKK0161A010HashWifi.get(EKK0161A010CBSMsg1List.PCRS_CD);
					
					// 料金コースが「A45」の場合
					if(JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals(pcrsCdWifi))
					{
						wifiSpotUm = true;
						break;
					}
				}
				// データが存在した場合
				if(wifiSpotUm)
				{
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
					// Wi-Fiスポット・変更
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_302);
				}
				// データが存在しない場合
				else
				{
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
					// Wi-Fiスポット・消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_303);
				}
			}
			
			// ANK-0099-00-00 2012/05/25 kitatani start
			// メールアドレスの場合
			if (JKKHakkoSODConstCC.PCRS_CD_MAILADDRESS.equals(pcrs_cd))
			{
				// E-1 モバイルオプションの確認
				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
				HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
				inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号

				statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0351B002SCList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);

				for(int i = 0 ; i < msgEKK0351B002SCList.length ; i ++)
				{
					// E-2 オプションの種類の確認
					HashMap<String, Object> eKK0351B002SCHash = msgEKK0351B002SCList[i].getMsgData();
					String op_svc_cd = eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード

					//   Eメール、メーリングリストの存在を確認
					if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd) ||
							JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd))
					{
						// EKK0351A010_オプションサービス契約一意照会
						HashMap<String, Object> inHashSvcKei = new HashMap<String, Object>();
						HashMap<String, Object> resultHashSvcKei = new HashMap<String, Object>();
						inHashSvcKei.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));	// オプションサービス契約番号
						inHashSvcKei.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));		// 世代登録年月日時分秒

						statusCode = callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, JKKHakkoSODConstCC.FUNC_CODE_1);
						if(0 != statusCode)
						{
							throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
						}
						HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashSvcKei.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
						String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
						String op_svc_kei_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);		// オプションサービス契約番号
						String op_gene_add_dtm = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM);	// オプションサービス契約世代登録年月日時分秒
						String op_svc_dlre_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_DLRE_CD);		// サービス解約理由コード
//						String op_svc_cancel_rsn_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード

						op_mskm_dtl_no = shkkaChr(op_mskm_dtl_no);	// nullの場合に空文字初期化

						// 異動区分＝解約     ⇒ オプションの申込明細番号がサービス契約情報の申込明細番号と一致する または
						// 異動区分＝強制解約 ⇒ オプションのサービス解約理由コード＝強制解約 または
						// 異動区分＝強制解約確定 ⇒ オプションのサービス解約理由コード＝強制解約 または
						// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
						if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
								(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
								(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSLFIX.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
								// 20120601 ST2-2012-0001006 START
								//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(op_svc_cancel_rsn_cd)))
								(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && op_mskm_dtl_no.equals(this.mskm_dtl_no)))
								// 20120601 ST2-2012-0001006 END
						{
							//オプション設定オーダ制御のマッピング
							HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
							HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
							HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
							HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
							HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報

							// SOD基本情報
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);				// SYSID
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);			// 異動区分
							// サービス契約情報
							opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);		// サービス契約番号
							// サービス契約内訳情報
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
							// オプションサービス契約情報
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒

							// SODマップ設定
							opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
							opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報

							// オプション設定オーダ制御処理
							opSetOdrCtrl(handle, param, fixedText, opSodMap);
						}
					}
				}
			}
			// ANK-0099-00-00 2012/05/25 kitatani end
			
			// 完了したものを退避
			if(!isBlank(this.same_trn_no))
			{
				this.mae_recode_ch_svc_kei_no = new String(svc_kei_no);
			}
		}
		// eo光電話の場合
		else if (JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind))
		{
			// (5) 電話サービスの解約処理
			// 前回処理レコードと今回処理レコードのサービス契約番号が異なる場合
			// （サービス契約に対して１回のみ実行）
			if(chgSvcKeiJdg(svc_kei_no))
			{
				// @-1 同一処理番号の採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				// EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）
				HashMap<String, Object> eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				// サービス回線内訳番号
				this.svc_kei_kaisen_ucwk_no = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
				// サービス回線内訳世代登録年月日時分秒
				this.svc_kei_kaisen_ucwk_gadtm = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.GENE_ADD_DTM);
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				
				// @-2 Radius向けSOD発行
				// 電話サービスに対して1度だけ発行する
				
				// Radius認証・解約
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_204);
				
				// @-3 OLS向けSOD発行
				// @-3-1 EKK0191A010_サービス契約内訳＜eo光電話＞一意照会
				HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
				
				inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
				inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
				
				statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				// 結果の取得
				HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
				
				//VA宅内機器型式コード
				String vaTaknkikiModelCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_TAKNKIKI_MODEL_CD);
				//VA機器製造番号
				String vaKikiSeizoNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_KIKI_SEIZO_NO);
				
				
				// @-3-2 EKK0341B008_機器提供サービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
				
				inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
				
				statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008);
				
				for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
				{
					HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
					
					String taknkikiSbtCd = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.TAKNKIKI_SBT_CD);	//宅内機器種別コード
					String kktkSvcKeiNo = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
					String kktkGeneAddDtm = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.GENE_ADD_DTM);		//世代登録年月日時分秒
					
					// 宅内機器種別コード＝eo電話用VA 以外はSOD発行対象外
					if(!JKKHakkoSODConstCC.TAKNKIKI_SBT_CD_TELVA.equals(taknkikiSbtCd))
					{
						continue;	//次のデータへ
					}
					
					// 宅内機器種別コード＝eo電話用VAの場合
					// 機器情報が2件以上の場合
					if(msgEKK0341B008SCList.length > 1)
					{
						// EKK0341A010_機器提供サービス契約一意照会
						HashMap<String, Object> inHashKktk2 = new HashMap<String, Object>();
						HashMap<String, Object> resultHashKktk2 = new HashMap<String, Object>();
						inHashKktk2.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
						inHashKktk2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, kktkGeneAddDtm);
						
						statusCode = callEKK0341A010SC(param, handle, inHashKktk2, resultHashKktk2, JKKHakkoSODConstCC.FUNC_CODE_1);
						if(0 != statusCode)
						{
							throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
						}
						HashMap<String, Object> retHash = (HashMap<String, Object>)resultHashKktk2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
						String kkTaknkikiModelCd = (String)retHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
						String kkKikiSeizoNo = (String)retHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);			// 機器製造番号
						
						if(kkTaknkikiModelCd == null || kkKikiSeizoNo == null)
						{
							continue;
						}
						
						// サービス契約内訳＜eo光電話＞一意照会と機器提供サービス契約一意照会の機器情報が一致しない場合
						if(!kkTaknkikiModelCd.equals(vaTaknkikiModelCd) || !kkKikiSeizoNo.equals(vaKikiSeizoNo))
						{
							continue;	// 次のデータへ
						}
						// 一致する場合オーダ発行
					}
					
					this.kktk_svc_kei_no = new String[1];
					this.kktk_svc_kei_no[0] = kktkSvcKeiNo;			// 機器提供サービス契約番号
					this.kktk_svc_kei_gadtm = new String[1];
					this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm;	// 機器提供サービス契約世代登録年月日時分秒
					this.taknkiki_model_cd = new String[1];
					this.taknkiki_model_cd[0] = vaTaknkikiModelCd;	// 宅内機器型式コード
					this.kiki_seizo_no = new String[1];
					this.kiki_seizo_no[0] = vaKikiSeizoNo;			// 機器製造番号
					
					// OLS設定・解約
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_215);
					// OLS設定・消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_216);
					break;
				}
			}
			
			// @-4 SIP向けSOD発行
			// ⇒電話番号単位にSODを発行
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;						// サービス契約内訳番号
			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	// 変更後サービス契約内訳世代登録年月日時分秒
			
			// SIP・解約
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
			
			// SIP・消去
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
			
			
			// @-5 050ナンバープラスオプションの確認
			// 050ナンバープラスオプションの取得
			
			// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
			HashMap<String, Object> inHashOp = new HashMap<String, Object>();
			HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
			inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
			inHashOp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_N050);	// オプションサービスコード（０５０ナンバープラス）
			
			statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
			
			for(int i = 0 ; i < msgList.length ; i ++)
			{
				HashMap<String, Object> eKK0351B002Hash = msgList[i].getMsgData();
				String op_svc_kei_no = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
				String op_gene_add_dtm = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();	// 世代登録年月日時分秒
				
				//EKK0351A010_オプションサービス契約一意照会
				HashMap<String, Object> inHashOp2 = new HashMap<String, Object>();
				HashMap<String, Object> resultHashOp2 = new HashMap<String, Object>();
				inHashOp2.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, op_svc_kei_no);		// オプションサービス契約番号
				inHashOp2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, op_gene_add_dtm);	// 世代登録年月日時分秒
				
				statusCode = callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashOp2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
				String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);	// 申込明細番号
				String op_svc_dlre_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_DLRE_CD);	// サービス解約理由コード
				String op_svc_kei_stat = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス
//				String op_svc_cancel_rsn_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード
				
				// オプションサービス契約ステータが「解約済」かつ
				//   （異動区分＝解約     ⇒ サービス契約情報の申込明細番号と一致または
				//     異動区分＝強制解約 ⇒ サービス解約理由コード＝強制解約） または
				// オプションサービス契約ステータが「キャンセル済」かつ
				//     異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
				if((JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(op_svc_kei_stat) &&
						(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
						(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)))) ||
						// 20120601 ST2-2012-0001006 START
						//(JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(op_svc_kei_stat) &&
						//	(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(op_svc_cancel_rsn_cd))))
							(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && op_mskm_dtl_no.equals(this.mskm_dtl_no)))
						// 20120601 ST2-2012-0001006 END
				{
					//オプション設定オーダ制御のマッピング
					HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
					HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
					HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
					HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
					HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
					
					// SOD基本情報
					opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);			// SYSID
					opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);		// 異動区分
					// サービス契約情報
					opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);	// サービス契約番号
					// サービス契約内訳情報
					opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
					opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
					// オプションサービス契約情報(解約を行うため変更前に同じ値を設定)
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
					opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
					
					// SODマップ設定
					opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
					opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
					opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
					opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
					
					// オプション設定オーダ制御処理
					opSetOdrCtrl(handle, param, fixedText, opSodMap);
				}
			}
			
			// @-6 移転トーキの確認
			// 移転トーキ情報が存在する場合、トーキの種類によってSIPへSODを発行
			
			// 異動区分が「キャンセル」の場合のみサービス契約内訳のサービス契約内訳ステータスが受付済の場合に発行する。(左記以外はキャンセルでは発行しない)
			boolean runItntokiSodFlg = true;
			if(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div))
			{
				// EKK0161A010_サービス契約内訳一意照会
				HashMap<String, Object> inEKK0161A010Hash = new HashMap<String, Object>();
				HashMap<String, Object> retEKK0161A010Hash = new HashMap<String, Object>();
				inEKK0161A010Hash.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
				inEKK0161A010Hash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 世代登録年月日時分秒
				
				statusCode = callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)retEKK0161A010Hash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
				String svcKeiUcwkStat = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT);
				
				// サービス契約内訳ステータスが「受付済」ではない場合
				if(!JKKHakkoSODConstCC.SVC_KEI_STAT_010.equals(svcKeiUcwkStat))
				{
					// 移転トーキのSODは発行しない
					runItntokiSodFlg = false;
				}
			}
			
			if(runItntokiSodFlg)
			{
				// @-6-1 EKK0191A010_サービス契約内訳＜eo光電話＞一意照会
				HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
				
				inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
				inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
				
				statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				// 結果の取得
				HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
				
				// 20120928 ロット２ S/IF変更対応 START
//				String itntokiKiboUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_KIBO_UM);	//移転トーキ希望有無
//				String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_ADD_CD);	//移転トーキ登録コード
				String itntokiKiboUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITENS_OPAF_TOKI_KIBO_UM);	//移転先トーキ希望有無
				String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITENS_OPAF_TOKI_ADD_CD);	//移転先トーキ登録コード
				// 20120928 ロット２ S/IF変更対応 END
				
				// 「移転トーキ希望有無」が有で「移転トーキ登録コード」が「移転元解約によるトーキ」の場合
				if(JKKHakkoSODConstCC.ITNTOKI_KIBO_UM_ARI.equals(itntokiKiboUm) &&
					JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd))
				{
					// SIP・トーキ登録
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
				}
				//「移転トーキ希望有無」が有で移転「トーキ開始年月日」<=運用日<「移転トーキ終了年月日」以外の場合
				// ⇒開始するトーキが無いため何も行わない。
			}
			
			//@-8 緊急通報SOD発行
			// 緊急通報・消去
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_252);
			
			
			// 完了したものを退避
			if(!isBlank(this.same_trn_no))
			{
				this.mae_recode_ch_svc_kei_no = new String(svc_kei_no);
			}
		}
		
		return param;
	}

	/**
	 * コース変更オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite courseChgeOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
//		HashMap<String, Object> chbfEKK0351A010SCHash = null;		// 変更前＿オプションサービス契約一意照会結果ハッシュ
		HashMap<String, Object> chafEKK0351A010SCHash = null;		// 変更後＿オプションサービス契約一意照会結果ハッシュ

		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		HashMap<String, Object> opsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO);			// オプションサービス契約情報
// ▼ 2012/04/20 巻取@残対応
		HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);			// 機器提供サービス契約情報
// ▲ 2012/04/20 巻取@残対応
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		opsvkei_info_Map = shkkaMap(opsvkei_info_Map);
// ▼ 2012/04/20 巻取@残対応
		kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);
// ▲ 2012/04/20 巻取@残対応

		// (1) コース変更必須パラメータの取得
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号

// SOD品向No.14対応 2013/06/25 START
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_SAKI_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
// SOD品向No.14対応 2013/06/25 END
		String chbf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更前サービス契約内訳世代登録年月日時分秒
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
		
//		String chbf_opsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO);										// 変更前オプションサービス契約番号
//		String chbf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM);					// 変更前オプションサービス契約世代登録年月日時分秒
		String chaf_opsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO);										// 変更後オプションサービス契約番号
		String chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM);					// 変更後オプションサービス契約世代登録年月日時分秒
		
// ▼ 2012/04/20 巻取@残対応
		String chbf_kktsvkei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_NO);										// 変更前機器提供サービス契約番号
		String chbf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_GENE_ADD_DTM);					// 変更前機器提供サービス契約世代登録年月日時分秒
		String chaf_kktsvkei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_NO);										// 変更後機器提供サービス契約番号
		String chaf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_GENE_ADD_DTM);					// 変更後機器提供サービス契約世代登録年月日時分秒
// ▲ 2012/04/20 巻取@残対応
		
		// サービス契約の確認
		if(!JKKHakkoSODConstCC.PCRS_CD_100M.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_100M_PRM.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_1G.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_100M_VPN.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_200M.equals(pcrs_cd) &&
			// IT2-2016-0000004 2016/02/22 ADD START
			!JKKHakkoSODConstCC.PCRS_CD_10G.equals(pcrs_cd) &&
			// IT2-2016-0000004 2016/02/22 ADD END
			//ANK-3412-00-00 ADD START
			!JKKHakkoSODConstCC.PCRS_CD_5G.equals(pcrs_cd) &&
			//ANK-3412-00-00 ADD END
			!JKKHakkoSODConstCC.PCRS_CD_MEZON_100M.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_MEZON_100M_PRM.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_MEZON_1G.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_MEZON_200M.equals(pcrs_cd) &&
			// IT2-2016-0000004 2016/02/22 ADD START
			!JKKHakkoSODConstCC.PCRS_CD_MEZON_10G.equals(pcrs_cd) &&
			// IT2-2016-0000004 2016/02/22 ADD END
			//ANK-3412-00-00 ADD START
			!JKKHakkoSODConstCC.PCRS_CD_MEZON_5G.equals(pcrs_cd) &&
			//ANK-3412-00-00 ADD END
			// 20120606 ST2-2012-0000981 START
			!JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_MHIKARI.equals(pcrs_cd) &&
			!JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_GHIKARI.equals(pcrs_cd)
// IT2-2025-0000001対応 20250109 星野 ADD START
			&&
			!JKKHakkoSODConstCC.PCRS_CD_MANS_GLB_10GHIKARI.equals(pcrs_cd)
// IT2-2025-0000001対応 20250109 星野 ADD END
		)
			// // 20120606 ST2-2012-0000981 END
		{
			// コース変更処理対象外の為、終了
			return param;
		}
		
		// サービス契約ステータスの確認
		// 受付済、照査済、締結済の場合
		if(JKKHakkoSODConstCC.SVC_KEI_STAT_010.equals(svc_kei_stat) ||
			JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(svc_kei_stat) ||
			JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(svc_kei_stat))
		{
			// (3)サービス開始前のコース変更処理
			// 前回処理レコードと今回処理レコードのサービス契約番号が異なる場合
			if(chgSvcKeiJdg(svc_kei_no))
			{
				// @同一処理番号の採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_gadtm = new String[1];
				
				// A新認証IDに対してのSOD発行
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
				// FTTH認証・解約
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
				// FTTH認証・消去
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_104);
				
				// B旧認証IDに対してのSOD発行
//				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//				this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
				// FTTH認証・解約
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
				// FTTH認証・消去
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_104);
				
				// CBBRの新規登録SOD発行
				// 機器提供サービス契約情報の取得
// ▼ 2012/04/20 巻取@残対応
				// ST1-2012-0000202 2012/07/30 start
				if(chaf_kktsvkei_no != null && chaf_kktsvkei_gene_add_dtm != null){

					// 出荷対象のパラメータの取得
					this.kktk_svc_kei_no[0] = chaf_kktsvkei_no;						// 変更後機器提供サービス契約番号
					this.kktk_svc_kei_gadtm[0] = chaf_kktsvkei_gene_add_dtm;		// 変更後機器提供サービス契約世代登録年月日時分秒
					
					// BBR返品
					addSODBBRHmpin(handle, param);
				}
				
					// 機器が変更されている場合は返品のSODを発行
//					if(chbf_kktsvkei_no != null && !chbf_kktsvkei_no.equals(chaf_kktsvkei_no))
//					{
						// 返品対象のパラメータの取得
//						this.kktk_svc_kei_no[0] = chbf_kktsvkei_no;						// 変更前機器提供サービス契約番号
//						this.kktk_svc_kei_gadtm[0] = chbf_kktsvkei_gene_add_dtm;		// 変更前機器提供サービス契約世代登録年月日時分秒
					
						// BBR返品
//						addSODBBRHmpin(handle, param);
//					}
//				}
				// ST1-2012-0000202 2012/07/30 end
				// ユーザデータ情報
//				HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
//				inMap.put("kktk_svc_cd", JKKHakkoSODConstCC.KKTK_SVC_CD_BBR);	// 機器提供サービスコード(BBR)
//				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//				
//				// 機器提供サービス契約一覧照会（サービス契約番号）
//				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
//				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
//				
//				inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
//				inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_CD, JKKHakkoSODConstCC.KKTK_SVC_CD_BBR);	// 機器提供サービスコード(BBR)
//
//				statusCode = callEKK0341B002SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
//				if(0 != statusCode)
//				{
//					// 0でない場合はエラー
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
//				
//				CAANMsg[] msgListKktk = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002);
//				String tmp_kiki_seizo_no = null;
//				HashMap<String, Object> retHash = null;
//				if(msgListKktk != null && msgListKktk.length > 0)
//				{
//					retHash = msgListKktk[0].getMsgData();
//					tmp_kiki_seizo_no = (String)retHash.get(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
//				}
//				
//				// 機器情報のデータが存在する場合
//				if(tmp_kiki_seizo_no != null && !"".equals(tmp_kiki_seizo_no) && retHash != null)
//				{
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					
//					this.kktk_svc_kei_no = new String[1];
//					this.kktk_svc_kei_no[0] = (String)retHash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
//					this.kktk_svc_kei_gadtm = new String[1];
//					this.kktk_svc_kei_gadtm[0] = (String)retHash.get(EKK0341B002CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
//					this.taknkiki_model_cd = new String[1];
//					this.taknkiki_model_cd[0] = (String)retHash.get(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
//					this.kiki_seizo_no = new String[1];
//					this.kiki_seizo_no[0] = tmp_kiki_seizo_no;	// 機器製造番号
//					// ルーター向け接続情報・登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_147);
//				}
// ▲ 2012/04/20 巻取@残対応
			}
			
			// 20120531 ST2-2012-0001030 START
			// オプションに対する処理は締結済以前と提供中で差異がないため、条件分の外に移動
//			// Dオプションの新規登録SOD発行
//			// 変更前オプションサービス契約番号指定ありの場合
//			if(chbf_opsvkei_no != null && !"".equals(chbf_opsvkei_no))
//			{
//				// 必要情報の設定
//				HashMap<String, Object> chbfInHash = new HashMap<String, Object>();
//				HashMap<String, Object> chbfResultHash = new HashMap<String, Object>();
//				
//				chbfInHash.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chbf_opsvkei_no);					// オプションサービス契約番号
//				chbfInHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_opsvkei_gene_add_dtm);
//				
//				// EKK0351A010_オプションサービス契約一意照会 実行
//				statusCode = callEKK0351A010SC(param, handle, chbfInHash, chbfResultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
//				if(0 != statusCode)
//				{
//					// 0でない場合はエラー
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
//				
//				// 必要情報の取得
//				chbfEKK0351A010SCHash = (HashMap<String, Object>)chbfResultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
//				String opSvcCd = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
//
//				// オプションサービスコードが「B004」(固定グローバルIPアドレス)の場合
//				if(JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(opSvcCd))
//				{
//					// キー情報の取得
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					this.op_svc_kei_no_mltise = chbf_opsvkei_no;
//					this.op_gadtm_mltise = chbf_opsvkei_gene_add_dtm;
//					
//					// 固定グローバルIPアドレス・解約
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
//					
//					// 固定グローバルIPアドレス・消去
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_146);
//					
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					this.op_svc_kei_no_fixipad = chaf_opsvkei_no;		// オプションサービス契約番号（固定グローバルＩＰアドレス）
//					this.op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm;		//オプションサービス契約世代登録年月日時分秒
//					
//					// 固定IPアドレス・登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_152);
//				}
//				// オプションサービスコードが「B015」(マルチセッション)の場合
//				if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(opSvcCd))
//				{
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					this.op_svc_kei_no_mltise = chbf_opsvkei_no;
//					this.op_gadtm_mltise = chbf_opsvkei_gene_add_dtm;
//					
//					// マルチセッション(動的)・解約
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_143);
//					
//					this.op_svc_kei_no_mltise = chaf_opsvkei_no;
//					this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
//					
//					// マルチセッション(動的)・登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_142);
//				}
//			}
			// 20120531 ST2-2012-0001030 END
		}
		// サービス提供中の場合
		else if(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(svc_kei_stat))
		{
			// (4)サービス開始後のコース変更処理
			// 前回処理レコードと今回処理レコードのサービス契約番号が異なる場合
			if(chgSvcKeiJdg(svc_kei_no))
			{
				// @同一処理番号の採番
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_gadtm = new String[1];
				
				// A新認証IDに対してのSOD発行
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒

				// FTTH認証・解約
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
				// FTTH認証・消去
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_104);
				
				// BBBRの新規登録SOD発行
				// 機器提供サービス契約情報の取得
// ▼ 2012/04/20 巻取@残対応
				// ST1-2012-0000202 2012/07/30 start
				if(chaf_kktsvkei_no != null && chaf_kktsvkei_gene_add_dtm != null){
					// 出荷対象のパラメータの取得
					this.kktk_svc_kei_no[0] = chaf_kktsvkei_no;						// 変更後機器提供サービス契約番号
					this.kktk_svc_kei_gadtm[0] = chaf_kktsvkei_gene_add_dtm;		// 変更後機器提供サービス契約世代登録年月日時分秒
					
// OM-2013-0005099対応 20131211 星野 ADD START
//					// ルーター向け接続情報・変更
					jdgOdr163(handle, param, sodMap);
// OM-2013-0005099対応 20131211 星野 ADD END
					
// OM-2013-0005099対応 20131211 星野 DEL START
//					// BBR返品
//					addSODBBRHmpin(handle, param);
// OM-2013-0005099対応 20131211 星野 DEL END
				}
				// ST1-2012-0000202 2012/07/30 end
//				// ユーザデータ情報
//				HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
//				inMap.put("kktk_svc_cd", JKKHakkoSODConstCC.KKTK_SVC_CD_BBR);	// 機器提供サービスコード(BBR)
//				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//				
//				// 機器提供サービス契約一覧照会（サービス契約番号）
//				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
//				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
//				
//				inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
//				inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_CD, JKKHakkoSODConstCC.KKTK_SVC_CD_BBR);	// 機器提供サービスコード(BBR)
//				
//				statusCode = callEKK0341B002SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
//				if(0 != statusCode)
//				{
//					// 0でない場合はエラー
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
//				
//				CAANMsg[] msgListKktk = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002);
//				String tmp_kiki_seizo_no = null;
//				HashMap<String, Object> retHash = null;
//				if(msgListKktk != null && msgListKktk.length > 0)
//				{
//					retHash = msgListKktk[0].getMsgData();
//					tmp_kiki_seizo_no = (String)retHash.get(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
//				}
//				
//				// 機器情報のデータが存在する場合
//				if(tmp_kiki_seizo_no != null && !"".equals(tmp_kiki_seizo_no) && retHash != null)
//				{
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					
//					this.kktk_svc_kei_no = new String[1];
//					this.kktk_svc_kei_no[0] = (String)retHash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
//					this.kktk_svc_kei_gadtm = new String[1];
//					this.kktk_svc_kei_gadtm[0] = (String)retHash.get(EKK0341B002CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
//					this.taknkiki_model_cd = new String[1];
//					this.taknkiki_model_cd[0] = (String)retHash.get(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
//					this.kiki_seizo_no = new String[1];
//					this.kiki_seizo_no[0] = tmp_kiki_seizo_no;	// 機器製造番号
//					// ルーター向け接続情報・登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_147);
//				}
// ▲ 2012/04/20 巻取@残対応
			}
			
			// 20120531 ST2-2012-0001030 START
			// オプションに対する処理は締結済以前と提供中で差異がないため、条件分の外に移動
//			// Cオプションの新規登録SOD発行
//			// 変更後オプションサービス契約番号指定ありの場合
//			if(chaf_opsvkei_no != null && !"".equals(chaf_opsvkei_no))
//			{
//				// 必要情報の設定
//				HashMap<String, Object> chafInHash = new HashMap<String, Object>();
//				HashMap<String, Object> chafResultHash = new HashMap<String, Object>();
//				
//				chafInHash.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
//				chafInHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm);
//				
//				// EKK0351A010_オプションサービス契約一意照会 実行
//				statusCode = callEKK0351A010SC(param, handle, chafInHash, chafResultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
//				if(0 != statusCode)
//				{
//					// 0でない場合はエラー
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
//				// 必要情報の取得
//				chafEKK0351A010SCHash = (HashMap<String, Object>)chafResultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
//				String opSvcCd = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
//				
//				// 変更後オプションサービスコードが「B015」マルチセッションの時
//				if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(opSvcCd))
//				{
//					// キー情報の取得
//					this.op_svc_kei_no_mltise = chaf_opsvkei_no;
//					this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
//					
//					// 2012-05-16 ST2-2012-0000921 ADD_START
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					// 2012-05-16 ST2-2012-0000921 ADD_END
//					// 上りマッピング
//					HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
//					HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
//					
//					inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
//					inHashMltise.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD);		// オプションサービスコード＿固定グローバルＩＰアドレス
//					
//					// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
//					statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
//					
//					// 下りマッピング
//					CAANMsg[] msgList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//					String op_svc_kei_stat = "";
//					for(int i = 0 ; i < msgList.length ; i ++)
//					{
//						HashMap<String, Object> retHash = msgList[i].getMsgData();
//						op_svc_kei_stat = retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス取得
//					}
//					// 2012-05-16 ST2-2012-0000921 ADD_START
//					if (op_svc_kei_stat != null && !"".equals(op_svc_kei_stat))
//					{
//						// オプションサービス契約ステータスが「締結済」、または、「サービス提供中」の場合
//						if(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
//						{
//							// マルチセッション(静的)・登録
//							param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_144);
//						}
//					}
//					else
//					{
//						// マルチセッション(動的)・登録
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_142);
//					}
//					// 2012-05-16 ST2-2012-0000921 ADD_END
////					// サービス提供中の場合
////					if(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
////					{
////						// 処理なし
////					}
////					// サービス提供中でない場合
////					else
////					{
////						// サービス提供中でない・レコードがない
////						// マルチセッション(動的)・登録
////						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_142);
////					}
//				}
//				
//				// 2012-05-16 ST2-2012-0000921 ADD_START
//				// 変更後オプションサービスコードが「B004」固定グローバルＩＰアドレスの時
//				if (JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(opSvcCd))
//				{
//					this.svc_kei_ucwk_no = new String[1];
//					this.svc_kei_ucwk_gadtm = new String[1];
//					
//					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//					this.op_svc_kei_no_fixipad = chaf_opsvkei_no;		// オプションサービス契約番号（固定グローバルＩＰアドレス）
//					this.op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm;		//オプションサービス契約世代登録年月日時分秒
//					
//					// 上りマッピング
//					HashMap<String, Object> inHashKoteiIp = new HashMap<String, Object>();
//					HashMap<String, Object> resultHashKoteiIp = new HashMap<String, Object>();
//					
//					inHashKoteiIp.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
//					inHashKoteiIp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD);		// オプションサービスコード＿固定グローバルＩＰアドレス
//					
//					// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
//					statusCode = callEKK0351B002SC(param, handle, inHashKoteiIp, resultHashKoteiIp, JKKHakkoSODConstCC.FUNC_CODE_1);
//					
//					// 下りマッピング
//					CAANMsg[] msgList = (CAANMsg[])resultHashKoteiIp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//					String op_svc_kei_stat = "";
//					for(int i = 0 ; i < msgList.length ; i ++)
//					{
//						HashMap<String, Object> retHash = msgList[i].getMsgData();
//						op_svc_kei_stat = retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス取得
//					}
//					// 締結済み、または、サービス提供中の場合
//					if(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
//					{
//						// 固定IPアドレス・登録
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_152);
//					}
//				}
//				// 2012-05-16 ST2-2012-0000921 ADD_END
//			}
			// 20120531 ST2-2012-0001030 END
			
		}
		
		// 20120531 ST2-2012-0001030 START
		// オプションに対する処理は締結済以前と提供中で差異がないため、条件分の外に移動
		// Cオプションの新規登録SOD発行
		// 変更後オプションサービス契約番号指定ありの場合
		if(chaf_opsvkei_no != null && !"".equals(chaf_opsvkei_no))
		{
			// 必要情報の設定
			HashMap<String, Object> chafInHash = new HashMap<String, Object>();
			HashMap<String, Object> chafResultHash = new HashMap<String, Object>();
			
			chafInHash.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
			chafInHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm);
			
			// EKK0351A010_オプションサービス契約一意照会 実行
			statusCode = callEKK0351A010SC(param, handle, chafInHash, chafResultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chafEKK0351A010SCHash = (HashMap<String, Object>)chafResultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
			String opSvcCd = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
			
			// 変更後オプションサービスコードが「B015」マルチセッションの時
			if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(opSvcCd))
			{
				// キー情報の取得
				this.op_svc_kei_no_mltise = chaf_opsvkei_no;
				this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
				
				// 2012-05-16 ST2-2012-0000921 ADD_START
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
				// 2012-05-16 ST2-2012-0000921 ADD_END
				// 上りマッピング
				HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
				HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
				
				inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
				inHashMltise.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD);		// オプションサービスコード＿固定グローバルＩＰアドレス
				
				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
				statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				// 下りマッピング
				CAANMsg[] msgList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
				String op_svc_kei_stat = "";
				for(int i = 0 ; i < msgList.length ; i ++)
				{
					HashMap<String, Object> retHash = msgList[i].getMsgData();
					op_svc_kei_stat = retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス取得
				}
				// 2012-05-16 ST2-2012-0000921 ADD_START
				if (op_svc_kei_stat != null && !"".equals(op_svc_kei_stat))
				{
					// オプションサービス契約ステータスが「締結済」、または、「サービス提供中」の場合
					if(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
					{
						// マルチセッション(静的)・解約
						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
						// マルチセッション(静的)・消去
						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_146);
					}
				}
				else
				{
					// マルチセッション(静的)・解約
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
					// マルチセッション(静的)・消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_146);
				}
				
				// 2012-05-16 ST2-2012-0000921 ADD_END
//				// サービス提供中の場合
//				if(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
//				{
//					// 処理なし
//				}
//				// サービス提供中でない場合
//				else
//				{
//					// サービス提供中でない・レコードがない
//					// マルチセッション(動的)・登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_142);
//				}
			}
			
			// 2012-05-16 ST2-2012-0000921 ADD_START
			// 変更後オプションサービスコードが「B004」固定グローバルＩＰアドレスの時
//			if (JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(opSvcCd))
//			{
//				this.svc_kei_ucwk_no = new String[1];
//				this.svc_kei_ucwk_gadtm = new String[1];
//				
//				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
//				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
//				this.op_svc_kei_no_fixipad = chaf_opsvkei_no;		// オプションサービス契約番号（固定グローバルＩＰアドレス）
//				this.op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm;		//オプションサービス契約世代登録年月日時分秒
//				
//				// 上りマッピング
//				HashMap<String, Object> inHashKoteiIp = new HashMap<String, Object>();
//				HashMap<String, Object> resultHashKoteiIp = new HashMap<String, Object>();
//				
//				inHashKoteiIp.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
//				inHashKoteiIp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD);		// オプションサービスコード＿固定グローバルＩＰアドレス
//				
//				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
//				statusCode = callEKK0351B002SC(param, handle, inHashKoteiIp, resultHashKoteiIp, JKKHakkoSODConstCC.FUNC_CODE_1);
//				
//				// 下りマッピング
//				CAANMsg[] msgList = (CAANMsg[])resultHashKoteiIp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//				String op_svc_kei_stat = "";
//				for(int i = 0 ; i < msgList.length ; i ++)
//				{
//					HashMap<String, Object> retHash = msgList[i].getMsgData();
//					op_svc_kei_stat = retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス取得
//				}
//				// 締結済み、または、サービス提供中の場合
//				if(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
//				{
//					// 固定IPアドレス・登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_152);
//				}
//			}
			// 2012-05-16 ST2-2012-0000921 ADD_END
		}
		// 20120531 ST2-2012-0001030 END
		
		// 完了したものを退避
		if(!isBlank(this.same_trn_no))
		{
			this.mae_recode_ch_svc_kei_no = new String(svc_kei_no);
		}
		return param;
	}

	/**
	 * オプション設定オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite opSetOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		HashMap<String, Object> opsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO);			// オプションサービス契約情報
		HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);			// 機器提供サービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		opsvkei_info_Map = shkkaMap(opsvkei_info_Map);
		kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);

		HashMap<String, Object> chbfEKK0351A010SCHash = null;		// 変更前＿オプションサービス契約一意照会結果ハッシュ
		HashMap<String, Object> chafEKK0351A010SCHash = null;		// 変更後＿オプションサービス契約一意照会結果ハッシュ
		HashMap<String, Object> chbfEKK0361A010SCHash = null;		// 変更前＿オプションサービス契約＜ＩＳＰ＞一意照会ハッシュ
		HashMap<String, Object> chafEKK0361A010SCHash = null;		// 変更後＿オプションサービス契約＜ＩＳＰ＞一意照会ハッシュ
//		HashMap<String, Object> chbfEKK0371A010SCHash = null;		// 変更前＿オプションサービス契約＜電話＞一意照会ハッシュ
//		HashMap<String, Object> chafEKK0371A010SCHash = null;		// 変更後＿オプションサービス契約＜電話＞一意照会ハッシュ
		
		HashMap<String, Object> chbfEKK0401A010SCHash = null;		// 変更前＿サブオプションサービス契約一意照会ハッシュ
		HashMap<String, Object> chafEKK0401A010SCHash = null;		// 変更後＿サブオプションサービス契約一意照会ハッシュ
		HashMap<String, Object> chbfEKK0411A010SCHash = null;		// 変更前＿サブオプションサービス契約＜ＩＳＰ＞一意照会ハッシュ
		HashMap<String, Object> chafEKK0411A010SCHash = null;		// 変更後＿サブオプションサービス契約＜ＩＳＰ＞一意照会ハッシュ
		HashMap<String, Object> chafEKK0341A010SCHash = null;		// 変更後＿機器提供サービス契約一意照会ハッシュ
		
		
		
		// (1) オプション情報必須パラメータの取得
		String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
		
		String chbf_opsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO);										// 変更前オプションサービス契約番号
		String chbf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM);					// 変更前オプションサービス契約世代登録年月日時分秒
		String chaf_opsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO);										// 変更後オプションサービス契約番号
		String chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM);					// 変更後オプションサービス契約世代登録年月日時分秒
		
		String chbf_sbopsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_SBOPSVKEI_NO);									// 変更前サブオプションサービス契約番号
		String chaf_sbopsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SBOPSVKEI_NO);									// 変更後サブオプションサービス契約番号
		String chbf_sbopsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_SBOPSVKEI_GENE_ADD_DTM);				// 変更前サブオプションサービス契約世代登録年月日時分秒
		String chaf_sbopsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SBOPSVKEI_GENE_ADD_DTM);				// 変更後サブオプションサービス契約世代登録年月日時分秒
		
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);	// 変更後サービス契約内訳世代登録年月日時分秒
		String chaf_kktk_svc_kei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_NO);								// 変更後機器提供サービス契約番号
		String chaf_kktk_svc_kei_gene_add_dtm = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_GENE_ADD_DTM);			// 変更後機器提供サービス契約世代登録年月日時分秒
		
		chaf_opsvkei_no = shkkaChr(chaf_opsvkei_no);
		chaf_opsvkei_gene_add_dtm = shkkaChr(chaf_opsvkei_gene_add_dtm);
		chbf_opsvkei_no = shkkaChr(chbf_opsvkei_no);
		chbf_opsvkei_gene_add_dtm = shkkaChr(chbf_opsvkei_gene_add_dtm);
		
		if (isBlank(chaf_opsvkei_no) || isBlank(chbf_opsvkei_no)){
			return param;
		}
		
		// 2012-02-29 開始
		// IPV6対応の OLS向けオーダー発行条件ワーク出力のために退避しておく 【ANK-0046-00-01】IPV6対応 (2012-02-29 追加)
		this.ipv6_svc_kei_ucwk_no = shkkaChr(svc_kei_ucwk_no);
		this.ipv6_svc_kei_ucwk_gadtm = shkkaChr(chaf_svc_kei_ucwk_gene_add_dtm);
		// 2012-02-29 終了
		
		if(!isBlank(chbf_opsvkei_no) && !isBlank(chbf_opsvkei_gene_add_dtm))
		{
			// (2) 変更前オプション情報の取得
			
			// 必要情報の設定
			HashMap<String, Object> chbfInHash = new HashMap<String, Object>();
			HashMap<String, Object> chbfResultHash = new HashMap<String, Object>();
			
			chbfInHash.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chbf_opsvkei_no);											// オプションサービス契約番号
			chbfInHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_opsvkei_gene_add_dtm);
			
			// EKK0351A010_オプションサービス契約一意照会 実行
			statusCode = callEKK0351A010SC(param, handle, chbfInHash, chbfResultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			
			// 必要情報の取得
			chbfEKK0351A010SCHash = (HashMap<String, Object>)chbfResultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
			String opSvcCd = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
			
			// オプションサービスの切り分け
			String[] opSvcKind = jdgOpSvcKind(opSvcCd);
			
			// サブオプションサービスを見る必要がある場合
			if(null == opSvcKind)
			{
				// SOD発行対象では無い為次のオプションへ
				return param;
			}
			if(JKKHakkoSODConstCC.SVC_KIND_NET.equals(opSvcKind[0]))
			{
				// 必要情報の設定
				HashMap<String, Object> chbfInHashNet = new HashMap<String, Object>();
				HashMap<String, Object> chbfResultHashNet = new HashMap<String, Object>();
				
				chbfInHashNet.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chbf_opsvkei_no);
				chbfInHashNet.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_opsvkei_gene_add_dtm);
				
				// EKK0361A010_オプションサービス契約<ISP>一意照会
				callEKK0361A010SC(param, handle, chbfInHashNet, chbfResultHashNet, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				// 必要情報の取得
				chbfEKK0361A010SCHash = (HashMap<String, Object>)chbfResultHashNet.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010);
			}
			else if(JKKHakkoSODConstCC.SVC_KIND_TEL.equals(opSvcKind[0]))
			{
//				// 必要情報の設定
//				HashMap<String, Object> chbfInHashTel = new HashMap<String, Object>();
//				HashMap<String, Object> chbfResultHashTel = new HashMap<String, Object>();
//				
//				chbfInHashTel.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chbf_opsvkei_no);
//				chbfInHashTel.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_opsvkei_gene_add_dtm);
//				
//				// EKK0371A010_オプションサービス契約＜電話＞一意照会
//				callEKK0371A010SC(param, handle, chbfInHashTel, chbfResultHashTel, JKKHakkoSODConstCC.FUNC_CODE_1);
//				
//				// 必要情報の取得
//				chbfEKK0371A010SCHash = (HashMap<String, Object>)chbfResultHashTel.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0371A010);
				
			}
			
			if("1".equals(opSvcKind[1]) && !isBlank(chbf_sbopsvkei_no))
			{
				// サブオプションを見る必要がある為一意照会をかける
				if(JKKHakkoSODConstCC.SVC_KIND_NET.equals(opSvcKind[0]))
				{
					// ネットの場合
					
					// 必要情報の設定
					HashMap<String, Object> chbfInHashSbopIsp = new HashMap<String, Object>();
					HashMap<String, Object> chbfResultHashSbopIsp = new HashMap<String, Object>();
					
					chbfInHashSbopIsp.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chbf_opsvkei_no);
					chbfInHashSbopIsp.put(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO, chbf_sbopsvkei_no);
					chbfInHashSbopIsp.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_sbopsvkei_gene_add_dtm);
					
					// EKK0411A010SC_サブオプションサービス契約＜ISP＞一意照会
					callEKK0411A010SC(param, handle, chbfInHashSbopIsp, chbfResultHashSbopIsp, JKKHakkoSODConstCC.FUNC_CODE_1);
					
					// 必要情報の取得
					chbfEKK0411A010SCHash = (HashMap<String, Object>)chbfResultHashSbopIsp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0411A010);
					
				}
				
				// ネット・電話と共通
				
				// 必要情報の設定
				HashMap<String, Object> chbfInHashSbop = new HashMap<String, Object>();
				HashMap<String, Object> chbfResultHashSbop = new HashMap<String, Object>();
				
				chbfInHashSbop.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chbf_opsvkei_no);
				chbfInHashSbop.put(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO, chbf_sbopsvkei_no);
				chbfInHashSbop.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_sbopsvkei_gene_add_dtm);
				
				// EKK0401A010SC_サブオプションサービス契約一意照会
				callEKK0401A010SC(param, handle, chbfInHashSbop, chbfResultHashSbop, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				// 必要情報の取得
				chbfEKK0401A010SCHash = (HashMap<String, Object>)chbfResultHashSbop.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0401A010);
			}
		}
		
		// (3) 変更後オプション情報の取得
		
		// 必要情報の設定
		HashMap<String, Object> chafInHash = new HashMap<String, Object>();
		HashMap<String, Object> chafResultHash = new HashMap<String, Object>();
		
		chafInHash.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
		chafInHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm);
		
		// EKK0351A010_オプションサービス契約一意照会 実行
		statusCode = callEKK0351A010SC(param, handle, chafInHash, chafResultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		// 必要情報の取得
		chafEKK0351A010SCHash = (HashMap<String, Object>)chafResultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
		String opSvcCd = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
		
		// オプションサービスの切り分け
		String[] opSvcKind = jdgOpSvcKind(opSvcCd);
		
		// サブオプションサービスを見る必要がある場合
		if(null == opSvcKind)
		{
			// SOD発行対象では無い為次のオプションへ
			return param;
		}
		if(JKKHakkoSODConstCC.SVC_KIND_NET.equals(opSvcKind[0]))
		{
			// 必要情報の設定
			HashMap<String, Object> chafInHashNet = new HashMap<String, Object>();
			HashMap<String, Object> chafResultHashNet = new HashMap<String, Object>();
			
			chafInHashNet.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
			chafInHashNet.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm);
			
			// EKK0361A010_オプションサービス契約<ISP>一意照会
			callEKK0361A010SC(param, handle, chafInHashNet, chafResultHashNet, JKKHakkoSODConstCC.FUNC_CODE_1);
			
			// 必要情報の取得
			chafEKK0361A010SCHash = (HashMap<String, Object>)chafResultHashNet.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010);
		}
		else if(JKKHakkoSODConstCC.SVC_KIND_TEL.equals(opSvcKind[0]))
		{
//			// 必要情報の設定
//			HashMap<String, Object> chafInHashTel = new HashMap<String, Object>();
//			HashMap<String, Object> chafResultHashTel = new HashMap<String, Object>();
//			
//			chafInHashTel.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
//			chafInHashTel.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm);
//			
//			// EKK0371A010_オプションサービス契約＜電話＞一意照会
//			callEKK0371A010SC(param, handle, chafInHashTel, chafResultHashTel, JKKHakkoSODConstCC.FUNC_CODE_1);
//			// 必要情報の取得
//			chafEKK0371A010SCHash = (HashMap<String, Object>)chafResultHashTel.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0371A010);
		}
		
		if("1".equals(opSvcKind[1]) && !isBlank(chaf_sbopsvkei_no))
		{
			// サブオプションを見る必要がある為一覧照会をかける
			if(JKKHakkoSODConstCC.SVC_KIND_NET.equals(opSvcKind[0]))
			{
				// ネットの場合
				
				// 必要情報の設定
				HashMap<String, Object> chafInHashSbopIsp = new HashMap<String, Object>();
				HashMap<String, Object> chafResultHashSbopIsp = new HashMap<String, Object>();
				
				chafInHashSbopIsp.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
				chafInHashSbopIsp.put(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO, chaf_sbopsvkei_no);
				chafInHashSbopIsp.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_sbopsvkei_gene_add_dtm);
				
				// EKK0411A010SC_サブオプションサービス契約＜ISP＞一意照会
				callEKK0411A010SC(param, handle, chafInHashSbopIsp, chafResultHashSbopIsp, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				// 必要情報の取得
				chafEKK0411A010SCHash = (HashMap<String, Object>)chafResultHashSbopIsp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0411A010);
				
			}
			
			// ネット・電話と共通
			
			// 必要情報の設定
			HashMap<String, Object> chafInHashSbop = new HashMap<String, Object>();
			HashMap<String, Object> chafResultHashSbop = new HashMap<String, Object>();
			
			chafInHashSbop.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
			chafInHashSbop.put(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO, chaf_sbopsvkei_no);
			chafInHashSbop.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_sbopsvkei_gene_add_dtm);
			
			// EKK0401A010SC_サブオプションサービス契約一意照会
			callEKK0401A010SC(param, handle, chafInHashSbop, chafResultHashSbop, JKKHakkoSODConstCC.FUNC_CODE_1);
			
			// 必要情報の取得
			chafEKK0401A010SCHash = (HashMap<String, Object>)chafResultHashSbop.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0401A010);

		}
		
		// (4) 変更前後内容比較
		
		String selectOdrNaiyoCd = "";	// 選択オーダ内容コード
		//↓↓↓2012-07-05追加、IT2-2012-0001108対応↓↓↓
		String opsvkeiStatBefore = "";
		String opsvkeiStatAfter  = "";
		if (null != chbfEKK0351A010SCHash) {
			opsvkeiStatBefore = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
		}
		if (null != chafEKK0351A010SCHash) {
			opsvkeiStatAfter  = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
		}
		
		//オプション新規SODの条件
		boolean isNewOpsvkei = (isBlank(chbf_opsvkei_no) && !isBlank(chaf_opsvkei_no));

		//オプション解約SODの条件
		boolean isDslOpsvkei = (JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(opsvkeiStatAfter)
				|| JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(opsvkeiStatAfter));
		
		//オプション回復SODの条件
		boolean isKaihkOpsvkei = 
			(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(opsvkeiStatBefore) && 
				(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(opsvkeiStatAfter) || JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(opsvkeiStatAfter)))
		||	(JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(opsvkeiStatBefore) && 
				(JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(opsvkeiStatAfter) || JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(opsvkeiStatAfter)));
		
		//オプション変更SODの条件
		boolean isChgOpsvkei = 
			(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(opsvkeiStatBefore) && JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(opsvkeiStatAfter))
		||	(JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(opsvkeiStatBefore) && JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(opsvkeiStatAfter))
		||	(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(opsvkeiStatBefore) && JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(opsvkeiStatAfter));
		//↑↑↑2012-07-05追加、IT2-2012-0001108対応↑↑↑
		
		// @-1変更後オプションサービスコードが「B001」Eメールの時
		if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(opSvcCd))
		{
			// キー情報を取得
			this.op_svc_kei_no_ml = chaf_opsvkei_no;
			this.op_gadtm_ml = chaf_opsvkei_gene_add_dtm;
			this.mlad = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.MLAD);
			
			if(isNewOpsvkei)
			{
				if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm)
						&& 0 < sameTrnJdg(param, fixedText, svc_kei_no, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))	// 同一処理番号取得必要か判定する
				{
					// 同一処理番号がありサブオプションがある場
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
				}
				// 変更前オプションサービス契約番号が指定されていない場合
				if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))
				{
					// 前回処理レコードと今回処理レコードの変更前後のオプションサービス契約番号、世代登録年月日時分秒が一致しない場合
					// Eメール登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_108;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
//				
//				// サブオプションサービス
//				if(isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no))
//				{
//					// 変更前サブオプションサービス契約が指定されていないかつ変更後サブオプションサービス契約番号が指定されていてかつ
//					String sbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);
//					if(JKKHakkoSODConstCC.SBOP_SVC_CD_VIRUS.equals(sbopSvcCd))
//					{
//						// 変更後サブオプションサービスコードが「D03」の場合
//						// メール・ウイルスチェック登録
//						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_114;
//						param = addSOD(handle, param, selectOdrNaiyoCd);
//					}
//					else if(JKKHakkoSODConstCC.SBOP_SVC_CD_MLCAPA.equals(sbopSvcCd))
//					{
//						// 変更後サブオプションサービスコードが「D02」の場合
//						// メール・メールボックス容量
//						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_113;
//						param = addSOD(handle, param, selectOdrNaiyoCd);
//					}
//				}
			}
			else if(isDslOpsvkei)
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合(本体を解約するのでサブオプションが指定されていても関係ない)
				
				// 異動区分が「解約」、「撤去(解約)」、「強制解約」、「強制解約確定」、「キャンセル」の場合は解約メソッドで採番されている同一処理番号が設定される
				if(!JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSLFIX.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div))
				{
					this.same_trn_no = "";		// 不要の為初期化
				}
				// Eメール解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_116;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isKaihkOpsvkei)
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
				this.same_trn_no = "";		// 不要の為初期化
				// Eメール回復
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_120;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isChgOpsvkei)
			{
				// 変更前オプションサービス契約が「サービス提供中」で変更後オプションサービス契約が「サービス提供中」の場合
				if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm) 
						&& 0 < sameTrnJdg(param, fixedText, svc_kei_no, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))	// 同一処理番号取得必要か判定する
				{
					// 同一処理番号がありサブオプションがある場合
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
				}
				
				if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))
				{
					// 前回処理レコードと今回処理レコードの変更前後のオプションサービス契約番号、世代登録年月日時分秒が一致しない場合

					// 変更前オプション情報の「メールアドレス」と変更後オプション情報の「メールアドレス」を比較
					String chbfMlad = (String)chbfEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.MLAD);
					String chafMlad = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.MLAD);
					
					if((!isBlank(chbfMlad) && !isBlank(chafMlad)) && !chbfMlad.equals(chafMlad))
					{
						// 同一処理番号がありサブオプションがある場合
						if(isBlank(this.same_trn_no))
						{
							String[] sameTrnNo = new String[1];
							getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
							this.same_trn_no = sameTrnNo[0];
						}
						
						// メールアドレス・解約（スケジュール日付有り）
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_117;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						// メールアドレス・消去（スケジュール日付有り）
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_119;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						// メールアドレス・登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_108;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
			}

			String chafsbopSvcCd = "";
			String chbfSbopSvckeiStat = "";
			String chafSbopSvcKeiStat = "";
			
			if(null != chafEKK0401A010SCHash)
			{
				chafsbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
				chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
			}
			
			if(null != chbfEKK0401A010SCHash)
			{
				chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
			}
			
			//↓↓↓2012-07-05追加、IT2-2012-0001108対応↓↓↓
			boolean isNewSbopkei = (isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no));
			boolean isDslSbopkei = (
					(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(chbfSbopSvckeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chbfSbopSvckeiStat))
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat))
				|| (JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(chbfSbopSvckeiStat)
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat));
			
			boolean isSbopkeiStatNotChg =
				(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chbfSbopSvckeiStat) && JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chafSbopSvcKeiStat))
			||	(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(chbfSbopSvckeiStat) && JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(chafSbopSvcKeiStat))
			||	(JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(chbfSbopSvckeiStat) && JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(chafSbopSvcKeiStat))
			;
			//↑↑↑2012-07-05追加、IT2-2012-0001108対応↑↑↑

			// ウイルスチェックの判定
			if(isNewSbopkei && JKKHakkoSODConstCC.SBOP_SVC_CD_VIRUS.equals(chafsbopSvcCd))
			{
				// ウイルスチェックの場合
				// メール・ウイルスチェック登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_114;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(JKKHakkoSODConstCC.SBOP_SVC_CD_VIRUS.equals(chafsbopSvcCd) && isDslSbopkei )
			{
				// 変更前がサービス提供中、変更後が解約済、変更後サブオプションサービスコードがウイルスチェックの場合

				// メール・ウイルスチェック解約
				this.sbop_svckeino_mlvirus = chbf_sbopsvkei_no;						//2012-01-17追加
				this.sbop_gadtm_mlvirus = chbf_sbopsvkei_gene_add_dtm;				//2012-01-17追加
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_115;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			
			// メールボックス容量の判定
			else if(JKKHakkoSODConstCC.SBOP_SVC_CD_MLCAPA.equals(chafsbopSvcCd) && (isNewSbopkei || isDslSbopkei))
			{
				// 変更前サブオプションサービス契約番号が指定されていないかつ変更後サブオプションサービス契約番号が指定されていて
				// 変更後サブオプションサービスコードが「D02」の場合
				// もしくは
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「解約済」かつ
				// 変更後サブオプションサービスコードが「D02」の場合
				
				// メール・メールボックス容量変更
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_113;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isSbopkeiStatNotChg && JKKHakkoSODConstCC.SBOP_SVC_CD_MLCAPA.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「サービス提供中」かつ
				// 変更後サブオプションサービスコードが「D02」の場合
				String chbfCapa = (String)chbfEKK0411A010SCHash.get(EKK0411A010CBSMsg1List.ADD_CAPA);	// 変更前追加容量
				String chafCapa = (String)chafEKK0411A010SCHash.get(EKK0411A010CBSMsg1List.ADD_CAPA);	// 変更後追加容量
				// 変更前のサブオプションの「容量」と変更後のサブオプションの「容量」を比較
				if(!chbfCapa.equals(chafCapa))
				{
					// 容量に差異がある場合
					// メール・メールボックス容量変更
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_113;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
			// メールエイリアスの判定
			else if(isNewSbopkei && JKKHakkoSODConstCC.SBOP_SVC_CD_ALIAS.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約番号が指定されていないかつ変更後サブオプションサービス契約番号が指定されていて
				// 変更後サブオプションサービスコードが「D01」の場合
				// メール・エイリアス登録
				this.sbop_svckeino_alias = chaf_sbopsvkei_no;					//2012-01-17
				this.sbop_gadtm_alias = chaf_sbopsvkei_gene_add_dtm;			//2012-01-17
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_110;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isDslSbopkei && JKKHakkoSODConstCC.SBOP_SVC_CD_ALIAS.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「解約済」かつ
				// 変更後サブオプションサービスコードが「D01」の場合
				// メール・エイリアス解約
				this.sbop_svckeino_alias = chbf_sbopsvkei_no;					//2012-01-17
				this.sbop_gadtm_alias = chbf_sbopsvkei_gene_add_dtm;			//2012-01-17
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_112;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isSbopkeiStatNotChg && JKKHakkoSODConstCC.SBOP_SVC_CD_ALIAS.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「サービス提供中」かつ
				// 変更後サブオプションサービスコードが「D01」の場合
				String chbfAlias = (String)chbfEKK0411A010SCHash.get(EKK0411A010CBSMsg1List.ALIAS);		// 変更前エイリアス
				String chafAlias = (String)chafEKK0411A010SCHash.get(EKK0411A010CBSMsg1List.ALIAS);		// 変更後エイリアス
				
				// 変更前のサブオプションの「メールエイリアス」と変更後のサブオプションの「メールエイリアス」を比較
				if(!chbfAlias.equals(chafAlias))
				{
					// 内容に差異がある場合
					// メール・エイリアス変更
					this.sbop_svckeino_alias = chaf_sbopsvkei_no;					//2012-01-17
					this.sbop_gadtm_alias = chaf_sbopsvkei_gene_add_dtm;			//2012-01-17
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_111;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
		}
		// @-2変更後オプションサービスコードが「B002」Myホームページの時
		if(JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(opSvcCd))
		{
			// キー情報を取得
			this.op_svc_kei_no_hp = chaf_opsvkei_no;
			this.op_gadtm_hp = chaf_opsvkei_gene_add_dtm;
			
			if(isNewOpsvkei)
			{
				// 変更前オプションサービス契約番号が指定されていない場合
				
				// 20120405 ＭｙホームページのSOD発行条件追加 START
				String chafUrlDomain = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_DOMAIN);			// 変更後URL(ドメイン)
				String chafUrlAccount = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);			// 変更後URL(アカウント)
				
				if (!isBlank(chafUrlDomain) && !isBlank(chafUrlAccount))
				{
					//  URL(ドメイン)・URL(アカウント)が設定されている場合
					
					if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm)
							&& 0 < sameTrnJdg(param, fixedText, svc_kei_no, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))	// 同一処理番号取得必要か判定する
					{
						// 同一処理番号がありサブオプションがある場合
						String[] sameTrnNo = new String[1];
						getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
						this.same_trn_no = sameTrnNo[0];
					}
					
					if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))
					{
						// 前回処理レコードと今回処理レコードの変更前後のオプションサービス契約番号、世代登録年月日時分秒が一致しない場合
						
						// WEB・登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_121;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					
					String chafsbopSvcCd = "";
					String chbfSbopSvckeiStat = "";
					String chafSbopSvcKeiStat = "";
					
					if(null != chafEKK0401A010SCHash)
					{
						chafsbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
						chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
					}
					
					if(null != chbfEKK0401A010SCHash)
					{
						chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
					}
					
					if(isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no) && JKKHakkoSODConstCC.SBOP_SVC_CD_HPACCESS.equals(chafsbopSvcCd))
					{
						// 変更前サブオプションサービス契約番号が指定されていないかつ変更後サブオプションサービス契約番号が指定されていて
						// 変更後サブオプションサービスコードが「D05」の場合
						
						// WEB・アクセス分析登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_124;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else if((isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no) && JKKHakkoSODConstCC.SBOP_SVC_CD_HPCAPA.equals(chafsbopSvcCd))
							|| (JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chbfSbopSvckeiStat) 
							&& JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat)
							&& JKKHakkoSODConstCC.SBOP_SVC_CD_HPCAPA.equals(chafsbopSvcCd)))
					{
						// 変更前サブオプションサービス契約番号が指定されていないかつ変更後サブオプションサービス契約番号が指定されていて
						// 変更後サブオプションサービスコードが「D04」の場合
						// もしくは
						// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「解約済」かつ
						// 変更後サブオプションサービスコードが「D04」の場合

						// WEB・ホームページ容量変更
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_123;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
				// 20120405 ＭｙホームページのSOD発行条件追加 END
				
				// Myホームページの新規登録だが、新規登録時のSODは照査時にしか発行されないため、ここではSODの発行は行わない。
				// (Myホームページが解約され、回復可能期間を超過した時でも、再度登録時にはWEBIDが同一でないといけないため、動きとしては回復となる)
			}
			else if(isDslOpsvkei)
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				
				// 20120405 ＭｙホームページのSOD発行条件追加 START
				String chafUrlDomain = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_DOMAIN);			// 変更後URL(ドメイン)
				String chafUrlAccount = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);			// 変更後URL(アカウント)
				
				if (!isBlank(chafUrlDomain) && !isBlank(chafUrlAccount))
				{
					//  URL(ドメイン)・URL(アカウント)が設定されている場合
					// 20120405 ＭｙホームページのSOD発行条件追加 END
					
					// 異動区分が「オプション設定」の場合は設定なし
					if(JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(ido_div))
					{
						// 異動区分が「解約」、「撤去(解約)」の場合は解約メソッドで採番されている同一処理番号が設定される
						this.same_trn_no = "";
					}
					
					// WEB・解約
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_126;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
			else if(isKaihkOpsvkei)
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
				
				// 20120405 ＭｙホームページのSOD発行条件追加 START
				String chafUrlDomain = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_DOMAIN);			// 変更後URL(ドメイン)
				String chafUrlAccount = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);			// 変更後URL(アカウント)
				
				if (!isBlank(chafUrlDomain) && !isBlank(chafUrlAccount))
				{
					//  URL(ドメイン)・URL(アカウント)が設定されている場合
					// 20120405 ＭｙホームページのSOD発行条件追加 END
					
					// WEB・回復
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_128;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
			else if(isChgOpsvkei)
			{
				if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm)
						&& 0 < sameTrnJdg(param, fixedText, svc_kei_no, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))	// 同一処理番号取得必要か判定する
				{
					// 同一処理番号がありサブオプションがある場合
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
				}
				// 変更前オプションサービス契約が「サービス提供中」で変更後オプションサービス契約が「サービス提供中」の場合
				if(chgOpsvKeiJdg(chbf_opsvkei_no, chbf_opsvkei_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm))
				{
					// 前回処理レコードと今回処理レコードの変更前後のオプションサービス契約番号、世代登録年月日時分秒が一致しない場合
					String chbfUrl = (String)chbfEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);			// 変更前URLアカウント
					String chafUrl = (String)chafEKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);			// 変更後URLアカウント
					if((!isBlank(chafUrl)) && !chafUrl.equals(chbfUrl))
					{
						if(isBlank(this.same_trn_no))
						{
							// 同一処理番号がありサブオプションがある場合
							String[] sameTrnNo = new String[1];
							getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
							this.same_trn_no = sameTrnNo[0];
						}
						
						// 20120405 ＭｙホームページのSOD発行条件追加 START
						if (!isBlank(chbfUrl))
						{
							// 変更前URLアカウントが設定されている場合
							// 20120405 ＭｙホームページのSOD発行条件追加 END
							
							// WEB・解約
							selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_126;
							param = addSOD(handle, param, selectOdrNaiyoCd);
							// WEB・消去
							selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_127;
							param = addSOD(handle, param, selectOdrNaiyoCd);
						}
						// WEB・登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_121;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
			}
			
			String chafsbopSvcCd = "";
			String chbfSbopSvckeiStat = "";
			String chafSbopSvcKeiStat = "";
			
			if(null != chafEKK0401A010SCHash)
			{
				chafsbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
				chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
			}
			
			if(null != chbfEKK0401A010SCHash)
			{
				chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
			}
			
			//↓↓↓2012-07-05追加、IT2-2012-0001108対応↓↓↓
			boolean isNewSbopkei = (isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no));
			boolean isDslSbopkei = (
					(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(chbfSbopSvckeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chbfSbopSvckeiStat))
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat))
				|| (JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(chbfSbopSvckeiStat)
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat));
			
			boolean isSbopkeiStatNotChg =
				(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chbfSbopSvckeiStat) && JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chafSbopSvcKeiStat))
			||	(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(chbfSbopSvckeiStat) && JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(chafSbopSvcKeiStat))
			||	(JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(chbfSbopSvckeiStat) && JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(chafSbopSvcKeiStat))
			;
			//↑↑↑2012-07-05追加、IT2-2012-0001108対応↑↑↑

			if(isNewSbopkei && JKKHakkoSODConstCC.SBOP_SVC_CD_HPACCESS.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約番号が指定されていないかつ変更後サブオプションサービス契約番号が指定されていて
				// 変更後サブオプションサービスコードが「D05」の場合
				
				// WEB・アクセス分析登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_124;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isDslSbopkei && JKKHakkoSODConstCC.SBOP_SVC_CD_HPACCESS.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「解約済」かつ
				// 変更後サブオプションサービスコードが「D05」の場合
				
				// WEB・アクセス分析解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_125;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(JKKHakkoSODConstCC.SBOP_SVC_CD_HPCAPA.equals(chafsbopSvcCd) && (isNewSbopkei || isDslSbopkei))
			{
				// 変更前サブオプションサービス契約番号が指定されていないかつ変更後サブオプションサービス契約番号が指定されていて
				// 変更後サブオプションサービスコードが「D04」の場合
				// もしくは
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「解約済」かつ
				// 変更後サブオプションサービスコードが「D04」の場合

				// WEB・ホームページ容量変更
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_123;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			
			else if(isSbopkeiStatNotChg && JKKHakkoSODConstCC.SBOP_SVC_CD_HPCAPA.equals(chafsbopSvcCd))
			{
				// 変更前サブオプションサービス契約が「サービス提供中」かつ変更後サブオプションサービス契約が「サービス提供中」かつ
				// 変更後サブオプションサービスコードが「D04」の場合
				
				String chbfHpCapa = (String)chbfEKK0411A010SCHash.get(EKK0411A010CBSMsg1List.ADD_CAPA);	// 変更前追加容量
				String chafHpCapa = (String)chafEKK0411A010SCHash.get(EKK0411A010CBSMsg1List.ADD_CAPA);	// 変更後追加容量
				
				// 変更前のサブオプションの「容量」と変更後のサブオプションの「容量」を比較
				if((!isBlank(chbfHpCapa) && !isBlank(chafHpCapa)) && !chbfHpCapa.equals(chafHpCapa))
				{
					// 容量に差異がある場合
					// WEB・ホームページ容量変更
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_123;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
		}
		// @-3変更後オプションサービスコードが「B003」メーリングリストの時
		if(JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(opSvcCd))
		{
			// オプションサービスのキー情報
			this.op_svc_kei_no_mlist = chaf_opsvkei_no;
			this.op_gadtm_mlist = chaf_opsvkei_gene_add_dtm;
			
			if(isNewOpsvkei)
			{
				// 変更前オプションサービス契約番号が指定されていない場合
				// メーリングリスト・登録
				this.same_trn_no = "";		// 同一処理番号クリア
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_129;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isDslOpsvkei)
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				
				// 異動区分が「解約」、「撤去(解約)」、「強制解約」、「強制解約確定」、「キャンセル」の場合は解約メソッドで採番されている同一処理番号が設定される
				if(!JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSLFIX.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div))
				{
					this.same_trn_no = "";		// 同一処理番号クリア
				}
				// メーリングリスト・解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_131;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isKaihkOpsvkei)
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
				// メーリングリスト・回復
				this.same_trn_no = "";		// 同一処理番号クリア
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_133;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
		}
		
		// @-4変更後オプションサービスコードが「B004」固定グローバルIPアドレスの時
		if(JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(opSvcCd))
		{
			// 引数に指定されているサービス契約番号を基にサービスIF(EKK0161B004_サービス契約内訳一覧照会)の呼び出しを行いサービス契約内訳情報の取得を行う。
			
			// 必要情報の設定
			HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
			HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
			inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
			
			callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
			
			// 必要情報の取得
			CAANMsg[] msgListUcwk = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004);
			HashMap<String, Object> retHash = msgListUcwk[0].getMsgData();
			
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_no[0] = (String)retHash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_gadtm[0] = (String)retHash.get(EKK0161B004CBSMsg1List.GENE_ADD_DTM);
			this.op_svc_kei_no_fixipad = chaf_opsvkei_no;
			this.op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm;
			this.op_svc_kei_no_mltise = chaf_opsvkei_no;
			this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
			// ANK-2765-00-00 ADD START
			// 旧VR識別判定用サービス詳細コード
			this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, this.svc_kei_ucwk_no[0], this.pplan_cd);
			// ANK-2765-00-00 ADD END
			String svc_kei_ucwk_stat = (String)retHash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
			
			if(isBlank(chbf_opsvkei_no))
			{
				// 変更前オプションサービス契約番号が指定されていない場合
				// 固定グローバルIPアドレス・登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_152;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					|| JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				
				// ◆認証IDが解約済またはキャンセル済か確認を行う
				if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(svc_kei_ucwk_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(svc_kei_ucwk_stat))
				{
					// サービス契約内訳情報の「サービス契約ステータス」が解約済(910)またはキャンセル済(920)の場合
					// 認証IDが解約済の為、SODは発行しない。
				}
				else
				{
					// サービス契約内訳情報の「サービス契約ステータス」が上記以外の場合
					String[] pause_jdg_cd = new String[1];								// 休止判定コード
					
					// 本体サービスが休止中かどうかを判断する
					param = pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd);
					
					// 同一処理番号の採番
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
					
					if(JKKHakkoSODConstCC.PAUSE_JDG_CD_1.equals(pause_jdg_cd[0]))
					{
						// ■休止判定コードが1の場合
						
						// FTTH認証・停止解除
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_107;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// ST2-2012-0000488 2012/04/06 MOD START
						// 固定グローバルIPアドレス・解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_154;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						// ST2-2012-0000488 2012/04/06 MOD END
						
						// 固定グローバルIPアドレス・消去
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_146;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// FTTH登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_101;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// FTTH認証・一時停止
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_106;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else if(JKKHakkoSODConstCC.PAUSE_JDG_CD_0.equals(pause_jdg_cd[0]))
					{
						// ■休止判定コードが0の場合
						
						// ST2-2012-0000488 2012/04/06 MOD START
						// 固定グローバルIPアドレス・解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_154;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						// ST2-2012-0000488 2012/04/06 MOD END
						
						// 固定グローバルIPアドレス・消去
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_146;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// FTTH登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_101;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
				this.op_svc_kei_no_fixipad = chaf_opsvkei_no;
				this.op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm;
				// 固定グローバルIPアドレス・回復
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_153;
				param = addSOD(handle, param, selectOdrNaiyoCd);
				
			}
		}
		// @-5変更後オプションサービスコードが「B015」マルチセッションの時
		if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(opSvcCd))
		{
			// 引数に指定されているサービス契約番号を基にサービスIF(EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）)の呼び出しを行い
			// 固定グローバルIPアドレスオプションが存在するかを確認する。
			
			// キー情報の取得
			this.op_svc_kei_no_mltise = chaf_opsvkei_no;
			this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
			
			// 上りマッピング
			HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
			HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
			
			inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
			inHashMltise.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD);		// オプションサービスコード＿固定グローバルＩＰアドレス
			
			// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
			statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
			
			// 下りマッピング
			CAANMsg[] msgList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
			String op_svc_kei_stat = "";
			for(int i = 0 ; i < msgList.length ; i ++)
			{
				HashMap<String, Object> retHash = msgList[i].getMsgData();
				op_svc_kei_stat = retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス取得
			}
			
			if(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
			{
				// 上記で取得したオプションサービス情報(固定グローバルIPアドレス)のオプションサービス契約ステータスが「サービス提供中」の場合
				
				if(isNewOpsvkei)
				{
					// 変更前オプションサービス契約番号が指定されていない場合
					// ANK-2765-00-00 ADD START
					// 旧VR識別判定用サービス詳細コード
					this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, this.svc_kei_ucwk_no[0], this.pplan_cd);
					// ANK-2765-00-00 ADD END

					// マルチセッション(静的)・登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_144;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				else if(isDslOpsvkei)
				{
					// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
					// 固定IPありでのマルチセッションの解約のため本体サービスが休止中かどうかを判断する。
					String[] pause_jdg_cd = new String[1];								// 休止判定コード
					param = pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd);
					
					if(JKKHakkoSODConstCC.PAUSE_JDG_CD_1.equals(pause_jdg_cd[0]))
					{
						// 休止中の為、利用停止解除、利用停止も同時に発行する。
						
						// EKK0161B004_サービス契約内訳一覧照会
						// 必要情報の設定
						HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
						HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
						
						inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
						
						callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
						
						// 必要情報の取得
						CAANMsg[] msgListUcwk = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004);
						HashMap<String, Object> retHash = msgListUcwk[0].getMsgData();
						
						this.svc_kei_ucwk_no = new String[1];
						this.svc_kei_ucwk_no[0] = (String)retHash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
						this.svc_kei_ucwk_gadtm = new String[1];
						this.svc_kei_ucwk_gadtm[0] = (String)retHash.get(EKK0161B004CBSMsg1List.GENE_ADD_DTM);
						// ANK-2765-00-00 ADD START
						// 旧VR識別判定用サービス詳細コード
						this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, this.svc_kei_ucwk_no[0], this.pplan_cd);
						// ANK-2765-00-00 ADD END

						// 同一処理番号の採番
						String[] sameTrnNo = new String[1];
						getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
						this.same_trn_no = sameTrnNo[0];
						
						// FTTH認証・停止解除
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_107;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// マルチセッション(静的)・解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_145;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// FTTH認証・一時停止
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_106;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						
					}
					else if(JKKHakkoSODConstCC.PAUSE_JDG_CD_0.equals(pause_jdg_cd[0]))
					{
						// 休止中でない場合
						
						// マルチセッション(静的)・解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_145;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
				else if(isKaihkOpsvkei)
				{
					// ST2-2012-0000488 2012/04/06 MOD START
					// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
					// ANK-2765-00-00 ADD START
					// 旧VR識別判定用サービス詳細コード
					this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, this.svc_kei_ucwk_no[0], this.pplan_cd);
					// ANK-2765-00-00 ADD END

					// マルチセッション(静的)・回復
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_161;
					param = addSOD(handle, param, selectOdrNaiyoCd);
					// ST2-2012-0000488 2012/04/06 MOD END
				}
					
				// ST2-2012-0000488 2012/04/06 ADD START
				else if (isChgOpsvkei) 
				{
					// 変更前オプションサービス契約が「サービス提供中」で変更後オプションサービス契約が「サービス提供中」の場合
					// ANK-2765-00-00 ADD START
					// 旧VR識別判定用サービス詳細コード
					this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, this.svc_kei_ucwk_no[0], this.pplan_cd);
					// ANK-2765-00-00 ADD END

					// マルチセッション(静的)・セッション数変
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_162;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				// ST2-2012-0000488 2012/04/06 ADD END
			}
			else
			{
				// ST2-2012-0000488 2012/04/09 ADD START
					// EKK0161B004_サービス契約内訳一覧照会
					// 必要情報の設定
					HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
					HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
					
					inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
					
					callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
					
					// 必要情報の取得
					CAANMsg[] msgListUcwk = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004);
					HashMap<String, Object> retHash = msgListUcwk[0].getMsgData();
					
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = (String)retHash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = (String)retHash.get(EKK0161B004CBSMsg1List.GENE_ADD_DTM);
				// ST2-2012-0000488 2012/04/09 ADD END
					// ANK-2765-00-00 ADD START
					// 旧VR識別判定用サービス詳細コード
					this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, this.svc_kei_ucwk_no[0], this.pplan_cd);
					// ANK-2765-00-00 ADD END
					
				// サービス提供中でない・レコードがない
				if(isNewOpsvkei)
				{
					// 変更前オプションサービス契約番号が指定されていない場合
					// マルチセッション(動的)・登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_142;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				else if(isDslOpsvkei)
				{
					// 変更後オプションサービス契約が「解約済」の場合
					String[] pause_jdg_cd = new String[1];								// 休止判定コード
					param = pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd);

					// ST2-2012-0000488 2012/04/09 DEL START
					// ST2-2012-0000488 2012/04/09 DEL END

					if(JKKHakkoSODConstCC.PAUSE_JDG_CD_1.equals(pause_jdg_cd[0]))
					{
						// 休止中の為、利用停止解除、利用停止も同時に発行する。
						
						// 同一処理番号の採番
						String[] sameTrnNo = new String[1];
						getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
						this.same_trn_no = sameTrnNo[0];
						
						// FTTH認証・停止解除
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_107;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// マルチセッション(動的)・解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_143;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
						// FTTH認証・一時停止
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_106;
						param = addSOD(handle, param, selectOdrNaiyoCd);
						
					}
					else if(JKKHakkoSODConstCC.PAUSE_JDG_CD_0.equals(pause_jdg_cd[0]))
					{
						// 休止中でない場合
						
						// マルチセッション(動的)・解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_143;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
				else if(isKaihkOpsvkei)
				{
					// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
					// マルチセッション(動的)・登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_142;
					param = addSOD(handle, param, selectOdrNaiyoCd);
					
				}
				else if(isChgOpsvkei)
				{
					// 変更前オプションサービス契約が「サービス提供中」で変更後オプションサービス契約が「サービス提供中」の場合
					// ST2-2012-0000488 2012/04/08 ADD START
					// 同一処理番号の採番
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);
					this.same_trn_no = sameTrnNo[0];

					// マルチセッション(動的)・解約
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_143;
					param = addSOD(handle, param, selectOdrNaiyoCd);
					// ST2-2012-0000488 2012/04/08 ADD END

					// マルチセッション(動的)・登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_142;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
		}
		
		// @-6変更後オプションサービスコードが「B020」ダイヤルアップ接続の時
		if(JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(opSvcCd))
		{
			// EKK0161B004_サービス契約内訳一覧照会
			// 必要情報の設定
			HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
			HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
			
			inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
			
			callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
			
			// 必要情報の取得
			CAANMsg[] msgListUcwk = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004);
			HashMap<String, Object> retHash = msgListUcwk[0].getMsgData();
			
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_no[0] = (String)retHash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_gadtm[0] = (String)retHash.get(EKK0161B004CBSMsg1List.GENE_ADD_DTM);
			this.op_svc_kei_no_dial = chaf_opsvkei_no;
			this.op_gadtm_dial = chaf_opsvkei_gene_add_dtm;
			
			if(isNewOpsvkei)
			{
				// 変更前オプションサービス契約番号が指定されていない場合
				// ダイアルアップ接続・解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_137;
				param = addSOD(handle, param, selectOdrNaiyoCd);
				// ダイアルアップ接続・消去
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_138;

				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isDslOpsvkei)
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				// 同一処理番号の採番
				// 異動区分が「解約」、「撤去(解約)」、「強制解約」、「キャンセル」の場合は解約メソッドで採番されている同一処理番号が設定される
				if(!JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div))
				{
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
				}
				
				// ダイアルアップ接続・解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_137;
				param = addSOD(handle, param, selectOdrNaiyoCd);
				// ダイアルアップ接続・消去
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_138;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isKaihkOpsvkei)
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
				// ダイアルアップ接続・登録(回復)
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_134;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(isChgOpsvkei)
			{
				// 変更前オプションサービス契約が「サービス提供中」で変更後オプションサービス契約が「サービス提供中」の場合
				// ダイアルアップ接続・プラン変更
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_136;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			
		}
		
// ▼ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
		// @-6変更後オプションサービスコードが「B075」フェムトセルの時
		if(JKKHakkoSODConstCC.OP_SVC_CD_FMTCEL.equals(opSvcCd))
		{
			this.op_svc_kei_no_fmtcel = chaf_opsvkei_no;
			this.op_gadtm_fmtcel = chaf_opsvkei_gene_add_dtm;
			// ※付加情報契約番号はaddSODメソッドで設定する(ANK-2765-00-00)
			
			if(isBlank(chbf_opsvkei_no))
			{
				// 変更前オプションサービス契約番号が指定されていない場合
				// フェムトセル・登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_164;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					|| JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				// 同一処理番号の採番
				// 異動区分が「解約」、「撤去(解約)」、「強制解約」、「キャンセル」の場合は解約メソッドで採番されている同一処理番号が設定される
				if(!JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) &&
					!JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div))
				{
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
				}
				
				// フェムトセル・解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_166;
				param = addSOD(handle, param, selectOdrNaiyoCd);
				// フェムトセル・消去
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_167;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合
				// フェムトセル・登録(回復)
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_164;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			
		}
// ▲ 2012/07/05 巻取A ANK-0035-00-00 フェムトセル対応
		
		// 割込電話の場合
		if(JKKHakkoSODConstCC.OP_SVC_CD_WARKMI.equals(opSvcCd))
		{
			if(isBlank(chbf_opsvkei_no)
					|| (JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))))
			{
				// 新規登録、回復の場合
				// EKK0341A010_機器提供サービス契約一意照会
				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
				
				inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, chaf_kktk_svc_kei_no);
				inHashKktk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_kktk_svc_kei_gene_add_dtm);
				
				callEKK0341A010SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				chafEKK0341A010SCHash = (HashMap<String, Object>)resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
				
				// 宅内機器のキー
				this.taknkiki_model_cd = new String[1];
				this.taknkiki_model_cd[0] = (String)chafEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
				this.kiki_seizo_no = new String[1];
				this.kiki_seizo_no[0] = (String)chafEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
				
				// 機器提供のキー
				this.kktk_svc_kei_no = new String[1];
				this.kktk_svc_kei_no[0] = chaf_kktk_svc_kei_no;
				this.kktk_svc_kei_gadtm = new String[1];
				this.kktk_svc_kei_gadtm[0] = chaf_kktk_svc_kei_gene_add_dtm;
				
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				
				// 同一処理番号の取得
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				// EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）
				HashMap<String, Object> eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				// サービス回線内訳番号
				this.svc_kei_kaisen_ucwk_no = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
				// サービス回線内訳世代登録年月日時分秒
				this.svc_kei_kaisen_ucwk_gadtm = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.GENE_ADD_DTM);
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
				
				// OLS設定・割込電話登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_214;
				param = addSOD(handle, param, selectOdrNaiyoCd);
				
				// SIP・割込電話登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_234;
				param = addSOD(handle, param, selectOdrNaiyoCd);
				
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					|| JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				this.same_trn_no =""; 
				
				// SIP・割込電話解約
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_235;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
		}
		
		// 転送電話の場合の場合
		if(JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(opSvcCd))
		{
			String chbfOpSvcKeiStat = "";
			
			if(null != chbfEKK0351A010SCHash)
			{
				chbfOpSvcKeiStat = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			}
			String chafOpSvcKeiStat = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			
			// 親比較
			if(!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				//↓↓↓2012-07-24追加　ST2-2012-0001384対応↓↓↓
				// EKK0191A010_サービス契約内訳＜eo光電話＞一意照会
				HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
				inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);
				inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);
				
				callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
				// 結果の取得
				HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
				
				//番ポ有無をチェック
				boolean isBmpNon = !JKKHakkoSODConstCC.BMP_UM_ARI.equals((String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM));

				//指定サービス契約番号でオーダ設定一覧照会
				ArrayList<HashMap<String, Object>> eKK1041B001HashList =
					callEKK1041B001SC(param, handle, JKKHakkoSODConstCC.ORDER_SBT_CD_TEL, null, null, svc_kei_no);
				int isOrderedZ1 = 0;

				//Z1オーダ発行済みか否かを、Radius認証、OLS、SIP　３種の電話サービスオーダと緊急通報オーダがあるかどうかで確認
				if (null != eKK1041B001HashList && 0 < eKK1041B001HashList.size())
				{
					for (HashMap<String, Object>eKK1041B001Hash : eKK1041B001HashList)
					{
						String svc_order_cd = (String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_ORDER_CD);
						String rcnt_yokyu_sbt_cd = (String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD);
						if (svc_order_cd.matches("2[0134]") && "02".compareTo(rcnt_yokyu_sbt_cd) <= 0)
						{
							isOrderedZ1 ++;
						}
					}
				}
				//↑↑↑2012-07-24追加　ST2-2012-0001384対応↑↑↑

				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				// 変更前と変更後のオプションサービス契約ステータスが違う場合
				// 同一処理番号の取得
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				//解約済でもキャンセル済でもない場合							//2012-01-16追加
				if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafOpSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafOpSvcKeiStat)))
				{
					//↓↓↓2012-07-24変更　ST2-2012-0001384対応↓↓↓
					if(isBmpNon && 4 > isOrderedZ1)			// 番ポ有無＝無し、Z1オーダ未発行の場合
					{
						// SIP・登録
						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_218);

					// SIP・転送電話登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_236;
					param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else if(4 <= isOrderedZ1)					// Z1オーダ発行済み
					{
						// SIP・転送電話登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_236;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					//↑↑↑2012-07-24変更　ST2-2012-0001384対応↑↑↑
				}
				else
				{
					// SIP・転送電話解約
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_237;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				
				
				String chafSbopSvcCd = "";
				String chafSbopSvcKeiStat = "";
				String chbfSbopSvckeiStat = "";
				
				if(null != chafEKK0401A010SCHash)
				{
					chafSbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
					chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
				}
				if(null != chbfEKK0401A010SCHash)
				{
					chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
				}
				
				// 子比較
				if(!chbfSbopSvckeiStat.equals(chafSbopSvcKeiStat) && JKKHakkoSODConstCC.SBOP_SVC_CD_TENSOSEL.equals(chafSbopSvcCd))
				{
					//解約済でもキャンセル済でもない場合							//2012-01-16追加
					if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat)))
					{
						// SIP・転送電話選択登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_238;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else
					{
						// SIP・転送電話選択解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_239;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
				
			}
			// 親比較
			else if(chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				String chafSbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
				String chbfSbopSvckeiStat = "";
				if(null != chbfEKK0401A010SCHash)
				{
					chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
				}
				String chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
				
				// 子比較
				if(!chbfSbopSvckeiStat.equals(chafSbopSvcKeiStat) && JKKHakkoSODConstCC.SBOP_SVC_CD_TENSOSEL.equals(chafSbopSvcCd))
				{
					// 同一処理番号の取得
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
					
					//解約済でもキャンセル済でもない場合							//2012-01-16追加
					if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat)))
					{
						// SIP・転送電話選択登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_238;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else
					{
						// SIP・転送電話選択解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_239;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
			}
		}
		
		// 発信者番号表示の場合
		if(JKKHakkoSODConstCC.OP_SVC_CD_DSP.equals(opSvcCd))
		{
			String chbfOpSvcKeiStat = "";
			if(null != chbfEKK0351A010SCHash)
			{
				chbfOpSvcKeiStat = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			}
			String chafOpSvcKeiStat = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			
			// 親比較
			if(!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				// 変更前と変更後のオプションサービス契約ステータスが違う場合
				// 同一処理番号の取得
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				//解約済でもキャンセル済でもない場合							//2012-01-16追加
				if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafOpSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafOpSvcKeiStat)))
				{
					// SIP・発信者番号表示登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_240;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				else
				{
					// SIP・発信者番号表示解約
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_241;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				
				
				String chafSbopSvcCd = "";
				String chafSbopSvcKeiStat = "";
				String chbfSbopSvckeiStat = "";
				
				if(null != chafEKK0401A010SCHash)
				{
					chafSbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
					chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
				}
				
				if(null != chbfEKK0401A010SCHash)
				{
					chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
				}
				
				// 子比較
				if(!chbfSbopSvckeiStat.equals(chafSbopSvcKeiStat) && JKKHakkoSODConstCC.SBOP_SVC_CD_NOTELNO.equals(chafSbopSvcCd))
				{
					// サービス契約内訳のキー
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
					
					//解約済でもキャンセル済でもない場合							//2012-01-16追加
					if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat)))
					{
						// SIP・非通知着信拒否登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_242;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else
					{
						// SIP・非通知着信拒否解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_243;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
			}
			
			// 親比較
			if(chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				String chafSbopSvcCd = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);				// 変更後サブオプションサービスコード
				String chbfSbopSvckeiStat = "";
				if(null != chbfEKK0401A010SCHash)
				{
					chbfSbopSvckeiStat = (String)chbfEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更前サブオプションサービス契約ステータス
				}
				String chafSbopSvcKeiStat = (String)chafEKK0401A010SCHash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);	// 変更後サブオプションサービス契約ステータス
				
				// 子比較
				if(!chbfSbopSvckeiStat.equals(chafSbopSvcKeiStat) && JKKHakkoSODConstCC.SBOP_SVC_CD_NOTELNO.equals(chafSbopSvcCd))
				{
					
					// 同一処理番号の取得
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
					
					//解約済でもキャンセル済でもない場合							//2012-01-16追加
					if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafSbopSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat)))
					{
						// SIP・非通知着信拒否登録
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_242;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
					else
					{
						// SIP・非通知着信拒否解約
						selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_243;
						param = addSOD(handle, param, selectOdrNaiyoCd);
					}
				}
			}
		}
		
		// 迷惑電話拒否の場合
		if(JKKHakkoSODConstCC.OP_SVC_CD_MWKTEL.equals(opSvcCd))
		{
			String chbfOpSvcKeiStat = "";
			if(null != chbfEKK0351A010SCHash)
			{
				chbfOpSvcKeiStat = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			}
			String chafOpSvcKeiStat = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			
			// 親比較
			if(!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				// 同一処理番号の取得
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				// 変更前と変更後のオプションサービス契約ステータスが違う場合
				
				//解約済でもキャンセル済でもない場合							//2012-01-16追加
				if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafOpSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafOpSvcKeiStat)))
				{
					// SIP・迷惑電話着信拒否登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_244;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				else
				{
					// SIP・迷惑電話着信拒否解約
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_245;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
		}
		
		// 指定番号着信選択の場合
		if(JKKHakkoSODConstCC.OP_SVC_CD_STINO.equals(opSvcCd))
		{
			String chbfOpSvcKeiStat = "";
			if(null != chbfEKK0351A010SCHash)
			{
				chbfOpSvcKeiStat = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			}
			String chafOpSvcKeiStat = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			
			// 親比較
			if(!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				// 同一処理番号の取得
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				// 変更前と変更後のオプションサービス契約ステータスが違う場合

				//解約済でもキャンセル済でもない場合							//2012-01-16追加
				if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafOpSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafOpSvcKeiStat)))
				{
					// SIP・指定番号着信拒否登録
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_246;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
				else
				{
					// SIP・指定番号着信拒否解約
					selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_247;
					param = addSOD(handle, param, selectOdrNaiyoCd);
				}
			}
		}
		
		// 国際電話停止の場合 【ANK-0048-00-01】国際電話停止オプション 2012-02-29追加
		if(JKKHakkoSODConstCC.OP_SVC_CD_KOKUSAI_STP.equals(opSvcCd))
		{
			String chbfOpSvcKeiStat = "";
			if(null != chbfEKK0351A010SCHash)
			{
				chbfOpSvcKeiStat = (String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			}
			String chafOpSvcKeiStat = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			
			// 親比較
			if(!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat))
			{
				// 同一処理番号の取得
				String[] sameTrnNo = new String[1];
				getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
				this.same_trn_no = sameTrnNo[0];
				
				// サービス契約内訳のキー
				this.svc_kei_ucwk_no = new String[1];
				this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm = new String[1];
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				
				//解約済でもキャンセル済でもない場合							//2012-01-16追加
				if (!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafOpSvcKeiStat) || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafOpSvcKeiStat)))
				{
					// SIP・国際電話停止登録
					param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_253);
				}
				else
				{
					// SIP・国際電話停止解約
					param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_254);
				}
			}
		}
		
		// 2012-02-29 開始
		// 【ANK-0046-00-01】IPV6対応
		// @-0 変更後オプションサービスコードが「B070」IPV6の時 (解約オーダーでないとき) 【ANK-0046-00-01】IPV6対応 2012-02-29追加
		if (JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals(opSvcCd))
		{
			// オプションサービスのキー情報
			this.op_svc_kei_no_ipv6 = chaf_opsvkei_no;
			this.op_gadtm_ipv6 = chaf_opsvkei_gene_add_dtm;

			// 同一処理番号の取得
			String[] sameTrnNo = new String[1];
			getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
			this.same_trn_no = sameTrnNo[0];

			if(isBlank(chbf_opsvkei_no))
			{
				// 変更前オプションサービス契約番号が指定されていない場合
				// ルータの確認などしながら、条件に応じて IPV6 SOD発行
				this.sod_pattern_ipv6 = 1;			// 発行するとしたら IPV6 登録に相当する
				// 変更後オプションサービス契約番号は、処理対象の絞込みに用いる
				jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash);
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					|| JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 変更後オプションサービス契約が「解約済」または「キャンセル済」の場合
				// ルータの確認などしながら、条件に応じて IPV6 SOD発行
				this.sod_pattern_ipv6 = 3;			// 発行するとしたら IPV6 解約に相当する
				// 変更前オプションサービス契約番号は、処理対象の絞込みに用いる
				jdgIpv6(handle, param, "", chbf_opsvkei_no, chafEKK0361A010SCHash);
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					&& JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 変更前オプションサービス契約が「解約済」で変更後オプションサービス契約が「サービス提供中」の場合 (回復)
				// ルータの確認などしながら、条件に応じて IPV6 SOD発行
				this.sod_pattern_ipv6 = 1;			// 発行するとしたら IPV6 登録に相当する
				// 変更後オプションサービス契約番号は、処理対象の絞込みに用いる
				jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash);
			}
		}
		// 2012-02-29 終了
		
		// 050ナンバープラスの場合
		if(JKKHakkoSODConstCC.OP_SVC_CD_N050.equals(opSvcCd))
		{
			// オプションサービス契約のキーを保持
			this.op_svc_kei_no_tikan = chaf_opsvkei_no;
			this.op_gadtm_tikan = chaf_opsvkei_gene_add_dtm;
			// サービス契約内訳のキー
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
			
			// 親比較
			if(isBlank(chbf_opsvkei_no)
					|| (JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals((String)chbfEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
							&& JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals((String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))))
			{
				// 番号置換・登録
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_248;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals((String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					|| JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals((String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// 番号置換・消去
				selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_249;
				param = addSOD(handle, param, selectOdrNaiyoCd);
			}
		}
		
		// (7) SODの登録
		// addSODは随時呼び出している為ここに記載せず。
		
		// (8) 返却情報のセット
		// オーダ発行条件・オーダ情報作成ワーク更新時、それぞれのサービスインターフェイス呼び出し時に返却情報はセットしている
		
		// 完了したものを退避
		this.mae_recode_chaf_op_svc_kei_no = new String(chaf_opsvkei_no);
		this.mae_recode_chaf_op_svc_kei_gene_add_dtm = new String(chaf_opsvkei_gene_add_dtm);
		this.mae_recode_chbf_op_svc_kei_no = new String(chbf_opsvkei_no);
		this.mae_recode_chbf_op_svc_kei_gene_add_dtm = new String(chbf_opsvkei_gene_add_dtm);
		
		
		return param;
	}

// ▼ 2012/04/20 巻取@残対応
	/**
	 * 光電話番号追加オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite htelNoAddOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> sodMap) throws Throwable
	{
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);			// 機器提供サービス契約情報
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);
		
		// 同一処理番号の取得
		String[] sameTrnNo = new String[1];
		getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
		this.same_trn_no = sameTrnNo[0];

		// 対象のパラメータの初期化（機器が変更されていないる場合はサービスに付随する電話番号すべてにSODを再発行）
		this.svc_kei_ucwk_no = new String[1];
		this.svc_kei_ucwk_no[0] = JKKHakkoSODConstCC.STRING_BLANK;			// サービス契約内訳番号
		this.svc_kei_ucwk_gadtm = new String[1];
		this.svc_kei_ucwk_gadtm[0] = JKKHakkoSODConstCC.STRING_BLANK;		// 変更後サービス契約内訳世代登録年月日
		
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// VAの変更有無を確認
			String chbf_kktk_svc_kei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_NO);					// 変更前機器提供サービス契約番号
			String chaf_kktk_svc_kei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_NO);					// 変更後機器提供サービス契約番号
			
			// 機器が変更されていない場合は内訳に付随する電話番号のみSODを発行
			if(chbf_kktk_svc_kei_no != null && chbf_kktk_svc_kei_no.equals(chaf_kktk_svc_kei_no))
			{
				// 対象のパラメータの取得
				this.svc_kei_ucwk_no[0] = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);						// サービス契約内訳番号
				this.svc_kei_ucwk_gadtm[0] = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日
			}
			// 出荷対象のパラメータの取得
			this.kktk_svc_kei_no[0] = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_NO);						// 変更後機器提供サービス契約番号
			this.kktk_svc_kei_gadtm[0] = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_GENE_ADD_DTM);			// 変更後機器提供サービス契約世代登録年月日時分秒
			
			// 光電話・VA変更時のSODを発行
			addSODTelVAChange(handle, param);
			
			// 機器が変更されている場合は返品のSODを発行
			if(chbf_kktk_svc_kei_no == null || !chbf_kktk_svc_kei_no.equals(chaf_kktk_svc_kei_no))
			{
				// 返品対象のパラメータの取得
				this.kktk_svc_kei_no[0] = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_NO);					// 変更前機器提供サービス契約番号
				this.kktk_svc_kei_gadtm[0] = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_GENE_ADD_DTM);		// 変更前機器提供サービス契約世代登録年月日時分秒
				
				// VA返品
				addSODVAHmpin(handle, param);
			}
		}
		return param;
	}

//	/**
//	 * 光電話番号追加オーダ制御処理<br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	private IRequestParameterReadWrite htelNoAddOdrCtrl(SessionHandle handle,
//			IRequestParameterReadWrite param) throws Throwable
//	{
//			
//		/** OLS設定・電話番号追加 */
//		
//		/** SIP・登録 */
//		
//		/** SIP・オプション一括登録(050以外のオプションがある場合) */
//		
//		// (0) オプションサービス契約一覧照会(サービス契約内訳番号)
//		
//		/** SIP・番ポ情報登録(番ポ情報がある場合のみ) */
//		
//		// (0) サービス契約内訳一意照会
//		
//		/** 緊急通報・登録 */
//		return param;
//	}
// ▲ 2012/04/20 巻取@残対応

// OM-2013-0003213対応 20131011 星野 DEL START
// 未使用メソッド削除
//	/**
//	 * 光電話番号変更オーダ制御処理<br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param fixedText ユーザ任意文字列
//	 * @param sodMap SODマップ
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite htelNoChgeOdrCtrl(SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			HashMap<String, Object> sodMap) throws Throwable
//	{
//// ▼ 2012/07/05 巻取A 現行ICS指摘No.286,289,290 番ポ関連の入力項目追加
//		// 光電話番号変更
//		return 	telNoChge(handle, param, fixedText, sodMap, JKKHakkoSODConstCC.TEL_CHNG_DIV_HTEL_CHNG);
//// ▲ 2012/07/05 巻取A 現行ICS指摘No.286,289,290 番ポ関連の入力項目追加
//	}
// OM-2013-0003213対応 20131011 星野 DEL END

// OM-2013-0003213対応 20131011 星野 MOD START
// 長らく未使用だったメソッドを使用することになったので、JKKAdchgHakkoSODCCから再移植
//	/**
//	 * 光電話番号解約オーダ制御処理<br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param fixedText ユーザ任意文字列
//	 * @param sodMap SODマップ
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite htelNoDslOdrCtrl(SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			HashMap<String, Object> sodMap) throws Throwable
//	{
//		int statusCode = 0;											// サービスインターフェイス実行ステータス
//		
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
//		
//		// (1) 光電話番号解約必須パラメータの取得
//		String sys_id = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID);															// SYSID
//		String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
//		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
//		
//		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
//		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
//		
//		// @光電話の解約処理（１番号のみ）
//		// @-1 同一処理番号の採番
//		String[] sameTrnNo = new String[1];
//		getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
//		this.same_trn_no = sameTrnNo[0];
//		
//		// @-2 VAの紐付きの確認（電話番号にVAが紐付いているかを確認）
//		// @-2-1 EKK0191A010_サービス契約内訳<eo光電話>一意照会
//		HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
//		HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
//		
//		inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
//		inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
//		
//		statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
//		if(0 != statusCode)
//		{
//			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//		}
//		// 結果の取得
//		HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
//		
//		String vaPortNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_PORT_NO);	//VAポート番号
//		String vaTaknkikiModelCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_TAKNKIKI_MODEL_CD);	//VA宅内機器型式コード
//		String vaKikiSeizoNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_KIKI_SEIZO_NO);	//VA機器製造番号
//		
//		// @-2-3 EKK0341B008_機器提供サービス契約一覧照会（サービス契約番号）
//		HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
//		HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
//		
//		inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
//		
//		statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
//		if(0 != statusCode)
//		{
//			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//		}
//		CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008);
//		
//		String kktkSvcKeiNo = "";			//機器提供サービス契約番号
//		String kktkGeneAddDtm = "";			//機器提供サービス契約世代登録年月日時分秒
//		
//		for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
//		{
//			HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
//			String kktkSvcKeiUcwkNo = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.SVC_KEI_UCWK_NO);	//サービス契約内訳番号
//			
//			//機器提供サービス契約.サービス契約内訳番号 ＝ パラメータ.サービス契約内訳番号の場合
//			if(!isBlank(kktkSvcKeiUcwkNo) && svc_kei_ucwk_no.equals(kktkSvcKeiUcwkNo))
//			{
//				kktkSvcKeiNo = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
//				kktkGeneAddDtm = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.GENE_ADD_DTM);	//機器提供サービス契約世代登録年月日時分秒
//				break;
//			}
//		}
//		// サービス契約内訳番号に紐付く機器提供サービス契約を取得できなかった場合
//		if(isBlank(kktkSvcKeiNo))
//		{
//			//サービス契約番号に紐付く最新レコードを取得
//			HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[0].getMsgData();
//			kktkSvcKeiNo = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
//			kktkGeneAddDtm = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.GENE_ADD_DTM);	//機器提供サービス契約世代登録年月日時分秒
//		}
//		
//		this.svc_kei_ucwk_no = new String[1];
//		this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;						// サービス契約内訳番号
//		this.svc_kei_ucwk_gadtm = new String[1];
//		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	// 変更後サービス契約内訳世代登録年月日時分秒
//		this.kktk_svc_kei_no = new String[1];
//		this.kktk_svc_kei_no[0] = kktkSvcKeiNo;			// 機器提供サービス契約番号
//		this.kktk_svc_kei_gadtm = new String[1];
//		this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm;	// 機器提供サービス契約世代登録年月日時分秒
//		this.taknkiki_model_cd = new String[1];
//		this.taknkiki_model_cd[0] = vaTaknkikiModelCd;	// 宅内機器型式コード
//		this.kiki_seizo_no = new String[1];
//		this.kiki_seizo_no[0] = vaKikiSeizoNo;			// 機器製造番号
//		
//// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
//		// EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）
//		HashMap<String, Object> eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, JKKHakkoSODConstCC.FUNC_CODE_1);
//		
//		// サービス回線内訳番号
//		this.svc_kei_kaisen_ucwk_no = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
//		// サービス回線内訳世代登録年月日時分秒
//		this.svc_kei_kaisen_ucwk_gadtm = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.GENE_ADD_DTM);
//// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
//		
//		// VAポート番号にポート番号が設定されていない場合
//		if(isBlank(vaPortNo))
//		{
//			// OLS設定・解約
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_215);
//			// OLS設定・消去
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_216);
//		}
//		// VAポート番号にポート番号が設定されている場合
//		else
//		{
//			// 2ポートVAの為、他の電話番号の紐付き、状態を確認する。
//			
//			// 20120424 ST2-2012-0000775 START
////			// 料金コースが１番号コース「A31]の場合
////			if(JKKHakkoSODConstCC.PCRS_CD_TEL_1BAN.equals(this.pcrs_cd))
////			{
////				// OLS設定・解約
////				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_215);
////				// OLS設定・消去
////				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_216);
////				
////			}
////			// 料金コースが２番号コース「A32]の場合
////			else if(JKKHakkoSODConstCC.PCRS_CD_TEL_2BAN.equals(this.pcrs_cd))
////			{
////				//2番号サービスのため、電話番号情報変更を行う。
//			// 20120424 ST2-2012-0000775 END
//			
//			// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
//			HashMap<String, Object> inHashOp = new HashMap<String, Object>();
//			HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
//			inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
//			inHashOp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_DSP);	// オプションサービスコード（発信者番号表示）
//			
//			statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
//			if(0 != statusCode)
//			{
//				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//			}
//			CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//			
//			// 0件の場合（発信者番号表示オプションを利用していない）
//			if(msgList.length == 0)
//			{
//				// OLS設定・電話番号解約
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_209);
//			}
//			// 1件の場合
//			else if(msgList.length == 1)
//			{
//				HashMap<String, Object> eKK0351B002Hash = msgList[0].getMsgData();
//				String op_svc_kei_no = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
//				String op_gene_add_dtm = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();	// 世代登録年月日時分秒
//				
//				// EKK0351A010_オプションサービス契約一意照会
//				HashMap<String, Object> inHashOp2 = new HashMap<String, Object>();
//				HashMap<String, Object> resultHashOp2 = new HashMap<String, Object>();
//				inHashOp2.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, op_svc_kei_no);		// オプションサービス契約番号
//				inHashOp2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, op_gene_add_dtm);	// 世代登録年月日時分秒
//				
//				statusCode = callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, JKKHakkoSODConstCC.FUNC_CODE_1);
//				if(0 != statusCode)
//				{
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
//				HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashOp2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
//				String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
//				String op_svc_kei_stat = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス
//				
//				// オプションサービス契約ステータが「解約済」かつ サービス契約情報の申込明細番号と一致の場合
//				if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(op_svc_kei_stat) && op_mskm_dtl_no.equals(this.mskm_dtl_no))
//				{
//					this.op_svc_kei_no = op_svc_kei_no;
//					this.op_gadtm = op_gene_add_dtm;
//					
//					// OLS設定・電話番号解約
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_209);
//				}
//			}
//			// 2件以上の場合、本来はありえない状態のためSODは発行しない。
//			// 20120424 ST2-2012-0000775 START
//			//}
//			// 20120424 ST2-2012-0000775 END
//		
//		}
//	
//		// @-3 SIP向けSOD発行
//		
//		// SIP・解約
//		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
//		
//		// SIP・消去
//		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
//		
//		// @-4 050ナンバープラスオプションの確認
//		// 050ナンバープラスオプションの取得
//		
//		// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
//		HashMap<String, Object> inHashOp = new HashMap<String, Object>();
//		HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
//		inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
//		inHashOp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_N050);	// オプションサービスコード（０５０ナンバープラス）
//		
//		statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
//		if(0 != statusCode)
//		{
//			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//		}
//		CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//		
//		for(int i = 0 ; i < msgList.length ; i ++)
//		{
//			HashMap<String, Object> eKK0351B002Hash = msgList[i].getMsgData();
//			String op_svc_kei_no = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
//			String op_gene_add_dtm = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();	// 世代登録年月日時分秒
//			
//			//EKK0351A010_オプションサービス契約一意照会
//			HashMap<String, Object> inHashOp2 = new HashMap<String, Object>();
//			HashMap<String, Object> resultHashOp2 = new HashMap<String, Object>();
//			inHashOp2.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, op_svc_kei_no);		// オプションサービス契約番号
//			inHashOp2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, op_gene_add_dtm);	// 世代登録年月日時分秒
//			
//			statusCode = callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, JKKHakkoSODConstCC.FUNC_CODE_1);
//			if(0 != statusCode)
//			{
//				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//			}
//			HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashOp2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
//			String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);	// 申込明細番号
//			String op_svc_kei_stat = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス
//			
//			// オプションサービス契約ステータが「解約済」かつ サービス契約情報の申込明細番号と一致の場合
//			if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(op_svc_kei_stat) && op_mskm_dtl_no.equals(this.mskm_dtl_no))
//			{
//				//オプション設定オーダ制御のマッピング
//				HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
//				HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
//				HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
//				HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
//				HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
//				
//				// SOD基本情報
//				opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);			// SYSID
//				opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);		// 異動区分
//				// サービス契約情報
//				opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);	// サービス契約番号
//				// サービス契約内訳情報
//				opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
//				opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
//				// オプションサービス契約情報(解約を行うため変更前に同じ値を設定)
//				opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
//				opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
//				opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
//				opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
//				
//				// SODマップ設定
//				opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
//				opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
//				opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
//				opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
//				
//				// オプション設定オーダ制御処理
//				opSetOdrCtrl(handle, param, fixedText, opSodMap);
//			}
//		}
//		
//		// @-6 移転トーキの確認
//		// 移転トーキ情報が存在する場合、トーキの種類によってSIPへSODを発行
//		// @-6-1 EKK0191A010_サービス契約内訳＜eo光電話＞一意照会結果の取得
//		// 20120928 ロット２ S/IF変更対応 START
////		String itntokiKiboUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_KIBO_UM);	//移転トーキ希望有無
////		String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_ADD_CD);	//移転トーキ登録コード
//		String itntokiKiboUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_KIBO_UM);	//解約・休止トーキ希望有無
//		String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_ADD_CD);	//解約・休止トーキ登録コード
//		// 20120928 ロット２ S/IF変更対応 END
//		
//		//「移転トーキ希望有無」が有で「移転トーキ登録コード」が「移転元解約によるトーキ」の場合
//		if(JKKHakkoSODConstCC.ITNTOKI_KIBO_UM_ARI.equals(itntokiKiboUm) &&
//			JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd))
//		{
//			// SIP・トーキ登録
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
//		}
//		//「移転トーキ希望有無」が有で移転「トーキ開始年月日」<=運用日<「移転トーキ終了年月日」以外の場合
//		// ⇒開始するトーキが無いため何も行わない。
//		
//		//@-8 緊急通報SOD発行
//		// 緊急通報・消去
//		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_252);
//		
//		return param;
//	}
	
	/**
	 * 光電話番号解約オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite htelNoDslOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		
		// (1) 光電話番号解約必須パラメータの取得
		String sys_id = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID);															// SYSID
		String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
		
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
//		if(!StringUtils.isEmpty((String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_no")) && !StringUtils.isEmpty((String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_gene_add_dtm"))){
//			// 電番変更元が設定されている場合はそっちを優先
//			svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_no");
//			chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_gene_add_dtm");
//		}

//		if(isBlank(svc_kei_ucwk_no) || !telDslExe){
		if(isBlank(svc_kei_ucwk_no) ){
			return param;
		}
		
		// @光電話の解約処理（１番号のみ）
		// @-1 同一処理番号の採番
		String[] sameTrnNo = new String[1];
		getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
		this.same_trn_no = sameTrnNo[0];
		
		// @-2 VAの紐付きの確認（電話番号にVAが紐付いているかを確認）
		// @-2-1 EKK0191A010_サービス契約内訳<eo光電話>一意照会
		HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
		HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
		
		inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
		inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
		
		statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		// 結果の取得
		HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
		
		String vaPortNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_PORT_NO);	//VAポート番号
		String vaTaknkikiModelCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_TAKNKIKI_MODEL_CD);	//VA宅内機器型式コード
		String vaKikiSeizoNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_KIKI_SEIZO_NO);	//VA機器製造番号
		// VA機器変更番号
		String vaKikiChgNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO);
		
		// @-2-3 EKK0341B022_サービス対象機器提供サービス契約一覧照会
		HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
		HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
		
		inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
		
		statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgEKK0341B022SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022);
		
		String kktkSvcKeiNo = "";			//機器提供サービス契約番号
		String kktkGeneAddDtm = "";			//機器提供サービス契約世代登録年月日時分秒
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
		String tknkiki_sbt_cd = "";
		String svc_kei_kaisen_ucwk_no = "";
		String svc_kei_kaisen_ucwk_gadtm = "";
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
		
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
//		for(int i = 0 ; i < msgEKK0341B022SCList.length ; i ++)
//		{
//			HashMap<String, Object> eKK0341B022SCHash = msgEKK0341B022SCList[i].getMsgData();
		// VA用の機器リストと多機能ルータの機器リストを合わせて処理する
		ArrayList<HashMap<String, Object>> newKikiList = new ArrayList<HashMap<String, Object>>();
		// VAの機器一覧照会結果からMapを取り出して保存
		for(int i=0; i<msgEKK0341B022SCList.length; i++) {
			newKikiList.add((HashMap<String, Object>)msgEKK0341B022SCList[i].getMsgData());
		}
		// 回線に紐付く機器から特に多機能ルータを取り出した結果を得る
		ArrayList<HashMap<String, Object>> mfrKikiList = getMfrInfoByEKK0341B019(param, handle, svc_kei_no);
		// 一意照会結果なので、MapKeyの名称を一覧照会結果の名称に変更して保存しなおす
		ArrayList<HashMap<String, Object>> mfrKikiListModed = getDataFromA010Res(mfrKikiList);
		newKikiList.addAll(mfrKikiListModed);
		// VAと多機能ルータを合わせたListに対して処理を行う
		for (HashMap<String, Object> eKK0341B022SCHash : newKikiList) {
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
			
			// 電話に紐付くVAの場合
			if (isRegalVaKiki(eKK0341B022SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo))
			{
				
				kktkSvcKeiNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
				kktkGeneAddDtm = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.GENE_ADD_DTM);	//機器提供サービス契約世代登録年月日時分秒
				vaKikiSeizoNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);	//機器製造番号
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
				tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD);	//宅内機器種別コード
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
				break;
				
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
			// 電話に紐付く多機能ルータの場合
			// 引数にサービス契約内訳＜電話＞のVAに関する項目が入っているが、ここには多機能ルータの場合は多機能ルータの情報が入るため問題は無い
			} else if (isRegalMfRouter(eKK0341B022SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo)) {
				
				kktkSvcKeiNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
				kktkGeneAddDtm = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.GENE_ADD_DTM);	//機器提供サービス契約世代登録年月日時分秒
				vaKikiSeizoNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);	//機器製造番号
				tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD);	//宅内機器種別コード
				svc_kei_kaisen_ucwk_no = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);	//サービス契約回線内訳番号
				// 回線内訳の一意照会を行い、カレントの世代年月日を取得
				HashMap<String, Object> ekk0251a010Map = runEKK0251A010(param, handle, svc_kei_kaisen_ucwk_no);
				svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);
				break;
				
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
//			// 万が一に備えて、住所変更明細にあるＶＡ機器は一応保持しておく（breakはしない）
//			}else if(isJuhenVA(handle, param, (String)sodMap.get("adchg_no"), eKK0341B022SCHash)){
//				kktkSvcKeiNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
//				kktkGeneAddDtm = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.GENE_ADD_DTM);	//機器提供サービス契約世代登録年月日時分秒
//				vaKikiSeizoNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);	//機器製造番号
//				
			}
		}
		
		this.svc_kei_ucwk_no = new String[1];
		this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;						// サービス契約内訳番号
		this.svc_kei_ucwk_gadtm = new String[1];
		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	// 変更後サービス契約内訳世代登録年月日時分秒
		this.kktk_svc_kei_no = new String[1];
		this.kktk_svc_kei_no[0] = kktkSvcKeiNo;			// 機器提供サービス契約番号
		this.kktk_svc_kei_gadtm = new String[1];
		this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm;	// 機器提供サービス契約世代登録年月日時分秒
		this.taknkiki_model_cd = new String[1];
		this.taknkiki_model_cd[0] = vaTaknkikiModelCd;	// 宅内機器型式コード
		this.kiki_seizo_no = new String[1];
		this.kiki_seizo_no[0] = vaKikiSeizoNo;			// 機器製造番号
//		this.chbf_kktk_svc_kei_gadtm = new String[1];	// 変更前機器提供サービス契約世代登録年月日時分秒
		
		// EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）
		HashMap<String, Object> eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, JKKHakkoSODConstCC.FUNC_CODE_1);
		
		// サービス回線内訳番号
		this.svc_kei_kaisen_ucwk_no = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		// サービス回線内訳世代登録年月日時分秒
		this.svc_kei_kaisen_ucwk_gadtm = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.GENE_ADD_DTM);
		
		// 宅内機器型式コードと機器製造番号を用いてVA単位にOLS設定・解約とOLS設定・消去のSOD発行を行う
		String va_kiki = vaTaknkikiModelCd + vaKikiSeizoNo;
		if (!JKKStringUtil.isNullBlank(va_kiki) && !va_kiki_list.contains(va_kiki))
		{
//			setPrevGeneIfVaMod(handle, param, (String)sodMap.get("adchg_no"), svc_kei_no, kktkSvcKeiNo);
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
//			// OLS設定・解約
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_215);
//			// OLS設定・消去
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_216);
//			va_kiki_list.add(va_kiki);
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD START
//			if (!TAKNKIKI_SBT_CD_MFR.equals(tknkiki_sbt_cd)) {
			if (JKKHakkoSODConstCC.TAKNKIKI_SBT_CD_TELVA.equals(tknkiki_sbt_cd)) {
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD END
				// OLS設定・解約
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_215);
				// OLS設定・消去
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_216);
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD START
//			} else {
			// ANK-4315-00-00 MOD START
			//} else if (TAKNKIKI_SBT_CD_MFR.equals(tknkiki_sbt_cd)) {
			} else if (TAKNKIKI_SBT_CD_MFR.equals(tknkiki_sbt_cd) || TAKNKIKI_SBT_CD_HGW.equals(tknkiki_sbt_cd)) {
			// ANK-4315-00-00 MOD END
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD END
				// 機器オプションサービス契約一覧照会（機器提供ＳＶ）実行
				ArrayList<HashMap<String, Object>> kkop_svc_kei_srch_list = runEKK2811B010(param, handle, this.kktk_svc_kei_no[0]);
				// 機器オプションサービスにVA機能サービスが存在する場合にMapを返す
				HashMap<String, Object> ekk2811b010Map = getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_VA, true);
				// 存在しない場合は、Mapがnullとなるため以降の実行条件とする。
				if (ekk2811b010Map != null) {
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD START
					// 住所変更明細の機器オプションサービス契約種別レコードに
					this.fixedText = fixedText;
					ArrayList<HashMap<String, Object>> adchgDtlKkop = getAdchgDtlBySbtCd(param, handle, "09");
					boolean routerKkopExistFlg = false;
					if (adchgDtlKkop != null) {
						HashMap<String, Object> bbrKkopMap = getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_BBR, true);
// OM-2014-0000944 2014.03.04 Y.Kanata ADD START
// nullチェックif文追加とインデント変更
						if (bbrKkopMap != null) {
// OM-2014-0000944 2014.03.04 Y.Kanata ADD END
							String bbrKkopSvcKeiNo = (String)bbrKkopMap.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
							for (HashMap<String, Object> dtlMap : adchgDtlKkop) {
								String chbfSkbtNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
								String chafSkbtNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
								// 以下の条件でルータ機能の転居先利用を判断する。
								//  ・変更前識別番号がBBR機能の機器オプションサービス契約番号と一致しない
								//  ・変更後識別番号がemptyでないこと（=転居先で利用）
// OM-2014-0001911対応 20140525 星野 MOD START
//// OM-2014-0000944 2014.03.04 Y.Kanata MOD START
//// 変数bbrKkopSvcKeiNoにnullが入っていた場合落ちてしまうのでチェック追加
////								if (bbrKkopSvcKeiNo.equals(chbfSkbtNo)
//								if (!StringUtils.isEmpty(bbrKkopSvcKeiNo)
//										&& bbrKkopSvcKeiNo.equals(chbfSkbtNo)
//// OM-2014-0000944 2014.03.04 Y.Kanata MOD END
//										&& !StringUtils.isEmpty(chafSkbtNo)
//										) {
								
								if ( !StringUtils.isEmpty(bbrKkopSvcKeiNo)
									 && 
									 ( 
										// 転居元機器オプションとの一致を確認
										( bbrKkopSvcKeiNo.equals(chbfSkbtNo) )
										||
										// 修正モードでの電話取消時は、転居先機器との一致も条件に入れる
										( "1".equals( sodMap.get("isCancelTelSvcOnly") ) && bbrKkopSvcKeiNo.equals(chafSkbtNo) )
									 )
								) {
									
// OM-2014-0001911対応 20140525 星野 MOD END
									routerKkopExistFlg = true;
								}
							}
// OM-2014-0000944 2014.03.04 Y.Kanata ADD START
						}
// OM-2014-0000944 2014.03.04 Y.Kanata ADD END
					}
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD END
					// 機器オプションサービス契約番号（ルーター）
					this.kkop_svc_kei_router[0] = "";
					// 機器オプションサービス契約番号（ルーター）世代登録年月日
					this.kkop_svc_kei_router_gadtm[0] = "";
					// 機器オプションサービス契約番号（VA）
					this.kkop_svc_kei_va[0] = (String)ekk2811b010Map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
					// 機器オプションサービス契約番号（VA）世代登録年月日
					this.kkop_svc_kei_va_gadtm[0] = (String)ekk2811b010Map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
					// サービス契約回線内訳番号
					this.svc_kei_kaisen_ucwk_no = svc_kei_kaisen_ucwk_no;
					// サービス契約回線内訳世代年月日
					this.svc_kei_kaisen_ucwk_gadtm = svc_kei_kaisen_ucwk_gadtm;
					
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD START
//					// OLS設定・解約
//					param = addSOD(handle, param, ODR_NAIYO_CD_421);
//					// OLS設定・消去
//					param = addSOD(handle, param, ODR_NAIYO_CD_422);
					if (routerKkopExistFlg) {
						// OM-2016-0001640 ADD START
						// 変更前機器提供サービス契約世代登録年月日時分秒を退避
						String tmp_kktk_svc_kei_gadtm = this.chbf_kktk_svc_kei_gadtm[0];

						// EKK0341A010_機器提供サービス契約一意照会
						HashMap<String, Object> hktg_mfr_map = runEKK0341A010CurrentOpedate(param, handle, kktkSvcKeiNo);

						// 世代登録年月日時分秒（カレント）
						String geneAddDtm =  (String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);

						// 変更前機器提供サービス契約世代登録年月日時分秒 ← 世代登録年月日時分秒（カレント）
						this.chbf_kktk_svc_kei_gadtm = new String[1];
						this.chbf_kktk_svc_kei_gadtm[0] = geneAddDtm;
						// OM-2016-0001640 ADD END
						// OLS設定・解約
						param = addSOD(handle, param, ODR_NAIYO_CD_417);
						// OM-2016-0001640 ADD START
						// 退避していた変更前機器提供サービス契約世代登録年月日時分秒を設定し元に戻す
						this.chbf_kktk_svc_kei_gadtm = new String[1];
						this.chbf_kktk_svc_kei_gadtm[0] = tmp_kktk_svc_kei_gadtm;
						// OM-2016-0001640 ADD END
					} else {
						// OLS設定・解約
						param = addSOD(handle, param, ODR_NAIYO_CD_421);
						// OLS設定・消去
						param = addSOD(handle, param, ODR_NAIYO_CD_422);
					}
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD END
				}
			}
			va_kiki_list.add(va_kiki);
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
		}
	
		// @-3 SIP向けSOD発行
		
		// SIP・解約
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
		
		// SIP・消去
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
		
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD START
		// 対象電話番号が網内番ポ番号 かつ 自社番号 の場合
		if (isMonaiBmp(handle, param, (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.TELNO), JKKStrConst.CD00189_JISHA))
		{
			// 網内番ポの終了のため
			// ENUM設定・消去
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_266);
			
		}
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD END
		
		
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 DEL START
//		String itntokiKiboUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_KIBO_UM);	//解約・休止トーキ希望有無
//		String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_ADD_CD);	//解約・休止トーキ登録コード
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 DEL END
		
// キャンセル時はトーキ不要
//		//「移転トーキ希望有無」が有で「移転トーキ登録コード」が「移転元解約によるトーキ」の場合
//		if(JKKHakkoSODConstCC.ITNTOKI_KIBO_UM_ARI.equals(itntokiKiboUm) &&
//			JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd))
//		{
//			// SIP・トーキ登録
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
//		}
//		//「移転トーキ希望有無」が有で移転「トーキ開始年月日」<=運用日<「移転トーキ終了年月日」以外の場合
//		// ⇒開始するトーキが無いため何も行わない。
		
		//@-8 緊急通報SOD発行
		// 緊急通報・消去
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_252);
		
		if (!isRadiusZumi)
		{
			// Radius認証・解約
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_204);
			isRadiusZumi = true;
		}
		
		return param;
	}
// OM-2013-0003213対応 20131011 星野 MOD END
	
// OM-2013-0003213対応 20131011 星野 ADD START
	/**
	 * 光電話番号解約オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite htelNoDslOdrCtrl002(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		
		// (1) 光電話番号解約必須パラメータの取得
		String sys_id = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID);															// SYSID
		String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
		
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
//		if(!StringUtils.isEmpty((String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_no")) && !StringUtils.isEmpty((String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_gene_add_dtm"))){
//			// 電番変更元が設定されている場合はそっちを優先
//			svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_no");
//			chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_gene_add_dtm");
//		}
		
//		if(isBlank(svc_kei_ucwk_no) || !telDslExe){
		if(isBlank(svc_kei_ucwk_no) ){
			return param;
		}
		
		// @-4 050ナンバープラスオプションの確認
		// 050ナンバープラスオプションの取得

		// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashOp = new HashMap<String, Object>();
		HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
		
		String tmp_svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String tmp_chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
		
		String svc_kei_ucwk_no_forOption = svc_kei_ucwk_no;
//		// 番号変更の場合
//		if( !StringUtils.isEmpty(tmp_svc_kei_ucwk_no) && !StringUtils.isEmpty(tmp_chaf_svc_kei_ucwk_gene_add_dtm)
//			&& !tmp_svc_kei_ucwk_no.equals(svc_kei_ucwk_no)
//		){
//			// 変更後内訳の一意照会
//			// @-1 EKK0161A010_サービス契約内訳一意照会
//			HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
//			HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
//			inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, tmp_svc_kei_ucwk_no);				// サービス契約内訳番号
//			inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, tmp_chaf_svc_kei_ucwk_gene_add_dtm);	// 世代登録年月日時分秒
//			
//			statusCode = callEKK0161A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
//			if(0 != statusCode)
//			{
//				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//			}
//			HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
//			
//			// 番号変更確定済の場合、オプションは変更後内訳に紐付けが変更されているため、解約時も変更後を使う必要がある
//			if( !"1".equals( eKK0161A010Hash.get(EKK0161A010CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG) ) ){
//				svc_kei_ucwk_no_forOption = tmp_svc_kei_ucwk_no;
//			}
//		}
		
		// オプション検索用内訳番号を設定
		inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no_forOption);				// サービス契約内訳番号
		inHashOp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_N050);	// オプションサービスコード（０５０ナンバープラス）
		
		statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
		
		for(int i = 0 ; i < msgList.length ; i ++)
		{
			HashMap<String, Object> eKK0351B002Hash = msgList[i].getMsgData();
			String op_svc_kei_no = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
			String op_gene_add_dtm = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();	// 世代登録年月日時分秒
			
//			//オプション設定オーダ制御のマッピング
//			HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
//			HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
//			HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
//			HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
//			HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
//			
//			// SOD基本情報
//			opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);			// SYSID
//			opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);		// 異動区分
//			// サービス契約情報
//			opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);	// サービス契約番号
//			// サービス契約内訳情報
//			opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
//			opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
//			// オプションサービス契約情報(解約を行うため変更前に同じ値を設定)
//			opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
//			opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
//			opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
//			opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
//			
//			// SODマップ設定
//			opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
//			opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
//			opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
//			opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
//			
//			// オプション設定オーダ制御処理
//			opSetOdrCtrl(handle, param, fixedText, opSodMap);
			// オプションサービス契約のキーを保持
			this.op_svc_kei_no_tikan = op_svc_kei_no;
			this.op_gadtm_tikan = op_gene_add_dtm;
			// サービス契約内訳のキー
			this.svc_kei_ucwk_no = new String[1];
			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
			this.svc_kei_ucwk_gadtm = new String[1];
			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
			String selectOdrNaiyoCd = "";	// 選択オーダ内容コード

			// 番号置換・消去
			selectOdrNaiyoCd = JKKHakkoSODConstCC.ODR_NAIYO_CD_249;
			param = addSOD(handle, param, selectOdrNaiyoCd);
		}
		
		return param;
	}
// OM-2013-0003213対応 20131011 星野 ADD END


// OM-2013-0003213対応 20131011 星野 DEL START
// 未使用メソッド削除
//	/**
//	 * 光電話移転トーキオーダ制御処理<br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite htelItntokiOdrCtrl(SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			HashMap<String, Object> sodMap) throws Throwable
//	{
//		int statusCode = 0;											// サービスインターフェイス実行ステータス
//		
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
//		
//		// (1) 光電話移転トーキ必須パラメータの取得
//		String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
//		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
//		
//		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
//		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
//		
//		String opeDate = JCCBPCommon.getOpeDate(null);	// 運用日
//		
//		// (3) 光電話移転トーキ処理
//		// @サービス契約内訳情報の取得
//		// @-1 EKK0161A010_サービス契約内訳一意照会
//		HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
//		HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
//		inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
//		inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 世代登録年月日時分秒
//		
//		statusCode = callEKK0161A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
//		if(0 != statusCode)
//		{
//			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//		}
//		HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
//		
//		// サービス契約内訳ステータス
//		String svcKeiUcwkStat = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT);
//		
//		// @-2 EKK0191A010_サービス契約内訳<eo光電話>一意照会
//		HashMap<String, Object> inHashUcwkTel = new HashMap<String, Object>();
//		HashMap<String, Object> resultHashUcwkTel = new HashMap<String, Object>();
//		inHashUcwkTel.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
//		inHashUcwkTel.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
//		
//		statusCode = callEKK0191A010SC(param, handle, inHashUcwkTel, resultHashUcwkTel, JKKHakkoSODConstCC.FUNC_CODE_1);
//		if(0 != statusCode)
//		{
//			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//		}
//		HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwkTel.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
//		// 20120928 ロット２ S/IF変更対応 START
////		String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_ADD_CD);			//移転トーキ登録コード
////		String itntokiEndRsvYmd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_END_RSV_YMD);	//移転トーキ終了予定年月日
////		String itntokiStaYmd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.ITNTOKI_STA_YMD);			//移転トーキ開始年月日
//		String itntokiAddCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_ADD_CD);	//解約・休止トーキ登録コード
//		String itntokiEndRsvYmd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_END_YMD);	//解約・休止トーキ終了年月日
//		String itntokiStaYmd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.DSL_PAUSE_TOKI_STA_YMD);	//解約・休止トーキ開始年月日
//		// 20120928 ロット２ S/IF変更対応 END
//		String bmpUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM);							//番ポ有無
//		
//		this.svc_kei_ucwk_no = new String[1];
//		this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;						// サービス契約内訳番号
//		this.svc_kei_ucwk_gadtm = new String[1];
//		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	// 変更後サービス契約内訳世代登録年月日時分秒
//		
//		// Aサービス契約内訳ステータスによる制御(移転トーキ開始系)
//		//   異動区分「光電話・移転トーキ設定」の場合、ステータスと移転トーキ登録コードにて振り分けを行う。
//		if(JKKHakkoSODConstCC.IDO_DIV_HTELITNTOKISETTE.equals(ido_div))
//		{
//			// サービス契約内訳ステータスが「受付済」の場合
//			//   @で取得した移転トーキ登録コードに関わらずサービス開始のタイミングでSODを発行するため何も行わない。
//			
//			// サービス契約内訳ステータスが「サービス提供中」の場合
//			if(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(svcKeiUcwkStat))
//			{
//				//移転トーキ登録コードが「移転先登録によるトーキ」の場合
//				if(JKKHakkoSODConstCC.ITNTOKI_ADD_CD_ADD.equals(itntokiAddCd))
//				{
//					// SIP・トーキ登録(移転トーキの開始)
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
//				}
//			}
//			// サービス契約内訳ステータスが「解約済」の場合
//			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(svcKeiUcwkStat))
//			{
//				//移転トーキ登録コードが「移転元解約によるトーキ」の場合
//				if(JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd))
//				{
//					// SIP・トーキ登録(移転トーキの開始)
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
//				}
//			}
//			// サービス契約内訳ステータスが「休止・中断中」の場合
//			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(svcKeiUcwkStat))
//			{
//				//移転トーキ登録コードが「休止によるトーキ」の場合
//				if(JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUSE.equals(itntokiAddCd))
//				{
//					//同一処理番号の採番
//					String[] sameTrnNo = new String[1];
//					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
//					this.same_trn_no = sameTrnNo[0];
//					
//					// SIP・解約
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
//					// SIP・消去
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
//					// SIP・トーキ登録(移転トーキの開始)
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
//				}
//				
//			}
//		}
//		
//		// Bサービス契約内訳ステータスによる制御(移転トーキ終了系)
//		//   異動区分「光電話・移転トーキ設定」の場合、ステータスと移転トーキ登録コードにて振り分けを行う。
//		if(JKKHakkoSODConstCC.IDO_DIV_HTELITNTOKISETTE.equals(ido_div))
//		{
//			// サービス契約内訳ステータスが「サービス提供中」の場合
//			if(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(svcKeiUcwkStat))
//			{
//				// 移転トーキ登録コードが「移転先登録によるトーキ」or「移転元解約によるトーキ」かつ
//				// 運用日=移転トーキ終了予定年月日の場合
//				if((JKKHakkoSODConstCC.ITNTOKI_ADD_CD_ADD.equals(itntokiAddCd) || JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd)) &&
//						opeDate.equals(itntokiEndRsvYmd))
//				{
//					//移転トーキが開始中で移転トーキの終了起因で呼び出されている為下記データでオーダを発行
//					//同一処理番号の採番
//					String[] sameTrnNo = new String[1];
//					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
//					this.same_trn_no = sameTrnNo[0];
//					
//					// SIP・解約
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
//					// SIP・消去
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
//				}
//			}
//			// サービス契約内訳ステータスが「休止・中断中」の場合
//			else if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(svcKeiUcwkStat))
//			{
//				//移転トーキ登録コードが「移転先登録によるトーキ」でかつ移転トーキ開始年月日=運用日の場合
//				//  何も行わない。
//				
//				//移転トーキ登録コードが「移転元解約によるトーキ」でかつ移転トーキ開始年月日=運用日の場合
//				if(JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd) && opeDate.equals(itntokiStaYmd))
//				{
//					// SIP・トーキ登録(移転トーキの開始)
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
//				}
//				
//				//移転トーキ登録コードが「休止によるトーキ」でかつ運用日=移転トーキ終了予定年月日の場合
//				if(JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUSE.equals(itntokiAddCd) && opeDate.equals(itntokiEndRsvYmd))
//				{
//					//同一処理番号の採番
//					String[] sameTrnNo = new String[1];
//					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
//					this.same_trn_no = sameTrnNo[0];
//					
//					// SIP・解約
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
//					// SIP・消去
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
//					// SIP・登録(SIP新規登録)
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_218);
//					// SIP・オプション一括登録(050以外のオプション一括登録)
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_219);
//					
//					// 番ポ有の場合
//					if(JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm))
//					{
//						// SIP・番ポ情報登録
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_225);
//					}
//					
//					// 休止判定処理
//					String[] pause_jdg_cd = new String[1];								// 休止判定コード
//					param = pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd);
//					
//					// 休止中の場合
//					if(JKKHakkoSODConstCC.PAUSE_JDG_CD_1.equals(pause_jdg_cd[0]))
//					{
//						// SIP・一時停止
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_223);
//					}
//				}
//			}
//		}
//		
//		return param;
//	}
// OM-2013-0003213対応 20131011 星野 DEL END

	// 2012-02-29 開始
	/**
	 * IPV6オーダ発行処理_変更後オプションサービス<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void addIpv6SODAft(SessionHandle handle,
			IRequestParameterReadWrite param,
			String ucwk_no_param,
			String fixedText,
			String opSvcKeiStatParam,
			HashMap<String, Object> sodMap) throws Throwable
	{
		// 【ANK-0046-00-01】IPV6対応 2012-02-29 追加
		int statusCode = 0;						// サービスインターフェイス実行ステータス
//		boolean wkSODIdPwHukusuFlg = false;		// IDPW初期化・再振オーダ複数フラグ
		
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> opsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO);			// オプションサービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		opsvkei_info_Map = shkkaMap(opsvkei_info_Map);
		
//		HashMap<String, Object> chafEKK0351A010SCHash = null;		// 変更後＿オプションサービス契約一意照会結果ハッシュ
		
		// (1) IDPW初期化・再振必須パラメータの取得
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);								// サービス契約番号
//		String chaf_opsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO);						// 変更後オプションサービス契約番号
//		String chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM);	// 変更後オプションサービス契約世代登録年月日時分秒
		
//		// (2) サービス契約情報の取得
//		// サービス種類判定
//		String svc_kind = jdgSvcKind_PcrsCd();
//		
//		// サービス種類のeo光ネット以外
//		if (!(JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind)))
//		{
//			// IPV6関連である可能性がない
//			return param;
//		}

		// 上りマッピング
		HashMap<String, Object> inHashIpv6 = new HashMap<String, Object>();
		HashMap<String, Object> resultHashIpv6 = new HashMap<String, Object>();
		
		inHashIpv6.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);						// サービス契約番号
		inHashIpv6.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_IPV6);	// オプションサービスコード IPV6

		//   @オプションの確認
		// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
		statusCode = callEKK0351B002SC(param, handle, inHashIpv6, resultHashIpv6, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}

		// 下りマッピング
		CAANMsg[] msgList = (CAANMsg[])resultHashIpv6.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
		String op_svc_kei_no = "";
//		String op_svc_kei_stat = "";
		String op_gene_add_dtm = "";
		for(int i = 0 ; i < msgList.length ; i ++)
		{
			HashMap<String, Object> retHash = msgList[i].getMsgData();
			op_svc_kei_no = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);		// オプションサービス契約番号取得
//			op_svc_kei_stat = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);	// オプションサービス契約ステータス取得
			op_gene_add_dtm = (String)retHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM);		// オプションサービス契約世代登録年月日時分秒
			//if ((JKKHakkoSODConstCC.IDO_DIV_NEW.equals(this.ido_div))
			//  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat)))
			//{
			//	continue;
			//}

			String tmp_op_svc_cd = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD);
			if (JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals(tmp_op_svc_cd))
			{
				// 結果の格納
				this.op_svc_kei_no_ipv6 = op_svc_kei_no;
				this.op_gadtm_ipv6 = op_gene_add_dtm;

			//	this.sod_pattern_ipv6 = 2;			// 発行するとしたら IPV6 変更に相当する
				// ルータの確認などしながら、条件に応じて IPV6 SOD発行
				jdgIpv6EKK0361A010(handle, param, ucwk_no_param, op_svc_kei_no, op_gene_add_dtm);
			}
		}

		return;
	}
	// 2012-02-29 終了

	/**
	 * 利用停止オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText リクエストデータマップＩＤ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private IRequestParameterReadWrite useStpOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText, HashMap<String, Object> sodMap) throws Throwable
	{
		// (2)-Aサービス契約の確認
		// サービス種類判定
		// IT2-2016-0000004 2016/02/22 MOD START
		//String svc_kind = jdgSvcKind_PcrsCd();
		String svc_kind = jdgSvcKind();
		// IT2-2016-0000004 2016/02/22 MOD END
		
		// eo光ネット、eo光モバイル、eo光電話、フレッツの場合
		if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) ||
			JKKHakkoSODConstCC.SVC_KIND_MOB.equals(svc_kind) ||
			JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind) ||
			JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals(pcrs_cd))
		{
			// 中断受付オーダ制御処理
			param = stpUkOdrCtrl(handle, param, fixedText, sodMap);
		}
		
		return param;
	}
	
	/**
	 * インターネットサービス新規契約処理<br>
	 * <br>
	 * (1)FTTH認証の新規登録を行う。<br>
	 * (2)Eメールの新規登録を行う。<br>
	 * (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。<br>
	 * (4)メーリングリストのオプションが存在する場合、メーリングリストの新規登録を行う。<br>
	 * (5)ダイヤルアップ接続のオプションが存在する場合、ダイヤルアップ接続の新規登録を行う。<br>
	 * (6)メールエイリアスのサブオプションが存在する場合、Eメール：エイリアスの登録を行う。<br>
	 * (7)メール容量追加のサブオプションが存在する場合、Eメール：メールボックス容量の変更を行う。<br>
	 * (8)メールウィルスチェックのサブオプションが存在する場合、Eメール：ウィルスチェックの登録を行う。<br>
	 * (9)ホームページ容量追加のサブオプションが存在する場合、Myホームページ：HP容量の変更を行う。<br>
	 * (10)ホームページアクセス分析のサブオプションが存在する場合、Myホームページ：アクセス分析の登録を行う。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite newNet(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> sodMap) throws Throwable
	{
		// ※当メソッドは使用されていないため対応しない(ANK-2765-00-00)
		// ST2-2012-0000555 2012/03/30 MOD START
		boolean isFtthNew = true;
		// ST2-2012-0000555 2012/03/30 MOD END
		String pcrsCd = null;
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);	// サービス契約番号
		HashMap<String, Object> eKK0081A010Element = null;
		
		// サービス契約一意照会
		eKK0081A010Element = getSvcKeiList(handle, param, svc_kei_no);
		
		//料金コースコードの取得
		pcrsCd = (String)eKK0081A010Element.get(EKK0081A010CBSMsg1List.PCRS_CD);
		
		// ST2-2012-0000555 2012/03/30 ADD START
		//料金グループコードの取得
		String prcGrpCd = (String)eKK0081A010Element.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// ST2-2012-0000555 2012/03/30 ADD END

		// ST2-2012-0000555 2012/03/30 MOD START
		//料金コースコードがマンションタイプ(プライベート）かを判定
		if(JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1.equals(pcrsCd) || 
				JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2.equals(pcrsCd) || 
				JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER.equals(pcrsCd))
		{
			isFtthNew = false;
		}

		// ADSLかどうかの判定を行う
		else if (JKKHakkoSODConstCC.PRC_GRP_CD_EACCESS.equals(prcGrpCd)
				)	//|| JKKHakkoSODConstCC.PRC_GRP_CD_FLETS.equals(prcGrpCd))	04/05フレッツはOK
		{
			isFtthNew = false;
		}
		// ST2-2012-0000555 2012/03/30 MOD END

		// FTTH認証の新規登録を行う。
		// ST2-2012-0000555 2012/03/30 MOD START
		if (isFtthNew)
		{
			param = addSODFtthNew(handle, param);
		}
		// ST2-2012-0000555 2012/03/30 MOD END

		// Eメールの新規登録を行う。
		// ST2-2012-0001527 2012/08/14 start
		if(eml_flg){
			param = addSODEmailNew(handle, param);
		}
		// ST2-2012-0001527 end

		// URLが設定されている場合
		if (url_flg)
		{
			// Myホームページ情報の新規登録を行う。
			param = addSODHPNew(handle, param);
		}
		// メーリングリストのオプションが存在する場合
		if (mlist_flg)
		{
			// メーリングリストの新規登録を行う。
			param = addSODMListNew(handle, param);
		}
		// ダイヤルアップ接続のオプションが存在する場合
		if (dial_flg)
		{
			// ダイヤルアップ接続の新規登録を行う。
			param = addSODDupNew(handle, param);
		}
		// メールエイリアスのサブオプションが存在する場合
		if (alias_flg)
		{
			// Eメール：エイリアスの登録を行う。
			param = addSODMailAliasAdd(handle, param);
		}
		// メール容量追加のサブオプションが存在する場合
		if (mlcapa_flg_list.size()>0)
		{
			// Eメール：メールボックス容量の変更を行う。
			param = addSODMailCapaChg(handle, param);
		}
		// メールウィルスチェックのサブオプションが存在する場合
		if (mlvirus_flg)
		{
			// Eメール：ウィルスチェックの登録を行う。
			param = addSODVirusChkAdd(handle, param);
		}
		// ホームページ容量追加のサブオプションが存在する場合
		if (hpcapa_flg)
		{
			// Myホームページ：HP容量の変更を行う。
			param = addSODHPCapaChg(handle, param);
		}
		// ホームページアクセス分析のサブオプションが存在する場合
		if (hpaccess_flg)
		{
			// Myホームページ：アクセス分析の登録を行う。
			param = addSODHPAccessAdd(handle, param);
		}

		// BBRが存在する場合
		if (bbr_flg)
		{
			// ▼ 2012/04/20 巻取@残対応
			// ルータ向け接続情報の新規登録を行う。
			param = addSODBBRShka(handle, param);
			// ▲ 2012/04/20 巻取@残対応
		}
		
		return param;
	}
	
	/**
	 * FTTH認証の新規登録処理<br>
	 * <br>
	 * FTTH認証の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODFtthNew(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ※当メソッドは使用されていないため対応しない(ANK-2765-00-00)
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);	// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");						// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
			inMap.put("mlad", "");								// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", "06");					// サービスオーダコード（FTTH認証）
			inMap.put("yokyu_sbt_cd", "02");					// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
			inMap.put("same_trn_no", same_trn_no);				// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", "101");					// オーダ内容コード（FTTH認証・登録）
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);	// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);	// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");						// オプションサービス契約番号
			inMap.put("opsvkei_gadtm", "");						// オプションサービス契約世代登録年月日時分秒（Ｅメール）
			inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
			inMap.put("sbopsvkei_gadtm", "");					// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", "");					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", "");					// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
	
	/**
	 * Eメールの新規登録処理<br>
	 * <br>
	 * Eメールの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODEmailNew(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// ST1-2012-0000319 2012/08/20 start
			for(Iterator it=op_svc_kei_no_ml_map.entrySet().iterator();it.hasNext();){
				Map.Entry<String, String[]> entry = (Map.Entry)it.next();

				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", "");					// サービス契約内訳番号
				inMap.put("op_svc_kei_no", op_svc_kei_no_ml);		// オプションサービス契約番号（Eメール）
				inMap.put("mlad", mlad);							// メールアドレス
				inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", "03");					// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", "02");					// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);				// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
	
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_108);				// オーダ内容コード（メール・登録）
				inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", "");					// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", entry.getKey());	// オプションサービス契約番号（Eメール）
				inMap.put("opsvkei_gadtm", entry.getValue()[0]);		// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号
				inMap.put("sbopsvkei_gadtm", "");				// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
				inMap.put("kktk_svc_kei_no", "");				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", "");				// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST1-2012-0000319 2012/08/20 end
		}
		
		return param;
	}

	/**
	 * Myホームページの新規登録処理<br>
	 * <br>
	 * Myホームページの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODHPNew(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", "");					// サービス契約内訳番号
			inMap.put("op_svc_kei_no", op_svc_kei_no_hp);		// オプションサービス契約番号（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
			inMap.put("mlad", "");								// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", "04");					// サービスオーダコード（WEB）
			inMap.put("yokyu_sbt_cd", "02");					// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
			inMap.put("same_trn_no", same_trn_no);				// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", "121");				// オーダ内容コード（WEB・登録）
			inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", "");					// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", op_svc_kei_no_hp);	// オプションサービス契約番号（Myホームページ）
			inMap.put("opsvkei_gadtm", op_gadtm_hp);		// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号
			inMap.put("sbopsvkei_gadtm", "");				// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", "");				// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", "");				// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}

	/**
	 * メーリングリストの新規登録処理<br>
	 * <br>
	 * メーリングリストの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODMListNew(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// ST1-2012-0000319 2012/08/20 start
			for(Iterator it=op_svc_kei_no_mlist_map.entrySet().iterator();it.hasNext();){
				Map.Entry<String, String> entry = (Map.Entry)it.next();
				
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", "");					// サービス契約内訳番号
				inMap.put("op_svc_kei_no", entry.getKey());	// オプションサービス契約番号（メーリングリスト）
				inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
				inMap.put("mlad", "");								// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", "05");					// サービスオーダコード（ML）
				inMap.put("yokyu_sbt_cd", "02");					// 要求種別コード（新規）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);				// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
	
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", "129");					// オーダ内容コード（ML・登録）
				inMap.put("svc_kei_ucwk_no", "");					// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", "");						// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", entry.getKey());			// オプションサービス契約番号（メーリングリスト）
				inMap.put("opsvkei_gadtm", entry.getValue());		// オプションサービス契約世代登録年月日時分秒（メーリングリスト）
				inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
				inMap.put("sbopsvkei_gadtm", "");					// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
				inMap.put("kktk_svc_kei_no", "");					// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", "");					// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST1-2012-0000319 2012/08/20 end
		}
		
		return param;
	}

	/**
	 * ダイヤルアップの新規登録処理<br>
	 * <br>
	 * ダイヤルアップの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODDupNew(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", "");					// サービス契約内訳番号
			inMap.put("op_svc_kei_no", op_svc_kei_no_dial);		// オプションサービス契約番号（ダイヤルアップ）
			inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
			inMap.put("mlad", "");								// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);						// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", "08");					// サービスオーダコード（ダイアルアップ接続）
			inMap.put("yokyu_sbt_cd", "02");					// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);				// オーダ発行条件コード（即時発行）
			inMap.put("same_trn_no", same_trn_no);				// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", "134");					// オーダ内容コード（ダイヤルアップ接続・登録）
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);	// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);	// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", op_svc_kei_no_dial);		// オプションサービス契約番号（ダイヤルアップ）
			inMap.put("opsvkei_gadtm", op_gadtm_dial);			// オプションサービス契約世代登録年月日時分秒（ダイヤルアップ）
			inMap.put("sbop_svc_kei_no", "");					// サブオプションサービス契約番号
			inMap.put("sbopsvkei_gadtm", "");					// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", "");					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", "");					// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}

	/**
	 * Eメール：エイリアスの登録処理<br>
	 * <br>
	 *  Eメール：エイリアスの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODMailAliasAdd(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// ST1-2012-0000319 2012/08/20 start
			for(Iterator it=sbop_svckeino_alias_map.entrySet().iterator();it.hasNext();){
				Map.Entry<String, String[]> entry = (Map.Entry)it.next();
				String op_svc_kei_no_ml = entry.getKey().split(SEP)[0];
				String sbop_svckeino_alias = entry.getValue()[0];
				String sbop_gadtm_alias = entry.getValue()[1];

				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", "");						// サービス契約内訳番号
				inMap.put("op_svc_kei_no", op_svc_kei_no_ml);			// オプションサービス契約番号（Ｅメール）
				inMap.put("sbop_svc_kei_no", "");						// サブオプションサービス契約番号（メールエイリアス）
				inMap.put("mlad", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[1]);		// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);							// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", "03");						// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", "04");						// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);					// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);					// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
	
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", "110");						// オーダ内容コード（メール・エイリアス登録）
				inMap.put("svc_kei_ucwk_no", "");						// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", "");							// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", op_svc_kei_no_ml);			// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[0]);		// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put("sbop_svc_kei_no", sbop_svckeino_alias);		// サブオプションサービス契約番号（メールエイリアス）
				inMap.put("sbopsvkei_gadtm", sbop_gadtm_alias);			// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
				inMap.put("kktk_svc_kei_no", "");						// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", "");						// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST1-2012-0000319 2012/08/20 end
		}
		
		return param;
	}

	/**
	 * Eメール：メールボックス容量の変更処理<br>
	 * <br>
	 *  Eメール：メールボックス容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODMailCapaChg(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// ST1-2012-0000319 2012/08/20 start
			for(int i=0; i<mlcapa_flg_list.size(); i++){
			
				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
				inMap.put("op_svc_kei_no", mlcapa_flg_list.get(i));	// オプションサービス契約番号（Ｅメール）
				inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号
				inMap.put("mlad", ((String[])op_svc_kei_no_ml_map.get(mlcapa_flg_list.get(i)))[1]);						// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);					// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", "03");				// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", "04");				// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);			// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
	
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", "113");				// オーダ内容コード（メール・メールボックス容量変更）
				inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", "");					// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", mlcapa_flg_list.get(i));	// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", ((String[])op_svc_kei_no_ml_map.get(mlcapa_flg_list.get(i)))[0]);		// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号（メールエイリアス）
				inMap.put("sbopsvkei_gadtm", "");				// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
				inMap.put("kktk_svc_kei_no", "");				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", "");				// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST1-2012-0000319 2012/08/20 end
		}
		
		return param;
	}

	/**
	 * Eメール：ウィルスチェックの登録処理<br>
	 * <br>
	 *  Eメール：ウィルスチェックの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODVirusChkAdd(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// ST1-2012-0000319 2012/08/20 start
			for(Iterator it=sbop_svckeino_mlvirus_map.entrySet().iterator();it.hasNext();){
				Map.Entry<String, String[]> entry = (Map.Entry)it.next();
				String op_svc_kei_no_ml = entry.getKey().split(SEP)[0];
//				String sbop_svckeino_virus = entry.getValue()[0];
//				String sbop_gadtm_virus = entry.getValue()[1];

				// (1) オーダ発行条件登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
				inMap.put("op_svc_kei_no", op_svc_kei_no_ml);	// オプションサービス契約番号（Ｅメール）
				inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号
				inMap.put("mlad", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[1]);		// メールアドレス
				inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);					// オーダ種別コード（ネット）
				inMap.put("svc_order_cd", "03");				// サービスオーダコード（メール）
				inMap.put("yokyu_sbt_cd", "04");				// 要求種別コード（変更）
				inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
				inMap.put("same_trn_no", same_trn_no);			// 同一処理番号
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ発行条件登録実行
				param = executeOdrHakkoJokenAdd(handle, param);
	
				// (2) オーダ情報作成ワーク登録
				// サービスオーダ発行CC作業マップ設定
				inMap.put("odr_naiyo_cd", "114");				// オーダ内容コード（メール・ウイルスチェック登録）
				inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
				inMap.put("svkeiuw_gadtm", "");					// サービス契約内訳世代登録年月日時分秒
				inMap.put("op_svc_kei_no", op_svc_kei_no_ml);	// オプションサービス契約番号（Ｅメール）
				inMap.put("opsvkei_gadtm", ((String[])op_svc_kei_no_ml_map.get(op_svc_kei_no_ml))[0]);		// オプションサービス契約世代登録年月日時分秒（Ｅメール）
				inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号（メールエイリアス）
				inMap.put("sbopsvkei_gadtm", "");				// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
				inMap.put("kktk_svc_kei_no", "");				// 機器提供サービス契約番号
				inMap.put("kktsvkei_gadtm", "");				// 機器提供サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
				// オーダ情報作成ワーク登録実行
				param = executeOdrInfoSakseiWkAdd(handle, param);
			}
			// ST1-2012-0000319 2012/08/20 end
		}
		
		return param;
	}

	/**
	 * Myホームページ：HP容量の変更処理<br>
	 * <br>
	 *  Myホームページ：HP容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODHPCapaChg(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
			inMap.put("op_svc_kei_no", op_svc_kei_no_hp);	// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号
			inMap.put("mlad", "");							// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);					// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", "04");				// サービスオーダコード（WEB）
			inMap.put("yokyu_sbt_cd", "04");				// 要求種別コード（変更）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
			inMap.put("same_trn_no", same_trn_no);			// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", "123");				// オーダ内容コード（WEB・ホームページ容量変更）
			inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", "");					// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", op_svc_kei_no_hp);	// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", op_gadtm_hp);		// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");				// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", "");				// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", "");				// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}

	/**
	 * Myホームページ：アクセス分析の登録処理<br>
	 * <br>
	 *  Myホームページ：アクセス分析の登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODHPAccessAdd(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
			inMap.put("op_svc_kei_no", op_svc_kei_no_hp);	// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号
			inMap.put("mlad", "");							// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);					// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", "04");				// サービスオーダコード（WEB）
			inMap.put("yokyu_sbt_cd", "04");				// 要求種別コード（変更）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
			inMap.put("same_trn_no", same_trn_no);			// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", "124");				// オーダ内容コード（WEB・アクセス分析登録）
			inMap.put("svc_kei_ucwk_no", "");				// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", "");					// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", op_svc_kei_no_hp);	// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", op_gadtm_hp);		// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");				// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");				// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", "");				// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", "");				// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}

// ▼ 2012/04/20 巻取@残対応
	/**
	 * ルータ出荷処理<br>
	 * <br>
	 *  ルータの出荷について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODBBRShka(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);											// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");																// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");															// サブオプションサービス契約番号
			inMap.put("mlad", "");																		// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);								// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ODR_CD_BBR_SHKA_ODR);						// サービスオーダコード（BBR出荷オーダ）
			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);								// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_KKTK_START_JOKEN);	// オーダ発行条件コード（機器提供開始条件）
			// 2012/08/04 ST2-2012-0001474 MOD START BBRのみ同一処理番号に違う値を設定
			String[] sameTrnNo = new String[1];
			getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
			inMap.put("same_trn_no", sameTrnNo[0]);														// 同一処理番号
//			inMap.put("same_trn_no", same_trn_no);														// 同一処理番号
			// 2012/08/04 ST2-2012-0001474 MOD END
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_159);		// オーダ内容コード（ネット・BBR出荷）
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);					// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");										// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", "");										// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");									// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");									// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);					// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
	/**
	 * ルータ返品処理<br>
	 * <br>
	 *  ルータの返品について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODBBRHmpin(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);											// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");																// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");															// サブオプションサービス契約番号
			inMap.put("mlad", "");																		// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_NET);								// オーダ種別コード（ネット）
			inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ODR_CD_KIKI_HMPIN_ODR);					// サービスオーダコード（機器返品オーダ）
			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);								// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_KKTK_END_JOKEN);		// オーダ発行条件コード（機器提供終了条件）
			inMap.put("same_trn_no", same_trn_no);														// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_160);		// オーダ内容コード（ネット・BBR出荷）
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);					// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");										// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", "");										// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");									// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");									// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);					// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
	/**
	 * 光電話・VA変更処理<br>
	 * <br>
	 *  VAの出荷について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODTelVAChange(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);											// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");																// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");															// サブオプションサービス契約番号
			inMap.put("mlad", "");																		// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);								// オーダ種別コード（電話）
			inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ODR_CD_TEL_VA_CHG_ODR);					// サービスオーダコード（光電話・VA変更オーダ）
			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);								// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_KKTK_START_JOKEN);	// オーダ発行条件コード（機器提供開始条件）
			inMap.put("same_trn_no", same_trn_no);														// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_257);		// オーダ内容コード（光電話・VA変更）
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);					// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);					// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");										// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", "");										// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");									// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");									// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);					// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
	/**
	 * VA返品処理<br>
	 * <br>
	 *  VAの返品について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODVAHmpin(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);											// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");																// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");															// サブオプションサービス契約番号
			inMap.put("mlad", "");																		// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);								// オーダ種別コード（電話）
			inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ODR_CD_KIKI_HMPIN_ODR);					// サービスオーダコード（機器返品オーダ）
			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW);								// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_KKTK_END_JOKEN);		// オーダ発行条件コード（機器提供終了条件）
			inMap.put("same_trn_no", same_trn_no);														// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", JKKHakkoSODConstCC.ODR_NAIYO_CD_258);		// オーダ内容コード（光電話・VA返品）
			inMap.put("svc_kei_ucwk_no", "");									// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", "");										// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");										// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", "");										// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");									// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");									// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);					// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
// ▲ 2012/04/20 巻取@残対応

	/**
	 * 光電話の新規登録処理<br>
	 * <br>
	 * 光電話の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSODTelNew(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", "");		// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");			// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");		// サブオプションサービス契約番号
			inMap.put("mlad", "");					// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);			// オーダ種別コード（電話）
			inMap.put("svc_order_cd", "Z1");		// サービスオーダコード（光電話新規契約オーダ）
			inMap.put("yokyu_sbt_cd", "02");		// 要求種別コード（新規）
			inMap.put("odr_hakko_joken_cd", "11");	// オーダ発行条件コード（光電話サービス開始条件）
			inMap.put("same_trn_no", same_trn_no);	// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", "201");			// オーダ内容コード（光電話・新規登録）
			inMap.put("svc_kei_ucwk_no", "");			// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", "");				// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");				// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", "");				// オプションサービス契約世代登録年月日時分秒（Ｅメール）
			inMap.put("sbop_svc_kei_no", "");			// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");			// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
			inMap.put("kktk_svc_kei_no", "");			// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", "");			// 機器提供サービス契約世代登録年月日時分秒
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
	
	/**
	 * 上りマッピング（オーダ発行条件登録）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK1081D010CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK1081D010";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK1081D010CBSMsg.class.getName());
		HashMap inMap = null;

		// テンプレートID
		template.set(EKK1081D010CBSMsg.TEMPLATEID, template_id);

		// 機能コード（チェック＆登録）
		template.set(EKK1081D010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);

		// オーダ発行条件登録マップ.サービス契約番号 → サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK1081D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// オーダ発行条件登録マップ.サービス契約内訳番号 → サービス契約内訳番号
		if (inMap == null || inMap.get("svc_kei_ucwk_no") == null || "".equals(inMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK1081D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"));
		}

		// オーダ発行条件登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号
		if (inMap == null || inMap.get("kktk_svc_kei_no") == null || "".equals(inMap.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK1081D010CBSMsg.KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.KKTK_SVC_KEI_NO, (String)inMap.get("kktk_svc_kei_no"));
		}

		// オーダ発行条件登録マップ.オプションサービス契約番号 → オプションサービス契約番号
		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK1081D010CBSMsg.OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		// オーダ発行条件登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号
		if (inMap == null || inMap.get("sbop_svc_kei_no") == null || "".equals(inMap.get("sbop_svc_kei_no")))
		{
			template.setNull(EKK1081D010CBSMsg.SBOP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SBOP_SVC_KEI_NO, (String)inMap.get("sbop_svc_kei_no"));
		}

		// オーダ発行条件登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if (inMap == null || inMap.get("seiopsvc_kei_no") == null || "".equals(inMap.get("seiopsvc_kei_no")))
		{
			template.setNull(EKK1081D010CBSMsg.SEIOPSVC_KEI_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SEIOPSVC_KEI_NO, (String)inMap.get("seiopsvc_kei_no"));
		}

		// オーダ発行条件登録マップ.オーダ種別コード → オーダ種別コード
		if (inMap == null || inMap.get("order_sbt_cd") == null || "".equals(inMap.get("order_sbt_cd")))
		{
			template.setNull(EKK1081D010CBSMsg.ORDER_SBT_CD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.ORDER_SBT_CD, (String)inMap.get("order_sbt_cd"));
		}

		// オーダ発行条件登録マップ.サービスオーダコード → サービスオーダコード
		if (inMap == null || inMap.get("svc_order_cd") == null || "".equals(inMap.get("svc_order_cd")))
		{
			template.setNull(EKK1081D010CBSMsg.SVC_ORDER_CD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SVC_ORDER_CD, (String)inMap.get("svc_order_cd"));
		}

		// オーダ発行条件登録マップ.要求種別コード → 要求種別コード
		if (inMap == null || inMap.get("yokyu_sbt_cd") == null || "".equals(inMap.get("yokyu_sbt_cd")))
		{
			template.setNull(EKK1081D010CBSMsg.YOKYU_SBT_CD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.YOKYU_SBT_CD, (String)inMap.get("yokyu_sbt_cd"));
		}

		// オーダ発行条件登録マップ.オーダ発行条件コード → オーダ発行条件コード
		if (inMap == null || inMap.get("odr_hakko_joken_cd") == null || "".equals(inMap.get("odr_hakko_joken_cd")))
		{
			template.setNull(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD, (String)inMap.get("odr_hakko_joken_cd"));
		}

		// オーダ発行条件登録マップ.同一処理番号 → 同一処理番号
		if (inMap == null || inMap.get("same_trn_no") == null || "".equals(inMap.get("same_trn_no")))
		{
			template.setNull(EKK1081D010CBSMsg.SAME_TRN_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SAME_TRN_NO, (String)inMap.get("same_trn_no"));
		}

		// オーダ発行条件登録マップ.宅内機器型式コード → 宅内機器型式コード
		if (inMap == null || inMap.get("taknkiki_model_cd") == null || "".equals(inMap.get("taknkiki_model_cd")))
		{
			template.setNull(EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD, (String)inMap.get("taknkiki_model_cd"));
		}

		// オーダ発行条件登録マップ.機器製造番号 → 機器製造番号
		if (inMap == null || inMap.get("kiki_seizo_no") == null || "".equals(inMap.get("kiki_seizo_no")))
		{
			template.setNull(EKK1081D010CBSMsg.KIKI_SEIZO_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.KIKI_SEIZO_NO, (String)inMap.get("kiki_seizo_no"));
		}

		// オーダ発行条件登録マップ.メールアドレス → メールアドレス
		if (inMap == null || inMap.get("mlad") == null || "".equals(inMap.get("mlad")))
		{
			template.setNull(EKK1081D010CBSMsg.MLAD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.MLAD, (String)inMap.get("mlad"));
		}

		// オーダ発行条件登録マップ.スポットログインＳＹＳＩＤ → スポットログインＳＹＳＩＤ
		if (inMap == null || inMap.get("spot_login_sysid") == null || "".equals(inMap.get("spot_login_sysid")))
		{
			template.setNull(EKK1081D010CBSMsg.SPOT_LOGIN_SYSID);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SPOT_LOGIN_SYSID, (String)inMap.get("spot_login_sysid"));
		}

		// オーダ発行条件登録マップ.送信依頼完了年月日時分秒 → 送信依頼完了年月日時分秒
		if (inMap == null || inMap.get("send_req_fin_dtm") == null || "".equals(inMap.get("send_req_fin_dtm")))
		{
			template.setNull(EKK1081D010CBSMsg.SEND_REQ_FIN_DTM);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SEND_REQ_FIN_DTM, (String)inMap.get("send_req_fin_dtm"));
		}
		
// OM-2014-0002802対応 20141011 星野 ADD START
		// サービス契約回線内訳番号
		if (inMap == null || inMap.get("svc_kei_kaisen_ucwk_no") == null || "".equals(inMap.get("svc_kei_kaisen_ucwk_no")))
		{
			template.setNull(EKK1081D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String)inMap.get("svc_kei_kaisen_ucwk_no"));
		}
// OM-2014-0002802対応 20141011 星野 ADD END
		// ANK-0099-00-00 2012/05/25 kitatani start
		// 契約サービス制御要求オーダ識別コード
		if (inMap == null || inMap.get("kei_svc_ctl_yokyu_odr_skcd") == null || "".equals(inMap.get("kei_svc_ctl_yokyu_odr_skcd")))
		{
			template.setNull(EKK1081D010CBSMsg.KEI_SVC_CTL_YOKYU_ODR_SKCD);
		}
		else
		{
			template.set(EKK1081D010CBSMsg.KEI_SVC_CTL_YOKYU_ODR_SKCD, (String)inMap.get("kei_svc_ctl_yokyu_odr_skcd"));
		}
		// ANK-0099-00-00 2012/05/25 kitatani end

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 下りマッピング（オーダ発行条件登録）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK1081D010CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null) 
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		// オーダ発行条件登録マップ.オーダ発行条件番号 ← オーダ発行条件番号
		if (parentTemplate.isNull(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO))
		{
			dataMap.put("odr_hakko_joken_no", "");
		}
		else
		{
			dataMap.put("odr_hakko_joken_no", parentTemplate.getString(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO));
		}

		// エラー情報の設定
		param = editErrorInfo_EKK1081D010CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK1081D010CBSMsg.STATUS)));
		}

		return param;
	}
	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（オーダ発行条件登録）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK1081D010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK1081D010CBSMsg.STATUS);
		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 inMap = null;
		
		// 作業項目領域
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// オーダ発行条件登録マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK1081D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SVC_KEI_UCWK_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_ucwk_no_err"))
			{
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK1081D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.KKTK_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("kktk_svc_kei_no_err"))
			{
				inMap.put("kktk_svc_kei_no_err", template.getString(EKK1081D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK1081D010CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SBOP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("sbop_svc_kei_no_err"))
			{
				inMap.put("sbop_svc_kei_no_err", template.getString(EKK1081D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SEIOPSVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiopsvc_kei_no_err"))
			{
				inMap.put("seiopsvc_kei_no_err", template.getString(EKK1081D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.オーダ種別コード → オーダ種別コード のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.ORDER_SBT_CD_ERR))
		{
			if (!inMap.containsKey("order_sbt_cd_err"))
			{
				inMap.put("order_sbt_cd_err", template.getString(EKK1081D010CBSMsg.ORDER_SBT_CD_ERR));
			}
		}
		// オーダ発行条件登録マップ.サービスオーダコード → サービスオーダコード のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SVC_ORDER_CD_ERR))
		{
			if (!inMap.containsKey("svc_order_cd_err"))
			{
				inMap.put("svc_order_cd_err", template.getString(EKK1081D010CBSMsg.SVC_ORDER_CD_ERR));
			}
		}
		// オーダ発行条件登録マップ.要求種別コード → 要求種別コード のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.YOKYU_SBT_CD_ERR))
		{
			if (!inMap.containsKey("yokyu_sbt_cd_err"))
			{
				inMap.put("yokyu_sbt_cd_err", template.getString(EKK1081D010CBSMsg.YOKYU_SBT_CD_ERR));
			}
		}
		// オーダ発行条件登録マップ.オーダ発行条件コード → オーダ発行条件コード のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD_ERR))
		{
			if (!inMap.containsKey("odr_hakko_joken_cd_err"))
			{
				inMap.put("odr_hakko_joken_cd_err", template.getString(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD_ERR));
			}
		}
		// オーダ発行条件登録マップ.同一処理番号 → 同一処理番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SAME_TRN_NO_ERR))
		{
			if (!inMap.containsKey("same_trn_no_err"))
			{
				inMap.put("same_trn_no_err", template.getString(EKK1081D010CBSMsg.SAME_TRN_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.宅内機器型式コード → 宅内機器型式コード のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD_ERR))
		{
			if (!inMap.containsKey("taknkiki_model_cd_err"))
			{
				inMap.put("taknkiki_model_cd_err", template.getString(EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD_ERR));
			}
		}
		// オーダ発行条件登録マップ.機器製造番号 → 機器製造番号 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.KIKI_SEIZO_NO_ERR))
		{
			if (!inMap.containsKey("kiki_seizo_no_err"))
			{
				inMap.put("kiki_seizo_no_err", template.getString(EKK1081D010CBSMsg.KIKI_SEIZO_NO_ERR));
			}
		}
		// オーダ発行条件登録マップ.メールアドレス → メールアドレス のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.MLAD_ERR))
		{
			if (!inMap.containsKey("mlad_err"))
			{
				inMap.put("mlad_err", template.getString(EKK1081D010CBSMsg.MLAD_ERR));
			}
		}
		// オーダ発行条件登録マップ.スポットログインＳＹＳＩＤ → スポットログインＳＹＳＩＤ のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SPOT_LOGIN_SYSID_ERR))
		{
			if (!inMap.containsKey("spot_login_sysid_err"))
			{
				inMap.put("spot_login_sysid_err", template.getString(EKK1081D010CBSMsg.SPOT_LOGIN_SYSID_ERR));
			}
		}
		// オーダ発行条件登録マップ.送信依頼完了年月日時分秒 → 送信依頼完了年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1081D010CBSMsg.SEND_REQ_FIN_DTM_ERR))
		{
			if (!inMap.containsKey("send_req_fin_dtm_err"))
			{
				inMap.put("send_req_fin_dtm_err", template.getString(EKK1081D010CBSMsg.SEND_REQ_FIN_DTM_ERR));
			}
		}
		return param;
	}
	
	/**
	 * 上りマッピング（オーダ情報作成ワーク登録）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK1551D010CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK1551D010";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK1551D010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK1551D010CBSMsg.TEMPLATEID, template_id);

		// 機能コード（チェック＆登録）
		template.set(EKK1551D010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// オーダ情報作成ワーク登録.オーダ発行条件番号 → オーダ発行条件番号
		if (inMap == null || inMap.get("odr_hakko_joken_no") == null || "".equals(inMap.get("odr_hakko_joken_no")))
		{
			template.setNull(EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO, (String)inMap.get("odr_hakko_joken_no"));
		}

		// オーダ情報作成ワーク登録.オーダ内容コード → オーダ内容コード
		if (inMap == null || inMap.get("odr_naiyo_cd") == null || "".equals(inMap.get("odr_naiyo_cd")))
		{
			template.setNull(EKK1551D010CBSMsg.ODR_NAIYO_CD);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.ODR_NAIYO_CD, (String)inMap.get("odr_naiyo_cd"));
		}

		// オーダ情報作成ワーク登録.サービス契約番号 → サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK1551D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// オーダ情報作成ワーク登録.サービス契約世代登録年月日時分秒 → サービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("svkei_gadtm") == null || "".equals(inMap.get("svkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.SVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SVKEI_GADTM, (String)inMap.get("svkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.サービス契約内訳番号 → サービス契約内訳番号
		if (inMap == null || inMap.get("svc_kei_ucwk_no") == null || "".equals(inMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK1551D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"));
		}

		// オーダ情報作成ワーク登録.サービス契約内訳世代登録年月日時分秒 → サービス契約内訳世代登録年月日時分秒
		if (inMap == null || inMap.get("svkeiuw_gadtm") == null || "".equals(inMap.get("svkeiuw_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.SVKEIUW_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SVKEIUW_GADTM, (String)inMap.get("svkeiuw_gadtm"));
		}

		// オーダ情報作成ワーク登録.機器提供サービス契約番号 → 機器提供サービス契約番号
		if (inMap == null || inMap.get("kktk_svc_kei_no") == null || "".equals(inMap.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK1551D010CBSMsg.KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.KKTK_SVC_KEI_NO, (String)inMap.get("kktk_svc_kei_no"));
		}

		// オーダ情報作成ワーク登録.機器提供サービス契約世代登録年月日時分秒 → 機器提供サービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("kktsvkei_gadtm") == null || "".equals(inMap.get("kktsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.KKTSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.KKTSVKEI_GADTM, (String)inMap.get("kktsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.オプションサービス契約番号 → オプションサービス契約番号
		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK1551D010CBSMsg.OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		// オーダ情報作成ワーク登録.オプションサービス契約世代登録年月日時分秒 → オプションサービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("opsvkei_gadtm") == null || "".equals(inMap.get("opsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.OPSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.OPSVKEI_GADTM, (String)inMap.get("opsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.サブオプションサービス契約番号 → サブオプションサービス契約番号
		if (inMap == null || inMap.get("sbop_svc_kei_no") == null || "".equals(inMap.get("sbop_svc_kei_no")))
		{
			template.setNull(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, (String)inMap.get("sbop_svc_kei_no"));
		}

		// オーダ情報作成ワーク登録.サブオプションサービス契約世代登録年月日時分秒 → サブオプションサービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("sbopsvkei_gadtm") == null || "".equals(inMap.get("sbopsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.SBOPSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SBOPSVKEI_GADTM, (String)inMap.get("sbopsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if (inMap == null || inMap.get("seiopsvc_kei_no") == null || "".equals(inMap.get("seiopsvc_kei_no")))
		{
			template.setNull(EKK1551D010CBSMsg.SEIOPSVC_KEI_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SEIOPSVC_KEI_NO, (String)inMap.get("seiopsvc_kei_no"));
		}

		// オーダ情報作成ワーク登録.請求オプションサービス契約世代登録年月日時分秒 → 請求オプションサービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("seiopsvkei_gadtm") == null || "".equals(inMap.get("seiopsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.SEIOPSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.SEIOPSVKEI_GADTM, (String)inMap.get("seiopsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.付加情報契約番号 → 付加情報契約番号
		if (inMap == null || inMap.get("huka_inf_kei_no") == null || "".equals(inMap.get("huka_inf_kei_no")))
		{
			template.setNull(EKK1551D010CBSMsg.HUKA_INF_KEI_NO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.HUKA_INF_KEI_NO, (String)inMap.get("huka_inf_kei_no"));
		}

		// オーダ情報作成ワーク登録.付加情報契約世代登録年月日時分秒 → 付加情報契約世代登録年月日時分秒
		if (inMap == null || inMap.get("huka_inf_kei_gadtm") == null || "".equals(inMap.get("huka_inf_kei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.HUKA_INF_KEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.HUKA_INF_KEI_GADTM, (String)inMap.get("huka_inf_kei_gadtm"));
		}

		// オーダ情報作成ワーク登録.変更前サービス契約世代登録年月日時分秒 → 変更前サービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("chbf_svkei_gadtm") == null || "".equals(inMap.get("chbf_svkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.CHBF_SVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.CHBF_SVKEI_GADTM, (String)inMap.get("chbf_svkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.変更前サービス契約内訳世代登録年月日時分秒 → 変更前サービス契約内訳世代登録年月日時分秒
		if (inMap == null || inMap.get("chbf_svkeiuw_gadtm") == null || "".equals(inMap.get("chbf_svkeiuw_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.CHBF_SVKEIUW_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.CHBF_SVKEIUW_GADTM, (String)inMap.get("chbf_svkeiuw_gadtm"));
		}

		// オーダ情報作成ワーク登録.変更前機器提供サービス契約世代登録年月日時分秒 → 変更前機器提供サービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("chbf_kktsvkei_gadtm") == null || "".equals(inMap.get("chbf_kktsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.CHBF_KKTSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.CHBF_KKTSVKEI_GADTM, (String)inMap.get("chbf_kktsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.変更前オプションサービス契約世代登録年月日時分秒 → 変更前オプションサービス契約世代登録年月日時分秒
		if (inMap == null || inMap.get("chbf_opsvkei_gadtm") == null || "".equals(inMap.get("chbf_opsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.CHBF_OPSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.CHBF_OPSVKEI_GADTM, (String)inMap.get("chbf_opsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.変更前サブオプション契約世代登録年月日時分秒 → 変更前サブオプション契約世代登録年月日時分秒
		if (inMap == null || inMap.get("chbf_sbopsvkei_gadtm") == null || "".equals(inMap.get("chbf_sbopsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.CHBF_SBOPSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.CHBF_SBOPSVKEI_GADTM, (String)inMap.get("chbf_sbopsvkei_gadtm"));
		}

		// オーダ情報作成ワーク登録.変更前請求オプション契約世代登録年月日時分秒 → 変更前請求オプション契約世代登録年月日時分秒
		if (inMap == null || inMap.get("chbf_seiopsvkei_gadtm") == null || "".equals(inMap.get("chbf_seiopsvkei_gadtm")))
		{
			template.setNull(EKK1551D010CBSMsg.CHBF_SEIOPSVKEI_GADTM);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.CHBF_SEIOPSVKEI_GADTM, (String)inMap.get("chbf_seiopsvkei_gadtm"));
		}
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
		// オーダ情報作成ワーク登録.機器オプションサービス契約1 → 機器オプションサービス契約1（ルータ機能）
		if (inMap == null || StringUtils.isEmpty((String)inMap.get("kkop_svc_kei_no_1")))
		{
			template.setNull(EKK1551D010CBSMsg.KKOP_SVC_KEI_NO_1);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.KKOP_SVC_KEI_NO_1, (String)inMap.get("kkop_svc_kei_no_1"));
		}

		// オーダ情報作成ワーク登録.機器オプションサービス契約世代登録年月日1 → 機器オプションサービス契約世代登録年月日1（ルータ機能）
		if (inMap == null || StringUtils.isEmpty((String)inMap.get("kko_svkei_gadtm_1")))
		{
			template.setNull(EKK1551D010CBSMsg.KKOSVKEI_GADTM_1);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.KKOSVKEI_GADTM_1, (String)inMap.get("kko_svkei_gadtm_1"));
		}

		// オーダ情報作成ワーク登録.機器オプションサービス契約2 → 機器オプションサービス契約2（VA）
		if (inMap == null || StringUtils.isEmpty((String)inMap.get("kkop_svc_kei_no_2")))
		{
			template.setNull(EKK1551D010CBSMsg.KKOP_SVC_KEI_NO_2);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.KKOP_SVC_KEI_NO_2, (String)inMap.get("kkop_svc_kei_no_2"));
		}

		// オーダ情報作成ワーク登録.機器オプションサービス契約世代登録年月日2 → 機器オプションサービス契約世代登録年月日2（VA機能）
		if (inMap == null || StringUtils.isEmpty((String)inMap.get("kko_svkei_gadtm_2")))
		{
			template.setNull(EKK1551D010CBSMsg.KKOSVKEI_GADTM_2);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.KKOSVKEI_GADTM_2, (String)inMap.get("kko_svkei_gadtm_2"));
		}
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD START
		// オーダ情報作成ワーク登録.電話番号 → 電話番号
		if (inMap == null || inMap.get("telno") == null || "".equals(inMap.get("telno")))
		{
			template.setNull(EKK1551D010CBSMsg.TELNO);
		}
		else
		{
			template.set(EKK1551D010CBSMsg.TELNO, (String)inMap.get("telno"));
		}
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD END
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 下りマッピング（オーダ情報作成ワーク登録）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK1551D010CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}

		// オーダ情報作成ワーク登録.オーダ情報作成ワーク番号 ← オーダ情報作成ワーク番号
		if (parentTemplate.isNull(EKK1551D010CBSMsg.ODR_INF_SKSI_WK_NO))
		{
			dataMap.put("odr_inf_sksi_wk_no", "");
		}
		else
		{
			dataMap.put("odr_inf_sksi_wk_no", parentTemplate.getString(EKK1551D010CBSMsg.ODR_INF_SKSI_WK_NO));
		}

		// エラー情報の設定
		param = editErrorInfo_EKK1551D010CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK1551D010CBSMsg.STATUS)));
		}
		
		return param;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（オーダ情報作成ワーク登録）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK1551D010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK1551D010CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// オーダ情報作成ワーク登録.オーダ発行条件番号 → オーダ発行条件番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO_ERR))
		{
			if (!inMap.containsKey("odr_hakko_joken_no_err"))
			{
				inMap.put("odr_hakko_joken_no_err", template.getString(EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.オーダ内容コード → オーダ内容コード のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.ODR_NAIYO_CD_ERR))
		{
			if (!inMap.containsKey("odr_naiyo_cd_err"))
			{
				inMap.put("odr_naiyo_cd_err", template.getString(EKK1551D010CBSMsg.ODR_NAIYO_CD_ERR));
			}
		}
		// オーダ情報作成ワーク登録.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK1551D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.サービス契約世代登録年月日時分秒 → サービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("svkei_gadtm_err"))
			{
				inMap.put("svkei_gadtm_err", template.getString(EKK1551D010CBSMsg.SVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SVC_KEI_UCWK_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_ucwk_no_err"))
			{
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK1551D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.サービス契約内訳世代登録年月日時分秒 → サービス契約内訳世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SVKEIUW_GADTM_ERR))
		{
			if (!inMap.containsKey("svkeiuw_gadtm_err"))
			{
				inMap.put("svkeiuw_gadtm_err", template.getString(EKK1551D010CBSMsg.SVKEIUW_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.KKTK_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("kktk_svc_kei_no_err"))
			{
				inMap.put("kktk_svc_kei_no_err", template.getString(EKK1551D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.機器提供サービス契約世代登録年月日時分秒 → 機器提供サービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.KKTSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("kktsvkei_gadtm_err"))
			{
				inMap.put("kktsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.KKTSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK1551D010CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.オプションサービス契約世代登録年月日時分秒 → オプションサービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.OPSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("opsvkei_gadtm_err"))
			{
				inMap.put("opsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.OPSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("sbop_svc_kei_no_err"))
			{
				inMap.put("sbop_svc_kei_no_err", template.getString(EKK1551D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.サブオプションサービス契約世代登録年月日時分秒 → サブオプションサービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SBOPSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("sbopsvkei_gadtm_err"))
			{
				inMap.put("sbopsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.SBOPSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SEIOPSVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiopsvc_kei_no_err"))
			{
				inMap.put("seiopsvc_kei_no_err", template.getString(EKK1551D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.請求オプションサービス契約世代登録年月日時分秒 → 請求オプションサービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.SEIOPSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("seiopsvkei_gadtm_err"))
			{
				inMap.put("seiopsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.SEIOPSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.付加情報契約番号 → 付加情報契約番号 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.HUKA_INF_KEI_NO_ERR))
		{
			if (!inMap.containsKey("huka_inf_kei_no_err"))
			{
				inMap.put("huka_inf_kei_no_err", template.getString(EKK1551D010CBSMsg.HUKA_INF_KEI_NO_ERR));
			}
		}
		// オーダ情報作成ワーク登録.付加情報契約世代登録年月日時分秒 → 付加情報契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.HUKA_INF_KEI_GADTM_ERR))
		{
			if (!inMap.containsKey("huka_inf_kei_gadtm_err"))
			{
				inMap.put("huka_inf_kei_gadtm_err", template.getString(EKK1551D010CBSMsg.HUKA_INF_KEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.変更前サービス契約世代登録年月日時分秒 → 変更前サービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.CHBF_SVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("chbf_svkei_gadtm_err"))
			{
				inMap.put("chbf_svkei_gadtm_err", template.getString(EKK1551D010CBSMsg.CHBF_SVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.変更前サービス契約内訳世代登録年月日時分秒 → 変更前サービス契約内訳世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.CHBF_SVKEIUW_GADTM_ERR))
		{
			if (!inMap.containsKey("chbf_svkeiuw_gadtm_err"))
			{
				inMap.put("chbf_svkeiuw_gadtm_err", template.getString(EKK1551D010CBSMsg.CHBF_SVKEIUW_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.変更前機器提供サービス契約世代登録年月日時分秒 → 変更前機器提供サービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.CHBF_KKTSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("chbf_kktsvkei_gadtm_err"))
			{
				inMap.put("chbf_kktsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.CHBF_KKTSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.変更前オプションサービス契約世代登録年月日時分秒 → 変更前オプションサービス契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.CHBF_OPSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("chbf_opsvkei_gadtm_err"))
			{
				inMap.put("chbf_opsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.CHBF_OPSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.変更前サブオプション契約世代登録年月日時分秒 → 変更前サブオプション契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.CHBF_SBOPSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("chbf_sbopsvkei_gadtm_err"))
			{
				inMap.put("chbf_sbopsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.CHBF_SBOPSVKEI_GADTM_ERR));
			}
		}
		// オーダ情報作成ワーク登録.変更前請求オプション契約世代登録年月日時分秒 → 変更前請求オプション契約世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK1551D010CBSMsg.CHBF_SEIOPSVKEI_GADTM_ERR))
		{
			if (!inMap.containsKey("chbf_seiopsvkei_gadtm_err"))
			{
				inMap.put("chbf_seiopsvkei_gadtm_err", template.getString(EKK1551D010CBSMsg.CHBF_SEIOPSVKEI_GADTM_ERR));
			}
		}
		return param;
	}
	
	/**
	 * 同一処理番号採番処理<br>
	 * <br>
	 * 同一処理番号採番サービスインターフェイスにより<br>
	 * 同一処理番号を採番します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getSameTrnNo(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK1081C011CBS(param);
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK1081C011CBS(result, param);
		
		// 同一処理番号取得
		same_trn_no = "";
		HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap != null)
		{
			same_trn_no = (String)dataMap.get("same_trn_no");
		}
		
		return param;
	}
	/**
	 * サービス契約一意照会処理<br>
	 * <br>
	 * サービス契約一意照会サービスインターフェイスにより<br>
	 * サービス契約情報（世代登録年月日時分秒）を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return サービス契約世代登録年月日時分秒
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getSvcKeiInfo(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK0081A010CBS(param);
		HashMap<String, Object> resultHash = new HashMap<String, Object>();
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK0081A010CBS(result, param);
		
		// 世代登録年月日時分秒取得
		HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap != null)
		{
			ArrayList dataList = (ArrayList)dataMap.get("EKK0081A010CBSMsg1List");
			if (dataList.size() > 0)
			{
				HashMap childMap = (HashMap)dataList.get(0);
				if (childMap != null)
				{
					resultHash.put("gene_add_dtm", (String)childMap.get("gene_add_dtm"));
					resultHash.put("mskm_dtl_no", (String)childMap.get("mskm_dtl_no"));
					resultHash.put("prc_grp_cd", (String)childMap.get("prc_grp_cd"));
					resultHash.put("pcrs_cd", (String)childMap.get("pcrs_cd"));
					resultHash.put("svc_kei_stat", (String)childMap.get("svc_kei_stat"));
					resultHash.put("svc_pause_ymd", (String)childMap.get("svc_pause_ymd"));
					resultHash.put("svc_pause_rls_ymd", (String)childMap.get("svc_pause_rls_ymd"));
					resultHash.put("pause_stp_cd", (String)childMap.get("pause_stp_cd"));
					// ANK-2765-00-00 ADD START
					resultHash.put("pplan_cd", (String)childMap.get("pplan_cd"));
					// ANK-2765-00-00 ADD END
				}
			}
		}

		return resultHash;
	}
	
	/**
	 * サービス契約一意照会
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getSvcKeiList(
			SessionHandle handle, 
			IRequestParameterReadWrite param,
			String svcKeiNo) throws Throwable
	{
		
		// 必要情報の設定
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		HashMap<String, Object> resultHash = new HashMap<String, Object>();
		int statusCode = 0;
		String ope_date = JCCBPCommon.getOpeDate(null);
		
		inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, svcKeiNo);	// サービス契約番号
		inHash.put(JKKHakkoSODConstCC.OPE_DATE, ope_date);		// 運用日
		
		// サービス契約一意照会(機能コード:2)
		statusCode = callEKK0081A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_2);
		
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		
		// 必要情報の取得
		HashMap<String, Object> eKK0081A010Map = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);
		
		return eKK0081A010Map;
		
	}

	/**
	 * オプションサービス契約一覧照会（サービス契約番号）<br>
	 * <br>
	 * オプションサービス契約一覧照会（サービス契約番号）サービスインターフェイスにより<br>
	 * サービス契約番号に紐づくオプションサービス契約の一覧を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getOpSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK0351B002CBS(param);
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK0351B002CBS(result, param);

		// オプションサービスコード判定
		// 取得したオプションサービス契約一覧の件数分繰り返す
		HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap != null)
		{
			ArrayList dataList = (ArrayList)dataMap.get(JKKHakkoSODConstCC.EKK0351B002CBSMSG1LIST);	//"EKK0351B002CBSMsg1List");
			for (int i = 0; i < dataList.size(); i++)
			{
				HashMap childMap = (HashMap)dataList.get(i);
				if (childMap != null)
				{
					String op_svc_cd = (String)childMap.get("op_svc_cd");			// オプションサービスコード
					String op_svc_kei_no = (String)childMap.get("op_svc_kei_no");	// オプションサービス契約番号

					// Ｅメール
					if (JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd))
					{
						// ST2-2012-0001527 2012/08/14 start
						String ido_div = (String)childMap.get("ido_div");	// 異動区分
						if(!JKKHakkoSODConstCC.IDO_DIV_OPHKTGI.equals(ido_div)){
							// ST1-2012-0000319 2012/08/20 start
							// オプションサービス契約番号（Ｅメール）と世代を退避
							String array[] = {getOpSvcKeiGaDtm(handle, param, op_svc_kei_no)};
							op_svc_kei_no_ml_map.put(op_svc_kei_no, array);
							// ST1-2012-0000319 2012/08/20 end
							eml_flg = true;
						}
						// ST2-2012-0001527 2012/08/14 end
					}
					// Ｍｙホームページ
					else if (JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd))
					{
						// オプションサービス契約番号（Ｍｙホームページ）に退避
						op_svc_kei_no_hp = op_svc_kei_no;
						// 世代登録年月日時分秒を取得しオプションサービス契約世代登録年月日時分秒（Ｍｙホームページ）に退避
						op_gadtm_hp = getOpSvcKeiGaDtm(handle, param, op_svc_kei_no);
					}
					// メーリングリスト
					else if (JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd))
					{
						// ST1-2012-0000319 2012/08/20 start
						// オプションサービス契約番号（メーリングリスト）と世代を退避
						op_svc_kei_no_mlist_map.put(op_svc_kei_no, getOpSvcKeiGaDtm(handle, param, op_svc_kei_no));
						// ST1-2012-0000319 2012/08/20 end
						// メーリングリスト存在フラグを「True」にする
						mlist_flg = true;
					}
					// ダイヤルアップ接続
					else if (JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd))
					{
						// オプションサービス契約番号（ダイヤルアップ接続）に退避
						op_svc_kei_no_dial = op_svc_kei_no;
						// 世代登録年月日時分秒を取得しオプションサービス契約世代登録年月日時分秒（ダイヤルアップ）に退避
						op_gadtm_dial = getOpSvcKeiGaDtm(handle, param, op_svc_kei_no);
						// ダイヤルアップ接続存在フラグを「True」にする
						dial_flg = true;
					}
					// マルチセッション
					else if (JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd))
					{
						// オプションサービス契約番号（マルチセッション）に退避
						op_svc_kei_no_mltise = op_svc_kei_no;
						// 世代登録年月日時分秒を取得しオプションサービス契約世代登録年月日時分秒（マルチセッション）に退避
						op_gadtm_mltise = getOpSvcKeiGaDtm(handle, param, op_svc_kei_no);
						// マルチセッション存在フラグを「True」にする
						mltise_flg = true;
					}
					// 固定グローバルＩＰアドレス
					else if (JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(op_svc_cd))
					{
						// オプションサービス契約番号（固定グローバルＩＰアドレス）に退避
						op_svc_kei_no_fixipad = op_svc_kei_no;
						// 世代登録年月日時分秒を取得しオプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス）に退避
						op_gadtm_fixipad = getOpSvcKeiGaDtm(handle, param, op_svc_kei_no);
						// マルチセッション存在フラグを「True」にする
						fixipad_flg = true;
					}
				}
			}
		}

		return param;
	}

	/**
	 * オプションサービス契約一意照会処理<br>
	 * <br>
	 * オプションサービス契約一意照会サービスインターフェイスにより<br>
	 * オプションサービス契約情報（世代登録年月日時分秒）を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param op_svc_kei_no オプションサービス契約番号
	 * @return オプションサービス契約世代登録年月日時分秒
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String getOpSvcKeiGaDtm(SessionHandle handle, IRequestParameterReadWrite param,
			String op_svc_kei_no) throws Throwable
	{
		// サービスオーダ発行CC作業マップ設定
		HashMap iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		iMap.put("op_svc_kei_no", op_svc_kei_no);					// オプションサービス契約番号
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap);

		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK0351A010CBS(param);
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK0351A010CBS(result, param);
		
		// 世代登録年月日時分秒取得
		String opsvckei_gadtm = "";
		HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap != null)
		{
			ArrayList dataList = (ArrayList)dataMap.get("EKK0351A010CBSMsg1List");
			if (dataList.size() > 0)
			{
				HashMap childMap = (HashMap)dataList.get(0);
				if (childMap != null)
				{
					opsvckei_gadtm = (String)childMap.get("gene_add_dtm");
				}
			}
		}

		return opsvckei_gadtm;
	}

	/**
	 * オプションサービス契約＜ISP＞一意照会<br>
	 * <br>
	 * オプションサービス契約＜ISP＞一意照会サービスインターフェイスにより<br>
	 * オプションサービス契約＜ISP＞情報を取得します。<br>
	 * <br>
	 * <li>オプションサービス契約（Ｅメール）
	 * <li>オプションサービス契約（Ｍｙホームページ）
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getOpSvcKeiIsp(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		// オプションサービス契約（Ｅメール）取得
		// サービスオーダ発行CC作業マップ設定
		HashMap iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (iMap != null)
		{
			// 実行判定処理
			// オプションサービス契約番号（Ｅメール）がNULLでない、かつ空文字でない
			// ST1-2012-0000319 2012/08/20 start
			for(Iterator it=op_svc_kei_no_ml_map.entrySet().iterator();it.hasNext();){
				Map.Entry<String, String[]> entry = (Map.Entry)it.next();
				
				iMap.put("op_svc_kei_no", entry.getKey());		// オプションサービス契約番号（Ｅメール）
				// ST1-2012-0000319 2012/08/20 end
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap);
	
				// 上りマッピング
				HashMap<String, Object> paramMap = editInMsg_EKK0361A010CBS(param);
				
				// SC呼び出し部品のインスタンス生成
				//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
				ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
	
				// SC呼出
				Map<?, ?> result = scCall.run(paramMap, handle);
	
				// 下りマッピング
				editResultRP_EKK0361A010CBS(result, param);
				
				// メールアドレス取得
				HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				if (dataMap != null)
				{
					ArrayList dataList = (ArrayList)dataMap.get("EKK0361A010CBSMsg1List");
					if (dataList.size() > 0)
					{
						HashMap childMap = (HashMap)dataList.get(0);
						if (childMap != null)
						{
							// ST1-2012-0000319 2012/08/20 start
							String array[] = {((String[])entry.getValue())[0], (String)childMap.get("mlad")};
							op_svc_kei_no_ml_map.put(entry.getKey(), array);
							// ST1-2012-0000319 2012/08/20 end
						}
					}
					dataList.clear();
					dataMap.put("EKK0361A010CBSMsg1List", dataList);
				}
			}
		}

		// 実行判定処理
		// オプションサービス契約番号（Ｍｙホームページ）がNULLでない、かつ空文字でない
		if (op_svc_kei_no_hp != null && !"".equals(op_svc_kei_no_hp))
		{
			// オプションサービス契約（Ｍｙホームページ）取得
			// サービスオーダ発行CC作業マップ設定
			iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
			
			if (iMap != null)
			{
				iMap.put("op_svc_kei_no", op_svc_kei_no_hp);		// オプションサービス契約番号（Ｍｙホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap);

				// 上りマッピング
				HashMap<String, Object> paramMap = editInMsg_EKK0361A010CBS(param);
				
				// SC呼び出し部品のインスタンス生成
				//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
				ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

				// SC呼出
				Map<?, ?> result = scCall.run(paramMap, handle);

				// 下りマッピング
				editResultRP_EKK0361A010CBS(result, param);
				
				// URL判定
				// 取得したオプションサービス契約＜ISP＞情報のURL（ドメイン）およびURL（アカウント）が
				// NULLでない、かつ空文字でなければ、URL設定フラグを「True」にする。
				HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				if (dataMap != null)
				{
					ArrayList dataList = (ArrayList)dataMap.get("EKK0361A010CBSMsg1List");
					if (dataList.size() > 0)
					{
						HashMap childMap = (HashMap)dataList.get(0);
						if (childMap != null)
						{
							String url_domain = (String)childMap.get("url_domain");
							String url_account = (String)childMap.get("url_account");
							
							if (url_domain != null && !"".equals(url_domain) &&
									url_account != null && !"".equals(url_account))
							{
								url_flg = true;
							}
							
						}
					}
				}
			}
		}
		
		return param;
	}
	
	/**
	 * サブオプションサービス契約一覧照会<br>
	 * <br>
	 * サブオプションサービス契約一覧照会サービスインターフェイスにより<br>
	 * オプションサービス契約番号に紐づくサブオプションサービス契約の一覧を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getSbOpSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		// サブオプションサービス契約一覧（Ｅメール）取得
		// サービスオーダ発行CC作業マップ設定
		HashMap iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (iMap != null)
		{
			// 実行判定処理
			// オプションサービス契約番号（Ｅメール）がNULLでない、かつ空文字でない
			// ST1-2012-0000319 2012/08/20 start
			// オプションサービス契約番号（Ｅメール）がある
			for(Iterator it=op_svc_kei_no_ml_map.entrySet().iterator();it.hasNext();){
				Map.Entry<String, String> entry = (Map.Entry)it.next();
				
				iMap.put("op_svc_kei_no", entry.getKey());		// オプションサービス契約番号（Ｅメール）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap);
	
				// 上りマッピング
				HashMap<String, Object> paramMap = editInMsg_EKK0401B001CBS(param);
				
				// SC呼び出し部品のインスタンス生成
				//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
				ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
				// SC呼出
				Map<?, ?> result = scCall.run(paramMap, handle);
		
				// 下りマッピング
				editResultRP_EKK0401B001CBS(result, param);
				
				// サブオプションサービスコード判定
				// 取得したサブオプションサービス契約一覧の件数分繰り返す
				HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				if (dataMap != null)
				{
					ArrayList dataList = (ArrayList)dataMap.get("EKK0401B001CBSMsg1List");
					for (int i = 0; i < dataList.size(); i++)
					{
						HashMap childMap = (HashMap)dataList.get(i);
						if (childMap != null)
						{
							String sbop_svc_cd = (String)childMap.get("sbop_svc_cd");			// サブオプションサービスコード
							String sbop_svc_kei_no = (String)childMap.get("sbop_svc_kei_no");	// サブオプションサービス契約番号
							String sbopsvkei_gadtm = (String)childMap.get("gene_add_dtm");		// 世代登録年月日時分秒

							// メールエイリアス
							if (JKKHakkoSODConstCC.SBOP_SVC_CD_ALIAS.equals(sbop_svc_cd))
							{
								// サブオプションサービス契約番号（メールエイリアス）と世代を退避
								String array[] = {sbop_svc_kei_no,sbopsvkei_gadtm};
								sbop_svckeino_alias_map.put(entry.getKey()+SEP+i, array);
								// メールエイリアス存在フラグを「True」にする。
								alias_flg = true;
							}
							// メール容量追加
							else if (JKKHakkoSODConstCC.SBOP_SVC_CD_MLCAPA.equals(sbop_svc_cd))
							{
								// メール容量追加存在フラグ
								mlcapa_flg_list.add(sbop_svc_kei_no);
							}
							// メールウィルスチェック
							else if (JKKHakkoSODConstCC.SBOP_SVC_CD_VIRUS.equals(sbop_svc_cd))
							{
								// サブオプションサービス契約番号（メールウィルスチェック）と世代を退避
								String array[] = {sbop_svc_kei_no,sbopsvkei_gadtm};
								sbop_svckeino_mlvirus_map.put(entry.getKey()+SEP+i, array);
								// メールウィルスチェック存在フラグを「True」にする。
								mlvirus_flg = true;
							}
						}
					}
					dataList.clear();
					dataMap.put("EKK0401B001CBSMsg1List", dataList);
				}
			}
			// ST1-2012-0000319 2012/08/20 end
		}
		
		// 実行判定処理
		// オプションサービス契約番号（Ｍｙホームページ）がNULLでない、かつ空文字でない
		if (op_svc_kei_no_hp != null && !"".equals(op_svc_kei_no_hp))
		{
			// サブオプションサービス契約一覧（Ｍｙホームページ）取得
			// サービスオーダ発行CC作業マップ設定
			iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
			
			if (iMap != null)
			{
				iMap.put("op_svc_kei_no", op_svc_kei_no_hp);		// オプションサービス契約番号（Ｍｙホームページ）
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap);

				// 上りマッピング
				HashMap<String, Object> paramMap = editInMsg_EKK0401B001CBS(param);
				
				// SC呼び出し部品のインスタンス生成
				//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
				ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
				// SC呼出
				Map<?, ?> result = scCall.run(paramMap, handle);
		
				// 下りマッピング
				editResultRP_EKK0401B001CBS(result, param);
				
				// サブオプションサービスコード判定
				// 取得したサブオプションサービス契約一覧の件数分繰り返す
				HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				if (dataMap != null)
				{
					ArrayList dataList = (ArrayList)dataMap.get("EKK0401B001CBSMsg1List");
					for (int i = 0; i < dataList.size(); i++)
					{
						HashMap childMap = (HashMap)dataList.get(i);
						if (childMap != null)
						{
							String sbop_svc_cd = (String)childMap.get("sbop_svc_cd");			// サブオプションサービスコード

							// ホームページ容量追加
							if (JKKHakkoSODConstCC.SBOP_SVC_CD_HPCAPA.equals(sbop_svc_cd))
							{
								// ホームページ容量追加存在フラグを「True」にする。
								hpcapa_flg = true;
							}
							// ホームページアクセス分析
							else if (JKKHakkoSODConstCC.SBOP_SVC_CD_HPACCESS.equals(sbop_svc_cd))
							{
								// ホームページアクセス分析存在フラグを「True」にする。
								hpaccess_flg = true;
							}
						}
					}
				}
			}
		}
		return param;
	}
	
	/**
	 * サービス契約内訳一覧照会<br>
	 * <br>
	 * サービス契約内訳一覧照会サービスインターフェイスにより<br>
	 * サービス契約番号に紐づくサービス契約内訳の一覧を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getSvcKeiUtwkList(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK0161B004CBS(param);
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK0161B004CBS(result, param);

		// 取得したサービス契約内訳一覧の件数分繰り返す
		HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap != null)
		{
			ArrayList dataList = (ArrayList)dataMap.get("EKK0161B004CBSMsg1List");
			if (dataList.size() > 0)
			{
				svc_kei_ucwk_no = new String[dataList.size()];
				svc_kei_ucwk_gadtm = new String[dataList.size()];
			}
			else
			{
				svc_kei_ucwk_no = new String[1];
				svc_kei_ucwk_no[0] = "";
				svc_kei_ucwk_gadtm = new String[1];
				svc_kei_ucwk_gadtm[0] = "";
			}
			// ST2-2012-0000361 2012/03/12 ADD START
			int idx = 0;
			// ST2-2012-0000361 2012/03/12 ADD END
			for (int i = 0; i < dataList.size(); i++)
			{
				HashMap childMap = (HashMap)dataList.get(i);
				if (childMap != null)
				{
					// ST2-2012-0000361 2012/03/12 ADD START
					// キャンセル済、解約済の場合は対象としない
					String svcKeiUcwkStat = (String)childMap.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
					if (JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(svcKeiUcwkStat)
							|| JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(svcKeiUcwkStat))
					{
						continue;
				}
					// ST2-2012-0000361 2012/03/12 ADD END

					// ST2-2012-0000361 2012/03/12 MOD START
					svc_kei_ucwk_no[idx] = (String)childMap.get("svc_kei_ucwk_no");
					svc_kei_ucwk_gadtm[idx] = (String)childMap.get("gene_add_dtm");

				// 料金コースを取得
				String pcrsCd = (String)childMap.get("pcrs_cd");

				// WiFiの内訳の添え字を保持する
				if (JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals(pcrsCd))
				{
						index_wifi = idx;
				}

				// WiMaxの内訳の添え字を保持する
				if (JKKHakkoSODConstCC.PCRS_CD_WIMAX.equals(pcrsCd))
				{
						index_cui = idx;
						index_dev = idx;
					}
					idx++;
					// ST2-2012-0000361 2012/03/12 MOD END
				}
			}
		}
		else
		{
			svc_kei_ucwk_no = new String[1];
			svc_kei_ucwk_no[0] = "";
			svc_kei_ucwk_gadtm = new String[1];
			svc_kei_ucwk_gadtm[0] = "";
		}
		
		return param;
	}

// OM-2013-0003213対応 20131011 星野 DEL START
// 未使用メソッド削除
//	/**
//	 * サービス契約内訳一覧照会（SYSID）<br>
//	 * <br>
//	 * サービス契約内訳一覧照会（SYSID）サービスインターフェイスにより<br>
//	 * SYSIDに紐づくサービス契約内訳の一覧を取得します。<br>
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	private IRequestParameterReadWrite getSvcKeiUtwkListSysid(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
//	{
//		// 上りマッピング
//		HashMap<String, Object> paramMap = editInMsg_EKK0161B003CBS(param);
//		
//		// SC呼び出し部品のインスタンス生成
//		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		// SC呼出
//		Map<?, ?> result = scCall.run(paramMap, handle);
//
//		// 下りマッピング
//		editResultRP_EKK0161B003CBS(result, param);
//		
//		return param;
//	}
//
//	/**
//	 * サービス契約内訳一意照会<br>
//	 * <br>
//	 * サービス契約内訳一意照会サービスインターフェイスにより<br>
//	 * サービス契約内訳番号に紐づくサービス契約内訳情報を取得します。<br>
//	 * サービス契約内訳一覧照会（SYSID）で取得した件数分繰り返します。<br>
//	 * 料金プランがWiFiスポットでサービス契約内訳ステータスがサービス提供中であれば、繰り返しを終了します。<br>
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite getSvcKeiUtwk(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
//	{
//		// サービスオーダ発行CC作業マップ設定
//		HashMap iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
//		
//		if (iMap != null)
//		{
//			//サービス契約内訳一覧照会（SYSID）で取得した件数分繰り返す
//			ArrayList iList = (ArrayList)iMap.get("EKK0161B003CBSMsg1List");
//			int wifiCount = 0;
//			for (int i = 0; i < iList.size(); i++)
//			{
//				HashMap iChildMap = (HashMap)iList.get(i);
//				if (iChildMap != null)
//				{
//					String svc_kei_ucwk_no = (String)iChildMap.get("svc_kei_ucwk_no");	// サービス契約内訳番号
//					
//					HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
//					HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
//					inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);
//					inHashUcwk.put(JKKHakkoSODConstCC.OPE_DATE, JCCBPCommon.getOpeDate(null));
//					int statusCode = callEKK0161A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_2);
//					if(0 != statusCode)
//					{
//						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//					}
//					HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
//					// サービス契約内訳ステータス
//					String pplan_cd = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.PPLAN_CD);
//
//	
//					// モバイル　Wi-Fi 定額無料プラン
//					if (JKKHakkoSODConstCC.PPLAN_CD_WIFI_MRYO.equals(pplan_cd))
//					{
//						wifiCount++;
//					}
//				}
//			}
//			// Wi-Fiスポット有無判定
//			if (wifiCount > 1)
//			{
//				// Wi-Fiスポット有無フラグを「True」にする。
//				wifi_flg = true;
//			}
//		}
//		
//		return param;
//	}
// OM-2013-0003213対応 20131011 星野 DEL END

// ▼ 2012/04/20 巻取@残対応
	/**
	 * 機器提供サービス契約一覧照会（サービス契約番号）<br>
	 * <br>
	 * 機器提供サービス契約一覧照会（サービス契約番号）サービスインターフェイスにより<br>
	 * サービス契約番号に紐づく機器提供サービス契約の一覧を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param kktkSvcCd 機器提供サービスコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getKktkSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param, String kktkSvcCd) throws Throwable
	{
		HashMap<String, Object> eKK0341B002Hash = null;				// 機器提供サービス契約一覧照会結果
		
		// 機器提供サービス契約にBBRが存在する場合、条件によってBBR新規登録SODを発行する。
		// 機器提供サービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
		HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
		
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));			// サービス契約番号
		inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_CD, kktkSvcCd);								// 機器提供サービスコード
		int statusCode = callEKK0341B002SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		
		
		CAANMsg[] msgListKktk = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002);
		kktk_svc_kei_no = new String[1];
		kktk_svc_kei_no[0] = "";
		kktk_svc_kei_gadtm = new String[1];
		kktk_svc_kei_gadtm[0] = "";
		if(msgListKktk != null && msgListKktk.length > 0)
		{
			eKK0341B002Hash = msgListKktk[0].getMsgData();
			kktk_svc_kei_no[0] = (String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
			kktk_svc_kei_gadtm[0] = (String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.GENE_ADD_DTM);	// 世代登録年月日時分秒
			bbr_flg = true;
		}
		
		return param;
	}
// ▲ 2012/04/20 巻取@残対応

// OM-2013-0003213対応 20131011 星野 DEL START
// 未使用メソッド削除
//	/**
//	 * 機器提供サービス契約一覧照会（サービス契約番号）<br>
//	 * <br>
//	 * 機器提供サービス契約一覧照会（サービス契約番号）サービスインターフェイスにより<br>
//	 * サービス契約番号に紐づく機器提供サービス契約の一覧を取得します。<br>
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite getKktkSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
//	{
//		// 上りマッピング
//		HashMap<String, Object> paramMap = editInMsg_EKK0341B002CBS(param);
//		
//		// SC呼び出し部品のインスタンス生成
//		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		// SC呼出
//		Map<?, ?> result = scCall.run(paramMap, handle);
//
//		// 下りマッピング
//		editResultRP_EKK0341B002CBS(result, param);
//
//		// 取得した機器提供サービス契約一覧の件数分繰り返す
//		HashMap dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
//
//		// 初期化
//		taknkiki_model_cd = new String[3];
//		kiki_seizo_no = new String[3];
//
//		kktk_svc_kei_no[0] = "";
//		kktk_svc_kei_no[1] = "";
//		kktk_svc_kei_no[2] = "";
//		kktk_svc_kei_gadtm[0] = "";
//		kktk_svc_kei_gadtm[1] = "";
//		kktk_svc_kei_gadtm[2] = "";
//		taknkiki_model_cd[0] = "";
//		taknkiki_model_cd[1] = "";
//		taknkiki_model_cd[2] = "";
//		kiki_seizo_no[0] = "";
//		kiki_seizo_no[1] = "";
//		kiki_seizo_no[2] = "";
//		if (dataMap != null)
//		{
//			ArrayList dataList = (ArrayList)dataMap.get("EKK0341B002CBSMsg1List");
//			for (int i = 0; i < dataList.size(); i++)
//			{
//				HashMap childMap = (HashMap)dataList.get(i);
//				if (childMap != null)
//				{
//					// 料金プランコード
//					String pplan_cd = (String)childMap.get("pplan_cd");
//					// UQ WiMAX
//					if(JKKHakkoSODConstCC.PPLAN_CD_UQ_ROUTER.equals(pplan_cd) ||
//							JKKHakkoSODConstCC.PPLAN_CD_UQ_USB.equals(pplan_cd))
//					{
//						//CUI
//						kktk_svc_kei_no[index_cui] = (String)childMap.get("kktk_svc_kei_no");
//						kktk_svc_kei_gadtm[index_cui] = (String)childMap.get("gene_add_dtm");
//						taknkiki_model_cd[index_cui] = (String)childMap.get("taknkiki_model_cd");
//						kiki_seizo_no[index_cui] = (String)childMap.get("kiki_seizo_no");
//						//DEV
//						kktk_svc_kei_no[index_dev] = (String)childMap.get("kktk_svc_kei_no");
//						kktk_svc_kei_gadtm[index_dev] = (String)childMap.get("gene_add_dtm");
//						taknkiki_model_cd[index_dev] = (String)childMap.get("taknkiki_model_cd");
//						kiki_seizo_no[index_dev] = (String)childMap.get("kiki_seizo_no");
//					}
//				}
//			}
//		}
//
//		return param;
//	}
// OM-2013-0003213対応 20131011 星野 DEL END
	
	/**
	 * 上りマッピング（オプションサービス契約一覧照会（サービス契約番号））<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0351B002CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0351B002";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0351B002CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0351B002CBSMsg.TEMPLATEID, template_id);

		// 機能コード（一覧照会）
		template.set(EKK0351B002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// オプションサービス契約一覧照会（サービス契約番号）マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0351B002CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}
		//2012-01-13ADD ↓↓↓
		template.setNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO);	//ＫＥＹ＿サービス契約内訳番号
		template.setNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD);			//ＫＥＹ＿オプションサービスコード
		template.setNull(EKK0351B002CBSMsg.KEY_BASE_YMD);			//ＫＥＹ＿基準年月日
		//2012-01-13ADD ↑↑↑

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（オプションサービス契約一覧照会（サービス契約番号））
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0351B002CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get(JKKHakkoSODConstCC.EKK0351B002CBSMSG1LIST);

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービスコード名称
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービスコード名称
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_CD_NM))
				{
					childMap.put("op_svc_cd_nm", "");
				}
				else
				{
					childMap.put("op_svc_cd_nm", childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_CD_NM));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.
				//   オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約ステータス
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約ステータス
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT))
				{
					childMap.put("op_svc_kei_stat", "");
				}
				else
				{
					childMap.put("op_svc_kei_stat", childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス内容
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス内容
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_NIY))
				{
					childMap.put("op_svc_niy", "");
				}
				else
				{
					childMap.put("op_svc_niy", childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_NIY));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス開始年月日
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.サービス開始年月日
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.SVC_STAYMD))
				{
					childMap.put("svc_staymd", "");
				}
				else
				{
					childMap.put("svc_staymd", childTemplate.getString(EKK0351B002CBSMsg1List.SVC_STAYMD));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.予約適用開始希望年月日
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.予約適用開始希望年月日
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.RSV_TSTA_KIBO_YMD))
				{
					childMap.put("rsv_tsta_kibo_ymd", "");
				}
				else
				{
					childMap.put("rsv_tsta_kibo_ymd", childTemplate.getString(EKK0351B002CBSMsg1List.RSV_TSTA_KIBO_YMD));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス終了年月日
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.サービス終了年月日
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.SVC_ENDYMD))
				{
					childMap.put("svc_endymd", "");
				}
				else
				{
					childMap.put("svc_endymd", childTemplate.getString(EKK0351B002CBSMsg1List.SVC_ENDYMD));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約番号
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約番号
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO))
				{
					childMap.put("op_svc_kei_no", "");
				}
				else
				{
					childMap.put("op_svc_kei_no", childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
				}
				
				// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービスコード
				// ← オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービスコード
				if (childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_CD))
				{
					childMap.put("op_svc_cd", "");
				}
				else
				{
					childMap.put("op_svc_cd", childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_CD));
				}
			}
		}
		dataMap.put("EKK0351B002CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrorInfo_EKK0351B002CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0351B002CBSMsg.STATUS)));
		}

		return param;
	}

	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約一覧照会（サービス契約番号））<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0351B002CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0351B002CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// オプションサービス契約一覧照会（サービス契約番号）マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}

		// オプションサービス契約一覧照会（サービス契約番号）マップ.サービス契約内訳番号 → ＫＥＹ＿サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_ucwk_no_err"))
			{
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR));
			}
		}

		// オプションサービス契約一覧照会（サービス契約番号）マップ.オプションサービスコード → ＫＥＹ＿オプションサービスコード のエラー情報返却
		if (!template.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD_ERR))
		{
			if (!inMap.containsKey("op_svc_cd_err"))
			{
				inMap.put("op_svc_cd_err", template.getString(EKK0351B002CBSMsg.KEY_OP_SVC_CD_ERR));
			}
		}

		// オプションサービス契約一覧照会（サービス契約番号）マップ.基準年月日 → ＫＥＹ＿基準年月日 のエラー情報返却
		if (!template.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD_ERR))
		{
			if (!inMap.containsKey("base_ymd_err"))
			{
				inMap.put("base_ymd_err", template.getString(EKK0351B002CBSMsg.KEY_BASE_YMD_ERR));
			}
		}
		return param;
	}
	
	/**
	 * 上りマッピング（オプションサービス契約＜ISP＞一意照会）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0361A010CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0361A010";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0361A010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0361A010CBSMsg.TEMPLATEID, template_id);

		// 機能コード（カレント）
		template.set(EKK0361A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号
		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		// オプションサービス契約＜ＩＳＰ＞一意照会マップ.世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒
		if (inMap == null || inMap.get("gene_add_dtm") == null || "".equals(inMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（オプションサービス契約＜ISP＞一意照会）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0361A010CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0361A010CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約＜ＩＳＰ＞一意照会明細.オプションサービス契約番号
				// ← オプションサービス契約＜ＩＳＰ＞一意照会明細.オプションサービス契約番号
				if (childTemplate.isNull(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO))
				{
					childMap.put("op_svc_kei_no", "");
				}
				else
				{
					childMap.put("op_svc_kei_no", childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
				}
				
				// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約＜ＩＳＰ＞一意照会明細.世代登録年月日時分秒
				// ← オプションサービス契約＜ＩＳＰ＞一意照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0361A010CBSMsg1List.GENE_ADD_DTM))
				{
					childMap.put("gene_add_dtm", "");
				}
				else
				{
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0361A010CBSMsg1List.GENE_ADD_DTM));
				}
				
				// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約＜ＩＳＰ＞一意照会明細.メールアドレス
				// ← オプションサービス契約＜ＩＳＰ＞一意照会明細.メールアドレス
				if (childTemplate.isNull(EKK0361A010CBSMsg1List.MLAD))
				{
					childMap.put("mlad", "");
				}
				else
				{
					childMap.put("mlad", childTemplate.getString(EKK0361A010CBSMsg1List.MLAD));
				}
				
				// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約＜ＩＳＰ＞一意照会明細.ＵＲＬ（ドメイン）
				// ← オプションサービス契約＜ＩＳＰ＞一意照会明細.ＵＲＬ（ドメイン）
				if (childTemplate.isNull(EKK0361A010CBSMsg1List.URL_DOMAIN))
				{
					childMap.put("url_domain", "");
				}
				else
				{
					childMap.put("url_domain", childTemplate.getString(EKK0361A010CBSMsg1List.URL_DOMAIN));
				}
				
				// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約＜ＩＳＰ＞一意照会明細.ＵＲＬ（アカウント）
				// ← オプションサービス契約＜ＩＳＰ＞一意照会明細.ＵＲＬ（アカウント）
				if (childTemplate.isNull(EKK0361A010CBSMsg1List.URL_ACCOUNT))
				{
					childMap.put("url_account", "");
				}
				else
				{
					childMap.put("url_account", childTemplate.getString(EKK0361A010CBSMsg1List.URL_ACCOUNT));
				}
			}
		}
		dataMap.put("EKK0361A010CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrorInfo_EKK0361A010CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0361A010CBSMsg.STATUS)));
		}
		
		return param;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約＜ISP＞一意照会）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0361A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0361A010CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// オプションサービス契約＜ＩＳＰ＞一意照会マップ.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
			}
		}
		// オプションサービス契約＜ＩＳＰ＞一意照会マップ.世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("gene_add_dtm_err"))
			{
				inMap.put("gene_add_dtm_err", template.getString(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}
		return param;
	}

	/**
	 * 上りマッピング（サブオプションサービス契約一覧照会）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0401B001CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0401B001";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0401B001CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0401B001CBSMsg.TEMPLATEID, template_id);

		// 機能コード（一覧照会）
		template.set(EKK0401B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// サブオプションサービス契約一覧照会マップ.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号
		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（サブオプションサービス契約一覧照会）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0401B001CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0401B001CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.オプションサービス契約番号
				// ← サブオプションサービス契約一覧照会明細.オプションサービス契約番号
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.OP_SVC_KEI_NO))
				{
					childMap.put("op_svc_kei_no", "");
				}
				else
				{
					childMap.put("op_svc_kei_no", childTemplate.getString(EKK0401B001CBSMsg1List.OP_SVC_KEI_NO));
				}
				
				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.サブオプションサービス契約番号
				// ← サブオプションサービス契約一覧照会明細.サブオプションサービス契約番号
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_NO))
				{
					childMap.put("sbop_svc_kei_no", "");
				}
				else
				{
					childMap.put("sbop_svc_kei_no", childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_NO));
				}
				
				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.世代登録年月日時分秒
				// ← サブオプションサービス契約一覧照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.GENE_ADD_DTM))
				{
					childMap.put("gene_add_dtm", "");
				}
				else
				{
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0401B001CBSMsg1List.GENE_ADD_DTM));
				}
				
				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.サブオプションサービス契約ステータス
				// ← サブオプションサービス契約一覧照会明細.サブオプションサービス契約ステータス
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT))
				{
					childMap.put("sbop_svc_kei_stat", "");
				}
				else
				{
					childMap.put("sbop_svc_kei_stat", childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT));
				}
				
				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.サブオプションサービスコード
				// ← サブオプションサービス契約一覧照会明細.サブオプションサービスコード
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.SBOP_SVC_CD))
				{
					childMap.put("sbop_svc_cd", "");
				}
				else
				{
					childMap.put("sbop_svc_cd", childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_CD));
				}
				
				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.料金コースコード
				// ← サブオプションサービス契約一覧照会明細.料金コースコード
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.PCRS_CD))
				{
					childMap.put("pcrs_cd", "");
				}
				else
				{
					childMap.put("pcrs_cd", childTemplate.getString(EKK0401B001CBSMsg1List.PCRS_CD));
				}
				
				// サブオプションサービス契約一覧照会マップ.サブオプションサービス契約一覧照会明細.料金プランコード
				// ← サブオプションサービス契約一覧照会明細.料金プランコード
				if (childTemplate.isNull(EKK0401B001CBSMsg1List.PPLAN_CD))
				{
					childMap.put("pplan_cd", "");
				}
				else
				{
					childMap.put("pplan_cd", childTemplate.getString(EKK0401B001CBSMsg1List.PPLAN_CD));
				}
			}
		}
		dataMap.put("EKK0401B001CBSMsg1List", dataList);

 		// エラー情報の設定
		param = editErrorInfo_EKK0401B001CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0401B001CBSMsg.STATUS)));
		}
		
		return param;
	}

	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（サブオプションサービス契約一覧照会）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0401B001CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0401B001CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// サブオプションサービス契約一覧照会マップ.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}

	/**
	 * 上りマッピング（サービス契約内訳一覧照会）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0161B004CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0161B004";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0161B004CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0161B004CBSMsg.TEMPLATEID, template_id);

		// 機能コード（一覧照会）
		template.set(EKK0161B004CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// サービス契約内訳一覧照会マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0161B004CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}
		
		// サービス契約内訳一覧照会マップ.料金コースコード → ＫＥＹ＿料金コースコード
		if (inMap == null || inMap.get("pcrs_cd") == null || "".equals(inMap.get("pcrs_cd")))
		{
			template.setNull(EKK0161B004CBSMsg.KEY_PCRS_CD);
		}
		else
		{
			template.set(EKK0161B004CBSMsg.KEY_PCRS_CD, (String)inMap.get("pcrs_cd"));
		}
		
		// サービス契約内訳一覧照会マップ.サービス期間中フラグ → ＫＥＹ＿サービス期間中フラグ
		if (inMap == null || inMap.get("svc_prd_flg") == null || "".equals(inMap.get("svc_prd_flg")))
		{
			template.setNull(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG);
		}
		else
		{
			template.set(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG, (String)inMap.get("svc_prd_flg"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（サービス契約内訳一覧照会）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0161B004CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0161B004CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.サービス契約内訳番号 ← サービス契約内訳一覧照会明細.サービス契約内訳番号
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO))
				{
					childMap.put("svc_kei_ucwk_no", "");
				}
				else
				{
					childMap.put("svc_kei_ucwk_no", childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO));
				}
				
				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.世代登録年月日時分秒 ← サービス契約内訳一覧照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.GENE_ADD_DTM))
				{
					childMap.put("gene_add_dtm", "");
				}
				else
				{
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0161B004CBSMsg1List.GENE_ADD_DTM));
				}
				
				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.サービス契約内訳ステータス
				// ← サービス契約内訳一覧照会明細.サービス契約内訳ステータス
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT))
				{
					childMap.put("svc_kei_ucwk_stat", "");
				}
				else
				{
					childMap.put("svc_kei_ucwk_stat", childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT));
				}
				
				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.サービス契約番号 ← サービス契約内訳一覧照会明細.サービス契約番号
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.SVC_KEI_NO))
				{
					childMap.put("svc_kei_no", "");
				}
				else
				{
					childMap.put("svc_kei_no", childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_NO));
				}
				
				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.申込明細番号 ← サービス契約内訳一覧照会明細.申込明細番号
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.MSKM_DTL_NO))
				{
					childMap.put("mskm_dtl_no", "");
				}
				else
				{
					childMap.put("mskm_dtl_no", childTemplate.getString(EKK0161B004CBSMsg1List.MSKM_DTL_NO));
				}
				
				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.料金コースコード ← サービス契約内訳一覧照会明細.料金コースコード
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.PCRS_CD))
				{
					childMap.put("pcrs_cd", "");
				}
				else
				{
					childMap.put("pcrs_cd", childTemplate.getString(EKK0161B004CBSMsg1List.PCRS_CD));
				}
				
				// サービス契約内訳一覧照会マップ.サービス契約内訳一覧照会明細.料金プランコード ← サービス契約内訳一覧照会明細.料金プランコード
				if (childTemplate.isNull(EKK0161B004CBSMsg1List.PPLAN_CD))
				{
					childMap.put("pplan_cd", "");
				}
				else
				{
					childMap.put("pplan_cd", childTemplate.getString(EKK0161B004CBSMsg1List.PPLAN_CD));
				}
			}
		}
		dataMap.put("EKK0161B004CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrorInfo_EKK0161B004CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0161B004CBSMsg.STATUS)));
		}

		return param;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（サービス契約内訳一覧照会）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0161B004CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0161B004CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// サービス契約内訳一覧照会マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0161B004CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0161B004CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}

		// サービス契約内訳一覧照会マップ.料金コースコード → ＫＥＹ＿料金コースコード のエラー情報返却
		if (!template.isNull(EKK0161B004CBSMsg.KEY_PCRS_CD_ERR))
		{
			if (!inMap.containsKey("pcrs_cd_err"))
			{
				inMap.put("pcrs_cd_err", template.getString(EKK0161B004CBSMsg.KEY_PCRS_CD_ERR));
			}
		}

		// サービス契約内訳一覧照会マップ.サービス期間中フラグ → ＫＥＹ＿サービス期間中フラグ のエラー情報返却
		if (!template.isNull(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG_ERR))
		{
			if (!inMap.containsKey("svc_prd_flg_err"))
			{
				inMap.put("svc_prd_flg_err", template.getString(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG_ERR));
			}
		}
		return param;
	}

	/**
	 * 上りマッピング（サービス契約内訳一覧照会（SYSID））<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0161B003CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0161B003";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0161B003CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0161B003CBSMsg.TEMPLATEID, template_id);

		// 機能コード（一覧照会）
		template.set(EKK0161B003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.ＳＹＳＩＤ → ＫＥＹ＿ＳＹＳＩＤ
		if (inMap == null || inMap.get("sysid") == null || "".equals(inMap.get("sysid")))
		{
			template.setNull(EKK0161B003CBSMsg.KEY_SYSID);
		}
		else
		{
			template.set(EKK0161B003CBSMsg.KEY_SYSID, (String)inMap.get("sysid"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（サービス契約内訳一覧照会（SYSID））
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0161B003CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0161B003CBSMsg.EKK0161B003CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0161B003CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.サービス契約内訳番号
				// ← サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.サービス契約内訳番号
				if (childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO))
				{
					childMap.put("svc_kei_ucwk_no", "");
				}
				else
				{
					childMap.put("svc_kei_ucwk_no", childTemplate.getString(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO));
				}
				
				// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.サービス名
				// ← サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.サービス名
				if (childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_NM))
				{
					childMap.put("svc_nm", "");
				}
				else
				{
					childMap.put("svc_nm", childTemplate.getString(EKK0161B003CBSMsg1List.SVC_NM));
				}
				
				// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.料金グル―プ名
				// ← サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.料金グル―プ名
				if (childTemplate.isNull(EKK0161B003CBSMsg1List.PRC_GRP_NM))
				{
					childMap.put("prc_grp_nm", "");
				}
				else
				{
					childMap.put("prc_grp_nm", childTemplate.getString(EKK0161B003CBSMsg1List.PRC_GRP_NM));
				}
				
				// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.料金コース名
				// ← サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.料金コース名
				if (childTemplate.isNull(EKK0161B003CBSMsg1List.PCRS_NM))
				{
					childMap.put("pcrs_nm", "");
				}
				else
				{
					childMap.put("pcrs_nm", childTemplate.getString(EKK0161B003CBSMsg1List.PCRS_NM));
				}
				
				// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.料金プラン名
				// ← サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.料金プラン名
				if (childTemplate.isNull(EKK0161B003CBSMsg1List.PPLAN_NM))
				{
					childMap.put("pplan_nm", "");
				}
				else
				{
					childMap.put("pplan_nm", childTemplate.getString(EKK0161B003CBSMsg1List.PPLAN_NM));
				}
				
				// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.サービス契約内訳ステータス
				// ← サービス契約内訳一覧照会（ＳＹＳＩＤ）明細.サービス契約内訳ステータス
				if (childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_STAT))
				{
					childMap.put("svc_kei_ucwk_stat", "");
				}
				else
				{
					childMap.put("svc_kei_ucwk_stat", childTemplate.getString(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_STAT));
				}
			}
		}
		dataMap.put("EKK0161B003CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrorInfo_EKK0161B003CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0161B003CBSMsg.STATUS)));
		}

		return param;
	}

	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（サービス契約内訳一覧照会（SYSID））<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0161B003CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0161B003CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// サービス契約内訳一覧照会（ＳＹＳＩＤ）マップ.ＳＹＳＩＤ → ＫＥＹ＿ＳＹＳＩＤ のエラー情報返却
		if (!template.isNull(EKK0161B003CBSMsg.KEY_SYSID_ERR))
		{
			if (!inMap.containsKey("sysid_err"))
			{
				inMap.put("sysid_err", template.getString(EKK0161B003CBSMsg.KEY_SYSID_ERR));
			}
		}
		return param;
	}

	/**
	 * 上りマッピング（機器提供サービス契約一覧照会（サービス契約番号））<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0341B002CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0341B002";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0341B002CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0341B002CBSMsg.TEMPLATEID, template_id);

		// 機能コード（一覧照会）
		template.set(EKK0341B002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0341B002CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービスコード → ＫＥＹ＿機器提供サービスコード
		if (inMap == null || inMap.get("kktk_svc_cd") == null || "".equals(inMap.get("kktk_svc_cd")))
		{
			template.setNull(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD);
		}
		else
		{
			template.set(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, (String)inMap.get("kktk_svc_cd"));
		}

		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約番号 → ＫＥＹ＿機器提供サービス契約番号
		if (inMap == null || inMap.get("kktk_svc_kei_no") == null || "".equals(inMap.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO, (String)inMap.get("kktk_svc_kei_no"));
		}

		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.ソート区分 → ＫＥＹ＿ソート区分
		if (inMap == null || inMap.get("sort_kbn") == null || "".equals(inMap.get("sort_kbn")))
		{
			template.setNull(EKK0341B002CBSMsg.KEY_SORT_KBN);
		}
		else
		{
			template.set(EKK0341B002CBSMsg.KEY_SORT_KBN, (String)inMap.get("sort_kbn"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（機器提供サービス契約一覧照会（サービス契約番号））
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0341B002CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0341B002CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.世代登録年月日時分秒
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.GENE_ADD_DTM))
				{
					childMap.put("gene_add_dtm", "");
				}
				else
				{
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0341B002CBSMsg1List.GENE_ADD_DTM));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.機器提供サービス契約番号
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.機器提供サービス契約番号
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO))
				{
					childMap.put("kktk_svc_kei_no", "");
				}
				else
				{
					childMap.put("kktk_svc_kei_no", childTemplate.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.機器提供サービスコード
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.機器提供サービスコード
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.KKTK_SVC_CD))
				{
					childMap.put("kktk_svc_cd", "");
				}
				else
				{
					childMap.put("kktk_svc_cd", childTemplate.getString(EKK0341B002CBSMsg1List.KKTK_SVC_CD));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.機器製造番号
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.機器製造番号
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO))
				{
					childMap.put("kiki_seizo_no", "");
				}
				else
				{
					childMap.put("kiki_seizo_no", childTemplate.getString(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.サービス契約番号
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.サービス契約番号
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.SVC_KEI_NO))
				{
					childMap.put("svc_kei_no", "");
				}
				else
				{
					childMap.put("svc_kei_no", childTemplate.getString(EKK0341B002CBSMsg1List.SVC_KEI_NO));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.サービス契約内訳番号
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.サービス契約内訳番号
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.SVC_KEI_UCWK_NO))
				{
					childMap.put("svc_kei_ucwk_no", "");
				}
				else
				{
					childMap.put("svc_kei_ucwk_no", childTemplate.getString(EKK0341B002CBSMsg1List.SVC_KEI_UCWK_NO));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.機器提供サービス契約ステータス
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.機器提供サービス契約ステータス
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT))
				{
					childMap.put("kktk_svc_kei_stat", "");
				}
				else
				{
					childMap.put("kktk_svc_kei_stat", childTemplate.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.料金グループコード
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.料金グループコード
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.PRC_GRP_CD))
				{
					childMap.put("prc_grp_cd", "");
				}
				else
				{
					childMap.put("prc_grp_cd", childTemplate.getString(EKK0341B002CBSMsg1List.PRC_GRP_CD));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.料金コースコード
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.料金コースコード
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.PCRS_CD))
				{
					childMap.put("pcrs_cd", "");
				}
				else
				{
					childMap.put("pcrs_cd", childTemplate.getString(EKK0341B002CBSMsg1List.PCRS_CD));
				}
				
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.料金プランコード
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.料金プランコード
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.PPLAN_CD))
				{
					childMap.put("pplan_cd", "");
				}
				else
				{
					childMap.put("pplan_cd", childTemplate.getString(EKK0341B002CBSMsg1List.PPLAN_CD));
				}
				// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約一覧照会（サービス契約番号）明細.宅内機器型式コード
				// ← 機器提供サービス契約一覧照会（サービス契約番号）明細.宅内機器型式コード
				if (childTemplate.isNull(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD))
				{
					childMap.put("taknkiki_model_cd", "");
				}
				else
				{
					childMap.put("taknkiki_model_cd", childTemplate.getString(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD));
				}
			}
		}
		dataMap.put("EKK0341B002CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrorInfo_EKK0341B002CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0341B002CBSMsg.STATUS)));
		}

		return param;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（機器提供サービス契約一覧照会（サービス契約番号））<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0341B002CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0341B002CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービスコード → ＫＥＹ＿機器提供サービスコード のエラー情報返却
		if (!template.isNull(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD_ERR))
		{
			if (!inMap.containsKey("kktk_svc_cd_err"))
			{
				inMap.put("kktk_svc_cd_err", template.getString(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD_ERR));
			}
		}
		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.機器提供サービス契約番号 → ＫＥＹ＿機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("kktk_svc_kei_no_err"))
			{
				inMap.put("kktk_svc_kei_no_err", template.getString(EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
			}
		}
		// 機器提供サービス契約一覧照会（サービス契約番号）マップ.ソート区分 → ＫＥＹ＿ソート区分 のエラー情報返却
		if (!template.isNull(EKK0341B002CBSMsg.KEY_SORT_KBN_ERR))
		{
			if (!inMap.containsKey("sort_kbn_err"))
			{
				inMap.put("sort_kbn_err", template.getString(EKK0341B002CBSMsg.KEY_SORT_KBN_ERR));
			}
		}
		return param;
	}
	
	/**
	 * 上りマッピング（同一処理番号採番）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg_EKK1081C011CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK1081C011";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK1081C011CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK1081C011CBSMsg.TEMPLATEID, template_id);

		// 機能コード（同一処理番号採番）
		template.set(EKK1081C011CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 共通部を設定
		editBasicCmn(param, template);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 下りマッピング（同一処理番号採番）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK1081C011CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}

		// 同一処理番号取得
		if (parentTemplate.isNull(EKK1081C011CBSMsg.SAME_TRN_NO))
		{
			dataMap.put("same_trn_no", "");
		}
		else
		{
			dataMap.put("same_trn_no", parentTemplate.getString(EKK1081C011CBSMsg.SAME_TRN_NO));
		}

		// エラー情報の設定
		param = editErrorInfo_EKK1081C011CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK1081C011CBSMsg.STATUS)));
		}

		return param;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（同一処理番号採番）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK1081C011CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK1081C011CBSMsg.STATUS);
		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);
		}
		
		return param;
	}

	/**
	 * 上りマッピング（サービス契約一意照会）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0081A010CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0081A010";

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, template_id);

		// 機能コード（カレント）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// サービス契約一意照会.サービス契約番号 → ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// サービス契約一意照会.世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒
		if (inMap == null || inMap.get("gene_add_dtm") == null || "".equals(inMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
		}

		// サービス契約一意照会.予約適用年月日 → ＫＥＹ＿予約適用年月日
		if (inMap == null || inMap.get("rsv_aply_ymd") == null || "".equals(inMap.get("rsv_aply_ymd")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, (String)inMap.get("rsv_aply_ymd"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 下りマッピング（サービス契約一意照会）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0081A010CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0081A010CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// サービス契約一意照会.サービス契約一意照会明細.世代登録年月日時分秒 ← サービス契約一意照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.GENE_ADD_DTM))
				{
					childMap.put("gene_add_dtm", "");
				}
				else
				{
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
				}
				// サービス契約一意照会.サービス契約一意照会明細.申込明細番号 ← サービス契約一意照会明細.申込明細番号
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.MSKM_DTL_NO))
				{
					childMap.put("mskm_dtl_no", "");
				}
				else
				{
					childMap.put("mskm_dtl_no", childTemplate.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
				}
				// サービス契約一意照会.サービス契約一意照会明細.料金グループコード ← サービス契約一意照会明細.料金グループコード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PRC_GRP_CD))
				{
					childMap.put("prc_grp_cd", "");
				}
				else
				{
					childMap.put("prc_grp_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
				}
				// サービス契約一意照会.サービス契約一意照会明細.料金コースコード ← サービス契約一意照会明細.料金コースコード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PCRS_CD))
				{
					childMap.put("pcrs_cd", "");
				}
				else
				{
					childMap.put("pcrs_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PCRS_CD));
				}
				// サービス契約一意照会.サービス契約一意照会明細.サービス契約ステータス ← サービス契約一意照会明細.サービス契約ステータス
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_KEI_STAT))
				{
					childMap.put("svc_kei_stat", "");
				}
				else
				{
					childMap.put("svc_kei_stat", childTemplate.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
				}
				// サービス契約一意照会.サービス契約一意照会明細.サービス休止年月日 ← サービス契約一意照会明細.サービス休止年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_PAUSE_YMD))
				{
					childMap.put("svc_pause_ymd", "");
				}
				else
				{
					childMap.put("svc_pause_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.SVC_PAUSE_YMD));
				}
				// サービス契約一意照会.サービス契約一意照会明細.サービス休止解除年月日 ← サービス契約一意照会明細.サービス休止解除年月日
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_PAUSE_RLS_YMD))
				{
					childMap.put("svc_pause_rls_ymd", "");
				}
				else
				{
					childMap.put("svc_pause_rls_ymd", childTemplate.getString(EKK0081A010CBSMsg1List.SVC_PAUSE_RLS_YMD));
				}
				// サービス契約一意照会.サービス契約一意照会明細.休止中断コード ← サービス契約一意照会明細.休止中断コード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PAUSE_STP_CD))
				{
					childMap.put("pause_stp_cd", "");
				}
				else
				{
					childMap.put("pause_stp_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PAUSE_STP_CD));
				}
				// ANK-2765-00-00 ADD START
				// サービス契約一意照会.サービス契約一意照会明細.料金プランコード ← サービス契約一意照会明細.料金プランコード
				if (childTemplate.isNull(EKK0081A010CBSMsg1List.PPLAN_CD))
				{
					childMap.put("pplan_cd", "");
				}
				else
				{
					childMap.put("pplan_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PPLAN_CD));
				}
				// ANK-2765-00-00 ADD END
			}
		}
		dataMap.put("EKK0081A010CBSMsg1List", dataList);

 		// エラー情報の設定
		param = editErrorInfo_EKK0081A010CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0341B002CBSMsg.STATUS)));
		}

		return param;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（サービス契約一意照会）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0081A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// サービス契約一意照会.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		// サービス契約一意照会.世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("gene_add_dtm_err"))
			{
				inMap.put("gene_add_dtm_err", template.getString(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}
		// サービス契約一意照会.予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR))
		{
			if (!inMap.containsKey("rsv_aply_ymd_err"))
			{
				inMap.put("rsv_aply_ymd_err", template.getString(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}
		return param;
	}
	
	/**
	 * 上りマッピング（オプションサービス契約一意照会）<br>
	 * <br>
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInMsg_EKK0351A010CBS(IRequestParameterReadOnly param) throws RequestParameterException
	{
		String template_id = "EKK0351A010";
		
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// SCインプット共通データ
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文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));

		CAANMsg template = new CAANMsg(EKK0351A010CBSMsg.class.getName());

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0351A010CBSMsg.TEMPLATEID, template_id);

		// 機能コード（カレント）
		template.set(EKK0351A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2);

		// 共通部を設定
		editBasicCmn(param, template);

		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		// オプションサービス契約一意照会.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号
		if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		// オプションサービス契約一意照会.世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒
		if (inMap == null || inMap.get("gene_add_dtm") == null || "".equals(inMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
		}

		// オプションサービス契約一意照会.予約適用年月日 → ＫＥＹ＿予約適用年月日
		if (inMap == null || inMap.get("rsv_aply_ymd") == null || "".equals(inMap.get("rsv_aply_ymd")))
		{
			template.setNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, (String)inMap.get("rsv_aply_ymd"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 下りマッピング（オプションサービス契約一意照会）
	 * <br>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします<br>
	 * <br>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultRP_EKK0351A010CBS(Map<?, ?> msgList,
			IRequestParameterReadWrite param) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		// 業務データ設定
		dataMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
		templateArray = (CAANMsg[])parentTemplate.getMsgData().get(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0351A010CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				
				// オプションサービス契約一意照会明細.世代登録年月日時分秒
				if (childTemplate.isNull(EKK0351A010CBSMsg1List.GENE_ADD_DTM))
				{
					childMap.put("gene_add_dtm", "");
				}
				else
				{
					childMap.put("gene_add_dtm", childTemplate.getString(EKK0351A010CBSMsg1List.GENE_ADD_DTM));
				}
			}
		}
		dataMap.put("EKK0351A010CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrorInfo_EKK0351A010CBS(param, templates, (Integer)return_code);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(EKK0341B002CBSMsg.STATUS)));
		}

		return param;
	}
	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約一意照会）<br>
	 * <br>
	 * サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。<br>
	 * <br>
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo_EKK0351A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0351A010CBSMsg.STATUS);
		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 inMap = null;
		
		// ユーザデータ情報
		inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (inMap == null)
		{
			inMap = new HashMap();
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
		}

		// オプションサービス契約一意照会.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
			}
		}
		// オプションサービス契約一意照会.世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("gene_add_dtm_err"))
			{
				inMap.put("gene_add_dtm_err", template.getString(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}
		// オプションサービス契約一意照会.予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
		if (!template.isNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR))
		{
			if (!inMap.containsKey("rsv_aply_ymd_err"))
			{
				inMap.put("rsv_aply_ymd_err", template.getString(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}
		return param;
	}
	
	/**
	 * オーダ発行条件登録実行処理<br>
	 * <br>
	 * オーダ発行条件登録サービスIFを実行します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private IRequestParameterReadWrite executeOdrHakkoJokenAdd(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK1081D010CBS(param);
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK1081D010CBS(result, param);
		
		return param;
	}
	
	/**
	 * オーダ情報作成ワーク登録実行処理<br>
	 * <br>
	 * オーダ情報作成ワーク登録サービスIFを実行します。<br>
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ情報作成ワーク登録<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private IRequestParameterReadWrite executeOdrInfoSakseiWkAdd(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK1551D010CBS(param);
		
		// SC呼び出し部品のインスタンス生成
		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK1551D010CBS(result, param);
		
		return param;
	}
	
//	/**
//	 * UQ WIMAXの解約処理<br>
//	 * <br>
//	 * UQ WIMAXの解約について、オーダ発行条件とオーダ情報作成ワークを登録します。<br>
//	 * <br>
//	 * 【使用するサービスIF】<br>
//	 * 　CUI<br>
//	 * 　・オーダ発行条件登録<br>
//	 * 　・オーダ情報作成ワーク登録
//	 * 　DEV<br>
//	 * 　・オーダ発行条件登録<br>
//	 * 　・オーダ情報作成ワーク登録
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @return 業務データ取得・書込用I/F
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite addSODUQWIMAXDsl(SessionHandle handle,
//			IRequestParameterReadWrite param) throws Throwable
//	{
//		// ユーザデータ情報
//		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
//		
//		if (inMap != null)
//		{
//			// CUI
//			// (1) オーダ発行条件登録
//			// サービスオーダ発行CC作業マップ設定
//			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[index_cui]);								// サービス契約内訳番号
//			inMap.put("op_svc_kei_no", "");															// オプションサービス契約番号
//			inMap.put("sbop_svc_kei_no", "");														// サブオプションサービス契約番号
//			inMap.put("mlad", "");																	// メールアドレス
//			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);						// オーダ種別コード（モバイル）
//			inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_CUI);							// サービスオーダコード（CUI）
//			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);							// 要求種別コード（消去）
//			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);		// オーダ発行条件コード（即時発行）
//			inMap.put("same_trn_no", same_trn_no);													// 同一処理番号
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//			// オーダ発行条件登録実行
//			param = executeOdrHakkoJokenAdd(handle, param);
//
//			// (2) オーダ情報作成ワーク登録
//			// サービスオーダ発行CC作業マップ設定
//			inMap.put("odr_naiyo_cd", "308");							// オーダ内容コード（WiMAX・CUI消去）
//			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[index_cui]);	// サービス契約内訳番号
//			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[index_cui]);	// サービス契約内訳世代登録年月日時分秒
//			inMap.put("op_svc_kei_no", "");								// オプションサービス契約番号
//			inMap.put("opsvkei_gadtm", "");								// オプションサービス契約世代登録年月日時分秒
//			inMap.put("sbop_svc_kei_no", "");							// サブオプションサービス契約番号
//			inMap.put("sbopsvkei_gadtm", "");							// サブオプションサービス契約世代登録年月日時分秒
//			inMap.put("kktk_svc_kei_no", "");							// 機器提供サービス契約番号
//			inMap.put("kktsvkei_gadtm", "");							// 機器提供サービス契約世代登録年月日時分秒
//			inMap.put("taknkiki_model_cd", "");							// 宅内機器型式コード
//			inMap.put("kiki_seizo_no", "");								// 機器製造番号
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//			// オーダ情報作成ワーク登録実行
//			param = executeOdrInfoSakseiWkAdd(handle, param);
//
//			// DEV
//			// (3) オーダ発行条件登録
//			// サービスオーダ発行CC作業マップ設定
//			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[index_dev]);	// サービス契約内訳番号
//			inMap.put("op_svc_kei_no", "");								// オプションサービス契約番号
//			inMap.put("sbop_svc_kei_no", "");							// サブオプションサービス契約番号
//			inMap.put("mlad", "");										// メールアドレス
//			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_MOBILE);				// オーダ種別コード（モバイル）
//			inMap.put("svc_order_cd", JKKHakkoSODConstCC.SVC_ORDER_CD_DEV);				// サービスオーダコード（DEV）
//			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_DEL);				// 要求種別コード（消去）
//			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);						// オーダ発行条件コード（即時発行）
//			inMap.put("same_trn_no", same_trn_no);						// 同一処理番号
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//			// オーダ発行条件登録実行
//			param = executeOdrHakkoJokenAdd(handle, param);
//
//			// (4) オーダ情報作成ワーク登録
//			// サービスオーダ発行CC作業マップ設定
//			inMap.put("odr_naiyo_cd", "309");							// オーダ内容コード（WiMAX・DEV消去）
//			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[index_dev]);	// サービス契約内訳番号
//			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[index_dev]);	// サービス契約内訳世代登録年月日時分秒
//			inMap.put("op_svc_kei_no", "");								// オプションサービス契約番号
//			inMap.put("opsvkei_gadtm", "");								// オプションサービス契約世代登録年月日時分秒
//			inMap.put("sbop_svc_kei_no", "");							// サブオプションサービス契約番号
//			inMap.put("sbopsvkei_gadtm", "");							// サブオプションサービス契約世代登録年月日時分秒
//			inMap.put("kktk_svc_kei_no", "");							// 機器提供サービス契約番号
//			inMap.put("kktsvkei_gadtm", "");							// 機器提供サービス契約世代登録年月日時分秒
//			inMap.put("taknkiki_model_cd", "");							// 宅内機器型式コード
//			inMap.put("kiki_seizo_no", "");								// 機器製造番号
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
//			// オーダ情報作成ワーク登録実行
//			param = executeOdrInfoSakseiWkAdd(handle, param);
//		}
//		
//		return param;
//	}
	
	/**
	 * 休止判定処理
	 * @param param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param fixedText ユーザ任意文字列
	 * @param svc_kei_no サービス契約番号
	 * @param pause_jdg_cd 休止判定コード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite pauseJdg(IRequestParameterReadWrite param 
																, SessionHandle handle 
																, String fixedText 
																, String svc_kei_no 
																, String pause_jdg_cd[]) throws Throwable
	{
		// 必要情報の設定
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		HashMap<String, Object> resultHash = new HashMap<String, Object>();
		int statusCode = 0;
		String ope_date = JCCBPCommon.getOpeDate(null);
		
		inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);														// サービス契約番号
		inHash.put(JKKHakkoSODConstCC.OPE_DATE, ope_date);															// 運用日
		
		// サービス契約一意照会(機能コード:2)
		statusCode = callEKK0081A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_2);
		
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		
		// 必要情報の取得
		HashMap<String, Object> eKK0081A010Map = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);
		String svcKeiStat = (String)eKK0081A010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);									// サービス契約ステータス
		String pauseStpCd = (String)eKK0081A010Map.get(EKK0081A010CBSMsg1List.PAUSE_STP_CD);									// 休止中断コード
		String svcPauseYmd = (String)eKK0081A010Map.get(EKK0081A010CBSMsg1List.SVC_PAUSE_YMD);									// サービス休止年月日
		
		// 休止中の判定(サービス契約ステータス=休止中断中(210) かつ 休止中断コード≠02 かつ 運用日≧サービス休止年月日)
		if(JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(svcKeiStat) && !JKKHakkoSODConstCC.PAUSE_STP_CD_02.equals(pauseStpCd)
				&& 0 <= ope_date.compareTo(svcPauseYmd))
		{
			// 休止判定コード：1(休止中)
			pause_jdg_cd[0] = JKKHakkoSODConstCC.PAUSE_JDG_CD_1;
		}
		else
		{
			// 休止中断コード：0(休止でない)
			pause_jdg_cd[0] = JKKHakkoSODConstCC.PAUSE_JDG_CD_0;
		}
		
		return param;
	}
	
	/** ▼▼▼▼▼▼共通で利用するサービスインターフェイス用メソッドです▼▼▼▼▼ */
	
	/**
	 * 同一処理番号取得SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	@SuppressWarnings("unchecked")
	private int callEKK1081C011SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK1081C011への呼び出しパラメータ設定
		template = new CAANMsg(EKK1081C011CBSMsg.class.getName());
		mappingEKK1081C011SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011, 
					mappingEKK1081C011SCOutMsg(resultMsgs));
			
		}
		
		// エラー情報の設定
		param = editErrorInfoEKK1081C011CBS(param, resultMsgs, status);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EKK1081C011CBSMsg.STATUS)));
		}
		
		return status;
	}
	/**
	 * templateに対してEKK1081C011の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK1081C011SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK1081C011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011);

		//機能コード
		template.set(EKK1081C011CBSMsg.FUNC_CODE, funcCode);
		
	}
	/**
	 * EKK1081C011の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK1081C011の結果部分
	 */
	private HashMap<String, Object> mappingEKK1081C011SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = new HashMap<String, Object>();
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash.put(JKKHakkoSODConstCC.SAME_TRN_NO, msg.getString(EKK1081C011CBSMsg.SAME_TRN_NO));
		
		return retHash;
		
	}
	/**
	 * EKK1081C011実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEKK1081C011CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK1081C011CBSMsg.STATUS);
		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);
		}
		
		return param;
	}

	/**
	 * サービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private int callEKK0081A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0081A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		
		mappingEKK0081A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//クエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010, 
					mappingEKK0081A010SCOutMsg(resultMsgs));
			
		}
		
		param = editErrorInfoEKK0081A010CBS(param, resultMsgs, status);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EKK0081A010CBSMsg.STATUS)));
		}
		
		return status;
	}
	
	/**
	 * templateに対してEKK0081A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0081A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);

		//機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, funcCode);
		
		//サービス契約番号
		template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			template.set(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
		else if(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))
		{
			template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));
		}
	}
	/**
	 * EKK0081A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0081A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0081A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		return retHash;
		
	}
	
	/**
	 * EKK0081A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0081A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);
		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);
		}
		
		return param;
	}
	
	/**
	 * 機器提供サービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private int callEKK0341A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		
		mappingEKK0341A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//クエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010, 
					mappingEKK0341A010SCOutMsg(resultMsgs));
			
		}
		
		param = editErrorInfoEKK0341A010CBS(param, resultMsgs, status);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EKK0341A010CBSMsg.STATUS)));
		}
		
		return status;
	}
	
	/**
	 * templateに対してEKK0341A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0341A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);

		//機能コード
		template.set(EKK0341A010CBSMsg.FUNC_CODE, funcCode);
		
		//サービス契約番号
		template.set(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			template.set(EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
		else if(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))
		{
			template.set(EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));
		}
	}
	/**
	 * EKK0341A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0341A010のテンプレートリスト
	 * @return EKK0341A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0341A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		
		return retHash;
		
	}
	
	/**
	 * EKK0341A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0341A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0341A010CBSMsg.STATUS);
		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);
		}
		
		return param;
	}
	
	/**
	 * サブオプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private int callEKK0401A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0401A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401A010CBSMsg.class.getName());
		
		mappingEKK0401A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//クエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0401A010, 
					mappingEKK0401A010SCOutMsg(resultMsgs));
			
		}
		
		param = editErrorInfoEKK0401A010CBS(param, resultMsgs, status);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EKK0401A010CBSMsg.STATUS)));
		}
		
		return status;
	}
	
	/**
	 * templateに対してEKK0401A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0401A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0401A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0401A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0401A010);

		//機能コード
		template.set(EKK0401A010CBSMsg.FUNC_CODE, funcCode);
		
		//オプションサービス契約番号
		template.set(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO));
		
		//サブオプションサービス契約番号
		template.set(EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			template.set(EKK0401A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
		else if(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))
		{
			template.set(EKK0401A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));
		}
	}
	/**
	 * EKK0401A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0401A010のテンプレートリスト
	 * @return EKK0401A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0401A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0401A010CBSMsg.EKK0401A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}

		
		return retHash;
		
	}
	
	/**
	 * EKK0401A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0401A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0401A010CBSMsg.STATUS);
		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);
		}
		
		return param;
	}
	
	/**
	 * サブオプションサービス契約＜ISP＞一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private int callEKK0411A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0411A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0411A010CBSMsg.class.getName());
		
		mappingEKK0411A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//クエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0411A010, 
					mappingEKK0411A010SCOutMsg(resultMsgs));
			
		}
		
		param = editErrorInfoEKK0411A010CBS(param, resultMsgs, status);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EKK0411A010CBSMsg.STATUS)));
		}
		
		return status;
	}
	
	/**
	 * templateに対してEKK0411A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0411A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0411A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0411A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0411A010);

		//機能コード
		template.set(EKK0411A010CBSMsg.FUNC_CODE, funcCode);
		
		//オプションサービス契約番号
		template.set(EKK0411A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO));
		
		//オプションサービス契約番号
		template.set(EKK0411A010CBSMsg.KEY_SBOP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			template.set(EKK0411A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
	}
	/**
	 * EKK0411A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0411A010のテンプレートリスト
	 * @return EKK0411A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0411A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}

		
		return retHash;
		
	}
	
	/**
	 * EKK0411A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0411A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0411A010CBSMsg.STATUS);
		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);
		}
		
		return param;
	}
	
	/**
	 * サービス契約内訳一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0161A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161A010CBSMsg.class.getName());
		
		mappingEKK0161A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010, 
					mappingEKK0161A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0161A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0161A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);

		//機能コード
		template.set(EKK0161A010CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			// ＫＥＹ＿世代登録年月日時分秒
			template.set(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
		else if(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))
		{
			// ＫＥＹ＿予約適用年月日
			template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));
		}
	}
	/**
	 * EKK0161A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0161A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0161A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		return retHash;
		
	}
	
	/**
	 * サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0191A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0191A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0191A010CBSMsg.class.getName());
		
		mappingEKK0191A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010, 
					mappingEKK0191A010SCOutMsg(resultMsgs));
		}
		return status;
	}
	
	/**
	 * templateに対してEKK0191A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0191A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0191A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0191A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);

		//機能コード
		template.set(EKK0191A010CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			// ＫＥＹ＿世代登録年月日時分秒
			template.set(EKK0191A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
	}
	/**
	 * EKK0191A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0191A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0191A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		return retHash;
	}
	
	/**
	 * サービス契約内訳一覧照会（SYSID）SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161B003SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0161B003への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B003CBSMsg.class.getName());
		
		mappingEKK0161B003SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B003, 
					mappingEKK0161B003SCOutMsg(resultMsgs));
			
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0161B003の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0161B003SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161B003CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161B003CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B003);

		//機能コード
		template.set(EKK0161B003CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿SYSID
		template.set(EKK0161B003CBSMsg.KEY_SYSID, inHash.get(JKKHakkoSODConstCC.SYSID));

	}
	
	/**
	 * EKK0161B003の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0161B003の結果部分
	 */
	private CAANMsg[] mappingEKK0161B003SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0161B003CBSMsg.EKK0161B003CBSMSG1LIST);
		
		return msgList;
		
	}

	/**
	 * サービス契約内訳一覧照会（サービス契約番号）SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161B004SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0161B004への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B004CBSMsg.class.getName());
		
		mappingEKK0161B004SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004, 
					mappingEKK0161B004SCOutMsg(resultMsgs));
			
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0161B004の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0161B004SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161B004CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161B004CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004);

		//機能コード
		template.set(EKK0161B004CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1);
		
		//ＫＥＹ＿サービス契約番号
		template.set(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
		
		//ＫＥＹ＿料金コースコード
		if(inHash.get(JKKHakkoSODConstCC.PCRS_CD) != null)
		{
			template.set(EKK0161B004CBSMsg.KEY_PCRS_CD, inHash.get(JKKHakkoSODConstCC.PCRS_CD));
		}

	}
	
	/**
	 * EKK0161B004の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0161B004の結果部分
	 */
	private CAANMsg[] mappingEKK0161B004SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST);
		
		return msgList;
		
	}
	
	/**
	 * オプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	private int callEKK0351A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		//ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0351A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351A010CBSMsg.class.getName());
		
		mappingEKK0351A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		
		//SIFの呼び出し
		sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		// 下りマッピング
		editResultRP_EKK0351A010CBS(sIFResult, param);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010, 
					mappingEKK0351A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0351A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0351A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0351A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0351A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);

		//機能コード
		template.set(EKK0351A010CBSMsg.FUNC_CODE, funcCode);
		
		//オプションサービス契約番号
		template.set(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO));
		
		//機能コードにより分岐
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			template.set(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
		else if(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))
		{
			template.set(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));
		}
	}
	/**
	 * EKK0351A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0351A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0351A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		return retHash;
		
	}

	/**
	 * オプションサービス契約＜ISP＞一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private int callEKK0361A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0361A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0361A010CBSMsg.class.getName());
		mappingEKK0361A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010, 
					mappingEKK0361A010SCOutMsg(resultMsgs));
			
		}
		
		param = editErrorInfoEKK0361A010CBS(param, resultMsgs, status);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EKK0361A010CBSMsg.STATUS)));
		}

		return status;
	}
	/**
	 * templateに対してEKK0361A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0361A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		
		//テンプレートID(SIFのID)
		template.set(EKK0361A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010);

		//機能コード
		template.set(EKK0361A010CBSMsg.FUNC_CODE, funcCode);
		
		//オプションサービス契約番号
		template.set(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO));
		
		if(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))
		{
			//世代登録年月日時分秒
			template.set(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
		}
		else if(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))
		{
			//カレントで取ってくる場合はセット無し
			//世代登録年月日時分秒
			template.set(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM, JKKHakkoSODConstCC.MAX_DTM);
		}
	}
	/**
	 * EKK0361A010の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0361A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0361A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}

		
		return retHash;
		
	}
	
	/**
	 * EKK0361A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEKK0361A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK0361A010CBSMsg.STATUS);
		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);
		}
		
		return param;
	}
	
//	/**
//	 * オプションサービス契約＜電話＞一意照会SIFを呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用Hash
//	 * @param resultHash 結果のハッシュ
//	 * @return サービスインターフェースのリターンコード
//	 * @throws RequestParameterException, SCException 例外時にスローされます
//	 */
//	private int callEKK0371A010SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash,
//			String funcCode)
//			throws RequestParameterException, SCException
//	{
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		ServiceComponentRequestInvoker scCall = null;
//		Map<?, ?> sIFResult = null;
//		int status = 0;
//
//		//サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//		
//		//EKK0371A010への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0371A010CBSMsg.class.getName());
//		mappingEKK0371A010SCInMsg(template, inHash, funcCode);
//		editBasicCmn(param, template);
//		
//		//リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		//SC呼び出しクラスの生成
//		scCall = new ServiceComponentRequestInvoker();
//		
//		//SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		//結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//		
//		//ステータスコードの取得
//		status = template.getInt(JCMConstants.STATUS_INT_KEY);
//		
//		//ステータスが0以外はエラーとなっている
//		if(status == 0)
//		{
//
//			resultHash.put(
//					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0371A010, 
//					mappingEKK0371A010SCOutMsg(resultMsgs));
//			
//		}
//
//		return status;
//	}
//	/**
//	 * templateに対してEKK0371A010の条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 設定条件
//	 * @param requestParam アプリ固有のパラメータ
//	 */
//	private void mappingEKK0371A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
//	{
//
//		//まずは全条件のNullマッピング
//		
//		//テンプレートID(SIFのID)
//		template.set(EKK0371A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0371A010);
//
//		//機能コード
//		template.set(EKK0371A010CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1);
//		
//		//オプションサービス契約番号
//		template.set(EKK0371A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO));
//		
//		//世代登録年月日時分秒
//		template.set(EKK0371A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
//		
//	}
//	/**
//	 * EKK0371A010の結果をHashとして抽出する
//	 * @param resultMsgs EKK0081A010のテンプレートリスト
//	 * @return EKK0371A010の結果部分
//	 */
//	@SuppressWarnings("unchecked")
//	private HashMap<String, Object> mappingEKK0371A010SCOutMsg(CAANMsg[] resultMsgs)
//	{
//		
//		HashMap<String, Object> retHash = null;
//		CAANMsg msg = null;
//		CAANMsg[] msgList = null;
//		
//		//結果の抽出
//		msg = resultMsgs[0];
//		
//		//結果の取得
//		msgList = 
//			(CAANMsg[])msg.getMsgData().get(EKK0371A010CBSMsg.EKK0371A010CBSMSG1LIST);
//		if(null == msgList || 0 == msgList.length)
//		{
//			retHash = new HashMap<String, Object>();
//		}
//		else
//		{
//			retHash = msgList[0].getMsgData();
//		}
//
//		
//		return retHash;
//		
//	}

	/**
	 * オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	private int callEKK0351B002SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0351B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351B002CBSMsg.class.getName());
		
		mappingEKK0351B002SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// 下りマッピング
		editResultRP_EKK0351B002CBS(sIFResult, param);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002, 
					mappingEKK0351B002SCOutMsg(resultMsgs));
			
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0351B002の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0351B002SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0351B002CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0351B002CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);

		//機能コード
		template.set(EKK0351B002CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1);
		
		//サービス契約番号
		template.set(EKK0351B002CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
		
		//サービス契約内訳番号
		template.set(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO));
		
		//オプションサービスコード
		template.set(EKK0351B002CBSMsg.KEY_OP_SVC_CD, inHash.get(JKKHakkoSODConstCC.OP_SVC_CD));
		
		//基準年月日
		template.set(EKK0351B002CBSMsg.KEY_BASE_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));
	}
	/**
	 * EKK0351B002の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0351B002の結果部分
	 */
	private CAANMsg[] mappingEKK0351B002SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);
		
		return msgList;
		
	}
	
	/**
	 * 機器提供サービス契約一覧照会（サービス契約番号）SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341B002SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0341B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B002CBSMsg.class.getName());
		
		mappingEKK0341B002SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002, 
					mappingEKK0341B002SCOutMsg(resultMsgs));
			
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0341B002の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0341B002SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341B002CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341B002CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002);

		//機能コード
		template.set(EKK0341B002CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿サービス契約番号
		template.set(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
		
		//ＫＥＹ＿機器提供サービスコード
		template.set(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, inHash.get(JKKHakkoSODConstCC.KKTK_SVC_CD));
	}
	/**
	 * EKK0341B002の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0341B002の結果部分
	 */
	private CAANMsg[] mappingEKK0341B002SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST);
		
		return msgList;
		
	}
	
	/**
	 * 機器提供サービス契約一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341B008SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
// OM-2013-0003213対応 20131011 MOD START
// JKKHakkoSODCCの修正内容を取込
//		//EKK0341B008への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0341B008CBSMsg.class.getName());
//		
//		mappingEKK0341B008SCInMsg(template, inHash, funcCode);
		
		template = new CAANMsg(EKK0341B022CBSMsg.class.getName());
		
		mappingEKK0341B022SCInMsg(template, inHash, funcCode);
// OM-2013-0003213対応 20131011 MOD END
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

// OM-2013-0003213対応 20131011 MOD START
// JKKHakkoSODCCの修正内容を取込
//			resultHash.put(
//					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008, 
//					mappingEKK0341B008SCOutMsg(resultMsgs));
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022, 
					mappingEKK0341B022SCOutMsg(resultMsgs));
// OM-2013-0003213対応 20131011 MOD END
		}
		return status;
	}
	
// OM-2013-0003213対応 20131011 ADD START
// JKKHakkoSODCCの修正内容を取込
		/**
		 * templateに対してEKK0341B008の条件に関する部分を設定する
		 * @param template 条件の設定先
		 * @param inHash 設定条件
		 * @param requestParam アプリ固有のパラメータ
		 */
		private void mappingEKK0341B022SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
		{

			//まずは全条件のNullマッピング
			fillCAANMSGNullMapping(template, new EKK0341B022CBSMsg().getContents());
			
			//テンプレートID(SIFのID)
			template.set(EKK0341B022CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022);

			//機能コード
			template.set(EKK0341B022CBSMsg.FUNC_CODE, funcCode);
			
			//ＫＥＹ＿サービス契約番号
			template.set(EKK0341B022CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
		}
		/**
		 * EKK0341B008の結果をHashとして抽出する
		 * @param resultMsgs EKK0081A010のテンプレートリスト
		 * @return EKK0341B008の結果部分
		 */
		private CAANMsg[] mappingEKK0341B022SCOutMsg(CAANMsg[] resultMsgs)
		{
			
			CAANMsg msg = null;
			CAANMsg[] msgList = null;
			
			//結果の抽出
			msg = resultMsgs[0];
			
			//結果の取得
			msgList = 
				(CAANMsg[])msg.getMsgData().get(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST);
			
			return msgList;
			
		}
// OM-2013-0003213対応 20131011 ADD END
	/**
	 * templateに対してEKK0341B008の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0341B008SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0341B008CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0341B008CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008);

		//機能コード
		template.set(EKK0341B008CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿サービス契約番号
		template.set(EKK0341B008CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
	}
	/**
	 * EKK0341B008の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0341B008の結果部分
	 */
	private CAANMsg[] mappingEKK0341B008SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0341B008CBSMsg.EKK0341B008CBSMSG1LIST);
		
		return msgList;
		
	}
	
	// 2012-02-29 開始
	/**
	 * EKK0361A010 オプションサービス契約<ISP>一意照会取得処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param kktkSvcKeiNoParam オプションサービス契約番号
	 * @param kktkGeneAddDtmParam オプションサービス契約世代登録年月日時分秒
	 * @return void
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getEKK0361A010Info(SessionHandle handle,
			IRequestParameterReadWrite param,
			String svc_kei_no_param,
			String op_gene_add_dtm_param) throws Throwable
	{
		// 【ANK-0046-00-01】IPV6対応
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		// EKK0361A010_オプションサービス契約<ISP>一意照会  2012-02-29
		HashMap<String, Object> eKK0361A010SCHash = new HashMap<String, Object>();

		HashMap<String, Object> inHashNet = new HashMap<String, Object>();
		HashMap<String, Object> resultHashNet = new HashMap<String, Object>();

		inHashNet.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, svc_kei_no_param);
		inHashNet.put(JKKHakkoSODConstCC.GENE_ADD_DTM, op_gene_add_dtm_param);
		
		statusCode = callEKK0361A010SC(param, handle, inHashNet, resultHashNet, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		eKK0361A010SCHash = (HashMap<String, Object>)resultHashNet.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010);
			
		return eKK0361A010SCHash;
	}
	/**
	 * IPV6判定処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param オプションサービス 契約番号
	 * @param オプションサービス 契約世代登録年月日時分秒
	 * @return void
	 * @throws Throwable 
	 */
	private void jdgIpv6EKK0361A010(SessionHandle handle,
			IRequestParameterReadWrite param,
			String ucwk_kei_no_param,
			String op_svc_kei_no_param,
			String op_svc_kei_gadtm_param) throws Throwable
	{
		// オプションサービス契約<ISP>一意照会
		HashMap<String, Object> eKK0361A010Info
		= getEKK0361A010Info(handle, param, op_svc_kei_no_param, op_svc_kei_gadtm_param);
		
		if (null != eKK0361A010Info)
		{
			jdgIpv6(handle, param, ucwk_kei_no_param, op_svc_kei_no_param, eKK0361A010Info);		// IPV6判定処理
		}
		return;
	}

	/**
	 * IPV6判定処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param eKK0361A010Info オプションサービス契約<ISP>一意照会結果のHashMap
	 * @param eKK0341A010Info 機器提供サービス契約一意照会結果のHashMap (null もあり)
	 * @return void
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void jdgIpv6(SessionHandle handle,
			IRequestParameterReadWrite param,
			String kei_ucwk_no_param,
			String op_svc_kei_no_param,
			HashMap<String, Object> eKK0361A010Info) throws Throwable
	{
		int statusCode = 0;
//		this.taishouIdx = 0;		// 処理対象のデータの場合のみカウントアップするインデックス
		
		// IPV6アドレスの取得 オプションサービス契約<ISP>一意照会結果より
		//↓↓↓2012-07-12変更、ST2-2012-0001378対応↓↓↓
		//IPv6アドレス未設定の場合（締結済以前）ヌルポにならないよう対処
		Object ipv6AdIfid = eKK0361A010Info.get(EKK0361A010CBSMsg1List.IPV6_AD_IFID);
		if (null != ipv6AdIfid && !"".equals(ipv6AdIfid.toString()))
		{
			this.op_addr_ipv6 = ipv6AdIfid.toString();
		}
		else
		{
			this.op_addr_ipv6 = null;
		}
		//↑↑↑2012-07-12変更、ST2-2012-0001378対応↑↑↑
		// 後日生かす this.kiki_ipv6_taio_flg = "";		// 宅内機器型式マスタ参照にて埋まるべき内容を初期化

		// @-3-2 EKK0341B008_機器提供サービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
		HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
		
		inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, this.svc_kei_no1);			// サービス契約番号
		//↓↓↓2012-07-05変更、IT2-2012-0001108対応↓↓↓
		//statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
		inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_CD, JKKHakkoSODConstCC.KKTK_SVC_CD_BBR);	// 機器提供サービスコード
		statusCode = callEKK0341B002SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
		//以下、EKK0341B008という標記をEKK0341B002に一式差替えます（当メソッド内）
		//↑↑↑2012-07-05変更、IT2-2012-0001108対応↑↑↑
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgEKK0341B002SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002);
		
		if (null != msgEKK0341B002SCList)
		{
			for(int i = 0 ; i < msgEKK0341B002SCList.length ; i ++)
			{
				HashMap<String, Object> eKK0341B002Hash = msgEKK0341B002SCList[i].getMsgData();		// 機器提供サービス契約一覧照会から1個分取得

				// 以下の処理では OLS 向けルータ情報のオーダー発行 (内容番号 148, 149)のために、互換性を保つように、
				// 添え字つきワーク変数にも値を入れている部分があるので、そこは不要なのではない。

//↓↓↓2012-07-05無効化、IT2-2012-0001108対応（照会時に機器提供サービスコードを指定するのでチェック不要）↓↓↓
//				String kktkSvcCd = shkkaChr((String)eKK0341B002Hash.get(EKK0341B008CBSMsg1List.KKTK_SVC_CD));		//機器提供サービスコード
//
//				// 宅内機器提供サービスコード＝BBR 以外はSOD発行対象外
//				if(!JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(kktkSvcCd))
//				{
//					continue;	//次のデータへ
//				}
//↑↑↑2012-07-05無効化、IT2-2012-0001108対応（照会時に機器提供サービスコードを指定するのでチェック不要）↑↑↑

				String kktkStat = shkkaChr((String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT));		//機器提供サービスステータス
// ▼ 2012/04/09 引継ぎ分の追加修正 解約は機器が有効・無効の二つの状態があるためここでは判定しない
				if (3 != this.sod_pattern_ipv6)
				{
					// 解約以外に合わせた ステータスを選ぶ  "010"（受付済）、"020"（承認済）、"030"（締結済）、"100"（サービス提供中）
					if((! JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(kktkStat))
					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_010.equals(kktkStat))
					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(kktkStat))
					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(kktkStat)))
					{
						continue;	//次のデータへ
					}
				}
//				if (3 == this.sod_pattern_ipv6)
//				{
//					// 解約に合わせた ステータスを選ぶ  "910"（解約済）、"920"（キャンセル済）
//					if((! JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(kktkStat))
//					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(kktkStat)))
//					{
//						continue;	//次のデータへ
//					}
//				}
//				else
//				{
//					// その他に合わせた ステータスを選ぶ  "010"（受付済）、"020"（承認済）、"030"（締結済）、"100"（サービス提供中）
//					if((! JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(kktkStat))
//					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_010.equals(kktkStat))
//					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(kktkStat))
//					  && (! JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(kktkStat)))
//					{
//						continue;	//次のデータへ
//					}
//				}
// ▲ 2012/04/09 引継ぎ分の追加修正
// ▼ 2012/04/09 引継ぎ分の追加修正
//				String check_kei_ucwk_no = shkkaChr((String)eKK0341B008Hash.get(EKK0341B008CBSMsg1List.SVC_KEI_UCWK_NO));		// 内訳番号
// ▲ 2012/04/09 引継ぎ分の追加修正
				String check_op_kei_no = shkkaChr((String)eKK0361A010Info.get(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));		// オプションサービス契約番号
				//String temp_kei_ucwk_gadtm = shkkaChr((String)eKK0341B008Hash.get(EKK0341B008CBSMsg1List.));		// 内訳
				
				// 異動区分（新規契約以外では１サービス契約の全てのIPV6 BBRを処理対象としないで限定する）
				if(! JKKHakkoSODConstCC.IDO_DIV_NEW.equals(this.ido_div))
				{
// ▼ 2012/04/09 引継ぎ分の追加修正
//					// 異動区分が新規、オプション設定以外のとき
//					if(! JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(this.ido_div))
//					{
//						// 内訳番号の合致のみ処理対象
//						if (! check_kei_ucwk_no.equals(shkkaChr(kei_ucwk_no_param)))
//						{
//							// 処理対象外と判定
//							continue;
//						}
//
//						// 内訳番号の合致のみ発行するケースで、当処理を呼び出す元が内訳ではなくオプションサービス一覧
//						// の件数分ループしながら、「オプションコードが IPV6だったら」という判定でここを呼ぶので、
//						//（回復オーダーなどのとき）、結局ここで同じものをダブって発行してしまうのを防ぐためのワーク
//						String findUcwkNo = checkUcwkMap.get(check_kei_ucwk_no);
//						if (! isBlank(findUcwkNo))
//						{
//							// HashMapに見つかったというっことは、発行済みなので、飛ばす
//							continue;
//						}
//					}
// ▲ 2012/04/09 引継ぎ分の追加修正
					// 異動区分がオプション設定のとき、発行しようとするオプション契約のみ処理対象
					if(JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(this.ido_div))
					{
						//this.ipv6_kktk_svc_kei_no = (String)eKK0341B008Hash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供
						if (! check_op_kei_no.equals(shkkaChr(op_svc_kei_no_param)))
						{
							// 処理対象外と判定
							continue;
						}
					}
				}

//				// この機器提供情報の一意照会
				String temp_ipv6_kktk_svc_kei_no =  shkkaChr((String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO));
				String temp_ipv6_kktk_svc_kei_gadtm =  shkkaChr((String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.GENE_ADD_DTM));
//↓↓↓2012-07-05変更、IT2-2012-0001108対応（一意照会は不要になった）↓↓↓
//				HashMap<String, Object> inHashKktk2 = new HashMap<String, Object>();
//				HashMap<String, Object> resultHashKktk2 = new HashMap<String, Object>();
//				inHashKktk2.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, temp_ipv6_kktk_svc_kei_no);
//				inHashKktk2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, temp_ipv6_kktk_svc_kei_gadtm);
//				
//				statusCode = callEKK0341A010SC(param, handle, inHashKktk2, resultHashKktk2, JKKHakkoSODConstCC.FUNC_CODE_1);
//				if(0 != statusCode)
//				{
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
//				HashMap<String, Object> retHash = (HashMap<String, Object>)resultHashKktk2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
//
//				// 機器製造番号など (EKK0341A010より)
//				this.kiki_seizo_no_ipv6 = shkkaChr((String)retHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));	// 機器製造番号
//				// 機器の宅内機器型式コード
//				this.taknkiki_model_cd_ipv6 = shkkaChr((String)retHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));	// 宅内機器型式
				// 機器製造番号など (EKK0341A010より)
				this.kiki_seizo_no_ipv6 = shkkaChr((String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO));	// 機器製造番号
				// 機器の宅内機器型式コード
				this.taknkiki_model_cd_ipv6 = shkkaChr((String)eKK0341B002Hash.get(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD));	// 宅内機器型式
//↑↑↑2012-07-05変更、IT2-2012-0001108対応（一意照会は不要になった）↑↑↑

				// 空であるか判定
				if (isBlank(this.kiki_seizo_no_ipv6) || isBlank(this.taknkiki_model_cd_ipv6))
				{
					// 処理対象外と判定
					continue;
				}

				// ここまで来て、まず第一段階としては処理対象であるので、キーも退避
				this.ipv6_kktk_svc_kei_no =  temp_ipv6_kktk_svc_kei_no;			//機器提供 サービス契約番号
				this.ipv6_kktk_svc_kei_gadtm =  temp_ipv6_kktk_svc_kei_gadtm;	//機器提供 サービス契約世代登録年月日時分秒

				// 機器製造番号のワーク
				if ((null == this.kiki_seizo_no) || (0 == this.kiki_seizo_no.length))
				{
					this.kiki_seizo_no = new String[3];
				}
				this.kiki_seizo_no[0] = this.kiki_seizo_no_ipv6;
				// 宅内機器型式コードのワーク
				if ((null == this.taknkiki_model_cd) || (0 == this.taknkiki_model_cd.length))
				{
					this.taknkiki_model_cd = new String[3];
				}
				this.taknkiki_model_cd[0] = this.taknkiki_model_cd_ipv6;

				//  機器のIPV6対応ON/OFF を取得 (宅内機器型式マスタ一意照会 privateメソッド getTaknkikiM を呼ぶ)
				HashMap<String, Object> taknkiki_model_m = getTaknkikiM(handle, param, this.taknkiki_model_cd_ipv6);			// 宅内機器型式マスタ
				if (null != taknkiki_model_m)
				{
					// 共通部品待ち
					this.kiki_ipv6_taio_flg = shkkaChr((String)taknkiki_model_m.get(EZM0411A010CBSMsg1List.IPV6_TAIO_FLG));	// 機器IPV6対応コード
				}
				
				// 情報が揃ったところで判定基準の設定
				if (isBlank(this.op_addr_ipv6))
				{
					this.op_addr_kakutei_ipv6 = false;		// IPV6アドレス確定済みでない
				}
				else
				{
					this.op_addr_kakutei_ipv6 = true;		// IPV6アドレス確定済みである
				}

				if ((!(isBlank(this.kiki_seizo_no_ipv6))) && (JKKHakkoSODConstCC.IPV6_TAIO_FLG_TAIO.equals(shkkaChr(this.kiki_ipv6_taio_flg)))) 
				{
					this.kiki_shukka_sumi_ipv6 = true;		// IPV6機器出荷済みである
				}
				else
				{
					this.kiki_shukka_sumi_ipv6 = false;		// IPV6機器出荷済みでない
				}
				
				// 実際に IPV6 SOD発行 (ipv6パターン this.sod_pattern_ipv6 は事前に設定済みのこと)
				if (kiki_shukka_sumi_ipv6)
				{
					if (op_addr_kakutei_ipv6)
					{
						// kktk_svc_kei_no と kktk_svc_kei_gadtm
						if ((null == this.kktk_svc_kei_no) || (1 > this.kktk_svc_kei_no.length))
						{
							this.kktk_svc_kei_no = new String[1];
						}
						this.kktk_svc_kei_no[0] = this.ipv6_kktk_svc_kei_no;
						if ((null == this.kktk_svc_kei_gadtm) || (1 > this.kktk_svc_kei_gadtm.length))
						{
							this.kktk_svc_kei_gadtm = new String[1];
						}
						this.kktk_svc_kei_gadtm[0] = this.ipv6_kktk_svc_kei_gadtm;

						// 内訳番号
// ▼ 2012/04/09 引継ぎ分の追加修正
//						this.ipv6_svc_kei_ucwk_no = check_kei_ucwk_no;
// ▲ 2012/04/09 引継ぎ分の追加修正

						// svc_kei_ucwk_no と svc_kei_ucwk_gadtm
						if ((null == this.svc_kei_ucwk_no) || (1 > this.svc_kei_ucwk_no.length))
						{
							this.svc_kei_ucwk_no = new String[1];
						}
// ▼ 2012/04/09 引継ぎ分の追加修正
//						this.svc_kei_ucwk_no[0] = check_kei_ucwk_no;
						this.svc_kei_ucwk_no[0] = this.ipv6_svc_kei_ucwk_no;
// ▲ 2012/04/09 引継ぎ分の追加修正

						if ((null == this.svc_kei_ucwk_gadtm) || (1 > this.svc_kei_ucwk_gadtm.length))
						{
							this.svc_kei_ucwk_gadtm = new String[1];
						}
						this.svc_kei_ucwk_gadtm[0] = this.ipv6_svc_kei_ucwk_gadtm;

						hakkouIpv6(handle, param, eKK0361A010Info);		// IPV6 SOD発行

// ▼ 2012/04/09 引継ぎ分の追加修正
//						// 発行した分の内訳番号も記憶 異動区分（新規契約以外）
//						if(! JKKHakkoSODConstCC.IDO_DIV_NEW.equals(this.ido_div))
//						{
//							// 異動区分が新規、オプション設定以外のとき
//							if(! JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(this.ido_div))
//							{
//								// 発行したキーで、（valueも同じ文字列でよい） put しておく
//								this.checkUcwkMap.put(check_kei_ucwk_no, check_kei_ucwk_no);
//							}
//						}
// ▲ 2012/04/09 引継ぎ分の追加修正

//						// 発行後のみにインデックスをカウントアップ
//						this.taishouIdx++;
					}
				}
			}
		}
		return;
	}

	/**
	 * IPV6 SOD発行内部処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param eKK0361A010Info オプションサービス契約<ISP>一意照会結果のHashMap
	 * @param eKK0341A010Info 機器提供サービス契約一意照会結果のHashMap (null もあり)
	 * @return void
	 * @throws Throwable 
	 */
	private void hakkouIpv6(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> eKK0361A010Info) throws Throwable
	{
		// 【ANK-0046-00-01】IPV6対応
		// 2012-02-29 追加したprivateメソッド
		if (1 == this.sod_pattern_ipv6)
		{
			// IPV6・登録
			this.yokyu_sbt = JKKHakkoSODConstCC.YOKYU_SBT_CD_NEW;
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_155);
			// ルーター向け接続情報・登録
			this.yokyu_sbt = JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG;	//OLSは変更で。
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_163);
		}
		else if (2 == this.sod_pattern_ipv6)
		{
			// IPV6・変更
			this.yokyu_sbt = JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG;
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_156);
			// ルーター向け接続情報・変更
			this.yokyu_sbt = JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG;	//OLSは変更で。
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_163);
		}
		else if (3 == this.sod_pattern_ipv6)
		{
			// IPV6・解約
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_157);
			// IPV6・消去
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_158);
			// ルーター向け接続情報・変更
			this.yokyu_sbt = JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG;	//OLSは変更で。
			param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_163);
		}
		
		return;
	}
	// 2012-02-29 終了
	
// ▼ 2012/04/09 引継ぎ分の追加修正
	/**
	 * 宅内機器型式一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private int callEZM0411A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EZM0411A010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0411A010CBSMsg.class.getName());
		
		mappingEZM0411A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//クエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EZM0411A010, 
					mappingEZM0411A010SCOutMsg(resultMsgs));
			
		}
		
		param = editErrorInfoEZM0411A010CBS(param, resultMsgs, status);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)status).toString(), resultMsgs[0].getInt(EZM0411A010CBSMsg.STATUS)));
		}
		
		return status;
	}
	/**
	 * templateに対してEZM0411A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEZM0411A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EZM0411A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EZM0411A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EZM0411A010);

		//機能コード
		template.set(EZM0411A010CBSMsg.FUNC_CODE, funcCode);
		
		//宅内機器型式コード
		template.set(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, inHash.get(JKKHakkoSODConstCC.TAKNKIKI_MODEL_CD));
		
	}
	/**
	 * EZM0411A010の結果をHashとして抽出する
	 * @param resultMsgs EZM0411A010のテンプレートリスト
	 * @return EZM0411A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEZM0411A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		
		return retHash;
		
	}
	
	/**
	 * EZM0411A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * @param param 業務データ取得・書込用I/F
	 * @param templates CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private IRequestParameterReadWrite editErrorInfoEZM0411A010CBS(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode) throws Throwable
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EZM0411A010CBSMsg.STATUS);
		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);
		}
		
		return param;
	}

	/**
	 * EZM0411A010 宅内機器型式取得処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @param kktkSvcCdParam 機器提供サービスコード
	 * @return HashMap EZM0411A010 の1個分
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getTaknkikiM(SessionHandle handle,
			IRequestParameterReadWrite param,
			String taknkikiModelCd) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		HashMap<String, Object> eZM0411A010SCHash = null;			// EZM0411A010 宅内機器型式

		HashMap<String, Object> inHashTakn = new HashMap<String, Object>();
		HashMap<String, Object> resultHashTakn = new HashMap<String, Object>();
		
		inHashTakn.put(JKKHakkoSODConstCC.TAKNKIKI_MODEL_CD, taknkikiModelCd);			// 宅内機器型式コード
		
		statusCode = callEZM0411A010SC(param, handle, inHashTakn, resultHashTakn, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		eZM0411A010SCHash = (HashMap<String, Object>)resultHashTakn.get(JKKHakkoSODConstCC.TEMPLATE_ID_EZM0411A010);
			
		return eZM0411A010SCHash;

	}
// ▲ 2012/04/09 引継ぎ分の追加修正
	
	/**
	 * EKK1041B001 オーダ設定一覧照会を実行します
	 * 
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param orderSbtCd オーダ種別コード
	 * @param svcOrderCd サービスオーダコード
	 * @param yokyuSbtCd 要求種別コード
	 * @param svc_kei_no サービス契約番号
	 * @return 照会結果
	 * @throws Exception 任意の例外
	 * @since 2012-07-24 追加　ST2-2012-0001384対応
	 */
	private ArrayList<HashMap<String, Object>> callEKK1041B001SC(
			IRequestParameterReadWrite param, SessionHandle handle,
			String orderSbtCd, String svcOrderCd, String yokyuSbtCd,
			String svc_kei_no) throws Exception
	{
		//EKK1041B001への呼び出しパラメータ設定
		CAANMsg template = mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no);
		editBasicCmn(param, template);
		
		//サービスIF共通の情報を設定
		HashMap<String, Object> sIFRequest = editInMsgCmn(param);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SIFの呼び出し
		Map<?, ?> sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		return editResultRP_EKK1041B001SC(sIFResult, param);
	}


	/**
	 * EKK1041B001 オーダ設定一覧照会S-IF　入力マッピング
	 * 
	 * @param orderSbtCd オーダ種別コード
	 * @param svcOrderCd サービスオーダコード　Null可
	 * @param yokyuSbtCd 要求種別コード　Null可
	 * @param svc_kei_no サービス契約番号
	 * @return 入力パラメータ・テンプレート
	 * @since 2012-07-24 追加　ST2-2012-0001384対応
	 */
	private CAANMsg mappingEKK1041B001SCInMsg(String orderSbtCd, String svcOrderCd, String yokyuSbtCd, String svc_kei_no)
	{
		CAANMsg template = new CAANMsg(EKK1041B001CBSMsg.class.getName());
		
		//テンプレートID(SIFのID)
		template.set(EKK1041B001CBSMsg.TEMPLATEID, "EKK1041B001");

		//機能コード
		template.set(EKK1041B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		//ＫＥＹ＿オーダ種別コード
		template.set(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD, orderSbtCd);
		
		//ＫＥＹ＿サービスオーダコード
		if (null != svcOrderCd)
		{
			template.set(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, svcOrderCd);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD);
		}
		
		//ＫＥＹ＿最新要求種別コード
		if (null != yokyuSbtCd)
		{
			template.set(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD, yokyuSbtCd);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD);
		}
		
		//ＫＥＹ＿サービス契約番号
		template.set(EKK1041B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);


		String[] nullKeys = {
				EKK1041B001CBSMsg.KEY_SVC_KEI_UCWK_NO,		//ＫＥＹ＿サービス契約内訳番号
				EKK1041B001CBSMsg.KEY_OP_SVC_KEI_NO,		//ＫＥＹ＿オプションサービス契約番号
				EKK1041B001CBSMsg.KEY_MLAD,					//ＫＥＹ＿メールアドレス
				EKK1041B001CBSMsg.KEY_KKTK_SVC_KEI_NO,		//ＫＥＹ＿機器提供サービス契約番号
				EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD,	//ＫＥＹ＿宅内機器型式コード
				EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO,		//ＫＥＹ＿機器製造番号
				EKK1041B001CBSMsg.KEY_SPOT_LOGIN_SYSID		//ＫＥＹ＿スポットログインＳＹＳＩＤ
			};
		for (int i = 0; i < nullKeys.length; i++)
		{
			template.setNull(nullKeys[i]);
		}
		
		return template;
	}


	/**
	 * EKK1041B001 オーダ設定一覧照会　出力マッピング
	 * 
	 * @param result 照会結果
	 * @param param リクエストパラメータ
	 * @return 照会結果
	 * @throws Exception 任意の例外
	 * @since 2012-07-24 追加　ST2-2012-0001384対応
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> editResultRP_EKK1041B001SC(
			Map<?, ?> result, IRequestParameterReadWrite param) throws Exception {
		//結果の取得
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		//ステータスの検査
		Integer returnCode = (Integer)result.get(JCMConstants.RET_CD_INT_KEY);
		int templateStatus = template.getInt(EKK1041B001CBSMsg.STATUS);
		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);
		}

		//エラー情報のマップを取得
		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));

		//必要なら例外発生
		if (0 != returnCode || 0 != templateStatus)
		{
			throw new SCCallException("サービスインターフェイス呼出しでエラー発生", returnCode.toString(), Integer.valueOf(templateStatus));
		}

		//照会結果を格納
		Object[][] contents = (new EKK1041B001CBSMsg1List()).getContents();
		
		CAANMsg[] childTemplates = template.getCAANMsgList(EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST);

		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		for (int i = 0; i < childTemplates.length; i++)
		{
			HashMap<String, Object> retMap = new HashMap<String, Object>();
			for (int j = 0; j < contents.length; j++)
			{
				retMap.put((String)contents[j][0], childTemplates[i].getString((String)contents[j][0]));
			}
			retList.add(retMap);
		}

		return retList;
	}
	
	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		
		//要素ごとのループ
		for(int i = 0 ; i < contents.length ; i++)
		{
			
			Object element = null;
			
			//キーに該当する箇所の取得
			element = contents[i][0];

			//Nullでマッピング
			msg.setNull((String)element);
			
		}
		
	}
	/**
	 * 条件部の共通する項目の設定
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
	}
	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param) 
	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));
				
		return paramMap;
	}
	
	/** ▲▲▲▲▲共通で利用するサービスインターフェイス用メソッドです▲▲▲▲▲ */
	
	/** ▼▼▼▼▼共通で利用するロジックメソッドです▼▼▼▼▼ */
	
	/**
	 * Stringの値がNullか空白ならばtrue、それ以外はfalseを返します
	 * @param param
	 * @return boolean
	 */
	private boolean isBlank(String param)
	{
		if(null == param || JKKHakkoSODConstCC.STRING_BLANK.equals(param)){
			return true;
		}
		return false;
	}
	
	/***
	 * 処理対象がマンションタイプ（プライベート）かを返します
	 * @return マンションタイプ（プライベート）ならばtrue、それ以外（ホーム含む）ならばfalse
	 */
	private boolean isMansionPrvate()
	{
		
		if(JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1.equals(pcrs_cd))
		{
			return true;
		}
		else if(JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2.equals(pcrs_cd))
		{
			return true;
		}
		else if(JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER.equals(pcrs_cd))
		{
			return true;
		}
			
		return false;
		
	}
	
	/** ▲▲▲▲▲共通で利用するロジックメソッドです▲▲▲▲▲ */
	
	/**
	 * 同一オプションのサービス契約のサブオプションがあるかを判断し
	 * その件数を返却する。(同一処理番号の取得判定に利用)
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param svcKeiNo サービス契約番号
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @param opSvcGeneAddDtm オプションサービス世代登録年月日
	 * @return 同一オプションサービス契約のサブオプションの件数
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private int sameTrnJdg(IRequestParameterReadOnly param, String fixedText, String svcKeiNo, String opSvcKeiNo, String opSvcGeneAddDtm) throws RequestParameterException
	{
		int retCount = 0;
		HashMap svc_kei_info_Map = new HashMap();
		HashMap opsvkei_info_Map = new HashMap();
		
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 対象データリスト取得
		ArrayList dataList = (ArrayList)inMap.get(JKKHakkoSODConstCC.TRGT_DATA_LIST);
		for (int i = 0 ; i < dataList.size(); i++)
		{
			HashMap sodMap = (HashMap)dataList.get(i);
			if (sodMap != null)
			{
				// パラメータ取得
				svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
				opsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO);			// オプションサービス契約情報
				// 取得値チェック
				if(svc_kei_info_Map == null || opsvkei_info_Map == null)
				{
					continue;
				}
			}
			
			if(svcKeiNo.equals(svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO))
					&& opSvcKeiNo.equals(opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO))
					&& opSvcGeneAddDtm.equals(opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM))
					&& !isBlank((String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SBOPSVKEI_NO)))
			{
				retCount ++;
			}
		}
		return retCount;
	}
	
	/**
	 * 渡された情報と前回処理したマップ情報を比較し、
	 * 一致しない場合はtrueを返却する。
	 * @param chbfOpSvcKeiNo 変更前オプションサービス契約番号
	 * @param chbfOpSvcKeiGeneAddDtm 変更前オプションサービス契約世代登録年月日
	 * @param chafOpSvcKeiNo 変更後オプションサービス契約番号
	 * @param chafOpSvcKeiGeneAddDtm 変更後オプションサービス契約世代登録年月日
	 * @return
	 */
	private boolean chgOpsvKeiJdg(String chbfOpSvcKeiNo, String chbfOpSvcKeiGeneAddDtm, String chafOpSvcKeiNo, String chafOpSvcKeiGeneAddDtm )
	{
		if(this.mae_recode_chbf_op_svc_kei_no.equals(chbfOpSvcKeiNo)
				&& this.mae_recode_chbf_op_svc_kei_gene_add_dtm.equals(chbfOpSvcKeiGeneAddDtm)
				&& this.mae_recode_chaf_op_svc_kei_no.equals(chafOpSvcKeiNo)
				&& this.mae_recode_chaf_op_svc_kei_gene_add_dtm.equals(chafOpSvcKeiGeneAddDtm))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 渡された情報と前回処理したマップ情報を比較し、
	 * 一致しない場合はtrueを返却する。
	 * @param chSvcKeiNo サービス契約番号
	 * @return
	 */
	private boolean chgSvcKeiJdg(String chSvcKeiNo)
	{
		if(this.mae_recode_ch_svc_kei_no.equals(chSvcKeiNo))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * HashMap初期化処理
	 * HashMapがnullの場合に初期化する。
	 * @param map
	 * @return
	 */
	private HashMap<String, Object> shkkaMap(HashMap<String, Object> map)
	{
		if(map == null)
		{
			map = new HashMap<String, Object>();
		}
		return map;
	}

	/**
	 * 文字列初期化処理
	 * Stringがnullの場合に空文字初期化する。
	 * @param shkkaChr  対象文字列
	 * @return
	 */
	private String shkkaChr(String trgtChr)
	{
		if(trgtChr == null)
		{
			trgtChr = "";
		}
		return new String(trgtChr);
	}
	// ANK-0099-00-00 2012/05/25 kitatani end
	
	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）取得処理<br>
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @throws SCException 
	 * @throws RequestParameterException 
	 * @throws CCException 
	 */
	private HashMap<String, Object> getEKK0251B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			String funcCode) throws RequestParameterException, SCException, CCException
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		// EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）
		HashMap<String, Object> inHashKaisenUcwk = new HashMap<String, Object>();
		HashMap<String, Object> resultKaisenUcwk = new HashMap<String, Object>();
		
		inHashKaisenUcwk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svcKeiNo);	// サービス契約番号
		
		statusCode = callEKK0251B001SC(param, handle, inHashKaisenUcwk, resultKaisenUcwk, funcCode);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		return (HashMap<String, Object>)resultKaisenUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001);

	}
	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0251B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0251B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251B001CBSMsg.class.getName());
		
		mappingEKK0251B001SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001, 
					mappingEKK0251B001SCOutMsg(resultMsgs));
		}
		return status;
	}
	
	/**
	 * templateに対してEKK0251B001の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0251B001SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0251B001CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0251B001CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001);
		
		//機能コード
		template.set(EKK0251B001CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿サービス契約番号
		template.set(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO));
		
	}
	/**
	 * EKK0251B001の結果をHashとして抽出する
	 * @param resultMsgs EKK0251B001のテンプレートリスト
	 * @return EKK0251B001の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEKK0251B001SCOutMsg(CAANMsg[] resultMsgs)
	{
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST);
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		return retHash;
	}
	
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
// ▼ 2012/07/05 巻取A 現行ICS指摘No.286,289,290 番ポ関連の入力項目追加
	/**
	 * 番ポ同時申込処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite bmpDojiMskm(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> sodMap, Boolean boolBmp) throws Throwable
	{
		// 
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
		
		// 光電話番号の変更処理(1番号のみ)
		// 光電話の変更処理

		// 同一処理番号の採番
		String[] sameTrnNo = new String[1];
		getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
		this.same_trn_no = sameTrnNo[0];
		
		this.svc_kei_ucwk_no = new String[1];
		this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
		this.svc_kei_ucwk_gadtm = new String[1];
		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
		
		// SIP・停止解除
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_224);
		
		//
		if (null == boolBmp)
		{
			// EKK0191A010_サービス契約内訳＜eo光電話＞一意照会
			HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
			HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
			inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
			inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
			
			statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 結果の取得
			HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
			
			// 番ポ有の場合
			boolBmp = new Boolean(JKKHakkoSODConstCC.BMP_UM_ARI.equals((String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM)));
		}

		//番ポ有りの場合
		if (boolBmp)
		{
			// SIP・番ポ情報登録
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_225);
		}
		
		// オプションの登録
		// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashOp = new HashMap<String, Object>();
		HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
		inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
		inHashOp.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_N050);	// ０５０ナンバープラスオプション
		
		statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
		
		//オプションデータの件数分繰り返し
		for(int i = 0 ; i < msgList.length ; i ++)
		{
			HashMap<String, Object> eKK0351B002Hash = msgList[i].getMsgData();
			String op_svc_kei_stat = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス
			
			// オプションサービス契約ステータスが「サービス提供中」or「休止・中断中」の場合
			if(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat) ||
				JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
			{
				this.op_svc_kei_no_tikan = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号;
				this.op_gadtm_tikan = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();			// 世代登録年月日時分秒
				
				// 番号置換・登録
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_248);
			}
		}
		
		//↓↓↓2012-10-03変更　ロット２残件対応（番ポの再利用停止）↓↓↓
		param = addItnTokiSOD(handle, param, svc_kei_ucwk_no, JKKHakkoSODConstCC.ODR_NAIYO_CD_220);
		//↑↑↑2012-10-03変更　ロット２残件対応（番ポの再利用停止）↑↑↑

		return param;
	}


	/**
	 * 移転先登録によるトーキにかかるトーキ開始　および　トーキ解約＋トーキ消去のＳＯＤ発行条件を登録します
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ一式
	 * @param svc_kei_ucwk_no 移転先のサービス契約内訳
	 * @return リクエストパラメータ一式
	 * @throws Throwable 任意の例外
	 * @since 2012-10-03 ロット２残件追加（番ポの再利用停止）
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addItnTokiSOD(SessionHandle handle, IRequestParameterReadWrite param,
			String svc_kei_ucwk_no, String odrNaiyoCd) throws Throwable
	{
		// EKK0191B502_移転元サービス契約内訳<eo光電話>一覧照会
		HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
		
		int statusCode = callEKK0191B502SC(param, handle, svc_kei_ucwk_no, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] ekk0191b502Templates = (CAANMsg[])resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191B502);
		for (CAANMsg childTempl : ekk0191b502Templates)
		{
			HashMap<String, Object> eKK0191B502Hash = childTempl.getMsgData();
			
			// 移転先トーキ登録の確認
			String itntokiKiboUm = (String)eKK0191B502Hash.get(EKK0191B502CBSMsg1List.ITENS_OPAF_TOKI_KIBO_UM);
			String itntokiAddCd = (String)eKK0191B502Hash.get(EKK0191B502CBSMsg1List.ITENS_OPAF_TOKI_ADD_CD);
			
			// 移転トーキ情報の確認(移転先登録)
			// 「移転トーキ希望有無」が有で「移転トーキ登録コード」が「移転先登録によるトーキ」の場合
			if(JKKHakkoSODConstCC.ITNTOKI_KIBO_UM_ARI.equals(itntokiKiboUm) &&
				JKKHakkoSODConstCC.ITNTOKI_ADD_CD_ADD.equals(itntokiAddCd))
			{
//				//一旦サービス契約番号を差替え
//				HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
//				String currSvcKeiNo = (String)inMap.get("svc_kei_no");
//				String currSvcKeiAdm = (String)inMap.get("svkei_gadtm");
//				String tempSvcKeiNo = (String)eKK0191B502Hash.get(EKK0191B502CBSMsg1List.SVC_KEI_NO);
//				inMap.put("svc_kei_no", tempSvcKeiNo);
////				String tempSvcKeiAdm = (String)eKK0191B502Hash.get(EKK0191B502CBSMsg1List.KK0081_GENE_ADD_DTM);
////				inMap.put("svkei_gadtm", tempSvcKeiAdm);
				
				//移転元のサービス契約内訳に差替え
				this.svc_kei_ucwk_no[0] = (String)eKK0191B502Hash.get(EKK0191B502CBSMsg1List.SVC_KEI_UCWK_NO);
				this.svc_kei_ucwk_gadtm[0] = (String)eKK0191B502Hash.get(EKK0191B502CBSMsg1List.GENE_ADD_DTM);
	
				// SIP・トーキ登録／ SIP・トーキ解約
				param = addSOD(handle, param, odrNaiyoCd);
				
				//SIP・トーキ解約の指定の場合、トーキ消去SODも出力
				if (JKKHakkoSODConstCC.ODR_NAIYO_CD_221.equals(odrNaiyoCd))
				{
					// SIP・トーキ消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_222);
				}
				
//				//オーダ発行条件登録用サービス契約番号を元に戻す
//				inMap.put("svc_kei_no", currSvcKeiNo);
//				inMap.put("svkei_gadtm", currSvcKeiAdm);
			}
		}
		
		return param;
	}


	/**
	 * 電話番号変更処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @param mode 0:光電話番号変更、1:番ポ追加申込
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite telNoChge(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap,
			String mode) throws Throwable
	{

		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		
		// (1) 光電話番号変更必須パラメータの取得
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
		
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
		String chbf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更前サービス契約内訳世代登録年月日時分秒
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
		
		// (3) 光電話番号の変更処理(1番号のみ)
		// @光電話の変更処理
		// @-1 同一処理番号の採番
		String[] sameTrnNo = new String[1];
		getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
		this.same_trn_no = sameTrnNo[0];
		
		this.svc_kei_ucwk_no = new String[1];
		this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
		this.svc_kei_ucwk_gadtm = new String[1];
		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
		
// ▼ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
		// EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）
		HashMap<String, Object> eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, JKKHakkoSODConstCC.FUNC_CODE_1);
		
		// サービス回線内訳番号
		this.svc_kei_kaisen_ucwk_no = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		// サービス回線内訳世代登録年月日時分秒
		this.svc_kei_kaisen_ucwk_gadtm = (String)eKK0251B001Hash.get(EKK0251B001CBSMsg1List.GENE_ADD_DTM);
// ▲ 2012/07/04 巻取A IT2-2012-0000428 VLAN-ID本格対応
		
		// @-2 VAの紐付きの確認
		// @-2-1 EKK0191A010_サービス契約内訳<eo光電話>一意照会
		HashMap<String, Object> inHashUcwk = new HashMap<String, Object>();
		HashMap<String, Object> resultHashUcwk = new HashMap<String, Object>();
		
		inHashUcwk.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
		inHashUcwk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
		
		statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		HashMap<String, Object> eKK0191A010Hash = (HashMap<String, Object>)resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010);
		
		//VA宅内機器型式コード
		String vaTaknkikiModelCd = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_TAKNKIKI_MODEL_CD);
		//VA機器製造番号
		String vaKikiSeizoNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_KIKI_SEIZO_NO);
		
		// @-2-2 EKK0341B008_機器提供サービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
		HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
		inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
		
		statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B008);
		
		for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
		{
			HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
			
			String taknkikiSbtCd = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.TAKNKIKI_SBT_CD);	//宅内機器種別コード
			String kktkSvcKeiNo = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);	//機器提供サービス契約番号
			String kktkGeneAddDtm = (String)eKK0341B008SCHash.get(EKK0341B008CBSMsg1List.GENE_ADD_DTM);		//世代登録年月日時分秒
			
			// 宅内機器種別コード＝eo電話用VA 以外はSOD発行対象外
			if(!JKKHakkoSODConstCC.TAKNKIKI_SBT_CD_TELVA.equals(taknkikiSbtCd))
			{
				continue;	//次のデータへ
			}
			
			// 宅内機器種別コード＝eo電話用VAの場合
			// 機器情報が2件以上の場合
			if(msgEKK0341B008SCList.length > 1)
			{
				// EKK0341A010_機器提供サービス契約一意照会
				HashMap<String, Object> inHashKktk2 = new HashMap<String, Object>();
				HashMap<String, Object> resultHashKktk2 = new HashMap<String, Object>();
				inHashKktk2.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
				inHashKktk2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, kktkGeneAddDtm);
				
				statusCode = callEKK0341A010SC(param, handle, inHashKktk2, resultHashKktk2, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				HashMap<String, Object> retHash = (HashMap<String, Object>)resultHashKktk2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
				String kkTaknkikiModelCd = (String)retHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
				String kkKikiSeizoNo = (String)retHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);			// 機器製造番号
				
				if(kkTaknkikiModelCd == null || kkKikiSeizoNo == null)
				{
					continue;
				}
				
				// サービス契約内訳＜eo光電話＞一意照会と機器提供サービス契約一意照会の機器情報が一致しない場合
				if(!kkTaknkikiModelCd.equals(vaTaknkikiModelCd) || !kkKikiSeizoNo.equals(vaKikiSeizoNo))
				{
					continue;	// 次のデータへ
				}
				// 一致する場合オーダ発行
			}
			
			this.kktk_svc_kei_no = new String[1];
			this.kktk_svc_kei_no[0] = kktkSvcKeiNo;			// 機器提供サービス契約番号
			this.kktk_svc_kei_gadtm = new String[1];
			this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm;	// 機器提供サービス契約世代登録年月日時分秒
			this.taknkiki_model_cd = new String[1];
			this.taknkiki_model_cd[0] = vaTaknkikiModelCd;	// 宅内機器型式コード
			this.kiki_seizo_no = new String[1];
			this.kiki_seizo_no[0] = vaKikiSeizoNo;			// 機器製造番号
			
			// OLS設定・電話番号追加
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_208);
			break;
		}
		
		if (isBlank(chbf_svc_kei_ucwk_gene_add_dtm))
		{
			// 変更前サービス契約内訳世代登録年月日時分秒が未設定の場合
			
			// EKK0191B002_電話番号情報履歴一覧照会
			HashMap<String, Object> resultHashEKK0191B002 = new HashMap<String, Object>();
			statusCode = callEKK0191B002SC(param, handle, svc_kei_ucwk_no, resultHashEKK0191B002, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			CAANMsg[] msgEKK0191B002List = (CAANMsg[])resultHashEKK0191B002.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191B002);
			
			// 取得結果より、変更前電話番号を保持している世代を特定し、
			// その世代登録年月日時分秒を変更前サービス契約内訳世代登録年月日時分秒に設定する
			if (msgEKK0191B002List != null && msgEKK0191B002List.length > 0)
			{
				String telno = null;
				for (int i = msgEKK0191B002List.length - 1; i >= 0; i--)
				{
					CAANMsg msgEKK0191B002 = msgEKK0191B002List[i];
					String tmpTelno = msgEKK0191B002.getString(EKK0191B002CBSMsg1List.TELNO);
					if (isBlank(telno))
					{
						telno = tmpTelno;
					}
					else if (!telno.equals(tmpTelno))
					{
						chbf_svc_kei_ucwk_gene_add_dtm = msgEKK0191B002.getString(EKK0191B002CBSMsg1List.GENE_ADD_DTM);
					}
				}
			}
		}
		
		// @-3 SIP向けSOD発行(変更前の電話の解約)
		this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;	//変更前サービス契約内訳世代登録年月日時分秒
		
		// SIP・解約
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_229);
		// SIP・消去
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_230);
		
		// @-4 SIP向けSOD発行(変更後の電話の登録)
		// SIP・登録
		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	//変更後サービス契約内訳世代登録年月日時分秒
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_218);
		
		// 番ポ追加申込分の場合
		if(JKKHakkoSODConstCC.TEL_CHNG_DIV_BMP_ADD_MSKM.equals(mode)){
			// SIP・番ポ情報登録
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_225);
		}
		// @-5 オプションの登録
		// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashOp = new HashMap<String, Object>();
		HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
		inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
		
		statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
		
		boolean telOpUm = false;	//電話オプション（０５０以外）有無
		
		//オプションデータの件数分繰り返し
		for(int i = 0 ; i < msgList.length ; i ++)
		{
			HashMap<String, Object> eKK0351B002Hash = msgList[i].getMsgData();
			String op_svc_kei_stat = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス
			String op_svc_cd = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
			
			// ０５０ナンバープラスオプションの場合
			if(JKKHakkoSODConstCC.OP_SVC_CD_N050.equals(op_svc_cd))
			{
				// オプションサービス契約ステータスが「サービス提供中」or「休止・中断中」の場合
				if(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(op_svc_kei_stat) ||
					JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
				{
					this.op_svc_kei_no_tikan = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号;
					this.op_gadtm_tikan = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();			// 世代登録年月日時分秒
					
					// 番号置換・消去
					this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;	//変更前サービス契約内訳世代登録年月日時分秒
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_249);
					
					// 番号置換・登録
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	//変更後サービス契約内訳世代登録年月日時分秒
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_248);
				}
			}
			// ０５０ナンバープラスオプション以外の場合
			else
			{
				telOpUm = true;
			}
		}
		
		//電話オプション（０５０以外）有の場合
		if(telOpUm)
		{
			// SIP・オプション一括登録(050以外のオプション一括登録)
			this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	//変更後サービス契約内訳世代登録年月日時分秒
			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_219);
		}
		
		//@-6 緊急通報SOD発行
		// 緊急通報・消去
		this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;	//変更前サービス契約内訳世代登録年月日時分秒
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_252);
		
		// 緊急通報・登録
		this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;	//変更後サービス契約内訳世代登録年月日時分秒
		param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_250);
		
		return param;
	}

	/**
	 * 番ポ切り替えオーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite bmpSwitchOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		// パラメータ取得
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);			// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);				// サービス契約情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		
		// IT2-2016-0000004 2016/02/22 MOD START
		//String svc_kind = jdgSvcKind_PcrsCd();
		String svc_kind = jdgSvcKind();
		// IT2-2016-0000004 2016/02/22 MOD END
		
		// 電話以外は何も行わない
		if(!JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind)){
			return param;
		}
		
		String bmp_syori_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_BMP_SYORI_DIV);			// 番ポ処理区分
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);	// サービス契約内訳番号
		
		if (isBlank(bmp_syori_div))
		{
			// 番ポ処理区分が未設定の場合
			
			// EKK0161B008_番ポ申込種別照会
			HashMap<String, Object> inHash = new HashMap<String, Object>();
			HashMap<String, Object> resultHash = new HashMap<String, Object>();
			inHash.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);		// サービス契約内訳番号
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, null);						// サービス契約内訳世代登録年月日時分秒
			
			// EKK0161B008_番ポ申込種別照会
			statusCode = callEKK0161B008SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			CAANMsg[] msgList = (CAANMsg[])resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B008);
			
			// 上記のSIFで複数の申込種別コードが返る可能性があるため、件数分繰り返し、該当の申込種別コードが判定できた時点でループを抜ける
			for(int i = 0 ; i < msgList.length ; i ++)
			{
				HashMap<String, Object> eEKK0161B008Hash = msgList[i].getMsgData();
				String mskmSbtCd = eEKK0161B008Hash.get(EKK0161B008CBSMsg1List.MSKM_SBT_CD).toString();	// 申込種別コード
				
				// 申込種別コードが00001：新規申込、00002：サービス追加申込、00034：電話番号追加申込の場合
				if(JKKHakkoSODConstCC.MSKM_SBT_CD_NEW_MSKM.equals(mskmSbtCd) || 
						JKKHakkoSODConstCC.MSKM_SBT_CD_SVC_ADD_MSKM.equals(mskmSbtCd) ||
						JKKHakkoSODConstCC.MSKM_SBT_CD_TEL_ADD_MSKM.equals(mskmSbtCd))
				{
					// 番ポ同時申込の場合、利用停止解除
					
					bmp_syori_div = JKKSvcConst.BMP_TRAN_SKBT_CD_USE_STP_RLS;
					break;
				}
				// 00035：電話番号変更申込の場合
				else if(JKKHakkoSODConstCC.MSKM_SBT_CD_TEL_CHG_MSKM.equals(mskmSbtCd))
				{
					// 番ポ追加申込の場合、番号切替
					
					bmp_syori_div = JKKSvcConst.BMP_TRAN_SKBT_CD_NO_SWCH;
					break;
				}
			}
		}
		
		// 番ポ処理区分が利用停止解除の場合
		if(JKKSvcConst.BMP_TRAN_SKBT_CD_USE_STP_RLS.equals(bmp_syori_div))
		{
			// 番ポ同時申込
			param = bmpDojiMskm(handle, param, sodMap, (new Boolean(true)));
// Y.Morimoto Add
			bmpJisshiFlg = true;
		}
	
		// 番ポ追加申込が利用停止の場合
		else if(JKKSvcConst.BMP_TRAN_SKBT_CD_USE_STP.equals(bmp_syori_div))
		{
			// 利用停止オーダ制御処理
			param = useStpOdrCtrl(handle, param, fixedText, sodMap);
// Y.Morimoto Add
			bmpJisshiFlg = true;
		}
		
		// 番ポ追加申込が番号切替の場合
		else if(JKKSvcConst.BMP_TRAN_SKBT_CD_NO_SWCH.equals(bmp_syori_div))
		{
			// 番ポ追加申込
			param = telNoChge(handle, param, fixedText, sodMap, JKKHakkoSODConstCC.TEL_CHNG_DIV_BMP_ADD_MSKM);
// Y.Morimoto Add
			bmpJisshiFlg = true;
		}
		
		return param;
	}
	
	/**
	 * 番ポ申込種別照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	private int callEKK0161B008SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0161B008への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B008CBSMsg.class.getName());
		
		mappingEKK0161B008SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B008, 
					mappingEKK0161B008SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * templateに対してEKK0161B008の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEKK0161B008SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0161B008CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0161B008CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B008);

		//機能コード
		template.set(EKK0161B008CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0161B008CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO));
		
		// ＫＥＹ＿世代登録年月日時分秒
		template.set(EKK0161B008CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));
	}

	/**
	 * EKK0161B008の結果をHashとして抽出する
	 * @param resultMsgs EKK0161B008のテンプレートリスト
	 * @return EKK0161B008の結果部分
	 */
	private CAANMsg[] mappingEKK0161B008SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST);
		
		return msgList;
		
	}
	
	/**
	 * 電話番号情報履歴一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0191B002SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiUcwkNo,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0191B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0191B002CBSMsg.class.getName());
		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0191B002CBSMsg().getContents());
		//テンプレートID(SIFのID)
		template.set(EKK0191B002CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191B002);
		//機能コード
		template.set(EKK0191B002CBSMsg.FUNC_CODE, funcCode);
		//ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0191B002CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		//条件部の共通する項目の設定
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191B002, 
					resultMsgs[0].getMsgData().get(EKK0191B002CBSMsg.EKK0191B002CBSMSG1LIST));
			
		}

		return status;
	}
	// ▲ 2012/07/05 巻取A 現行ICS指摘No.286,289,290 番ポ関連の入力項目追加


	/**
	 * eo光電話用、オプションサービス契約の照会
	 *  htelNoDslOdrCtrl メソッドの実装を抜き出して実装しました
	 * 
	 * @param param リクエストパラメータ一式
	 * @param handle セッションハンドル
	 * @param svc_kei_ucwk_no サービス契約内訳番号
	 * @param op_svc_cd オプションサービスコード
	 * @return オプションサービス契約一意照会結果のリスト
	 * @throws Throwable 例外
	 * @since 2012-10-03 ロット２残件対応　ＳＯＤ発行設計漏れ救済
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getOpSvcKei4Eohtel(
			IRequestParameterReadWrite param, SessionHandle handle,
			String svc_kei_ucwk_no, String op_svc_cd) throws Throwable
	{
		ArrayList<HashMap<String, Object>>retList = new ArrayList<HashMap<String,Object>>();

		// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
		HashMap<String, Object> inHashOp = new HashMap<String, Object>();
		HashMap<String, Object> resultHashOp = new HashMap<String, Object>();
		inHashOp.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
		inHashOp.put(JKKHakkoSODConstCC.OP_SVC_CD, op_svc_cd);	// オプションサービスコード（０５０ナンバープラス）
		
		int statusCode = callEKK0351B002SC(param, handle, inHashOp, resultHashOp, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		CAANMsg[] msgList = (CAANMsg[])resultHashOp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
		
		for(int i = 0 ; i < msgList.length ; i ++)
		{
			HashMap<String, Object> eKK0351B002Hash = msgList[i].getMsgData();
			String op_svc_kei_no = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
			String op_gene_add_dtm = eKK0351B002Hash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM).toString();	// 世代登録年月日時分秒
			
			//EKK0351A010_オプションサービス契約一意照会
			HashMap<String, Object> inHashOp2 = new HashMap<String, Object>();
			HashMap<String, Object> resultHashOp2 = new HashMap<String, Object>();
			inHashOp2.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, op_svc_kei_no);		// オプションサービス契約番号
			inHashOp2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, op_gene_add_dtm);	// 世代登録年月日時分秒
			
			statusCode = callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			
			HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashOp2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);

			retList.add(eKK0351A010SCHash);
		}

		return retList;
	}

	/**
	 * 
	 * @param param
	 * @param handle
	 * @param svc_kei_ucwk_no2
	 * @param resultHash
	 * @param func_code
	 * @return
	 * @throws RequestParameterException 
	 * @throws SCException 
	 * @since 2012-10-03 ロット２残件対応　ＳＯＤ発行設計漏れ救済
	 */
	private int callEKK0191B502SC(IRequestParameterReadWrite param,
			SessionHandle handle, String svc_kei_ucwk_no,
			HashMap<String, Object> resultHash, String funcCode) throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EKK0191B502への呼び出しパラメータ設定
		template = new CAANMsg(EKK0191B502CBSMsg.class.getName());
		//テンプレートID(SIFのID)
		template.set(EKK0191B502CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191B502);
		//機能コード
		template.set(EKK0191B502CBSMsg.FUNC_CODE, funcCode);
		//ＫＥＹ＿移転元サービス契約内訳番号
		template.set(EKK0191B502CBSMsg.KEY_ITENS_SVKEIUW_NO, svc_kei_ucwk_no);
		//共通の設定
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SIFの呼び出し
		sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			//結果の取得
			CAANMsg[] msgList = 
				(CAANMsg[])resultMsgs[0].getMsgData().get(EKK0191B502CBSMsg.EKK0191B502CBSMSG1LIST);
			resultHash.put(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191B502, msgList);
		}
		return status;
	}
	
/** 以下、住変対応 */
	/**
	 * 光ネット サービスオーダー発行処理<BR>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @param fixedText ユーザ任意文字列
	 * @param use_svc_chg_div 利用サービス変更区分
	 * @param odr_exec_div オーダ発行契機区分
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private IRequestParameterReadWrite hakkoSODNet (IRequestParameterReadWrite param, HashMap<String, Object> sodMap, 
			String fixedText, String use_svc_chg_div, String odr_exec_div) throws Throwable
	{
		/** ｅｏ光ネット 変更区分判定 */
		String jdgChgDivNet = use_svc_chg_div;
//		jdgChgDivNet = adchgSvcKeiDivJdgNet(param, use_svc_chg_div, sodMap);
		
		// 追加の場合
		if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_ADD.equals(jdgChgDivNet))
		{
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
			// 各S-I/Fにて使用
			this.fixedText = fixedText;
			// サービス追加オーダー制御パラメータ設定
			setParamSvcAddOdr(param, sodMap);
			// 多機能ルータに対する機器オプションのみ追加時に対する機器オプション登録SODのキャンセル
			delRouterFunctionOnMfrSod(keepSesHandle.get(), param, sodMap);
			
			// OM-2015-0001574 20150806 ADD START
			netDslOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
			// OM-2015-0001574 20150806 ADD END
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD END
		}
		// 解約の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_SLRE.equals(jdgChgDivNet))
		{
			// なにもしない
		}
		// 継続の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_KEEP.equals(jdgChgDivNet))
		{
			// なにもしない
		}
		// 変更の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_MODIFY.equals(jdgChgDivNet))
		{
// SOD品向No.8 2013/06/25 START
			// 本当にコース変更か判定
			if (crsChgJdgNet(param, sodMap,fixedText)) {
				/** オーダー発行契機 */
				// コース変更オーダー制御パラメータ設定
				setParamCourseChgeOdr(param, sodMap);
				// コース変更オーダー制御処理
				param = courseChgeOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
			}
// SOD品向No.8 2013/06/25 END

		}
		// 解約／新規の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_SLRE_WITH_ADD.equals(jdgChgDivNet))
		{
			/** オーダー発行契機 */
			// 住所変更登録
			if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_AD_CHG.equals(odr_exec_div))
			{
				// 利用場所変更オーダー制御パラメータ設定
				setParamChgPlaceOdr(param, sodMap);
				// 利用場所変更オーダー制御処理
				param = adchgOdrCtrl(keepSesHandle.get(), param, sodMap);
				// オプション設定（継続）オーダー制御パラメータ設定
				setParamOpSetOdr(param, sodMap);
				// オプション設定オーダー制御処理
				param = opSetOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
				// 機器契約変更（継続）オーダー制御パラメータ設定
				setParamChgKikiForKeepOdr(param, sodMap);
				// 機器契約変更（継続）オーダー制御処理
				param = kikiKeiKeepOdrCtrl(keepSesHandle.get(), param, sodMap);
			}
			// 撤去完了
			else if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_DSL_END.equals(odr_exec_div))
			{
				// 何もしない
			}
			// 新設完了
			else if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_NEW_END.equals(odr_exec_div))
			{
				// 何もしない
			}
		}
		return param;
	}
	
	/**
	 * 光電話 サービスオーダー発行処理<BR>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @param fixedText ユーザ任意文字列
	 * @param use_svc_chg_div 利用サービス変更区分
	 * @param odr_exec_div オーダ発行契機区分
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	private IRequestParameterReadWrite hakkoSODTel (IRequestParameterReadWrite param, HashMap<String, Object> sodMap, 
			String fixedText, String use_svc_chg_div, String odr_exec_div) throws Throwable
	{
		//番ポ実施フラグの初期化
		bmpJisshiFlg = false;
		
		/** ｅｏ光電話 変更区分判定 */
// OM-2013-0003213対応 20131011 星野 MOD START
//		String jdgChgDivTel = null;
//		jdgChgDivTel = adchgSvcKeiDivJdgTel(param, use_svc_chg_div, sodMap);
		String jdgChgDivTel = use_svc_chg_div;
// OM-2013-0003213対応 20131011 星野 MOD END
		
		// 追加の場合
		if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_ADD.equals(jdgChgDivTel))
		{
// OM-2013-0003213対応 20131011 星野 MOD START
//			// サービス追加オーダー制御パラメータ設定
//			setParamSvcAddOdr(param, sodMap);
//			// サービス追加オーダー制御処理
//			svcAddOdrCtrl(keepSesHandle.get(), param, sodMap);
			
			// サービス契約情報
			HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);
			// サービス契約番号
			String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);
			boolean isZ1Ordered = findZ1OrderHasBeenSent(param, keepSesHandle.get(), svc_kei_no);
			
			if(isZ1Ordered){
				// 光電話解約オーダー制御パラメータ設定
				setParamHtelNoDslOdr001(param, sodMap);
				// 光電話解約オーダー制御処理（０５０プラス専用）
				htelNoDslOdrCtrl002(keepSesHandle.get(), param, fixedText, sodMap);
				// 光電話解約オーダー制御処理
				htelNoDslOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
			}
// OM-2013-0003213対応 20131011 星野 MOD END
		}
		// 解約の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_SLRE.equals(jdgChgDivTel))
		{
			// 何もしない
// OM-2013-0003213対応 20131011 星野 DEL START
//			// 解約オーダー制御パラメータ設定
//			setParamDslOdr(param, sodMap);
//			// 解約オーダー制御処理
//			dslOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
// OM-2013-0003213対応 20131011 星野 DEL END
		}
		// 継続の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_KEEP.equals(jdgChgDivTel))
		{
			/** オーダー発行契機 */
			/** 処理ブロックＡ START */
			// 住所変更登録
			if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_AD_CHG.equals(odr_exec_div))
			{
				// なにもしない
			}
			// 撤去完了
			else if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_DSL_END.equals(odr_exec_div))
			{
				// 何もしない
// OM-2013-0003213対応 20131011 星野 DEL START
//				// 光電話解約オーダー制御パラメータ設定
//				setParamHtelNoDslOdr(param, sodMap);
//				// 光電話解約オーダー制御処理
//				htelNoDslOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
//				// 番ポ切り替えオーダー制御パラメータ設定
//				setParamBmpSwitchOdr(param, sodMap);
//				// 番ポ切り替えオーダー制御処理
//				bmpSwitchOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
//				/** 番ポ切り替え */
//				// 実施
//				if (bmpJisshiFlg)
//				{
//					// なにもしない;
//				}
//				// 未実施
//				else
//				{
//					// 光電話番号変更オーダー制御パラメータ設定
//					setParamHtelNoChgeOdr(param, sodMap);
//					// 光電話番号変更オーダー制御処理
//					htelNoChgeOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
//					// 光電話番号追加オーダー制御パラメータ設定
//					setParamHtelNoAddOdr(param, sodMap);
//					// 光電話番号追加オーダー制御処理
//					htelNoAddOdrCtrl(keepSesHandle.get(), param, sodMap);
//				}
//				// オプション設定（継続）オーダー制御パラメータ設定
//				setParamOpSetOdr(param, sodMap);
//				// オプション設定オーダー制御処理
//				opSetOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
// OM-2013-0003213対応 20131011 星野 DEL END
			}
			// 新設完了
			else if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_NEW_END.equals(odr_exec_div))
			{
				// なにもしない
			}
		}
		// 変更の場合
		else if (JKKAdchgHakkoSODConstCC.AD_CHG_CMT_MODIFY.equals(jdgChgDivTel))
		{
			// 住所変更登録
			if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_AD_CHG.equals(odr_exec_div))
			{
				// なにもしない
			}
			// 撤去完了
			else if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_DSL_END.equals(odr_exec_div))
			{
				// 何もしない
// OM-2013-0003213対応 20131011 星野 DEL START
//				// 光電話解約オーダー制御パラメータ設定
//				setParamHtelNoDslOdr(param, sodMap);
//				// 光電話解約オーダー制御処理
//				htelNoDslOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
//				// 番ポ切り替えオーダー制御パラメータ設定
//				setParamBmpSwitchOdr(param, sodMap);
//				// 番ポ切り替えオーダー制御処理
//				bmpSwitchOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
//				/** 番ポ切り替え */
//				// 実施
//				if (bmpJisshiFlg)
//				{
//					// なにもしない;
//				}
//				else
//				// 未実施
//				{
//					// 光電話番号変更オーダー制御パラメータ設定
//					setParamHtelNoChgeOdr(param, sodMap);
//					// 光電話番号変更オーダー制御処理
//					htelNoChgeOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
//					// 光電話番号追加オーダー制御パラメータ設定
//					setParamHtelNoAddOdr(param, sodMap);
//					// 光電話番号追加オーダー制御処理
//					htelNoAddOdrCtrl(keepSesHandle.get(), param, sodMap);
//				}
//				// オプション設定（継続）オーダー制御パラメータ設定
//				setParamOpSetOdr(param, sodMap);
//				// オプション設定オーダー制御処理
//				opSetOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap);
// OM-2013-0003213対応 20131011 星野 DEL END
			}
			// 新設完了
			else if (JKKAdchgHakkoSODConstCC.ODR_EXEC_DIV_NEW_END.equals(odr_exec_div))
			{
				// なにもしない
			}
		}
		return param;
	}
	
	/**
	 * 利用場所変更オーダー制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite adchgOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// サービスインターフェイス実行ステータス
		int statusCode = 0;	
		// 変更後＿オプションサービス契約一意照会結果ハッシュ
		HashMap<String, Object> chafEKK0351A010SCHash = new HashMap<String, Object>();
		// 変更前＿機器提供サービス契約一意照会結果ハッシュ
		HashMap<String, Object> chbfEKK0341A010SCHash = new HashMap<String, Object>();
		// 変更前＿サービス契約一意照会結果ハッシュ
		HashMap<String, Object> chbfEKK0081A010SCHash = new HashMap<String, Object>();
		// 変更後＿サービス契約一意照会結果ハッシュ
		HashMap<String, Object> chafEKK0081A010SCHash = new HashMap<String, Object>();

		// サービス契約情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);
		// サービス契約内訳情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);
		// オプションサービス契約情報
		HashMap<String, Object> opsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO);
		// 機器提供サービス契約情報
		HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);
		// HashMap初期化処理
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		opsvkei_info_Map = shkkaMap(opsvkei_info_Map);
		kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);

		/**
		 *  (1) パラメータの取得
		 */
		// 機能コード
		String func_cd = "";
		// SYSID
		// 異動区分
		// サービス契約番号
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);
		// 変更前サービス契約世代登録年月日時分秒
		String chbf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHBF_SVC_KEI_GENE_ADD_DTM);
		// 先サービス契約番号
		String saki_svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SAKI_SVC_KEI_NO);
		// 変更後サービス契約世代登録年月日時分秒
		String chaf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHAF_SVC_KEI_GENE_ADD_DTM);
		// サービス契約内訳番号
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);
		// 変更前サービス契約内訳世代登録時分秒
		String chbf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM);
		// 先サービス契約内訳番号
		String saki_svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_SAKI_SVC_KEI_UCWK_NO);
		// 変更後サービス契約内訳世代登録時分秒
		String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
		// 変更後オプション契約番号
		String chaf_opsvkei_no = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO);
		// 変更後オプションサービス契約世代登録年月日時分秒
		String chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM);
		// 変更前機器提供サービス契約番号
		String chbf_kktsvkei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_NO);
		// 変更前機器提供サービス契約世代登録年月日時分秒
		String chbf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_GENE_ADD_DTM);
		
		// 必要情報の設定
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		HashMap<String, Object> resultHash = new HashMap<String, Object>();
		
		/**
		 *  (2) 変更後オプション情報の取得
		 */
		if (!isBlank(chaf_opsvkei_no) && !isBlank(chaf_opsvkei_gene_add_dtm))
		{
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, chaf_opsvkei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm);
			
			// EKK0351A010_オプションサービス契約一意照会 実行
			statusCode = callEKK0351A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chafEKK0351A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
		}
		/**
		 *  (3) 変更前機器情報の取得
		 */
		if(!isBlank(chbf_kktsvkei_no) && !isBlank(chbf_kktsvkei_gene_add_dtm))
		{
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, chbf_kktsvkei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_kktsvkei_gene_add_dtm);
			
			// EKK0341A010_機器提供サービス契約一意照会 実行
			statusCode = callEKK0341A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chbfEKK0341A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
		}
		/**
		 *  (4) サービス契約情報の取得
		 */
		if(!isBlank(svc_kei_no) && !isBlank(chbf_svc_kei_gene_add_dtm))
		{
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_svc_kei_gene_add_dtm);
			
			// EKK0081A010_サービス契約一意照会 実行
			statusCode = callEKK0081A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chbfEKK0081A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);
		}
		/**
		 *  (5) 先サービス契約情報の取得
		 */
		if(!isBlank(saki_svc_kei_no) && !isBlank(chaf_svc_kei_gene_add_dtm))
		{
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, saki_svc_kei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_gene_add_dtm);
			
			// EKK0081A010_サービス契約一意照会 実行
			statusCode = callEKK0081A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chafEKK0081A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);
		}
		/**
		 *  (6) 変更後オプション情報データ確認
		 */
		// 必要情報の取得
		// オプションサービスコード
//		String opSvcCd = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
//		// オプションサービス契約ステータス
//		String opSvcKeiStat = (String)chafEKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
//		
//		// 解約済みの場合
//		if (JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(opSvcKeiStat))
//		{
//			// B015：マルチセッションの場合
//			if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(opSvcCd))
//			{
//				// 必要情報の設定
//				inHash.clear();
//				resultHash.clear();
//				// サービス契約番号
//				inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);
//				// オプションサービスコード＿固定グローバルＩＰアドレス
//				inHash.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD);
//				
//				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号） 実行
//				statusCode = callEKK0351B002SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
//				
//				// 下りマッピング
//				CAANMsg[] msgList = (CAANMsg[])resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
//				String ip_op_svc_kei_stat = "";
//				for(int i = 0 ; i < msgList.length ; i ++)
//				{
//					HashMap<String, Object> retHash = msgList[i].getMsgData();
//					// オプションサービス契約ステータス取得
//					ip_op_svc_kei_stat = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
//					// 解約済みの場合
//					if (JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(ip_op_svc_kei_stat))
//					{
//						// オプションサービス契約番号（固定IP）
//						String op_svc_kei_no = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
//						// 世代登録年月日時分秒（固定IP）
//						String gene_add_dtm = (String)retHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM);
//						
//						// 払いだされていない場合に同一処理番号を採番
//						if(isBlank(this.same_trn_no))
//						{
//							// 同一処理番号の取得
//							String[] sameTrnNo = new String[1];
//							getSame_trn_no(param, handle, null, sameTrnNo);
//							this.same_trn_no = sameTrnNo[0];
//						}
//						
//						// マルチセッション（固定IPあり）の利用終了オーダを発行する
//						this.op_svc_kei_no_mltise = chaf_opsvkei_no;
//						this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
//						// マルチセッション解約（固定IPあり）
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
//						
//						// 固定グローバルIPアドレスのの利用終了オーダを発行する
//						this.op_svc_kei_no_mltise = op_svc_kei_no;
//						this.op_gadtm_mltise = gene_add_dtm;
//						// 固定グローバルIP解約
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
//						// 固定グローバルIP消去
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_146);
//						// FTTH登録
//						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_101);
//					}
//				}
//			}
//			// B020：ダイヤルアップ接続の場合
//			else if(JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(opSvcCd))
//			{
//				// 払いだされていない場合に同一処理番号を採番
//				if(isBlank(this.same_trn_no))
//				{
//					// 同一処理番号の取得
//					String[] sameTrnNo = new String[1];
//					getSame_trn_no(param, handle, null, sameTrnNo);
//					this.same_trn_no = sameTrnNo[0];
//				}
//				// ダイヤルアップ接続の利用終了オーダを発行する
//				this.op_svc_kei_no_mltise = chaf_opsvkei_no;
//				this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
//				// ダイヤルアップ接続オプション解約
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_137);
//				// ダイヤルアップ接続オプション消去
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_138);
//			}
//			// B070：IPV6の場合
//			else if(JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals(opSvcCd))
//			{
//				// 払いだされていない場合に同一処理番号を採番
//				if(isBlank(this.same_trn_no))
//				{
//					// 同一処理番号の取得
//					String[] sameTrnNo = new String[1];
//					getSame_trn_no(param, handle, null, sameTrnNo);
//					this.same_trn_no = sameTrnNo[0];
//				}
//				// IPV6の利用終了オーダを発行する
//				this.op_svc_kei_no_mltise = chaf_opsvkei_no;
//				this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm;
//				// ルーター接続情報 変更
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_163);
//				// IPV6解約
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_157);
//				// IPV6消去
//				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_158);
//			}
//		}
		
		/**
		 *  (7) 変更前機器情報データ確認
		 */
		// 必要情報の取得
		// 機器提供サービスコード
		String kktk_svc_cd = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		// 機器提供サービス契約ステータス
		String kktk_svc_kei_stat = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
		
		// サービス提供中の場合
//		if (JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(kktk_svc_kei_stat))
//		{

// OM-2014-0001732 2014/05/15 DEL START
//			// C014：BBRの場合
//			if (JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(kktk_svc_cd))
//			{
//				// 機器認証ID
////				String kiki_ninsho_id = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_NINSHO_ID);
//				// 機器認証IDが設定されている場合
////				if (!isBlank(kiki_ninsho_id))
////				{
//					// 機器製造番号
//					String kiki_seizo_no = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
//					// 宅内機器型式コード
//					String taknkiki_model_cd = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
//					
//					// 払いだされていない場合に同一処理番号を採番
//					if(isBlank(this.same_trn_no))
//					{
//						// 同一処理番号の取得
//						String[] sameTrnNo = new String[1];
//						getSame_trn_no(param, handle, null, sameTrnNo);
//						this.same_trn_no = sameTrnNo[0];
//					}
//					// ルーターの利用終了オーダを発行する
//					this.kiki_seizo_no[0] = kiki_seizo_no;
//					this.taknkiki_model_cd[0] = taknkiki_model_cd;
//					this.kktk_svc_kei_no[0] = chbf_kktsvkei_no;
//					this.kktk_svc_kei_gadtm[0] = chbf_kktsvkei_gene_add_dtm;
//					// ルータ認証IDの登録
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_147);
////				}
////			}
//		}
// OM-2014-0001732 2014/05/15 DEL END
		
		/**
		 * (8) サービス契約情報データ確認
		 */
		// 必要情報の取得
		// 料金コース
//		this.pcrs_cd = (String)chbfEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PCRS_CD);
//		
//		// マンションプライベートを示す料金コース（A47、A48、A49）以外の場合
//		if (!isMansionPrvate())
//		{
//			// 払いだされていない場合に同一処理番号を採番
//			if(isBlank(this.same_trn_no))
//			{
//				// 同一処理番号の取得
//				String[] sameTrnNo = new String[1];
//				getSame_trn_no(param, handle, null, sameTrnNo);
//				this.same_trn_no = sameTrnNo[0];
//			}
//			// ネットの利用終了オーダを発行する
//			this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;
//			this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm;
//			// FTTH認証の解約
//			param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
//		}
		
		/**
		 * (9) 先サービス契約情報データ確認
		 */
			// IT1-2012-0002287対応 20121208 星野 ADD END
		if (!isChgPlaceZumi)
		{
			// 必要情報の取得
			// 料金コース
			this.pcrs_cd = (String)chafEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PCRS_CD);
			
			// マンションプライベートを示す料金コース（A47、A48、A49）以外の場合
			if (!isMansionPrvate())
			{
				// 払いだされていない場合に同一処理番号を採番
				if(isBlank(this.same_trn_no))
				{
					// 同一処理番号の取得
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);
					this.same_trn_no = sameTrnNo[0];
				}
				/** 新規側は先サービス契約番号で発行 */
				HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				dataMap.put("svc_kei_no", saki_svc_kei_no);							// 先サービス契約番号
				dataMap.put("svkei_gadtm", chaf_svc_kei_gene_add_dtm);				// 変更後サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
				// ネットの利用終了オーダを発行する。
				this.svc_kei_ucwk_no[0] = saki_svc_kei_ucwk_no;
				this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;
				// FTTH認証の利用終了
				param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
				/** 先サービス契約番号→サービス契約番号に戻す */
				dataMap = (HashMap<String, Object>)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				dataMap.put("svc_kei_no", svc_kei_no);							// サービス契約番号
				dataMap.put("svkei_gadtm", chbf_svc_kei_gene_add_dtm);				// 変更前サービス契約世代登録年月日時分秒
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
			}
			
			isChgPlaceZumi = true;
		}
		
		return param;
	}

	/**
	 * 機器契約変更（継続）オーダー制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite kikiKeiKeepOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// サービスインターフェイス実行ステータス
		int statusCode = 0;	
		// 変更前＿機器提供サービス契約一意照会結果ハッシュ
		HashMap<String, Object> chbfEKK0341A010SCHash = new HashMap<String, Object>();
		// 変更後＿サービス契約一意照会結果ハッシュ
		HashMap<String, Object> chafEKK0081A010SCHash = new HashMap<String, Object>();

		// サービス契約情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);
		// サービス契約内訳情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);
		// オプションサービス契約情報
		HashMap<String, Object> opsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO);
		// 機器提供サービス契約情報
		HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);
		// HashMap初期化処理
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
		opsvkei_info_Map = shkkaMap(opsvkei_info_Map);
		kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);

		// 必要情報の設定
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		HashMap<String, Object> resultHash = new HashMap<String, Object>();

		/**
		 *  (1) パラメータの取得
		 */
		// 機能コード
		String func_cd = "";
		// SYSID
		// 異動区分
		// 先サービス契約番号
		String saki_svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SAKI_SVC_KEI_NO);
		// 変更後サービス契約世代登録年月日時分秒
		String chaf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHAF_SVC_KEI_GENE_ADD_DTM);
		// 変更後機器提供サービス契約番号
		String chaf_kktsvkei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_NO);
		// 変更後機器提供サービス契約世代登録年月日時分秒
		String chaf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_KKTSVKEI_GENE_ADD_DTM);
		
		/**
		 *  (2) 変更前機器情報の取得
		 */
		if (!isBlank(chaf_kktsvkei_no) && !isBlank(chaf_kktsvkei_gene_add_dtm))
		{
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, chaf_kktsvkei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_kktsvkei_gene_add_dtm);
			
			// EKK0341A010_機器提供サービス契約一意照会 実行
			statusCode = callEKK0341A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chbfEKK0341A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
		}
		
		/**
		 *  (3) 先サービス契約情報の取得
		 */
		if (!isBlank(saki_svc_kei_no) && !isBlank(chaf_svc_kei_gene_add_dtm))
		{
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, saki_svc_kei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_gene_add_dtm);
			
			// EKK0081A010_サービス契約一意照会 実行
			statusCode = callEKK0081A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chafEKK0081A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);
		}
		
		/**
		 * (4) 先サービス契約情報データ確認
		 */
		// 必要情報の取得
		// 料金コース
		this.pcrs_cd = (String)chafEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PCRS_CD);
		
// OM-2014-0001731 2014/05/15 DEL START	
//		// マンションプライベートを示す料金コース（A47、A48、A49）以外の場合
//		if (!isMansionPrvate())
//		{
//			/**
//			 *  (5) 変更前機器情報データ確認
//			 */
//			// 必要情報の取得
//			// 機器提供サービスコード
//			String kktk_svc_cd = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
//			// 機器提供サービス契約ステータス
//			String kktk_svc_kei_stat = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
//			
//			// サービス提供中の場合
//			if (JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(kktk_svc_kei_stat))
//			{
//				// C014：BBRの場合
//				if (JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(kktk_svc_cd))
//				{
//					// 機器製造番号
//					String kiki_seizo_no = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
//					// 宅内機器型式コード
//					String taknkiki_model_cd = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
//					
//					// 払いだされていない場合に同一処理番号を採番
//					if(isBlank(this.same_trn_no))
//					{
//						// 同一処理番号の取得
//						String[] sameTrnNo = new String[1];
//						getSame_trn_no(param, handle, null, sameTrnNo);
//						this.same_trn_no = sameTrnNo[0];
//					}
//					// ルーターの利用開始・回復オーダを発行する
//					this.kiki_seizo_no[0] = kiki_seizo_no;
//					this.taknkiki_model_cd[0] = taknkiki_model_cd;
//					this.kktk_svc_kei_no[0] = chaf_kktsvkei_no;
//					this.kktk_svc_kei_gadtm[0] = chaf_kktsvkei_gene_add_dtm;
//					// ルーター向け接続情報終了
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_149);
//					// ルーター向け接続情報消去
//					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_150);
//				}
//// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
//				if (KKTK_SVC_CD_MFR.equals(kktk_svc_cd)) {
//					
//					// 機器オプションサービス契約一覧照会（機器提供ＳＶ）実行
//					ArrayList<HashMap<String, Object>> msgList = runEKK2811B010(param, handle, chaf_kktsvkei_no);
//					// 機器オプションサービスにルータ機能サービスが存在する場合に実行する
//					HashMap<String, Object> ekk2811b010Map = getKkOpSvcRec(msgList, KKOP_SVC_CD_BBR, true);
//					// 存在しない場合は、Mapがnullとなるため条件とする。
//					if (ekk2811b010Map != null) {
//						// 機器製造番号
//						String kiki_seizo_no = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
//						// 宅内機器型式コード
//						String taknkiki_model_cd = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
//						
//						// 払いだされていない場合に同一処理番号を採番
//						if (isBlank(this.same_trn_no)) {
//							// 同一処理番号の取得
//							String[] sameTrnNo = new String[1];
//							getSame_trn_no(param, handle, null, sameTrnNo);
//							this.same_trn_no = sameTrnNo[0];
//						}
//						this.kiki_seizo_no[0] = kiki_seizo_no;
//						this.taknkiki_model_cd[0] = taknkiki_model_cd;
//						this.kktk_svc_kei_no[0] = chaf_kktsvkei_no;
//						this.kktk_svc_kei_gadtm[0] = chaf_kktsvkei_gene_add_dtm;
//						
//						// 機器オプションサービス契約番号（ルーター）
//						this.kkop_svc_kei_router[0] = (String)ekk2811b010Map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
//						// 機器オプションサービス契約（ルーター）世代年月日
//						this.kkop_svc_kei_router_gadtm[0] = (String)ekk2811b010Map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
//						// 機器オプションサービス契約番号（VA）
//						this.kkop_svc_kei_va[0] = "";
//						// 機器オプションサービス契約（VA）世代年月日
//						this.kkop_svc_kei_va_gadtm[0] = "";
//						// サービス契約回線内訳番号
//						this.svc_kei_kaisen_ucwk_no = (String)chbfEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
//						// 回線内訳の一意照会を行い、カレントの世代年月日を取得
//						HashMap<String, Object> ekk0251a010Map = runEKK0251A010(param, handle, this.svc_kei_kaisen_ucwk_no);
//						this.svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);
//
//						// 多機能ルーター設定・解約(ルーター機能・解約)
//						param = addSOD(handle, param, ODR_NAIYO_CD_419);
//						// 多機能ルーター設定・消去(ルーター機能・解約)
//						param = addSOD(handle, param, ODR_NAIYO_CD_420);
//					}
//				}
//// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
//			}
//		}
// OM-2014-0001731 2014/05/15 DEL END
		
		return param;
	}
	
	
// OM-2013-0003213対応 20131011 星野 DEL START
// 未使用メソッド削除
//	/**
//	 * サービス追加オーダ制御パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//private void setParamSvcAddOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
//	
//	/**
//	 * 解約オーダ制御パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamDslOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
// OM-2013-0003213対応 20131011 星野 DEL END
	
	/**
	 * コース変更オーダ制御パラメータ設定.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 */
	private void setParamCourseChgeOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		
		// パラメータ取得
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		
		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
		if (null != ucwk_info_Map)
		{
			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
		}
		
		// サービスオーダ発行CC作業マップ設定
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		
		// サービス契約情報取得
		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
		{
			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
			// 2012-02-29 終了
			// ANK-2765-00-00 ADD START
			this.pplan_cd = (String)svckeiMap.get("pplan_cd");					// 料金プランコード
			// ANK-2765-00-00 ADD END
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
	}
	
	/**
	 * オプション設定オーダ制御パラメータ設定.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 */
	private void setParamOpSetOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		
		// パラメータ取得
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		
		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
		if (null != ucwk_info_Map)
		{
			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
		}
		
		// サービスオーダ発行CC作業マップ設定
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		
		// サービス契約情報取得
		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
		{
			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
			// 2012-02-29 終了
			// ANK-2765-00-00 ADD START
			this.pplan_cd = (String)svckeiMap.get("pplan_cd");					// 料金プランコード
			// ANK-2765-00-00 ADD END
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
	}
	
// OM-2013-0003213対応 20131011 星野 DEL START
// 未使用メソッド削除
//	/**
//	 * オプション設定（解約）オーダ制御パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamOpDslOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
//	
//	/**
//	 * 光電話番号追加オーダ制御パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamHtelNoAddOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
//	
//	/**
//	 * 光電話番号変更オーダ制御パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamHtelNoChgeOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
//	
//	/**
//	 * 光電話番号解約オーダ制御処理パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamHtelNoDslOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
//	
//	/**
//	 * 光電話移転トーキオーダ制御処理パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamHtelItntokiOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
//	
//	/**
//	 * 番ポ切り替えオーダ制御処理パラメータ設定.
//	 * <br>
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param sodMap SODマップ
//	 * @throws  Throwable  例外が発生した場合
//	 */
//	private void setParamBmpSwitchOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
//	{
//		// 運用日付
//		Object operateDate = JCCBPCommon.getOpeDate(null);
//		
//		// パラメータ取得
//		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
//		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
//		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
//		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
//		
//		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
//		if (null != ucwk_info_Map)
//		{
//			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
//			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
//		}
//		
//		// サービスオーダ発行CC作業マップ設定
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
//		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
//		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
//		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
//		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		
//		// サービス契約情報取得
//		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
//		{
//			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
//			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
//			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
//			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
//			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
//			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
//			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
//			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
//			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
//			// 2012-02-29 終了
//			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
//		}
//	}
// OM-2013-0003213対応 20131011 星野 DEL END
	
	/**
	 * 利用場所変更オーダ制御処理パラメータ設定.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 */
	private void setParamChgPlaceOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		
		// パラメータ取得
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		
		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
		if (null != ucwk_info_Map)
		{
			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
		}
		
		// サービスオーダ発行CC作業マップ設定
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		
		// サービス契約情報取得
		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
		{
			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
			// 2012-02-29 終了
			// ANK-2765-00-00 ADD START
			this.pplan_cd = (String)svckeiMap.get("pplan_cd");					// 料金プランコード
			// ANK-2765-00-00 ADD END
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
	}
	
	/**
	 * 機器契約変更(継続)オーダ制御パラメータ設定.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 */
	private void setParamChgKikiForKeepOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		
		// パラメータ取得
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		
		HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約内訳情報
		if (null != ucwk_info_Map)
		{
			this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
			this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
		}
		
		// サービスオーダ発行CC作業マップ設定
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		
		// サービス契約情報取得
		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
		{
			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
			// 2012-02-29 開始 【ANK-0046-00-01】IPV6対応
			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号  2012-02-29追加
			// 2012-02-29 終了
			// ANK-2765-00-00 ADD START
			this.pplan_cd = (String)svckeiMap.get("pplan_cd");					// 料金プランコード
			// ANK-2765-00-00 ADD END
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
	}
	
	/**
	 * 対象サービス判定.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 * @return  住所変更登録方法コード
	 */
	private String svcKeiJdg(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// 対象サービス
		String taisho_svc = "";
		// サービスインターフェイス実行ステータス
		int statusCode = 0;	
		// サービス契約一意照会結果ハッシュ
		HashMap<String, Object> eKK0081A010SCHash = null;

		// サービス契約情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);

		// サービス契約番号
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);
		// 変更前サービス契約世代登録年月日時分秒
		String chbf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHBF_SVC_KEI_GENE_ADD_DTM);
		// 先サービス契約番号
		String saki_svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SAKI_SVC_KEI_NO);
		// 変更後サービス契約世代登録年月日時分秒
		String chaf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHAF_SVC_KEI_GENE_ADD_DTM);

		// 必要情報の設定
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		HashMap<String, Object> resultHash = new HashMap<String, Object>();

		/** 転居先でのサービス契約を取得 */
		// 必要情報の設定
		inHash.clear();
		resultHash.clear();
		
		// 一意照会用キー情報
		String prm_svc_kei_no = "";
		String prm_gene_add_dtm = "";
		
		// 変更前サービス契約番号が設定されている
		if (!isBlank(svc_kei_no))
		{
			// サービス契約番号を設定
			prm_svc_kei_no = svc_kei_no;
			// 変更前サービス契約世代登録年月日時分秒を設定
			prm_gene_add_dtm = chbf_svc_kei_gene_add_dtm;
		}
		else
		{
			// サービス契約番号を設定
			prm_svc_kei_no = saki_svc_kei_no;
			// 変更前サービス契約世代登録年月日時分秒を設定
			prm_gene_add_dtm = chaf_svc_kei_gene_add_dtm;
		}
		
		inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, prm_svc_kei_no);
		inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, prm_gene_add_dtm);
		
		// EKK0081A010_サービス契約一意照会 実行
		statusCode = callEKK0081A010SC(param, keepSesHandle.get(), inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		// 必要情報の取得
		eKK0081A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);


		/** サービスコードを元に対象サービスを特定 */
		String pcr_grp_cd = (String)eKK0081A010SCHash.get(EKK0081A010CBSMsg1List.SVC_CD);
		
		if( JKKAdchgHakkoSODConstCC.CD00130_INET_SVC.equals(pcr_grp_cd)){

			/** サービスコードが「インターネットサービス」の場合 */
			taisho_svc = JKKHakkoSODConstCC.SVC_KIND_NET;
		} else if(JKKAdchgHakkoSODConstCC.CD00130_TEL_SVC.equals(pcr_grp_cd)){
			/** サービスコードが「インターネットサービス」の場合 */
			taisho_svc = JKKHakkoSODConstCC.SVC_KIND_TEL;
		}
		return taisho_svc;
	}
	
// OM-2013-0003213対応 20131011 星野 ADD START
	/**
	 * 光電話番号解約オーダ制御処理パラメータ設定.（新設工事時）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 */
	private void setParamHtelNoDslOdr001(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		setParamOpSetOdr(param, sodMap);

		String adchgNo = (String)sodMap.get("adchg_no");
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);
		String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get("svc_kei_ucwk_no");
		if (JKKStringUtil.isNullBlank(svc_kei_ucwk_no))
		{
			return;
		}
		// サービスオーダ発行CC作業マップ設定
		HashMap iMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		iMap.put("adchg_no", adchgNo);					// 住所変更番号
		iMap.put("adchg_dtl_sbt_cd", "02");				// 住所変更明細種別コード
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap);

	}
// OM-2013-0003213対応 20131011 星野 ADD END
	
	/**
	 * 住所変更登録方法判定（光ネット）.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param use_svc_chg_div 利用サービス変更区分
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 * @return  住所変更登録方法コード
	 */
	private String adchgSvcKeiDivJdgNet(IRequestParameterReadWrite param, 
										 String use_svc_chg_div, 
										 HashMap<String, Object> sodMap) throws Throwable
	{

		/** 住所変更登録方法 特定 */
		String jdgVal;

		// 引数の利用サービス変更区分を取得し、処理を分岐
		if(StringUtils.isEmpty(use_svc_chg_div) || JKKAdchgHakkoSODConstCC.CD00849_NON.equals(use_svc_chg_div)){
			
			// 初期値を返却
			return "";
			
		} else if(JKKAdchgHakkoSODConstCC.CD00849_ADD.equals(use_svc_chg_div)){

			// 追加を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_ADD;
		} else if(JKKAdchgHakkoSODConstCC.CD00849_KEEP.equals(use_svc_chg_div)){

			// 継続を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_KEEP;
		} else if(JKKAdchgHakkoSODConstCC.CD00849_SLRE.equals(use_svc_chg_div)){

			// 解約を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_SLRE;
		} else if(JKKAdchgHakkoSODConstCC.CD00849_HOLD.equals(use_svc_chg_div)){

			// 保留を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_HOLD;
		} else {

			// サービスインターフェイス実行ステータス
			int statusCode = 0;	
			// 変更前＿サービス契約一意照会結果ハッシュ
			HashMap<String, Object> chbfEKK0081A010SCHash = null;
			// 変更後＿サービス契約一意照会結果ハッシュ
			HashMap<String, Object> chafEKK0081A010SCHash = null;

			// サービス契約情報
			HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);

			// サービス契約番号
			String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);
			// 変更前サービス契約世代登録年月日時分秒
			String chbf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHBF_SVC_KEI_GENE_ADD_DTM);
			// 先サービス契約番号
			String saki_svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SAKI_SVC_KEI_NO);
			// 変更後サービス契約世代登録年月日時分秒
			String chaf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_CHAF_SVC_KEI_GENE_ADD_DTM);

			// 必要情報の設定
			HashMap<String, Object> inHash = new HashMap<String, Object>();
			HashMap<String, Object> resultHash = new HashMap<String, Object>();

			/** 転居元でのサービス契約を取得 */
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_svc_kei_gene_add_dtm);
			
			// EKK0081A010_サービス契約一意照会 実行
			statusCode = callEKK0081A010SC(param, keepSesHandle.get(), inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chbfEKK0081A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);
			
			/** 転居先でのサービス契約を取得 */
			// 必要情報の設定
			inHash.clear();
			resultHash.clear();
			inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, saki_svc_kei_no);
			inHash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_gene_add_dtm);
			
			// EKK0081A010_サービス契約一意照会 実行
			statusCode = callEKK0081A010SC(param, keepSesHandle.get(), inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_1);
			if(0 != statusCode)
			{
				// 0でない場合はエラー
				throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
			}
			// 必要情報の取得
			chafEKK0081A010SCHash = (HashMap<String, Object>)resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010);


			/** 料金グループ，料金コース，料金プランを元に、登録方法を特定 */
			// 転居前情報
			String pcr_grp_cd_bef = (String)chbfEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
//			String pcrs_cd_bef = (String)chbfEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PCRS_CD);
//			String pplan_cd_bef = (String)chbfEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PPLAN_CD);
//			String tkhoshiki_no_bef = (String) chbfEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO);
			
			// 転居先情報
			String pcr_grp_cd_aft = (String)chafEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
//			String pcrs_cd_aft = (String)chafEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PCRS_CD);
//			String pplan_cd_aft = (String)chafEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.PPLAN_CD);
//			String tkhoshiki_no_aft = (String) chafEKK0081A010SCHash.get(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO);
			
			if( JKKHakkoSODConstCC.PRC_GRP_CD_NET_MT.equals(pcr_grp_cd_bef) ||
				JKKHakkoSODConstCC.PRC_GRP_CD_NET_MT.equals(pcr_grp_cd_aft)){

				/** 転居元 または 転居先が「eo光ネットマンションタイプ」の場合 */
				// 解約／新規を示す値を返却
				jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_SLRE_WITH_ADD;
//				} else if(pcr_grp_cd_bef.equals(pcr_grp_cd_aft) &&
//				pcrs_cd_bef.equals(pcrs_cd_aft) &&
//				pplan_cd_bef.equals(pplan_cd_aft) &&
//				tkhoshiki_no_bef.equals(tkhoshiki_no_aft)){
//			
//			/* 転居元の料金グループ，料金コース，料金プランと転居先の料金グループ，料金コース，料金プラン, 提供方式契約番号が完全一致する場合 */
//			// 継続を示す値を返却
//			jdgVal = AD_CHG_CMT_KEEP;
			} else {

				/** 転居元の料金グループ，料金コース，料金プランと転居先の料金グループ，料金コース，料金プランが完全一致しない場合 */
				// 変更を示す値を返却
				jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_MODIFY;
			}
		}

		return jdgVal;
	}
	

	/**
	 * 住所変更登録方法判定（光電話）.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param use_svc_chg_div 利用サービス変更区分
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 * @return  住所変更登録方法コード
	 */
	private String adchgSvcKeiDivJdgTel(IRequestParameterReadWrite param, 
			 							 String use_svc_chg_div, 
			 							 HashMap<String, Object> sodMap) throws Throwable
	{
		/** 住所変更登録方法 特定 */
		String jdgVal;

		// 引数の利用サービス変更区分を取得し、処理を分岐
		if(StringUtils.isEmpty(use_svc_chg_div) || JKKAdchgHakkoSODConstCC.CD00849_NON.equals(use_svc_chg_div)){
			
			// 初期値を返却
			return "";
			
		} else if(JKKAdchgHakkoSODConstCC.CD00849_ADD.equals(use_svc_chg_div)){

			// 追加を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_ADD;
		} else if(JKKAdchgHakkoSODConstCC.CD00849_SLRE.equals(use_svc_chg_div)){

			// 解約を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_SLRE;
		} else if(JKKAdchgHakkoSODConstCC.CD00849_HOLD.equals(use_svc_chg_div)){

			// 保留を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_HOLD;
		} else if(JKKAdchgHakkoSODConstCC.CD00849_KEEP.equals(use_svc_chg_div)){

			// 継続を示す値を返却
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_KEEP;
		} else {

			// 返却値を「変更」を示す値で初期化
			jdgVal = JKKAdchgHakkoSODConstCC.AD_CHG_CMT_MODIFY;
		}

		return jdgVal;
	}
	
	/** ----- VLANオーダ受付パラメータ ----- */
	/** VLANオーダコード */
	private static final String VLAN_ORDER_CD_VLAN = "01";
	/** 要求種別コード */
	private static final String YOKYU_SBT_CD_DSL = "03";
	/** VLANサーバコード (固定１)*/
	private static final String VLAN_SERVER_CD = "1";

	/** エラーメッセージ */
	private static final String ERR_MSG = "INVALID_RETURN_MESSAGE";

	public IRequestParameterReadWrite cancelVlanOrder(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
// IT2-2014-0000196 住変キャンセル時にVLANオーダの解約オーダ発行不要のため削除 2014/04/16 DEL START
//		//結果領域の生成
//		HashMap<String, Object> inHash = (HashMap<String, Object>)param.getData(fixedText);
//
//		//結果領域の生成
//		HashMap<String, Object> resultHash =  new HashMap<String, Object>();
//		
//// OM-2013-0002160対応 20130915 星野 ADD START
//		// 新設工事未依頼の場合、工事案件番号が入ってこない。
//		// VLANオーダも投げてないので処理不要。
//		if(!StringUtils.isEmpty((String)inHash.get("kojiakno"))){
//// OM-2013-0002160対応 20130915 星野 ADD END
//			
//			callESC0021D010SC(param, handle, inHash, resultHash);
//			
//// OM-2013-0002160対応 20130915 星野 ADD START
//		}
//// OM-2013-0002160対応 20130915 星野 ADD END
// IT2-2014-0000196 住変キャンセル時にVLANオーダの解約オーダ発行不要のため削除 2014/04/16 DEL END
		return param;
	}

	/**
	 * ESC0021D010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash ESC0021D010SCの結果
	 * @return ESC0021D010サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callESC0021D010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object>  resultHash)
			throws Throwable
	{
		
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		Map<?, ?> sIFResult = null;

		//（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		// ESC0021D010への呼び出しパラメータ設定
		template = new CAANMsg(ESC0021D010CBSMsg.class.getName());
		mappinESC0021D010SCInMsg(template, param, inHash);
		editBasicCmn(param, template);
		
		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		errChk(sIFResult);
		
		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
		
	}

	/**
	 * templateに対してESC0021D010SCの条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash1 条件用hash1
	 * @param inHash2 条件用hash2
	 */
	private void mappinESC0021D010SCInMsg(
			CAANMsg template,
			IRequestParameterReadWrite param,
			HashMap<String, Object> inHash)
	{
		String mskmshoNo = null;
		String kojiakNo = null;
		String svcKeiNo = null;

		mskmshoNo = (String)inHash.get("mskmshono");
		kojiakNo = (String)inHash.get("kojiakno");
		svcKeiNo = (String)inHash.get("svc_kei_no");


		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new ESC0021D010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(ESC0021D010CBSMsg.TEMPLATEID, "ESC0021D010");

		//機能コード--チェック＆登録
		template.set(ESC0021D010CBSMsg.FUNC_CODE, "1");

		// サービス契約番号
		template.set(ESC0021D010CBSMsg.SVC_KEI_NO, svcKeiNo);

		//要求元アプリ種別コード
		template.set(ESC0021D010CBSMsg.YOKYU_MT_APL_SBT_CD, "W" );
		
		// VLANオーダコード
		template.set(ESC0021D010CBSMsg.VLAN_ORDER_CD, VLAN_ORDER_CD_VLAN );

		// 要求種別コード
		template.set(ESC0021D010CBSMsg.YOKYU_SBT_CD, YOKYU_SBT_CD_DSL );

		// VLANサーバコード
		template.set(ESC0021D010CBSMsg.VLAN_SERVER_CD, VLAN_SERVER_CD );
		
		// 20120610 IT2-2012-0000737 START
		// 依頼時申込書番号
		template.set(ESC0021D010CBSMsg.REQ_JI_MSKMSHO_NO,  mskmshoNo);
		
		// 依頼時工事案件番号
		template.set(ESC0021D010CBSMsg.REQ_JI_KJAK_NO,  kojiakNo);
		// 20120610 IT2-2012-0000737 END
	}
	
	/**
	 * CAANMsg[]の結果をHashとして抽出する（登録用）
	 * @param resultMsgs EKK0451C030のテンプレートリスト
	 * @return EKK0451C030の結果部分
	 */
	private HashMap<String, Object> mappingCAANOutMsgAdd(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		retHash = msg.getHashMap();
		
		return retHash;
	}
	
	/**
	 * エラーチェック処理
	 * 
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws SCCallException 
	 */
	private void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// ステータス
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if ((0 != returnCode) || (0 != templateStatus))
		{
			throw new SCCallException(ERR_MSG, String.valueOf(returnCode), templateStatus);
		}
	}
	
	
	
// OM-2014-0002802対応 20141011 星野 ADD START
	/**
	 * サービスオーダ発行処理（機器解約）　※住所変更確定にて使用
	 * <br>
	 * パラメータの件数分<br>
	 * サービスオーダ登録処理を呼び出します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite hakkoSODKktkDsl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		try {
			/** リソース保持 */
			// セッションハンドルをローカル変数に保持
			keepSesHandle.set( handle );
			this.fixedText = fixedText;

			// 運用日付
			Object operateDate = JCCBPCommon.getOpeDate(null);

			// ユーザデータ情報
			HashMap inMap = (HashMap)param.getData(fixedText);
			
			String funcCD = (String)inMap.get(JCMConstants.FUNC_CODE_KEY);
			
			// 対象データリスト取得
			ArrayList dataList = (ArrayList)inMap.get(JKKHakkoSODConstCC.TRGT_DATA_LIST);

			if(isBlank(funcCD) || JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCD)
					|| null == dataList || 0 == dataList.size()){
				// 取得したデータリストが無い、または0件の場合、正常終了として処理を終了する。
				String formatStatus = String.format("%1$04d", 0);
				String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
				param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
				param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
				return param;
			}
			
			// 前レコードをクリアする
			this.mae_recode_chaf_op_svc_kei_no = "";
			this.mae_recode_chaf_op_svc_kei_gene_add_dtm = "";
			this.mae_recode_chbf_op_svc_kei_no = "";
			this.mae_recode_chbf_op_svc_kei_gene_add_dtm = "";
			this.mae_recode_ch_svc_kei_no = "";
			// 同一処理番号もクリアする
			this.same_trn_no = "";
			
			
			for (int i = 0; i < dataList.size(); i++)
			{
				HashMap<String, Object> sodMap = (HashMap<String, Object>)dataList.get(i);
				if (null != sodMap)
				{
					// パラメータ取得
					HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
					HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
					sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
					svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
					
					ido_div = (String)sod_kihon_info_Map.get("ido_div");		// 異動区分
					syori_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYORI_DIV);		// 処理区分
					HashMap<String, Object> ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);			// サービス契約情報
					if (null != ucwk_info_Map)
					{
						this.ipv6_svc_kei_ucwk_no = shkkaChr((String)ucwk_info_Map.get("svc_kei_ucwk_no"));
						this.ipv6_svc_kei_ucwk_gadtm = shkkaChr((String)ucwk_info_Map.get("chaf_svc_kei_ucwk_gene_add_dtm"));
					}
					
					// サービスオーダ発行CC作業マップ設定
					HashMap<String, Object> dataMap = new HashMap<String, Object>();
					dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
					dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
					dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
					dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
					param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
					
					// サービス契約情報取得
					if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
					{
						// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
						HashMap<String, Object> svckeiMap = getSvcKeiInfo(handle, param);	//サービス契約一意照会処理
						dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
						this.mskm_dtl_no = (String)svckeiMap.get(JKKHakkoSODConstCC.INFO_MSKM_DTL_NO);			// 申込明細番号
						this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
						this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
						this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
						this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号
						param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
					}
					
					// 配列の初期化
					svc_kei_ucwk_no = new String[1];
					kktk_svc_kei_no = new String[1];
					svc_kei_ucwk_gadtm = new String[1];
					kktk_svc_kei_gadtm = new String[1];
					taknkiki_model_cd = new String[1];
					kiki_seizo_no = new String[1];
					chbf_kktk_svc_kei_gadtm = new String[1];
					kkop_svc_kei_va = new String[1];
					kkop_svc_kei_va_gadtm = new String[1];
					kkop_svc_kei_router = new String[1];
					kkop_svc_kei_router_gadtm = new String[1];
					mlcapa_flg_list = new ArrayList<String>();
					op_svc_kei_no_ml_map = new HashMap<String,String[]>();
					op_svc_kei_no_mlist_map = new HashMap<String,String>();
					sbop_svckeino_alias_map = new HashMap<String,String[]>();
					sbop_svckeino_mlvirus_map = new HashMap<String,String[]>();
					
					
					// 機器解約オーダ制御処理
					param = kktkDslOdrCtrl(handle, param, fixedText, sodMap);

				}
			}

			
		}
		finally
		{
			// Holderクラスのリソース解放
			// ・セッションハンドル保持域
			if(keepSesHandle.get() != null){
				keepSesHandle.remove();
			}
		}
		
		return param;
	}
	
	
	/**
	 * 機器解約オーダ制御処理<br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite kktkDslOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		int statusCode = 0;											// サービスインターフェイス実行ステータス
		
		// 同一処理番号取得
		getSameTrnNo(handle, param);
		
		ArrayList<HashMap<String, Object>> kkop_trgt_data_list = (ArrayList<HashMap<String, Object>>)sodMap.get(JKKAdchgHakkoSODConstCC.KKOP_TRGT_DATA_LIST);			// 機器オプションサービス契約情報
		if(kkop_trgt_data_list==null){
			return param;
		}
		
		int cnt = 0;
		for(HashMap kkopMap : kkop_trgt_data_list){
			cnt++;
			
			if(kkopMap==null || kkopMap.isEmpty()){
				continue;
			}
			
			String kkopSvcKeiNo = (String)kkopMap.get(JKKAdchgHakkoSODConstCC.INFO_CHBF_KKOPSVKEI_NO);
			HashMap<String, Object> kkop_svc_kei_map = runEKK2811A010(param, handle, kkopSvcKeiNo);
			if(kkop_svc_kei_map==null || kkop_svc_kei_map.isEmpty()){
				continue;
			}
			
			// 機器提供サービス契約取得
			HashMap<String, Object> kktkSvcKeiMap = runEKK0341A010Current(param, handle, (String) kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.KKTK_SVC_KEI_NO));
			if(kktkSvcKeiMap==null || kktkSvcKeiMap.isEmpty()){
				continue;
			}
			
			// 型番・製番未設定は対象外
			String taknkikiModelCd = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
			String kikiSeizoNo = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
			if(StringUtils.isEmpty(taknkikiModelCd) || StringUtils.isEmpty(kikiSeizoNo) ){
				continue;
			}
			
			ArrayList<HashMap<String, Object>> resultOdrSet = new ArrayList<HashMap<String, Object>>();

			resultOdrSet = callEKK1041B001SC(param, handle, JKKHakkoSODConstCC.ORDER_SBT_CD_TEL, JKKHakkoSODConstCC.SVC_ORDER_CD_MRT, null, null, taknkikiModelCd, kikiSeizoNo);

			// オーダ設定なし
			if(resultOdrSet == null || resultOdrSet.isEmpty())
			{
				// 多機能ルーター保有で、オーダが発行される前
				continue;
			}
			String rcntYokyuSbtCd = (String)resultOdrSet.get(0).get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD);
			if(rcntYokyuSbtCd.matches("0[38]")){
				// 最新要求種別コードが解約・消去は処理対象外
				continue;
			}

			
			this.svc_kei_kaisen_ucwk_no = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			HashMap<String, Object> ekk0251a010Map = runEKK0251A010(param, handle, svc_kei_kaisen_ucwk_no);
			if(ekk0251a010Map==null || ekk0251a010Map.isEmpty()){
				continue;
			}
			
			// サービス契約情報取得
			if(!isBlank((String)kkopMap.get("svcKeiNo")))
			{
				HashMap<String, Object> dataMap = (HashMap<String, Object>) param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
				dataMap.put("svc_kei_no", (String)kkopMap.get("svcKeiNo"));
				// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
				HashMap<String, Object> svckeiMap = getSvcKeiInfo(handle, param);	//サービス契約一意照会処理
				dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
				this.mskm_dtl_no = (String)svckeiMap.get(JKKHakkoSODConstCC.INFO_MSKM_DTL_NO);			// 申込明細番号
				this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
				this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
				this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
				this.svc_kei_no1 = (String)kkopMap.get("svcKeiNo");		// サービス契約番号
				// ANK-2765-00-00 ADD START
				this.pplan_cd = (String)svckeiMap.get("pplan_cd");					// 料金プランコード
				// ANK-2765-00-00 ADD END
				param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
			}

			
			String kkopSvcCd = (String)kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
			
			// 多機能解約フラグON かつ 最終データ の場合、多機能解約オーダ
			if("1".equals(kkopMap.get("takino_dsl_flg")) && cnt==kkop_trgt_data_list.size() ){
				// ルータ機能
				if (KKOP_SVC_CD_BBR.equals(kkopSvcCd)) {
					
					// サービス契約内訳一覧照会
					param = getSvcKeiUtwkListForAdd(handle, param);
					
					this.kktk_svc_kei_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
					this.kktk_svc_kei_gadtm[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);
					this.taknkiki_model_cd[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
					this.kiki_seizo_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
					
					// 機器オプションサービス契約番号（ルーター）
					this.kkop_svc_kei_router[0] = (String)kkop_svc_kei_map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
					// 機器オプションサービス契約（ルーター）世代年月日
					this.kkop_svc_kei_router_gadtm[0] = (String)kkop_svc_kei_map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
					// 機器オプションサービス契約番号（VA）
					this.kkop_svc_kei_va[0] = "";
					// 機器オプションサービス契約（VA）世代年月日
					this.kkop_svc_kei_va_gadtm[0] = "";
					// サービス契約回線内訳番号
					this.svc_kei_kaisen_ucwk_no = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					this.svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);

					// 多機能ルーター設定・解約(ルーター機能・解約)
					param = addSOD(handle, param, ODR_NAIYO_CD_419);
					// 多機能ルーター設定・消去(ルーター機能・解約)
					param = addSOD(handle, param, ODR_NAIYO_CD_420);

				// VA機能
				}else if(KKOP_SVC_CD_VA.equals(kkopSvcCd)){
					
					// サービス契約内訳一覧照会
					param = getSvcKeiUtwkListForAdd(handle, param);
					
					this.kktk_svc_kei_no = new String[1];
					this.kktk_svc_kei_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);;			// 機器提供サービス契約番号
					this.kktk_svc_kei_gadtm = new String[1];
					this.kktk_svc_kei_gadtm[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
					this.taknkiki_model_cd = new String[1];
					this.taknkiki_model_cd[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
					this.kiki_seizo_no = new String[1];
					this.kiki_seizo_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);			// 機器製造番号
					// 機器オプションサービス契約番号（ルーター）
					this.kkop_svc_kei_router[0] = "";
					// 機器オプションサービス契約番号（ルーター）世代登録年月日
					this.kkop_svc_kei_router_gadtm[0] = "";
					// 機器オプションサービス契約番号（VA）
					this.kkop_svc_kei_va[0] = (String)kkop_svc_kei_map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
					// 機器オプションサービス契約番号（VA）世代登録年月日
					this.kkop_svc_kei_va_gadtm[0] = (String)kkop_svc_kei_map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
					// サービス契約回線内訳番号
					this.svc_kei_kaisen_ucwk_no = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					// サービス契約回線内訳世代年月日
					this.svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);
					
					
					// OLS設定・解約
					param = addSOD(handle, param, ODR_NAIYO_CD_421);
					// OLS設定・消去
					param = addSOD(handle, param, ODR_NAIYO_CD_422);

				}

				
			// 以外は多機能変更オーダ
			}else{
				// ルータ機能
				if (KKOP_SVC_CD_BBR.equals(kkopSvcCd)) {
					
					// サービス契約内訳一覧照会
					param = getSvcKeiUtwkListForAdd(handle, param);

					// 機器オプションサービス契約番号（ルーター）
					this.kkop_svc_kei_router[0] = (String)kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO);
					// 機器オプションサービス契約（ルーター）世代年月日
					this.kkop_svc_kei_router_gadtm[0] = (String)kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.GENE_ADD_DTM);
					// 機器オプションサービス契約番号（VA）
					this.kkop_svc_kei_va[0] = "";
					// 機器オプションサービス契約（VA）世代年月日
					this.kkop_svc_kei_va_gadtm[0] = "";
					// サービス契約回線内訳番号
					this.svc_kei_kaisen_ucwk_no = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					// 
					this.kktk_svc_kei_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
					this.kktk_svc_kei_gadtm[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);
					this.taknkiki_model_cd[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
					this.kiki_seizo_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
					
					// SODの発行
					addSodBbrFuncToMfr(handle, param);
					
					// 機器オプションサービス契約番号（ルーター）
					this.kkop_svc_kei_router[0] = "";
					// 機器オプションサービス契約（ルーター）世代年月日
					this.kkop_svc_kei_router_gadtm[0] = "";

				// VA機能
				}else if(KKOP_SVC_CD_VA.equals(kkopSvcCd)){
					
					// サービス契約内訳一覧照会
					param = getSvcKeiUtwkListForAdd(handle, param);
					
					this.kktk_svc_kei_no = new String[1];
					this.kktk_svc_kei_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);;			// 機器提供サービス契約番号
					this.kktk_svc_kei_gadtm = new String[1];
					this.kktk_svc_kei_gadtm[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
					this.taknkiki_model_cd = new String[1];
					this.taknkiki_model_cd[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
					this.kiki_seizo_no = new String[1];
					this.kiki_seizo_no[0] = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);			// 機器製造番号
					// 機器オプションサービス契約番号（ルーター）
					this.kkop_svc_kei_router[0] = "";
					// 機器オプションサービス契約番号（ルーター）世代登録年月日
					this.kkop_svc_kei_router_gadtm[0] = "";
					// 機器オプションサービス契約番号（VA）
					this.kkop_svc_kei_va[0] = (String)kkop_svc_kei_map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
					// 機器オプションサービス契約番号（VA）世代登録年月日
					this.kkop_svc_kei_va_gadtm[0] = (String)kkop_svc_kei_map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
					// サービス契約回線内訳番号
					this.svc_kei_kaisen_ucwk_no = (String)kktkSvcKeiMap.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);;
					// サービス契約回線内訳世代年月日
					this.svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);
					
					// OLS設定・解約
					param = addSOD(handle, param, ODR_NAIYO_CD_417);

				}
				
			}
			
			
			
		}
		

		
		return param;
	}

// OM-2014-0002802対応 20141011 星野 ADD END

	
	
	// SOD品向対応 No.8 2013/06/25 START
	/**
	 * コース変更判定
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param use_svc_chg_div 利用サービス変更区分
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 * @return  住所変更登録方法コード
	 */
	private boolean crsChgJdgNet(IRequestParameterReadWrite param, 
										 HashMap<String, Object> sodMap,
										 String fixedText) throws Throwable
	{

		/** コース変更 特定 */

		// サービス契約情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);

		// サービス契約番号
		String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);

		// 必要情報の設定
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// ＫＥＹ＿異動予約詳細コード
		condMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, JKKAdchgConstCC.IDO_RSV_DTL_CD.CHG_PCRS);
		// ＫＥＹ＿異動区分
		condMap.put(EKK1681B001CBSMsg.KEY_IDO_DIV, JKKAdchgConstCC.IDO_DIV_ADCHG_RGST);
		// ＫＥＹ＿サービス契約番号
		condMap.put(EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);
		// ＫＥＹ＿ソート項目Ｎｏ
		condMap.put(EKK1681B001CBSMsg.KEY_SORT_ITEM_NO, JKKAdchgConstCC.EKK1681B001_SORT_ITEM.RSV_APLY_YMD);
		// ＫＥＹ＿ソート区分
		condMap.put(EKK1681B001CBSMsg.KEY_SORT_KBN, JKKAdchgConstCC.SORT_KBN.DESC);
		// ＫＥＹ＿異動予約状態コード
		condMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, "00,03");
		
		reqMap = mapper.setEKK1681B001(param, fixedText, condMap);
		resMap = scCall.run( reqMap, keepSesHandle.get());
		ArrayList<HashMap<String,Object>> resultList = mapper.getEKK1681B001(param, fixedText, resMap);
		mapper.scResultCheck(param);
		
		// 異動予約が取得できない場合はコース変更ではない
		if (resultList.size() == 0) {
			return false;
		}
		
		HashMap<String,Object> resultMap = resultList.get(0);


		/** 料金グループ，料金コース，料金プランを元に、登録方法を特定 */
		// 転居前情報
		String pcr_grp_cd_bef = (String)resultMap.get(EKK1681B001CBSMsg1List.OLD_PRC_GRP_CD);
		String pcrs_cd_bef = (String)resultMap.get(EKK1681B001CBSMsg1List.OLD_PCRS_CD);
		String pplan_cd_bef = (String)resultMap.get(EKK1681B001CBSMsg1List.OLD_PPLAN_CD);
		
		// 転居先情報
		String pcr_grp_cd_aft = (String)resultMap.get(EKK1681B001CBSMsg1List.NEW_PRC_GRP_CD);
		String pcrs_cd_aft = (String)resultMap.get(EKK1681B001CBSMsg1List.NEW_PCRS_CD);
		String pplan_cd_aft = (String)resultMap.get(EKK1681B001CBSMsg1List.NEW_PPLAN_CD);
		
		if(pcr_grp_cd_bef.equals(pcr_grp_cd_aft) &&
			pcrs_cd_bef.equals(pcrs_cd_aft) &&
			pplan_cd_bef.equals(pplan_cd_aft)){
			
			// 変更前後で料金グループ、料金コース、料金プランが同じ場合は変更扱いしない
			return false;
		}
		
// OM-2013-0001878対応 20130909 星野 ADD START
		// サービス契約内訳情報
		HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);
		// 変更後サービス契約内訳番号
		String svc_kei_ucwk_no_af = (String)svc_kei_ucwk_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_SAKI_SVC_KEI_UCWK_NO);
		// 変更前サービス契約内訳番号
		String svc_kei_ucwk_no_bf = (String)svc_kei_ucwk_info_Map.get("svc_kei_ucwk_no");
		
		// サービス契約内訳番号が変わっていない場合、ＳＯＤ発行は不要
		if( svc_kei_ucwk_no_bf==null || svc_kei_ucwk_no_af.equals(svc_kei_ucwk_no_bf) ){
			// ANK-2765-00-00 ADD START
			// KKSV0729OPOperationの後続処理で、当クラスのhakkoCourseChgSODメソッドの実行判定を行うために
			// 認証IDが変わらないコース変更であることを示すフラグを設定する。
			// ※hakkoCourseChgSODメソッドは、コース変更予約の取消後に実行する必要があるため
			HashMap inMap = (HashMap)param.getData(fixedText);
			inMap.put("no_chg_ninsho_id_flg", "1");
			// ANK-2765-00-00 ADD END
			return false;
		}
// OM-2013-0001878対応 20130909 星野 ADD END
		
		return true;
	}
// SOD品向対応 No.8 2013/06/25 END
	
// OM-2013-0005099対応 20131211 星野 ADD START
	/**
	 * ルータ向け接続情報・変更ＳＯＤの登録処理をします
	 * 
	 * @param handle
	 * @param param
	 * @param sodMap
	 * @throws Throwable 
	 * @since 2013-06-30 巻取B品質強化試験「ＳＯＤ」（ＢＢＲ変更無しならルータ向け接続情報・変更ＳＯＤを出すこと）
	 */
	@SuppressWarnings("unchecked")
	private void jdgOdr163(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// ＳＯＤ基本情報
		HashMap<String, Object> kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);
		kihon_info_Map = shkkaMap(kihon_info_Map);
		
		// 処理区分
		String syoriDiv = (String)kihon_info_Map.get(JKKAdchgHakkoSODConstCC.INFO_KKSV0202_SYORI_DIV);
		
		if (JKKAdchgHakkoSODConstCC.SYORI_DIV_ODR_163.equals(syoriDiv))
		{
			// サービス契約情報
			HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);
			svc_kei_info_Map = shkkaMap(svc_kei_info_Map);

			// サービス契約番号
			String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);
			
			
			// サービス契約内訳情報
			HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);
			
			svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
			String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更前サービス契約内訳番号
			String chbf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更前サービス契約内訳世代登録年月日時分秒
			
			
			// 機器提供サービス契約情報
			HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);
			kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);
					
			// 変更前機器提供サービス契約番号
			String chbf_kktsvkei_no = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_NO);
			// 変更前機器提供サービス契約世代登録年月日時分秒
			String chbf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHBF_KKTSVKEI_GENE_ADD_DTM);
			//宅内機器型式コード
			String kktsvkei_model_cd = null;
			//機器製造番号
			String kktsvkei_seizo_no = null;
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
			// 機器提供サービスコード
			String kktk_svc_cd = null;
			// サービス契約回線内訳番号
			String svc_kei_kaisen_ucwk_no = null;
			// 機器オプション契約一覧検索結果
			ArrayList<HashMap<String, Object>> kkop_svc_kei_srch_list = null;
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
			
			//必要に応じてルータの機器提供サービス契約を検索
			if (isBlank(chbf_kktsvkei_no) || isBlank(chbf_kktsvkei_gene_add_dtm))
			{
				// 機器提供サービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
				inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
				
				int statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022);
				
				for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
				{
					HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
					
					// 機器提供サービスコード	
					String tmp_kktk_svc_cd = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_CD);
					
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
//					// 機器提供サービスコード=BBRの場合
//					if(JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(tmp_kktk_svc_cd))
					// 機器提供サービスコード=BBR、多機能ルータの場合
					if (JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(tmp_kktk_svc_cd)
							// ANK-4315-00-00 MOD START
							//|| KKTK_SVC_CD_MFR.equals(tmp_kktk_svc_cd))
							|| KKTK_SVC_CD_MFR.equals(tmp_kktk_svc_cd) || KKTK_SVC_CD_HGW.equals(tmp_kktk_svc_cd))
							// ANK-4315-00-00 MOD END
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD END
					{
						chbf_kktsvkei_no = 			 (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
						chbf_kktsvkei_gene_add_dtm = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.GENE_ADD_DTM);
						kktsvkei_model_cd = 		 (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD);
						kktsvkei_seizo_no = 		 (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);
						break;
					}
				}
			}
			else
			{
				// EKK0341A010_機器提供サービス契約一意照会
				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
				
				inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, chbf_kktsvkei_no);
				inHashKktk.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chbf_kktsvkei_gene_add_dtm);
				
				callEKK0341A010SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
				
				HashMap<String, Object> chafEKK0341A010SCHash = (HashMap<String, Object>)resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
				
				kktsvkei_model_cd = (String)chafEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
				kktsvkei_seizo_no = (String)chafEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
				kktk_svc_cd = (String)chafEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
				svc_kei_kaisen_ucwk_no = (String)chafEKK0341A010SCHash.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
			}
			
			if (!isBlank(kktsvkei_model_cd) && !isBlank(kktsvkei_seizo_no))
			{
				this.op_svc_kei_no_ipv6      = null;
				this.op_gadtm_ipv6           = null;
				this.ipv6_svc_kei_ucwk_no    = svc_kei_ucwk_no;
				this.ipv6_svc_kei_ucwk_gadtm = chbf_svc_kei_ucwk_gene_add_dtm;
				this.ipv6_kktk_svc_kei_no    = chbf_kktsvkei_no;
				this.ipv6_kktk_svc_kei_gadtm = chbf_kktsvkei_gene_add_dtm;
				this.taknkiki_model_cd_ipv6  = kktsvkei_model_cd;
				this.kiki_seizo_no_ipv6      = kktsvkei_seizo_no;
				
// IT2-2014-0000180 2014.04.04 Y.Kanata ADD START
				// 既に撤去工事が完了している場合を想定
				// FTTHの解約・消去が発行されていたら変更SODは出すべきではないため発行しない。
				if (hasDslSodAdded(param, chbf_kktsvkei_no, kktsvkei_model_cd, kktsvkei_seizo_no, kktk_svc_cd)) {
					return;
				}
// IT2-2014-0000180 2014.04.04 Y.Kanata ADD END
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
// 多機能向けのルータ接続情報変更SODを発行する処理を加える
// ルーター向け接続情報・変更
//				param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_163);
				// 機器提供サービスコード=BBRの場合
				// ANK-4315-00-00 MOD START
				//if (!KKTK_SVC_CD_MFR.equals(kktk_svc_cd)) {
				// #84028 MOD START
				//if (!KKTK_SVC_CD_MFR.equals(kktk_svc_cd) || KKTK_SVC_CD_HGW.equals(kktk_svc_cd)) {
				if (!KKTK_SVC_CD_MFR.equals(kktk_svc_cd) && !KKTK_SVC_CD_HGW.equals(kktk_svc_cd)) {  //多機能,HGWではない場合
				// #84028 MOD END
				// ANK-4315-00-00 MOD END
					// ルーター向け接続情報・変更
					param = tsuikabunAddSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_163);
				} else {
					// 機器オプションサービス契約一覧照会（機器提供ＳＶ）実行
					kkop_svc_kei_srch_list = runEKK2811B010(param, handle, chbf_kktsvkei_no);
					// 機器オプションサービスにルータ機能サービスが存在する場合にMapを返す
					HashMap<String, Object> ekk2811b010Map = getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_BBR, true);
					// 存在しない場合は、Mapがnullとなるため以降の実行条件とする。
					if (ekk2811b010Map != null) {
						// 機器オプションサービス契約番号（ルーター）
						this.kkop_svc_kei_router[0] = (String)ekk2811b010Map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
						// 機器オプションサービス契約（ルーター）世代年月日
						this.kkop_svc_kei_router_gadtm[0] = (String)ekk2811b010Map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
						// 機器オプションサービス契約番号（VA）
						this.kkop_svc_kei_va[0] = "";
						// 機器オプションサービス契約（VA）世代年月日
						this.kkop_svc_kei_va_gadtm[0] = "";
						// サービス契約回線内訳番号
						this.svc_kei_kaisen_ucwk_no = svc_kei_kaisen_ucwk_no;
						// 回線内訳の一意照会を行い、カレントの世代年月日を取得
						HashMap<String, Object> ekk0251a010Map = runEKK0251A010(param, handle, this.svc_kei_kaisen_ucwk_no);
						this.svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);

						param = tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_404);
					}
				}
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD END
			}
		}
	}
// OM-2013-0005099対応 20131211 星野 ADD END

// OM-2013-0003213対応 20131011 ADD START
// JKKHakkoSODCCの修正内容を取込
	/**
	 * 電話用VAか否かを、EKK0341B022照会結果から判定します
	 * 
	 * @param eKK0341B008SCHash
	 * @param vaTaknkikiModelCd
	 * @param vaKikiChgoNo
	 * @param ido_div 異動区分　ロット２KT1-2013-0000105対応で追加
	 * @return
	 * @since 2012-11-24 変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）
     *         IT1-2013-0000099 2013/01/25 機器変更番号に変更
	 */
	private boolean isRegalVaKiki(HashMap<String, Object> eKK0341B022SCHash,
			String vaTaknkikiModelCd, String vaKikiSeizoNo, String ido_div, String vaKikiChgNo)
	{
		//機器提供サービスコードが電話用VA？
		String kktkSvcCd = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_CD);
		if(!JKKHakkoSODConstCC.KKTK_SVC_CD_TEL_VA.equals(kktkSvcCd))
		{
			return false;	//次のデータへ
		}
		
		String kkTaknkikiModelCd = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
		String kkKikiChgNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KIKI_CHG_NO);			// 機器製造番号
		
		if(kkTaknkikiModelCd == null || kkKikiChgNo == null)
		{
			return false;
		}
		
		// サービス契約内訳＜eo光電話＞一意照会と機器提供サービス契約一意照会の機器情報が一致しない場合
		if(!kkTaknkikiModelCd.equals(vaTaknkikiModelCd) || !kkKikiChgNo.equals(vaKikiChgNo))
		{
			return false;	// 次のデータへ
		}
		// 一致する場合オーダ発行
		return true;
	}
	
	/**
	 * eo光電話のZ1オーダが発行済みか否かを見つけます
	 * 
	 * @param param リクエストパラメータ一式
	 * @param handle セッションハンドル
	 * @param svc_kei_no サービス契約番号
	 * @return チェックしたSOD件数
	 * @throws Exception 任意の例外
	 * @since 2012-12-19 ロット２全網羅ＩＴ内部障害No.146（Z1オーダ未処理なのに重複して電話オーダ出る）
	 */
	public boolean findZ1OrderHasBeenSent(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no) throws Exception
	{
		return (4 <= findZ1OrderAtKK1041(param, handle, svc_kei_no));
	}

	/**
	 * Z1オーダにかかるＳＯＤ４種がオーダ受付済か否かを照会します
	 * <pre>
	 * チェック対象ＳＯＤ： 「電話サービスオーダコード／オーダ内容コード」
	 * 　　20ＯＬＳ　　207ＯＬＳ設定・登録
	 * 　　21ＳＩＰ　　218ＳＩＰ・登録
	 * 　　23Radius　　202Radius認証・登録
	 * 　　24緊急通報　250緊急通報・登録
	 * </pre>
	 * @param param リクエストパラメータ一式
	 * @param handle セッションハンドル
	 * @param svc_kei_no サービス契約番号
	 * @return チェックしたSOD件数
	 * @throws Exception 任意の例外
	 * @since 2012-12-19 ロット２全網羅ＩＴ内部障害No.146（Z1オーダ未処理なのに重複して電話オーダ出る）
	 */
	private int findZ1OrderAtKK1041(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no) throws Exception
	{
		//指定サービス契約番号でオーダ設定一覧照会
		ArrayList<HashMap<String, Object>> eKK1041B001HashList =
			callEKK1041B001SC(param, handle, null, null, null, svc_kei_no, null, null);
// OM-2014-0001466対応 20140410 星野 MOD START
//		int isOrderedZ1 = 0;
		int isOrderedZ1 = 1;
// OM-2014-0001466対応 20140410 星野 MOD END
	
		//Z1オーダ発行済みか否かを、Radius認証、OLS、SIP　３種の電話サービスオーダと緊急通報オーダがあるかどうかで確認
		if (null != eKK1041B001HashList && 0 < eKK1041B001HashList.size())
		{
			for (HashMap<String, Object>eKK1041B001Hash : eKK1041B001HashList)
			{
				String odr_sbt_cd = (String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.ORDER_SBT_CD);
				String svc_order_cd = (String)eKK1041B001Hash.get(EKK1041B001CBSMsg1List.SVC_ORDER_CD);
				
				if (
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD START
//				((JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && svc_order_cd.matches("2[013]")) ||
				((JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && svc_order_cd.matches("2[0136]")) ||
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata MOD END
				(JKKHakkoSODConstCC.ORDER_SBT_CD_RMG.equals(odr_sbt_cd) && JKKHakkoSODConstCC.SVC_ORDER_CD_EMG.equals(svc_order_cd)))
				)
				{
					isOrderedZ1 ++;
				}
			}
		}
		
		return isOrderedZ1;
	}
	
	/**
	 * EKK1041B001 オーダ設定一覧照会を実行します
	 * 
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param orderSbtCd オーダ種別コード
	 * @param svcOrderCd サービスオーダコード
	 * @param yokyuSbtCd 要求種別コード
	 * @param svc_kei_no サービス契約番号
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @param kikiSeizoNo 機器製造番号
	 * @return 照会結果
	 * @throws Exception 任意の例外
	 * @since 2012-07-24 追加　ST2-2012-0001384対応
	 */
	private ArrayList<HashMap<String, Object>> callEKK1041B001SC(
			IRequestParameterReadWrite param, SessionHandle handle,
			String orderSbtCd, String svcOrderCd, String yokyuSbtCd,
			String svc_kei_no, String taknkikiModelCd, String kikiSeizoNo) throws Exception
	{
		//EKK1041B001への呼び出しパラメータ設定
		CAANMsg template = mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo);
		editBasicCmn(param, template);
		
		//サービスIF共通の情報を設定
		HashMap<String, Object> sIFRequest = editInMsgCmn(param);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SIFの呼び出し
		Map<?, ?> sIFResult = (new ServiceComponentRequestInvoker()).run(sIFRequest, handle);

		return editResultRP_EKK1041B001SC(sIFResult, param);
	}
	
	/**
	 * EKK1041B001 オーダ設定一覧照会S-IF　入力マッピング
	 * 
	 * @param orderSbtCd オーダ種別コード
	 * @param svcOrderCd サービスオーダコード　Null可
	 * @param yokyuSbtCd 要求種別コード　Null可
	 * @param svc_kei_no サービス契約番号
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @param kikiSeizoNo 機器製造番号
	 * @return 入力パラメータ・テンプレート
	 * @since 2012-07-24 追加　ST2-2012-0001384対応
	 */
	private CAANMsg mappingEKK1041B001SCInMsg(String orderSbtCd, String svcOrderCd, String yokyuSbtCd, String svc_kei_no,
			String taknkikiModelCd, String kikiSeizoNo)
	{
		CAANMsg template = new CAANMsg(EKK1041B001CBSMsg.class.getName());
		
		//テンプレートID(SIFのID)
		template.set(EKK1041B001CBSMsg.TEMPLATEID, "EKK1041B001");

		//機能コード
		template.set(EKK1041B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		//ＫＥＹ＿オーダ種別コード
		if (null != orderSbtCd)
		{
		template.set(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD, orderSbtCd);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD);
		}
		
		//ＫＥＹ＿サービスオーダコード
		if (null != svcOrderCd)
		{
			template.set(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, svcOrderCd);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD);
		}
		
		//ＫＥＹ＿最新要求種別コード
		if (null != yokyuSbtCd)
		{
			template.set(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD, yokyuSbtCd);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD);
		}
		
		//ＫＥＹ＿サービス契約番号
		if (null != svc_kei_no)
		{
			template.set(EKK1041B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_SVC_KEI_NO);
		}

		// ＫＥＹ＿宅内機器型式コード
		if (null != taknkikiModelCd)
		{
			template.set(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD);
		}

		// ＫＥＹ＿機器製造番号
		if (null != kikiSeizoNo)
		{
			template.set(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO, kikiSeizoNo);
		}
		else
		{
			template.setNull(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO);
		}

		String[] nullKeys = {
				EKK1041B001CBSMsg.KEY_SVC_KEI_UCWK_NO,		//ＫＥＹ＿サービス契約内訳番号
				EKK1041B001CBSMsg.KEY_OP_SVC_KEI_NO,		//ＫＥＹ＿オプションサービス契約番号
				EKK1041B001CBSMsg.KEY_MLAD,					//ＫＥＹ＿メールアドレス
				EKK1041B001CBSMsg.KEY_KKTK_SVC_KEI_NO,		//ＫＥＹ＿機器提供サービス契約番号
				EKK1041B001CBSMsg.KEY_SPOT_LOGIN_SYSID		//ＫＥＹ＿スポットログインＳＹＳＩＤ
			};

		for (int i = 0; i < nullKeys.length; i++)
		{
			template.setNull(nullKeys[i]);
		}
		
		return template;
	}
// OM-2013-0003213対応 20131011 ADD END
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD START
	
	/**
	 * サービス追加オーダ制御パラメータ設定.
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param sodMap SODマップ
	 * @throws  Throwable  例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void setParamSvcAddOdr(IRequestParameterReadWrite param, HashMap<String, Object> sodMap) throws Throwable
	{
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		
		// パラメータ取得
		HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
		sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		
		// サービスオーダ発行CC作業マップ設定
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("sysid", sod_kihon_info_Map.get("sysid"));			// SYSID
		dataMap.put("svc_kei_no", svc_kei_info_Map.get("svc_kei_no"));	// サービス契約番号
		dataMap.put("rsv_aply_ymd", operateDate);						// 予約適用年月日←運用日付
		dataMap.put("kei_svc_ctl_yokyu_odr_skcd", syori_div);			// 契約サービス制御要求オーダ識別コード
		param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		
		// サービス契約情報取得
		if(!isBlank((String)svc_kei_info_Map.get("svc_kei_no")))
		{
			// 世代登録年月日時分秒を取得し、サービスオーダ発行CC作業マップ設定
			HashMap<String, Object> svckeiMap = getSvcKeiInfo(keepSesHandle.get(), param);	//サービス契約一意照会処理
			dataMap.put("svkei_gadtm", (String)svckeiMap.get("gene_add_dtm"));	// サービス契約世代登録年月日時分秒
			this.mskm_dtl_no = (String)svckeiMap.get("mskm_dtl_no");			// 申込明細番号
			this.prc_grp_cd = (String)svckeiMap.get("prc_grp_cd");				// 料金グループコード
			this.pcrs_cd = (String)svckeiMap.get("pcrs_cd");					// 料金コースコード
			this.svc_kei_stat = (String)svckeiMap.get("svc_kei_stat");			// サービス契約ステータス
			this.svc_kei_no1 = (String)svc_kei_info_Map.get("svc_kei_no");		// サービス契約番号
			// ANK-2765-00-00 ADD START
			this.pplan_cd = (String)svckeiMap.get("pplan_cd");					// 料金プランコード
			// ANK-2765-00-00 ADD END
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap);
		}
	}
	
	@SuppressWarnings("unchecked")
	private void delRouterFunctionOnMfrSod(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> sodMap
	) throws Throwable {
		
		// 同一処理番号取得
		getSameTrnNo(handle, param);

		// サービス契約情報
		HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);
		svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
		// 機器提供サービス契約情報
		HashMap<String, Object> kktsvkei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO);
		kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map);
		
		String kktkSvcKeiNo = (String)kktsvkei_info_Map.get("chaf_kktsvkei_no");
		// 住所変更明細から対象機器が引継であることを判断する。
		ArrayList<HashMap<String, Object>> adchgDtlKktk = getAdchgDtlBySbtCd(param, handle, "03");
		boolean hktgKikiFlg = false;
// OM-2014-0000944 2014.03.04 Y.Kanata ADD START
// nullチェックif文追加とインデント変更
		if (adchgDtlKktk != null) {
// OM-2014-0000944 2014.03.04 Y.Kanata ADD END
			for (HashMap<String, Object> dtlMap : adchgDtlKktk) {
				String chgTgKktkSvcKeiNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHG_TG_KEI_NO);
				String chbfSkbtNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
				String chafSkbtNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				// 変更前後の識別番号が一致することを以って引継と判断する
				if (chgTgKktkSvcKeiNo.equals(kktkSvcKeiNo)
						&& !StringUtils.isEmpty(chbfSkbtNo)
						&& !StringUtils.isEmpty(chafSkbtNo)
						&& chbfSkbtNo.equals(chafSkbtNo)
						) {
					hktgKikiFlg = true;
				}
			}
// OM-2014-0000944 2014.03.04 Y.Kanata ADD START
		}
// OM-2014-0000944 2014.03.04 Y.Kanata ADD END
		// 引継機器でない場合は終了
		if (!hktgKikiFlg) {
			return;
		}
		
		// OM-2016-0001640 MDD START
//		HashMap<String, Object> hktg_mfr_map = runEKK0341A010Current(param, handle, kktkSvcKeiNo);
		HashMap<String, Object> hktg_mfr_map = runEKK0341A010CurrentOpedate(param, handle, kktkSvcKeiNo);
		// OM-2016-0001640 MDD END
		// 多機能ルータ以外は処理しない
		if(hktg_mfr_map == null
				|| !hktg_mfr_map.containsKey(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)
				// ANK-4315-00-00 MOD START
				//|| !TAKNKIKI_SBT_CD_MFR.equals((String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD))) {
				|| !(TAKNKIKI_SBT_CD_MFR.equals((String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD))
						|| TAKNKIKI_SBT_CD_HGW.equals((String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)))) {
				// ANK-4315-00-00 MOD END
			return;
		}
		
		// 機器オプションサービス契約一覧照会（機器提供ＳＶ）実行
		ArrayList<HashMap<String, Object>> adchgDtlKkop = getAdchgDtlBySbtCd(param, handle, "09");
		HashMap<String, Object> kkop_svc_kei_map = null;
// OM-2014-0000944 2014.03.04 Y.Kanata ADD START
// nullチェックif文追加とインデント変更
		if (adchgDtlKkop != null) {
// OM-2014-0000944 2014.03.04 Y.Kanata ADD END
			for (HashMap<String, Object> dtlMap : adchgDtlKkop) {
				String chbfSkbtNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
				String chafSkbtNo = (String)dtlMap.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				// 機器オプションが追加の場合のみ処理する
				if (StringUtils.isEmpty(chbfSkbtNo)
						&& !StringUtils.isEmpty(chafSkbtNo)
					) {
					kkop_svc_kei_map = runEKK2811A010(param, handle, chafSkbtNo);
					// 追加の機器オプションがルータ機能の場合のみ処理する
					if (KKOP_SVC_CD_BBR.equals(kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.KKOP_SVC_CD))) {
						break;
					} else {
						// ルータ機能でなかった場合は結果Mapを初期化する
						kkop_svc_kei_map = null;
						continue;
					}
				}
			}
// OM-2014-0000944 2014.03.04 Y.Kanata ADD START
		}
// OM-2014-0000944 2014.03.04 Y.Kanata ADD END
		
		// 追加の機器オプションサービス契約（ルータ機能）が存在しない場合は、Mapがnullとなるため以降の実行条件とする。
		if (kkop_svc_kei_map != null) {
			// サービス契約内訳一覧照会
			param = getSvcKeiUtwkListForAdd(handle, param);

			// 機器オプションサービス契約番号（ルーター）
			this.kkop_svc_kei_router[0] = (String)kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO);
			// 機器オプションサービス契約（ルーター）世代年月日
			this.kkop_svc_kei_router_gadtm[0] = (String)kkop_svc_kei_map.get(EKK2811A010CBSMsg1List.GENE_ADD_DTM);
			// 機器オプションサービス契約番号（VA）
			this.kkop_svc_kei_va[0] = "";
			// 機器オプションサービス契約（VA）世代年月日
			this.kkop_svc_kei_va_gadtm[0] = "";
			// サービス契約回線内訳番号
			this.svc_kei_kaisen_ucwk_no = (String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			
			// OM-2016-0001640 ADD START
			// 変更前機器提供サービス契約世代登録年月日時分秒を退避
			String tmp_kktk_svc_kei_gadtm = this.kktk_svc_kei_gadtm[0];
			// OM-2016-0001640 ADD END
// OM-2014-0002802対応 20141011 星野 ADD START
			this.kktk_svc_kei_no = new String[1];
			this.kktk_svc_kei_gadtm = new String[1];
			this.taknkiki_model_cd = new String[1];
			this.kiki_seizo_no = new String[1];
			this.kktk_svc_kei_no[0] = (String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
			this.kktk_svc_kei_gadtm[0] = (String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM);
			this.taknkiki_model_cd[0] = (String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
			this.kiki_seizo_no[0] = (String)hktg_mfr_map.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
// OM-2014-0002802対応 20141011 星野 ADD END

			// SODの発行
			addSodBbrFuncToMfr(handle, param);
			
			// 機器オプションサービス契約番号（ルーター）
			this.kkop_svc_kei_router[0] = "";
			// 機器オプションサービス契約（ルーター）世代年月日
			this.kkop_svc_kei_router_gadtm[0] = "";
			// OM-2016-0001640 ADD START
			// 退避していた変更前機器提供サービス契約世代登録年月日時分秒を設定し元に戻す
			this.kktk_svc_kei_gadtm = new String[1];
			this.kktk_svc_kei_gadtm[0] = tmp_kktk_svc_kei_gadtm;
			// OM-2016-0001640 ADD END
		}
	}
	
	/**
	 * 多機能ルータに対してルーター機能の登録を行うSODの発行
	 * <br>
	 * 【使用するサービスIF】<br>
	 * 　・オーダ発行条件登録<br>
	 * 　・オーダ情報作成ワーク登録
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite addSodBbrFuncToMfr(SessionHandle handle,
			IRequestParameterReadWrite param) throws Throwable
	{
		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		
		if (inMap != null)
		{
			// 回線内訳の一意照会を行い、カレントの世代年月日を取得
			HashMap<String, Object> ekk0251a010Map = runEKK0251A010(param, handle, svc_kei_kaisen_ucwk_no);
			String svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(EKK0251A010CBSMsg1List.GENE_ADD_DTM);
			
			// (1) オーダ発行条件登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);											// サービス契約内訳番号
			inMap.put("op_svc_kei_no", "");																// オプションサービス契約番号
			inMap.put("sbop_svc_kei_no", "");															// サブオプションサービス契約番号
// OM-2014-0002802対応 20141011 星野 ADD START
			inMap.put("kktk_svc_kei_no",kktk_svc_kei_no[0]);										// 機器提供サービス契約番号(多機能ルータ)
			inMap.put("taknkiki_model_cd", taknkiki_model_cd[0]);									// 宅内機器型式コード
			inMap.put("kiki_seizo_no", kiki_seizo_no[0]);											// 機器製造番号
			inMap.put("svc_kei_kaisen_ucwk_no", svc_kei_kaisen_ucwk_no);
// OM-2014-0002802対応 20141011 星野 ADD END

			inMap.put("mlad", "");																		// メールアドレス
			inMap.put("order_sbt_cd", JKKHakkoSODConstCC.ORDER_SBT_CD_TEL);								// オーダ種別コード（電話）
			inMap.put("svc_order_cd", SVC_ORDER_CD_MFROUTER);											// サービスオーダコード（多機能ルーター）
			inMap.put("yokyu_sbt_cd", JKKHakkoSODConstCC.YOKYU_SBT_CD_CHG);								// 要求種別コード（変更）
			inMap.put("odr_hakko_joken_cd", JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO);			// オーダ発行条件コード（即時発行）
			String[] sameTrnNo = new String[1];
			getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
			inMap.put("same_trn_no", sameTrnNo[0]);														// 同一処理番号
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ発行条件登録実行
			param = executeOdrHakkoJokenAdd(handle, param);

			// (2) オーダ情報作成ワーク登録
			// サービスオーダ発行CC作業マップ設定
			inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_405);					// オーダ内容コード（多機能ルーター設定・解約(ルーター機能・解約)）
			inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0]);				// サービス契約内訳番号
			inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0]);				// サービス契約内訳世代登録年月日時分秒
			inMap.put("op_svc_kei_no", "");									// オプションサービス契約番号（Ｍｙホームページ）
			inMap.put("opsvkei_gadtm", "");									// オプションサービス契約世代登録年月日時分秒（Myホームページ）
			inMap.put("sbop_svc_kei_no", "");								// サブオプションサービス契約番号（メールエイリアス）
			inMap.put("sbopsvkei_gadtm", "");								// サブオプションサービス契約世代登録年月日時分秒（メールエイリアス）
// OM-2014-0002802対応 20141011 星野 ADD START
			inMap.put("kktk_svc_kei_no", kktk_svc_kei_no[0]);					// 機器提供サービス契約番号
			inMap.put("kktsvkei_gadtm", kktk_svc_kei_gadtm[0]);					// 機器提供サービス契約世代登録年月日時分秒
// OM-2014-0002802対応 20141011 星野 ADD END
			inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_router[0]);			// 機器オプションサービス契約（ルーター）
			inMap.put("kko_svkei_gadtm_1", kkop_svc_kei_router_gadtm[0]);	// 機器オプションサービス契約（ルーター）世代登録年月日
			inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_va[0]);				// 機器オプションサービス契約（VA）
			inMap.put("kko_svkei_gadtm_2", kkop_svc_kei_va_gadtm[0]);		// 機器オプションサービス契約（VA）世代登録年月日
			inMap.put("huka_inf_kei_no", svc_kei_kaisen_ucwk_no);			// サービス契約回線内訳番号
			inMap.put("huka_inf_kei_gadtm", svc_kei_kaisen_ucwk_gadtm);		// サービス契約回線内訳世代登録年月日
			param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap);
			// オーダ情報作成ワーク登録実行
			param = executeOdrInfoSakseiWkAdd(handle, param);
		}
		
		return param;
	}
	
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param fixedText
	 * @param adchgDtlSbt 検索対象の住所変更明細種別コード
	 * @return 住所変更明細一覧照会結果リスト（EKK2101B001 住所変更明細一覧照会）
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getAdchgDtlBySbtCd(
			IRequestParameterReadWrite param
			, SessionHandle handle
			, String adchgDtlSbt
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(this.fixedText);
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		//機器提供サービス契約の取得
		// EKK2101B001 住所変更明細一覧照会
		condMap.put(JKKAdchgMapperCC.COND_KEY_ADCHG_NO , (String)paramMap.get("adchg_no"));
		condMap.put(JKKAdchgMapperCC.COND_KEY_ADCHG_DTL_SBT_CD, adchgDtlSbt);
		reqMap = mapper.setEKK2101B001(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		ArrayList<HashMap<String, Object>> kk2101_b001_map_list = mapper.getEKK2101B001(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		return kk2101_b001_map_list;
	}
	
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param fixedText
	 * @param adchgDtlSbt 検索対象の住所変更明細種別コード
	 * @return 
	 * @throws Exception
	 */
	private HashMap<String, Object> runEKK0341A010Current(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kktk_svc_kei_no
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		//機器提供サービス契約の取得
		// EKK0341B019 
		condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktk_svc_kei_no);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE , "20991231");
		reqMap = mapper.setEKK0341A010(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk0341_a010_map = mapper.getEKK0341A010(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		return kk0341_a010_map;
	}
	
	// OM-2016-0001640 ADD START
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param fixedText
	 * @param adchgDtlSbt 検索対象の住所変更明細種別コード
	 * @return 
	 * @throws Exception
	 */
	private HashMap<String, Object> runEKK0341A010CurrentOpedate(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kktk_svc_kei_no
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		//機器提供サービス契約の取得
		// EKK0341B019 
		condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktk_svc_kei_no);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE , JCCBPCommon.getOpeDate(null));
		reqMap = mapper.setEKK0341A010(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk0341_a010_map = mapper.getEKK0341A010(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		return kk0341_a010_map;
	}
	
	// OM-2016-0001640 ADD END
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param fixedText
	 * @param kktk_svc_kei_no 検索対象の機器提供サービス契約番号
	 * @return 
	 * @throws Exception
	 */
	private HashMap<String, Object> runEKK2811A010(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kkop_svc_kei_no
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		//機器提供サービス契約の取得
		// EKK0341B019 
		condMap.put(JKKAdchgMapperCC.COND_KEY_KKOP_SVC_KEI_NO, kkop_svc_kei_no);
		condMap.put(JKKAdchgMapperCC.COND_KEY_RSV_APLY_YMD , "20991231");
		reqMap = mapper.setEKK2811A010(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> outMap = null;
		ArrayList<HashMap<String, Object>> kk2811_a010_map_list = mapper.getEKK2811A010(param, this.fixedText, resMap);
		for (HashMap<String, Object> kk2811_a010_map : kk2811_a010_map_list) {
			outMap = kk2811_a010_map;
		}
		mapper.scResultCheck(param);
		
		return outMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param fixedText
	 * @param kkopSvcKeiNo 検索対象の機器オプションサービス契約番号
	 * @return 
	 * @throws Exception
	 */
	private ArrayList<HashMap<String, Object>> runEKK2811B010(
			IRequestParameterReadWrite param
			, SessionHandle handle
			, String kktkSvcKeiNo
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		// EKK2811B001
		condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		reqMap = mapper.setEKK2811B010(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		ArrayList<HashMap<String, Object>> kk2811_b001_map_list = mapper.getEKK2811B010(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		return kk2811_b001_map_list;
	}
	
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param funcCode
	 * @param fixedText
	 * @param kaisen_ucwk_no 検索対象のサービス契約回線内訳番号
	 * @return 
	 * @throws Exception
	 */
	private HashMap<String, Object> runEKK0251A010(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kaisen_ucwk_no
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		// EKK0251A010 
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_KAIS_UCWK_NO, kaisen_ucwk_no);
		reqMap = mapper.setEKK0251A010(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk0341_a010_map = mapper.getEKK0251A010(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		return kk0341_a010_map;
	}
	
	private HashMap<String, Object> getKkOpSvcRec(ArrayList<HashMap<String, Object>> ekk2811B010ResList, String searchSvcCd, boolean statCheck) throws Throwable
	{
		if (ekk2811B010ResList == null
				|| StringUtils.isEmpty(searchSvcCd)) {
			return null;
		}
		String tmp_newest_dtm = "0";
		HashMap<String, Object> newestEkk2811B010Map = null;
		
		for (HashMap<String, Object> ekk2811B010Map : ekk2811B010ResList) {
			if (ekk2811B010Map == null) {
				continue;
			}
			// 機器オプションサービスコードから判定
			String kkopSvcCd = (String) ekk2811B010Map.get(EKK2811B010CBSMsg1List.KKOP_SVC_CD);
			String geneAddDtm = (String) ekk2811B010Map.get(EKK2811B010CBSMsg1List.GENE_ADD_DTM);
			// 最新世代を発見したら保存しておく
			if (searchSvcCd.equals(kkopSvcCd)
					&& tmp_newest_dtm.compareTo(geneAddDtm) <= 0) {
				newestEkk2811B010Map = ekk2811B010Map;
				tmp_newest_dtm = geneAddDtm;
			}
		}
		// サービスコードに該当の機器オプションサービスが無ければnullを返却
		if (newestEkk2811B010Map == null) {
			return null;
		}
		// 最新世代のステータスが解約済み、キャンセル済みの場合は結果を返さない。
		String kkopStat = (String) newestEkk2811B010Map.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_STAT);
		if (statCheck && ("910".equals(kkopStat) || "920".equals(kkopStat))) {
			return null;
		}
		return newestEkk2811B010Map;
	}
	
	/**
	 * 機器提供サービス契約一覧照会SIFを呼び出し
	 * 結果は、
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiKaisenUcwkNo
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException, CCException 例外時にスローされます
	 */
	private ArrayList<HashMap<String, Object>> getMfrInfoByEKK0341B019(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo)
			throws RequestParameterException, SCException, CCException, Throwable
	{
		ArrayList<HashMap<String, Object>> mfrResList = runEKK0341B019(param, handle, svcKeiNo, JKKAdchgConstCC.MAX_DATE);
		
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD START
		ArrayList<HashMap<String, Object>> outList = new ArrayList<HashMap<String, Object>>();
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD END
		// 一覧照会結果から多機能ルータのみに機器提供サービス契約への一意照会をかける
		for(HashMap<String, Object> b019ResMap : mfrResList) {
			String tknkikiSbtCd = (String)b019ResMap.get(EKK0341B019CBSMsg1List.TAKNKIKI_SBT_CD);
			// ANK-4315-00-00 MOD START
			//if (TAKNKIKI_SBT_CD_MFR.equals(tknkikiSbtCd)) {
			if (TAKNKIKI_SBT_CD_MFR.equals(tknkikiSbtCd) || TAKNKIKI_SBT_CD_HGW.equals(tknkikiSbtCd)) {
			// ANK-4315-00-00 MOD END
				// EKK0341A010_機器提供サービス契約一意照会（カレント取得） 実行
				HashMap<String, Object> resultMap = runEKK0341A010Current(param, handle, (String)b019ResMap.get(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_NO));
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD START
//				mfrResList.add(resultMap);
//			}
//		}
//		return mfrResList;
				outList.add(resultMap);
			}
		}
		return outList;
// IT1-2014-0000040 2014.01.24 Y.Kanata MOD END
	}
	
	/**
	 * 引数のa010Listから一意照会結果を取り出し、後の処理で必要な項目を
	 * EKK03401A022で使用されるMapKeyで保存する。
	 * @param a010List EKK03401A010の一意照会結果を持つArrayList
	 * @return
	 */
	private ArrayList<HashMap<String, Object>> getDataFromA010Res(ArrayList<HashMap<String, Object>> a010List)
	{
		ArrayList<HashMap<String, Object>> b022List = new ArrayList<HashMap<String, Object>>();
		
		for (HashMap<String, Object>a010Map : a010List) {
			HashMap<String, Object> b022Map = new HashMap<String, Object>();
			//機器提供サービス契約番号
			b022Map.put(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO, a010Map.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
			//機器提供サービス契約世代登録年月日時分秒
			b022Map.put(EKK0341B022CBSMsg1List.GENE_ADD_DTM, a010Map.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM));
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD START
			//宅内機器型式
			b022Map.put(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD, a010Map.get(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
// IT1-2014-0000040 2014.01.24 Y.Kanata ADD END
			//機器製造番号
			b022Map.put(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO, a010Map.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
			//宅内機器種別コード
			b022Map.put(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD, a010Map.get(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
			//サービス契約回線内訳番号
			b022Map.put(EKK0341B022CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO, a010Map.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			//機器提供サービスコード
			b022Map.put(EKK0341B022CBSMsg1List.KKTK_SVC_CD, a010Map.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
			//機器変更番号
			b022Map.put(EKK0341B022CBSMsg1List.KIKI_CHG_NO, a010Map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
			b022List.add(b022Map);
		}
		return b022List;
	}
	
	/**
	 * 
	 * @param param
	 * @param handle
	 * @param fixedText
	 * @param svcKeiNo 検索対象のサービス契約番号
	 * @return 
	 * @throws Exception
	 */
	private ArrayList<HashMap<String, Object>> runEKK0341B019(
			IRequestParameterReadWrite param
			, SessionHandle handle
			, String svcKeiNo
			, String baseYmd
			) throws Exception {
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		//機器提供サービス契約の取得
		// EKK0341B019
		condMap.put("svc_kei_no", svcKeiNo);
		condMap.put("base_ymd", baseYmd);
		reqMap = mapper.setEKK0341B019(param, this.fixedText, condMap, "3");
		resMap = scCall.run(reqMap, keepSesHandle.get());
		ArrayList<HashMap<String, Object>> kk0341_b019_map_list = mapper.getEKK0341B019(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		return kk0341_b019_map_list;
	}
	
	/**
	 * 電話用多機能ルータか否かを、EKK0341B022照会結果から判定します
	 * 
	 * @param eKK0341B008SCHash
	 * @param mfrTaknkikiModelCd
	 * @param vaKikiChgoNo
	 * @param ido_div 異動区分　ロット２KT1-2013-0000105対応で追加
	 * @return
	 * @since 2012-11-24 変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）
     *         IT1-2013-0000099 2013/01/25 機器変更番号に変更
	 */
	private boolean isRegalMfRouter(HashMap<String, Object> eKK0341B022SCHash,
			String mfrTaknkikiModelCd, String mfrSeizoNo, String ido_div, String mfrChgNo)
	{
		//機器提供サービスコードが電話用VA？
		String kktkSvcCd = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_CD);
		// ANK-4315-00-00 MOD START
		//if (!KKTK_SVC_CD_MFR.equals(kktkSvcCd)) {
		if (!KKTK_SVC_CD_MFR.equals(kktkSvcCd) || KKTK_SVC_CD_HGW.equals(kktkSvcCd)) {
		// ANK-4315-00-00 MOD END
			return false;	//次のデータへ
		}
		
		String kkTaknkikiModelCd = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
		String kkKikiChgNo = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KIKI_CHG_NO);			// 機器製造番号
		
		if (kkTaknkikiModelCd == null || kkKikiChgNo == null) {
			return false;
		}
		
		// サービス契約内訳＜eo光電話＞一意照会と機器提供サービス契約一意照会の機器情報が一致しない場合
		if (!kkTaknkikiModelCd.equals(mfrTaknkikiModelCd) || !kkKikiChgNo.equals(mfrChgNo)) {
			return false;	// 次のデータへ
		}
		// 一致する場合オーダ発行
		return true;
	}
	
	
	/**
	 * サービス契約内訳一覧照会<br>
	 * <br>
	 * サービス契約内訳一覧照会サービスインターフェイスにより<br>
	 * サービス契約番号に紐づくサービス契約内訳の一覧を取得します。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite getSvcKeiUtwkListForAdd(
			SessionHandle handle
			, IRequestParameterReadWrite param
			) throws Throwable {
		// 上りマッピング
		HashMap<String, Object> paramMap = editInMsg_EKK0161B004CBS(param);

		// SC呼び出し部品のインスタンス生成
		// （引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SC呼出
		Map<?, ?> result = scCall.run(paramMap, handle);

		// 下りマッピング
		editResultRP_EKK0161B004CBS(result, param);

		// 取得したサービス契約内訳一覧の件数分繰り返す
		HashMap dataMap = (HashMap) param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP);
		if (dataMap != null) {
			ArrayList dataList = (ArrayList) dataMap.get("EKK0161B004CBSMsg1List");
			svc_kei_ucwk_no = new String[1];
			svc_kei_ucwk_gadtm = new String[1];
			if (dataList.size() <= 0) {
				svc_kei_ucwk_no[0] = "";
				svc_kei_ucwk_gadtm[0] = "";
			}
			String tmpLastGene = "0";
			for (int i = 0; i < dataList.size(); i++) {
				HashMap childMap = (HashMap) dataList.get(i);
				if (childMap != null
						&& tmpLastGene.compareTo((String) childMap.get("gene_add_dtm")) < 0) {
					svc_kei_ucwk_no[0] = (String) childMap.get("svc_kei_ucwk_no");
					svc_kei_ucwk_gadtm[0] = (String) childMap.get("gene_add_dtm");
					tmpLastGene = (String) childMap.get("gene_add_dtm");
				}
			}
		} else {
			svc_kei_ucwk_no = new String[1];
			svc_kei_ucwk_no[0] = "";
			svc_kei_ucwk_gadtm = new String[1];
			svc_kei_ucwk_gadtm[0] = "";
		}

		return param;
	}
// IT1-2013-0001749 (ANK-1578-00-00) 2013.12.25 Y.Kanata ADD END
// IT2-2014-0000180 2014.04.04 Y.Kanata ADD START
	private boolean hasDslSodAdded(
			IRequestParameterReadWrite param
			, String kktkSvcKeiNo
			, String modelCd
			, String seizoNo
			, String kktk_svc_cd
			) throws Exception{
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 住所変更明細取得処理
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		// オーダ設定一覧照会
		// EKK1041B001
		// 機器提供サービス契約番号
		condMap.put(EKK1041B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		// 機器型式
		condMap.put(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, modelCd);
		// 製造番号
		condMap.put(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO, seizoNo);
		// ANK-4315-00-00 MOD START
		//if(!KKTK_SVC_CD_MFR.equals(kktk_svc_cd)){
		if(!KKTK_SVC_CD_MFR.equals(kktk_svc_cd) || KKTK_SVC_CD_HGW.equals(kktk_svc_cd)){
		// ANK-4315-00-00 MOD END
			// オーダ種別コード(1:ネット)
			condMap.put(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD, "1");
			// サービスオーダコード(0A:ルーター接続設定)
			condMap.put(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, "0A");
		}else{
			// オーダ種別コード
			condMap.put(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD, "2");
			// サービスオーダコード(26:多機能ルーター)
			condMap.put(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, "26");
		}
		
		reqMap = mapper.setEKK1041B001(param, this.fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		ArrayList<HashMap<String, Object>> KK1041B001MapList = mapper.getEKK1041B001(param, this.fixedText, resMap);
		mapper.scResultCheck(param);
		
		if(KK1041B001MapList == null){
			return false;
		}
		// 機器提供サービス契約のに対し、直近でFTTH認証の解約か消去が発行されているか
		for (HashMap<String, Object> KK1041B001Map : KK1041B001MapList) {
			String yokyuSbtCd = (String)KK1041B001Map.get(EKK1041B001CBSMsg1List.RCNT_YOKYU_SBT_CD);
			if ("03".equals(yokyuSbtCd) || "08".equals(yokyuSbtCd)) {
				return true;
			}
		}
		
		return false;
	}
// IT2-2014-0000180 2014.04.04 Y.Kanata ADD END
	// OM-2015-0001574 20150806 ADD START
	/**
	 * ネット解約オーダ制御処理<br>
	 * JKKHakkoSODCCのdslOdrCtrl(解約オーダ制御処理)のネットの部分を移植
	 * ■■■当該メソッドで独自に行っている処理■■■
	 * @住変キャンセル時には異動区分:00019(住所変更・登録)である為、00005(解約)に化かして処理する。
	 * (コメント"// ■@■・・・"でコメントアウトした部分)
	 * A多機能のルーター機能に対してのオーダは実装済(delRouterFunctionOnMfrSodメソッド(後続で処理))である為、当メソッドでは行わない
	 * (コメント"// ■A■・・・"でコメントアウトした部分)
	 * Bネットキャンセルオーダ発行済フラグがtrueの場合は処理を行わないよう制御
	 * (コメント"// ■B■・・・"でコメントアウトした部分)
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param sodMap SODマップ
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite netDslOdrCtrl(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> sodMap) throws Throwable
	{
		// ■B■■ネットキャンセルオーダ発行済フラグでオーダを発行するか制御する
		// オーダ発行済みの場合は何もせず処理終了する。
		if(isNetClOdrHkZumi)
		{
			return param;
		}
		else
		{
			isNetClOdrHkZumi = true;
		// ■B■■ネットキャンセルオーダ発行済フラグでオーダを発行するか制御する
			
			int statusCode = 0;											// サービスインターフェイス実行ステータス
	
			HashMap<String, Object> sod_kihon_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO);		// SOD基本情報
			HashMap<String, Object> svc_kei_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO);			// サービス契約情報
			HashMap<String, Object> svc_kei_ucwk_info_Map = (HashMap<String, Object>)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO);	// サービス契約内訳情報
			sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map);
			svc_kei_info_Map = shkkaMap(svc_kei_info_Map);
			svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map);
	
			// (1) 解約必須パラメータの取得
			String sys_id = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID);															// SYSID
			String ido_div = (String)sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV);														// 異動区分
			String svc_kei_no = (String)svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO);													// サービス契約番号
	
			String svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO);									// 変更後サービス契約内訳番号
			String chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM);		// 変更後サービス契約内訳世代登録年月日時分秒
	//↓↓↓2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↓↓↓
			Boolean isNewCourseFlag = (Boolean)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_NEW_CRS_FLAG);
			isNewCourseFlag = (null == isNewCourseFlag ? false : isNewCourseFlag);
	//↑↑↑2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↑↑↑
			
			// ■@■異動区分を00005:解約にする
			ido_div = JKKHakkoSODConstCC.IDO_DIV_DSL;
			// ■@■異動区分を00005:解約にする
			
	// OM-2015-0000711 ADD START
			int targetSvcKeiUcwkCnt = 0;
			if (svc_kei_ucwk_info_Map.containsKey(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT)) 
			{
				targetSvcKeiUcwkCnt = (Integer)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT);
			}
			Boolean isAdChgAddFlag = (Boolean)svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_AD_CHG_ADD_FLAG);
			isAdChgAddFlag = (null == isAdChgAddFlag ? false : isAdChgAddFlag);
	// OM-2015-0000711 ADD END
	
			// (2) サービス契約情報の取得
			// Aサービス契約の確認
			// サービス種類判定
			// IT2-2016-0000004 2016/02/22 MOD START
			//String svc_kind = jdgSvcKind_PcrsCd();
			String svc_kind = jdgSvcKind();
			// IT2-2016-0000004 2016/02/22 MOD END
			
			// eo光ネット、またはeoADSLの場合
			if (JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) ||
					JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind))
			{
				// (3) ネットサービスの解約処理
				boolean getSameTrnNoFlg = false;		// 同一処理番号採番フラグ
				ArrayList eKK0351A010SCHashList = new ArrayList();	// オプションサービス契約リスト
				//↓↓↓2012-11-24変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）↓↓↓
			//	HashMap<String, Object> eKK0341A010SCHash = null;	// 機器提供サービス契約一意照会結果
				HashMap<String, Object> eKK0341B022SCHash = null;	// 機器提供サービス契約一覧照会結果
				//↑↑↑2012-11-24変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）↑↑↑
	
				// 解約するオプションがあるか確認 (同一処理番号の採番対象の有無を確認するため先に対象データ取得)
				// EKK0351B002_オプションサービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashMltise = new HashMap<String, Object>();
				HashMap<String, Object> resultHashMltise = new HashMap<String, Object>();
				inHashMltise.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);								// サービス契約番号
				
				statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0351B002SCList = (CAANMsg[])resultHashMltise.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002);
				
				for(int i = 0 ; i < msgEKK0351B002SCList.length ; i ++)
				{
					HashMap<String, Object> eKK0351B002SCHash = msgEKK0351B002SCList[i].getMsgData();
					String op_svc_cd = eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
					
					//   Eメール、Myホームページ、メーリングリスト、ダイヤルアップ接続、マルチセッションの存在を確認
					if(JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals(op_svc_cd) ||		// 【ANK-0046-00-01】IPV6対応 2012-02-29追加
						JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd) ||
						JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd)
						// IT1-2012-0001562 2012/10/23 ADD START
						// フェムトセルのオプションサービスコードを追加
						|| JKKHakkoSODConstCC.OP_SVC_CD_FMTCEL.equals(op_svc_cd))
						// IT1-2012-0001562 2012/10/23 ADD END
					{
						// EKK0351A010_オプションサービス契約一意照会
						HashMap<String, Object> inHashSvcKei = new HashMap<String, Object>();
						HashMap<String, Object> resultHashSvcKei = new HashMap<String, Object>();
						inHashSvcKei.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));	// オプションサービス契約番号
						inHashSvcKei.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));		// 世代登録年月日時分秒
						
						statusCode = callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, JKKHakkoSODConstCC.FUNC_CODE_1);
						if(0 != statusCode)
						{
							// 0でない場合はエラー
							throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
						}
						HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)resultHashSvcKei.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010);
						String op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO);	// 申込明細番号
						String op_svc_dlre_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_DLRE_CD);	// サービス解約理由コード
	//					String op_svc_cancel_rsn_cd = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード
						
						op_mskm_dtl_no = shkkaChr(op_mskm_dtl_no);	// nullの場合に空文字初期化
						
						// 異動区分＝解約     ⇒ オプションの申込明細番号がサービス契約情報の申込明細番号と一致する または
						// 異動区分＝強制解約 ⇒ サービス解約理由コード＝強制解約 または
						// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
						if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
							// 20120729 LT-2013-0000643 強制解約の条件にサービス契約の申込明細番号と一致する条件を追加 MOD START
	//						(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd)) ||
							(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(op_svc_dlre_cd) && op_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
							// 20120729 LT-2013-0000643 強制解約の条件にサービス契約の申込明細番号と一致する条件を追加 MOD END
							// 20120601 ST2-2012-0001006 START
							//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(op_svc_cancel_rsn_cd)))
							(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && op_mskm_dtl_no.equals(this.mskm_dtl_no)))
							// 20120601 ST2-2012-0001006 END
						{
							// マルチセッションの場合
							if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd))
							{
								// 固定グローバルIPアドレス存在チェック
								for(int j = 0 ; j < msgEKK0351B002SCList.length ; j++)
								{
									HashMap<String, Object> eKK0351B002SCHashFix = msgEKK0351B002SCList[j].getMsgData();
									String op_svc_cd_fix = eKK0351B002SCHashFix.get(EKK0351B002CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
									String op_svc_kei_stat_fix = eKK0351B002SCHashFix.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT).toString();	// オプションサービス契約ステータス
									
									// 20120729 LT-2013-0000643 固定グローバルIPアドレスが存在する条件にサービス契約の申込明細番号と一致する条件を追加 ADD START
									// 固定グローバルIPアドレスの申込明細番号
									String op_mskm_dtl_no_fix = eKK0351B002SCHashFix.get(EKK0351B002CBSMsg1List.MSKM_DTL_NO).toString();
									// 20120729 LT-2013-0000643 固定グローバルIPアドレスが存在する条件にサービス契約の申込明細番号と一致する条件を追加 ADD END
									
									// 解約済、キャンセル済の固定グローバルIPアドレスの場合
									if(JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(op_svc_cd_fix) &&
										(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(op_svc_kei_stat_fix) ||
												JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(op_svc_kei_stat_fix))
										// 20120729 LT-2013-0000643 固定グローバルIPアドレスが存在する条件にサービス契約の申込明細番号と一致する条件を追加 ADD START
										&& op_mskm_dtl_no_fix.equals(this.mskm_dtl_no)
										// 20120729 LT-2013-0000643 固定グローバルIPアドレスが存在する条件にサービス契約の申込明細番号と一致する条件を追加 ADD END
									   )
									{
										eKK0351A010SCHashList.add(eKK0351A010SCHash);	// オプションサービス契約リスト追加
										getSameTrnNoFlg = true;		// 同一処理番号採番あり
										break;
									}
								}
							}
							// 20120405 ＭｙホームページのSOD発行条件追加 START
							// Ｍｙホームページの場合
							else if(JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd))
							{
	
								// EKK0361A010_オプションサービス契約<ISP>一意照会
								HashMap<String, Object> inHashOpSvcKeiIsp = new HashMap<String, Object>();
								HashMap<String, Object> resultHashOpSvcKeiIsp = new HashMap<String, Object>();
								
								inHashOpSvcKeiIsp.put(JKKHakkoSODConstCC.OP_SVC_KEI_NO, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
								inHashOpSvcKeiIsp.put(JKKHakkoSODConstCC.GENE_ADD_DTM, (String)eKK0351B002SCHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM));
								
								callEKK0361A010SC(param, handle, inHashOpSvcKeiIsp, resultHashOpSvcKeiIsp, JKKHakkoSODConstCC.FUNC_CODE_1);
								HashMap<String, Object> eKK0361A010SCHash = (HashMap<String, Object>)resultHashOpSvcKeiIsp.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010);
								
								String urlDomain = (String)eKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_DOMAIN);
								String urlAccount = (String)eKK0361A010SCHash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);
								
								if (!isBlank(urlDomain) && !isBlank(urlAccount))
								{
									// URL(ドメイン)・URL(アカウント)が設定されている場合
									
									eKK0351A010SCHashList.add(eKK0351A010SCHash);	// オプションサービス契約リスト追加
									getSameTrnNoFlg = true;		// 同一処理番号採番あり
								}
							}
							// 20120405 ＭｙホームページのSOD発行条件追加 END
							// 上記以外の場合
							else
							{
								eKK0351A010SCHashList.add(eKK0351A010SCHash);	// オプションサービス契約リスト追加
								getSameTrnNoFlg = true;		// 同一処理番号採番あり
							}
						}
					}
				}// end of msgEKK0351B002SCList
	
				// B-4 BBRの存在判定
				// 解約する機器があるか確認 (同一処理番号の採番対象の有無を確認するため先に対象データ取得)
				// 機器提供サービス契約一覧照会（サービス契約番号）
				HashMap<String, Object> inHashKktk = new HashMap<String, Object>();
				HashMap<String, Object> resultHashKktk = new HashMap<String, Object>();
				inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no);			// サービス契約番号
				
				statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, JKKHakkoSODConstCC.FUNC_CODE_1);
				if(0 != statusCode)
				{
					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
				}
				CAANMsg[] msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022);
				
				for(int i = 0 ; i < msgEKK0341B008SCList.length ; i ++)
				{
					HashMap<String, Object> eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData();
					String tmp_kktk_svc_cd = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_CD);	// 機器提供サービスコード	
					
					// 機器提供サービスコード=BBRの場合
					if(JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals(tmp_kktk_svc_cd))
					{
						//↓↓↓2012-11-24変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）↓↓↓
	//					String tmp_kktk_svc_kei_no = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
	//					String tmp_gene_add_dtm = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.GENE_ADD_DTM);		// 世代登録年月日時分秒
	//					
	//					// EKK0341A010_機器提供サービス契約一意照会
	//					HashMap<String, Object> inHashKktk2 = new HashMap<String, Object>();
	//					HashMap<String, Object> resultHashKktk2 = new HashMap<String, Object>();
	//					inHashKktk2.put(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO, tmp_kktk_svc_kei_no);
	//					inHashKktk2.put(JKKHakkoSODConstCC.GENE_ADD_DTM, tmp_gene_add_dtm);
	//					
	//					statusCode = callEKK0341A010SC(param, handle, inHashKktk2, resultHashKktk2, JKKHakkoSODConstCC.FUNC_CODE_1);
	//					if(0 != statusCode)
	//					{
	//						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
	//					}
	//					HashMap<String, Object> retHash = (HashMap<String, Object>)resultHashKktk2.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010);
	//					String kk_mskm_dtl_no = (String)retHash.get(EKK0341A010CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
	//					String kk_kiki_seizo_no = (String)retHash.get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
	//					String kk_svc_dlre_cd = (String)retHash.get(EKK0341A010CBSMsg1List.SVC_DLRE_CD);		// サービス解約理由コード
	////					String kk_svc_cancel_rsn_cd = (String)retHash.get(EKK0351A010CBSMsg1List.SVC_CANCEL_RSN_CD);	// サービスキャンセル理由コード
						/** *********************************************************************************************** */
						String kk_mskm_dtl_no = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.MSKM_DTL_NO);		// 申込明細番号
						String kk_kiki_seizo_no = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
						String kk_svc_dlre_cd = (String)eKK0341B008SCHash.get(EKK0341B022CBSMsg1List.SVC_DLRE_CD);		// サービス解約理由コード
						//↑↑↑2012-11-24変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）↑↑↑
						
						// 機器製造番号が設定されていない場合は処理対象外
						if(isBlank(kk_kiki_seizo_no))
						{
							continue;
						}
						kk_mskm_dtl_no = shkkaChr(kk_mskm_dtl_no);	// nullの場合に空文字初期化
						
						// 異動区分＝解約     ⇒ 機器提供サービス契約情報の「申込明細番号」＝サービス契約情報の「申込明細番号」 または
						// 異動区分＝強制解約 ⇒ サービス解約理由コード＝強制解約 または
						// 異動区分＝キャンセル ⇒ サービスキャンセル理由コード＝キャンセルの場合
						if(((JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) || JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div)) && kk_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
							// OM-2015-0000881 MOD START
	//						(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(kk_svc_dlre_cd)) ||
							(JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) && JKKHakkoSODConstCC.SVC_DLRE_CD_KYOSEIDSL.equals(kk_svc_dlre_cd) && kk_mskm_dtl_no.equals(this.mskm_dtl_no)) ||
							// OM-2015-0000881 MOD END
							// 20120601 ST2-2012-0001006 START
							//(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && jdgSvcCancelRsnCd(kk_svc_cancel_rsn_cd)))
							(JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) && kk_mskm_dtl_no.equals(this.mskm_dtl_no)))
							// 20120601 ST2-2012-0001006 END
						{
							// 同時解約されたBBRでかつ既に新規登録SODが出ているので解約、消去SODを発行
							//↓↓↓2012-11-24変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）↓↓↓
						//	eKK0341A010SCHash = retHash;
							eKK0341B022SCHash = eKK0341B008SCHash;
							//↑↑↑2012-11-24変更　ロット２IT1-2012-0002131（EKK0341B022への差替えに伴う判定ロジック見直し）↑↑↑
							getSameTrnNoFlg = true;		// 同一処理番号採番あり
							break;
						}
					}
				}// end of msgEKK0341B008SCList
				
	// ■A■多機能のルーター機能に対してのオーダは実装済(delRouterFunctionOnMfrSodメソッド(後続で処理))である為、ここでは行わない
	//// ▼▼▼ 2013/11/20 2014年2月案件 多機能ルーター（機器追加）
	//			// C-4 多機能ルータの存在判定
	//			// 解約する機器があるか確認 (同一処理番号の採番対象の有無を確認するため先に対象データ取得)
	//			// 機器提供サービス契約一覧照会（サービス契約回線内訳番号）
	//			int takino_flg = checkTakinoRT(handle, param);
	//			// 2014/02/06 OM-2014-0000482 mod Start
	//			if( takino_flg != 0 && takino_flg != 9 )
	//			// 2014/02/06 OM-2014-0000482 mod End
	//			{
	//				getSameTrnNoFlg = true;
	//			}
	//// ▼▼▼ 2013/11/20 2014年2月案件 多機能ルーター（機器追加）
	// ■A■多機能のルーター機能に対してのオーダは実装済(delRouterFunctionOnMfrSodメソッド(後続で処理))である為、ここでは行わない
				
	//↓↓↓2013-06-16追加　（照査取消時に消去ＳＯＤを出す必要あり）↓↓↓
				boolean isShosaCl = false;
				
				//照査取消かキャンセル
				if (JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(this.ido_div))
				{
					// EKK0161A010_サービス契約内訳一意照会
					// 必要情報の設定
					HashMap<String, Object> inEKK0161A010Hash = new HashMap<String, Object>();
					HashMap<String, Object> retEKK0161A010Hash = new HashMap<String, Object>();
	
					inEKK0161A010Hash.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no);				// サービス契約内訳番号
					inEKK0161A010Hash.put(JKKHakkoSODConstCC.GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 世代登録年月日時分秒
	
					statusCode = callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, JKKHakkoSODConstCC.FUNC_CODE_1);
					if(0 != statusCode)
					{
						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
					}
	
					HashMap<String, Object> eKK0161A010Hash = (HashMap<String, Object>)retEKK0161A010Hash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010);
	
					String svcKeiUcwkStat = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT);
					isShosaCl = JKKHakkoSODConstCC.SVC_KEI_STAT_010.equals(svcKeiUcwkStat);
					if (isShosaCl)
					{
						getSameTrnNoFlg = true;		// 同一処理番号採番あり
					}
				}
	//↑↑↑2013-06-16追加　（照査取消時に消去ＳＯＤを出す必要あり）↑↑↑
				
				// @FTTH認証の解約
				// FTTH認証ID以外に解約するオプション、機器がある場合
				if(getSameTrnNoFlg)
				{
					// @-1同一処理番号の採番
					String[] sameTrnNo = new String[1];
					getSame_trn_no(param, handle, null, sameTrnNo);	// 同一処理番号の取得
					this.same_trn_no = sameTrnNo[0];
				}
				else
				{
					this.same_trn_no = "";
				}
				
				// eoADSLではない、または、フレッツの場合
				if(!JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind) ||
						JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals(pcrs_cd))
				{
					
					//マンションタイプ（プライベート）の場合はFTTH認証を送信しない
					if(!isMansionPrvate())
					{
						this.svc_kei_ucwk_no = new String[1];
						this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;		// サービス契約内訳番号
						this.svc_kei_ucwk_gadtm = new String[1];
						this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
						// FTTH認証・解約
						param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_103);
						
	//↓↓↓2013-06-16追加　（照査取消時に消去ＳＯＤを出す必要あり）↓↓↓
						//照査取消の場合　FTTH認証・消去も出す
						if (isShosaCl)
						{
							// FTTH認証・消去
							param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_104);
						}
	////↑↑↑2013-06-16追加　（照査取消時に消去ＳＯＤを出す必要あり）↑↑↑
					}
				}
				
				// 対象のオプションサービス契約数分繰り返す
				for(int i=0; i < eKK0351A010SCHashList.size(); i++)
				{
					HashMap<String, Object> eKK0351A010SCHash = (HashMap<String, Object>)eKK0351A010SCHashList.get(i);
					String op_svc_cd = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_CD).toString();	// オプションサービスコード
					String op_svc_kei_no = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO).toString();	// オプションサービス契約番号
					String op_gene_add_dtm = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM).toString();	// オプションサービス契約世代登録年月日時分秒
					
					// マルチセッションの場合
					if(JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd))
					{
	//↓↓↓2013-08-05追加　巻取りBＳＯＤ品向障害Ｎｏ３６（コース変更中のeo光ネットの強制解約でメール解約ＳＯＤがダブって出る）↓↓↓
						String oyaSvcKeiUcwkNo = eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_KEI_UCWK_NO).toString();
						if (svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo))
						{
	//↑↑↑2013-08-05追加　巻取りBＳＯＤ品向障害Ｎｏ３６（コース変更中のeo光ネットの強制解約でメール解約ＳＯＤがダブって出る）↑↑↑
							// P付き認証IDに対してのSODを発行
							this.op_svc_kei_no_mltise = op_svc_kei_no;
							this.op_gadtm_mltise = op_gene_add_dtm;
							// マルチセッション(静的)・解約
							param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_145);
						}
					}
					else
					{
	//↓↓↓2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↓↓↓
						//コース変更中の新認証ID用サービス契約内訳にかかる処理で、Ｅメールなどの解約ＳＯＤが出ないようにする
						//固定ＩＰは、新認証用が締結済から解約されているので、それに対するＳＯＤを発行する
	// OM-2015-0000711 MOD START
						String oyaSvcKeiUcwkNo = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.SVC_KEI_UCWK_NO);
	//					if(!isNewCourseFlag)
						if((!isNewCourseFlag && targetSvcKeiUcwkCnt < 2)
								|| (isNewCourseFlag && svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo))
								|| (isAdChgAddFlag && svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo)))
	// OM-2015-0000711 MOD END
						{
	//↑↑↑2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↑↑↑
							//オプション設定オーダ制御のマッピング
							HashMap<String, Object> opSodMap = new HashMap<String, Object>();				// SODマップ
							HashMap<String, Object> opSodKihonInfoMap = new HashMap<String, Object>();		// SOD基本情報
							HashMap<String, Object> opSvcKeiInfoMap = new HashMap<String, Object>();		// サービス契約情報
							HashMap<String, Object> opSvcKeiUcwkInfoMap = new HashMap<String, Object>();	// サービス契約内訳情報
							HashMap<String, Object> opOpSvkeiInfoMap = new HashMap<String, Object>();		// オプションサービス契約情報
							
							// SOD基本情報
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_SYSID, sys_id);			// SYSID
							opSodKihonInfoMap.put(JKKHakkoSODConstCC.INFO_IDO_DIV, ido_div);		// 異動区分
							// サービス契約情報
							opSvcKeiInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, svc_kei_no);	// サービス契約番号
							// サービス契約内訳情報
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);	// サービス契約内訳番号
							opSvcKeiUcwkInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);	// 変更後サービス契約内訳世代登録年月日時分秒
							// オプションサービス契約情報
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_NO, op_svc_kei_no);				// 変更前オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更前オプションサービス契約世代登録年月日時分秒
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, op_svc_kei_no);				// 変更後オプションサービス契約番号
							opOpSvkeiInfoMap.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm);	// 変更後オプションサービス契約世代登録年月日時分秒
							
							// SODマップ設定
							opSodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, opSodKihonInfoMap);			// SOD基本情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, opSvcKeiInfoMap);				// サービス契約情報
							opSodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);	// サービス契約内訳情報
							opSodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opOpSvkeiInfoMap);			// オプションサービス契約情報
							
							// オプション設定オーダ制御処理
							opSetOdrCtrl(handle, param, fixedText, opSodMap);
						}
					}
				}// end of eKK0351A010SCHashList
				
				// BBRの解約
	//↓↓↓2013-08-05変更　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↓↓↓
	//			if(eKK0341B022SCHash != null)
				//もしくは、コース変更中の新認証ID用サービス契約内訳の場合も出さない
	// OM-2015-0000711 MOD START
	//			if(eKK0341B022SCHash != null && !isNewCourseFlag)
				if(eKK0341B022SCHash != null && !isNewCourseFlag && targetSvcKeiUcwkCnt < 2)
	// OM-2015-0000711 MOD END
	//↑↑↑2013-08-05変更　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↑↑↑
				{
					this.kktk_svc_kei_no = new String[1];
					kktk_svc_kei_no[0] = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);	// 機器提供サービス契約番号
					this.kktk_svc_kei_gadtm = new String[1];
					kktk_svc_kei_gadtm[0] = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.GENE_ADD_DTM);	// 機器提供サービス契約世代登録年月日時分秒
					this.taknkiki_model_cd = new String[1];
					taknkiki_model_cd[0] = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD);	// 宅内機器型式コード
					this.kiki_seizo_no = new String[1];
					kiki_seizo_no[0] = (String)eKK0341B022SCHash.get(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);	// 機器製造番号
					
	//↓↓↓2013-04-25追加　IT2-2013-0000400（ルータ向け接続情報オーダのオーダ設定出力の整理）↓↓↓
					this.svc_kei_ucwk_no = new String[1];
					this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;						// サービス契約内訳番号
					this.svc_kei_ucwk_gadtm = new String[1];
					this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;  // サービス契約内訳世代登録年月日時分秒
	//↑↑↑2013-04-25追加　IT2-2013-0000400（ルータ向け接続情報オーダのオーダ設定出力の整理）↑↑↑
					
					// ルーター向け接続情報・解約
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_149);
					// ルーター向け接続情報・消去
					param = addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_150);
				}
				
	// ■A■多機能のルーター機能に対してのオーダは実装済(delRouterFunctionOnMfrSodメソッド(後続で処理))である為、処理しない
	//// ▼▼▼ 2013/11/20 2014年2月案件 多機能ルーター（機器追加）
	//// OM-2015-0000711 MOD START
	////			if( takino_flg == 4 ){
	//			if( takino_flg == 4 && targetSvcKeiUcwkCnt < 2 ){
	//// OM-2015-0000711 MOD END
	//				// 多機能ルーター設定・変更（ルーター機能・解約）
	//				param = addTakinoSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_405);
	//// OM-2015-0000711 MOD START
	////			}else if( takino_flg == 3 )
	//			}else if( takino_flg == 3 && targetSvcKeiUcwkCnt < 2 )
	//// OM-2015-0000711 MOD END
	//			{
	//				// 多機能ルーター設定・解約（ルーター機能・解約）
	//				param = addTakinoSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_419);
	//				// 多機能ルーター設定・消去（ルーター機能・解約）
	//				param = addTakinoSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_420);
	//			}
	//// ▲▲▲ 2013/11/20 2014年2月案件 多機能ルーター（機器追加）
	// ■A■多機能のルーター機能に対してのオーダは実装済(delRouterFunctionOnMfrSodメソッド(後続で処理))である為、ここでは行わない
				
			}
			return param;
		}
	}
	// OM-2015-0001574 20150806 ADD END

	// ANK-2765-00-00 ADD START
	/**
	 * 料金プランコード変更(ネット)に伴うサービスオーダを発行します。
	 * <br>
	 * 認証IDが変わらず、料金プランコードのみが変更となるコース変更(コース変更取消)の際に発行が必要なサービスオーダを
	 * オーダ発行条件、オーダ情報作成ワークに登録します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 異常が発生した場合
	 */
	public IRequestParameterReadWrite hakkoCourseChgSOD(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		return new JKKHakkoSODCC().hakkoCourseChgSOD(handle, param, fixedText);
	}

	/**
	 * 旧VR識別判定用サービス詳細コードを取得します。
	 * <br>
	 * コース変更の予約状況から旧VR識別判定用サービス詳細コードを判定し、
	 * 異動予約の新料金プランコード(新認証ID)、またはサービス契約の料金プランコード(旧認証ID)を返します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param svcKeiNo サービス契約番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @param pplanCd 料金プランコード
	 * @return 旧VR識別判定用サービス詳細コード
	 * @throws Throwable 異常が発生した場合
	 */
	private String getOldVrsbIdgSvcDtlCd(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo,
											String svcKeiUcwkNo, String pplanCd)
	throws Throwable
	{
		return new JKKHakkoSODCC().getOldVrsbIdgSvcDtlCd(handle, param, svcKeiNo, svcKeiUcwkNo, pplanCd);
	}
	// ANK-2765-00-00 ADD END
	
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD START
	/**
	 * 電話番号が番ポなし(網内番ポ)か判定
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param trgtData 対象データ
	 * @param telno 電話番号
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isMonaiBmp(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String telno
			, String jishaTashaDiv
	) throws Throwable
	{
		
		if (StringUtils.isEmpty(telno))
		{
			// 電話番号が空の場合
			return false;
		}
		
		// サービス契約内訳のキャンセル・解約後の処理のため、電話番号状態判定部品は利用不可。電話番号マスタを参照して判定を行う
		HashMap<String, Object> eZM0121A010Hash = null;		// 電話番号一意照会結果
		HashMap<String, Object> inHashTelNo = new HashMap<String, Object>();
		HashMap<String, Object> resultHashTelNo = new HashMap<String, Object>();

		// 電話番号
		inHashTelNo.put(JKKHakkoSODConstCC.TELNO, telno );
		int statusCode = callEZM0121A010SC(param, handle, inHashTelNo, resultHashTelNo, JKKHakkoSODConstCC.FUNC_CODE_1);
		if(0 != statusCode)
		{
			// 0でない場合はエラー
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}
		
		// 結果の取得
		eZM0121A010Hash = (HashMap<String, Object>)resultHashTelNo.get(JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010);
		if(eZM0121A010Hash == null || eZM0121A010Hash.isEmpty()) {
			return false;
		}
		
		// 網内番ポ有無（初期個人法人電話番号帯が法人の場合「有」）
		String monaiBmpUm = JKKStrConst.CD00410_HOJIN.equals(eZM0121A010Hash.get(EZM0121A010CBSMsg1List.SHK_KOJIN_HOJIN_TLN_TAI_CD)) ? JKKStrConst.CD00002_UMU_1 : JKKStrConst.CD00002_UMU_0;
		// 番語取得通信事業者自社他社フラグ
		String tlnStkuTsjgsJishaTashaFlg = (String) eZM0121A010Hash.get(EZM0121A010CBSMsg1List.TLN_STKU_TSJGS_JISHA_TASHA_FLG);
		if(!JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg)){
			tlnStkuTsjgsJishaTashaFlg = JKKStrConst.CD00189_TASHA;
		}
		
		if (JKKTelnoStatJudgeConstCC.MONAIBMPUM_ARI.equals(monaiBmpUm))
		{
			// 自社他社区分の指定がある場合は自社他社区分も判定する
			if(StringUtils.isEmpty(jishaTashaDiv) || jishaTashaDiv.equals( tlnStkuTsjgsJishaTashaFlg ))
			{
			
				// 対象の電話番号が網内番ポの場合
				return true;
			
			} else {
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	/**
	 * 電話番号一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEZM0121A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String funcCode)
			throws RequestParameterException, SCException
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;
		
		//サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);
		
		//EZM0121A010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0121A010CBSMsg.class.getName());
		
		mappingEZM0121A010SCInMsg(template, inHash, funcCode);
		editBasicCmn(param, template);
		
		//リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		//SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();
		
		//SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		//結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		//ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{

			resultHash.put(
					JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010,
					mappingEZM0121A010SCOutMsg(resultMsgs));
			
		}

		return status;
	}

	
	/**
	 * templateに対してEZM0121A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param requestParam アプリ固有のパラメータ
	 */
	private void mappingEZM0121A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EZM0121A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EZM0121A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010);

		//機能コード
		template.set(EZM0121A010CBSMsg.FUNC_CODE, funcCode);
		
		//ＫＥＹ＿電話番号
		template.set(EZM0121A010CBSMsg.KEY_TELNO, inHash.get(JKKHakkoSODConstCC.TELNO));

	}

	/**
	 * EZM0121A010の結果をHashとして抽出する
	 * @param resultMsgs EZM0121A010のテンプレートリスト
	 * @return EZM0121A010の結果部分
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> mappingEZM0121A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;

		//結果の抽出
		msg = resultMsgs[0];

		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST);
		
		if(null == msgList || 0 == msgList.length)
		{
			retHash = new HashMap<String, Object>();
		}
		else
		{
			retHash = msgList[0].getMsgData();
		}
		
		return retHash;

	}
// ANK-4494-00-00 Step2品質強化対応No.17 20241126 星野 ADD END
}
