/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKKddiKeishaInfoCC
*   ソースファイル名：JKKKddiKeishaInfoCC.java 
*   作成者          ：FJ
*   日付            ：2012年09月27日
*＜機能概要＞
*   KDDI向け契約者情報参照サービスの共通コンポーネント
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/09/27   FJ)赤穂     新規作成
*   v4.00.01    2012/11/02   FJ)赤穂     【IT1-2012-0001570】対応
*   v4.00.02    2013/02/27   FJ) 赤穂    【ST1-2013-0000426】対応
*   v5.00.00    2013/02/13   FJ）桑島    【ANK-1402-00-00】 法人のお客様名設定見直し対応
*   v5.00.01    2013/02/14   FJ）桑島    【ANK-1428-00-00】iTAS業務改善に伴うICS改修対応
*   v5.00.02    2013/02/14   FJ）桑島    【ANK-1443-00-00】iTAS検索条件変更対応
*   v5.00.03    2013/02/27   FJ）桑島    【IT1-2013-0000336】障害対応
*   v5.00.04    2013/03/05   FJ）強矢    【IT1-2013-0000386】対応
*   v5.00.05    2013/03/07   FJ）赤穂    【IT1-2013-0000406】対応
*   v5.00.06    2013/03/26   FJ）赤穂    【IT1-2013-0000605】対応
*   v5.00.07    2013/04/01   FJ）赤穂    【ST1-2013-0000516】対応
*   v5.00.08    2013/04/09   FJ）赤穂    【IT1-2013-0000784】対応
*   v5.00.09    2013/08/20   FJ）古内    【OM-2013-0000147】対応
*   v5.00.10    2013/08/21   FJ）古内    【OM-2013-0000574】対応（お客さまカナ名小文字大文字対応）
*   v5.00.11    2013/09/04   FJ) 団      【OM-2013-0001575】対応
*   v5.00.12    2013/10/11   FJ) 赤穂    【OM-2013-0003233】対応
*   v5.00.13    2013/10/15   FJ) 赤穂    【OM-2013-0003384】対応
*   v5.00.14    2013/12/18   FJ) 強矢    【OM-2013-0005179】対応（スマバリ申込可否の照査OK・NG対応）
*   v5.00.15    2013/12/30   FJ) 強矢    【OM-2013-0005349】対応
*   v5.00.16    2014/01/27   FJ) 強矢    【OM-2014-0000253】対応
*   v5.00.17    2014/02/18   FJ) 強矢    【OM-2014-0000253】対応（スマバリ申込可否の住変中対応）
*   v5.00.18    2014/02/27   FJ) 強矢    【OM-2014-0000253】対応（住変中の利用場所住所対応）
*   v10.00.00   2014/09/10   FJ) 中野    【ANK-2228-00-00】iTAS表示住所の修正
*   v13.00.00   2015/03/25   FJ) 岡田    【OM-2015-0000522】iTAS表示の修正
*   v23.00.00   2016/04/19   FJ) 中山    【OM-2016-0001018】住変先の申込番号検索の不具合対応
*   v31.00.00   2017/11/28   FJ) 孫      ANK-3136-00-00_OPMSハードウエア保守切れ対応(STEP2-2)「KDDI向け契約者情報参照」
*	v31.01.00   2018/06/15   FJ) 藤井    【IT1-2018-0000088】工事仮キャンセル時に解約済eo光電話の契約状態が「契約手続き中」になる
*	v31.02.00   2018/07/26   FJ) 中原    【IT1-2018-0000127】工事仮キャンセル時の契約件数のカウント不正
*	v39.00.00   2018/10/26   FJ) 吉田    【ANK-3478-00-00】eo光設備卸（サービス開始対応）
*	v31.02.00   2018/10/26   FJ) 藤井    【OM-2018-0001092】KDDI向け契約者情報参照で照査ＮＧのデータがエラーで落ちる
*	v60.00.00   2022/08/15   FJ) 吉川    【OM-2022-0000665】itasからKDDI向け契約者情報照会時に電話契約がないべきところが契約中と表示された
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JPCUtilCommon;
import eo.common.util.JZMAdOutputEdit;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0201B005CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0201B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B016CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B016CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B024CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B024CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B033CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B033CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191B009CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B009CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0891A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0891A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0911A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0911A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0921A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0921A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2091B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2091B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2441B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2441B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0081B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0081B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0021B016CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;

/**
 * KDDI向け契約者情報参照に関する検索処理を行います。
 * <br />
 * @author 富士通
 */
public class JKKKddiKeishaInfoCC extends AbstractCommonComponent
{
	
	/** サービス契約一覧照会（電話番号） */
	private static final String TEMPLATE_ID_EKK0081B033 = "EKK0081B033";
	/** 申込明細一覧照会（同一回線） */
	private static final String TEMPLATE_ID_EKK0021B003 = "EKK0021B003";
	/** 申込書番号指定一覧照会 */
	private static final String TEMPLATE_ID_EKK0021B001 = "EKK0021B001";
	/** 工事案件一意照会 */
	private static final String TEMPLATE_ID_EKU0011A010 = "EKU0011A010";
	/** お客様情報一覧照会 */
	private static final String TEMPLATE_ID_ECK0011B002 = "ECK0011B002";
	/** 連絡先一覧照会（電話番号） */
	private static final String TEMPLATE_ID_ECK0201B005 = "ECK0201B005";
	/** お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";

	/** サービス契約回線内訳一覧照会（SYSID） */
	private static final String TEMPLATE_ID_EKK0251B005 = "EKK0251B005";
	/** 申込明細一意照会 */
	private static final String TEMPLATE_ID_EKK0021A010 = "EKK0021A010";
	/** 他事業者割引契約一覧照会  */
	private static final String TEMPLATE_ID_EKK2441B004 = "EKK2441B004";
	/** 提供方式契約一意照会 */
	private static final String TEMPLATE_ID_EKK0891A010 = "EKK0891A010";
	/** マンションプラン一意照会 */
	private static final String TEMPLATE_ID_EKK0921A010 = "EKK0921A010";
	/** マンションコース一意照会 */
	private static final String TEMPLATE_ID_EKK0911A010 = "EKK0911A010";
	/** コード名称管理一意照会 */
	private static final String TEMPLATE_ID_EZM0171A010 = "EZM0171A010";
	/** 業務パラメータ管理一意照会 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	/** サービス契約内訳<eo光電話>一覧照会（同一回線） */
	private static final String TEMPLATE_ID_EKK0191B009 = "EKK0191B009";
	/** 同番移転一覧照会（サービス契約内訳番号） */
	private static final String TEMPLATE_ID_ETU0021B016 = "ETU0021B016";
	/** サービス契約履歴一覧照会 */
	private static final String TEMPLATE_ID_EKK0081B024 = "EKK0081B024";
	/** サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** サービス契約内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";
	/** 回線対象サービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0241B002 = "EKK0241B002";
	
	/** サービス契約回線内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	/** サービス契約回線内訳一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
	/** 住所変更明細一覧照会 */
	private static final String TEMPLATE_ID_EKK2101B001 = "EKK2101B001";
	
	/** サービス契約一覧照会(料金グループコード) */
	private static final String TEMPLATE_ID_EKK0081B016 = "EKK0081B016";
	/** 住所変更一覧照会 */
	private static final String TEMPLATE_ID_EKK2091B001 = "EKK2091B001";
	
	// ANK-3136-00-00 2017/11/28 ADD START
	/** サービス契約_工事案件一覧照会 */
	private static final String TEMPLATE_ID_EKU0081B010 = "EKU0081B010";
	// ANK-3136-00-00 2017/11/28 ADD END
	
	/** 半角スペース */
	private static final String HANKAKU_SPACE = " ";
	/** 全角スペース */
	private static final String ZENKAKU_SPACE = "　";
	/** ブランク */
	private static final String BLANK = "";
	/** 特殊半角カナ文字 */
	private static final String[] SPECIAL_HALF_KANA = { "(ｶ", "ｶ)", "(ﾕ", "ﾕ)", "(ｼﾔ", "ｼﾔ)", "(ｼｬ", "ｼｬ)", "(ｻﾞｲ", "ｻﾞｲ)","（カ","カ）","（ユ","ユ）","（シヤ","シヤ）","（シャ","シャ）","（ザイ","ザイ）" };
	/** 法人格文字 */
	private static final String[] HOJINKAKU_MOJI = { "株式会社", "有限会社", "財団法人", "社団法人", "（株）", "（有）", "（財）", "（社）" };
	
	/** 小文字半角カナリスト */
	@SuppressWarnings("unchecked")
	private static final List[] UPPER_CASE_KANA_LIST = new List[]{
		Arrays.asList('ァ', 'ィ', 'ゥ', 'ェ', 'ォ','ヵ','ヶ','ャ', 'ュ', 'ョ', 'ヮ', 'ッ', '−', '‐', '−', '―', '-', 'ｰ'),
		Arrays.asList('ア', 'イ', 'ウ', 'エ', 'オ','カ','ケ','ヤ', 'ユ', 'ヨ', 'ワ', 'ツ', 'ー', 'ー', 'ー', 'ー', 'ー', 'ー')
	};
	
	/** 初期設定日付(20991231) */
	private static final String SHK_SET_20991231 = "20991231";
	
	/** 料金グループコード */
	private static final LinkedList<String> PRC_GRP_CD_NET = new LinkedList<String>();
	
	static{
		
		PRC_GRP_CD_NET.add(JKKStrConst.CD00133_02);  // ホームタイプ
		PRC_GRP_CD_NET.add(JKKStrConst.CD00133_03);  // メゾンタイプ
		PRC_GRP_CD_NET.add(JKKStrConst.CD00133_04);  // マンションタイプ
		
	}
	
	/** 申込不可理由（ネット・プライベート） */
	private static final String KK_MKM_FL_RSN_N_PRVT = "KK_MKM_FL_RSN_N_PRVT";
	/** 申込不可理由（ネット・従量制） */
	private static final String KK_MKM_FL_RSN_N_JRY = "KK_MKM_FL_RSN_N_JRY";
	/** 申込不可理由（ネット・解約） */
	private static final String KK_MKM_FL_RSN_N_DSL = "KK_MKM_FL_RSN_N_DSL";
	/** 申込不可理由（ネット・休止中） */
	private static final String KK_MKM_FL_RSN_N_PSE = "KK_MKM_FL_RSN_N_PSE";
	/** 申込不可理由（ネット・契約無） */
	private static final String KK_MKM_FL_RSN_N_NON = "KK_MKM_FL_RSN_N_NON";
	/** お客様への案内（ネット・プライベート） */
	private static final String KK_CUST_GUIDE_N_PRVT = "KK_CUST_GUIDE_N_PRVT";
	/** お客様への案内（ネット・従量制） */
	private static final String KK_CUST_GUIDE_N_JRY = "KK_CUST_GUIDE_N_JRY";
	/** お客様への案内（ネット・解約） */
	private static final String KK_CUST_GUIDE_N_DSL = "KK_CUST_GUIDE_N_DSL";
	/** お客様への案内（ネット・休止中） */
	private static final String KK_CUST_GUIDE_N_PSE = "KK_CUST_GUIDE_N_PSE";
	/** お客様への案内（ネット・契約無） */
	private static final String KK_CUST_GUIDE_N_NON = "KK_CUST_GUIDE_N_NON";
	// ANK-3136-00-00 2017/12/04 ADD START
	/** 申込不可理由（ネット・仮キャンセル） */
	private static final String KK_MKM_FL_RSN_N_KRCN = "KK_MKM_FL_RSN_N_KRCN";
	/** お客様への案内（ネット・仮キャンセル） */
	private static final String KK_CUST_GUIDE_N_KRCN = "KK_CUST_GUIDE_N_KRCN";
	// ANK-3136-00-00 2017/12/04 ADD END
	/** 申込不可理由（電話・契約無） */
	private static final String KK_MKM_FL_RSN_T_NON = "KK_MKM_FL_RSN_T_NON";
	/** 申込不可理由（電話・解約） */
	private static final String KK_MKM_FL_RSN_T_DSL = "KK_MKM_FL_RSN_T_DSL";
	/** 申込不可理由（電話・休止中） */
	private static final String KK_MKM_FL_RSN_T_PSE = "KK_MKM_FL_RSN_T_PSE";
	/** お客様への案内（電話・契約無） */
	private static final String KK_CUST_GUIDE_T_NON = "KK_CUST_GUIDE_T_NON";
	/** お客様への案内（電話・解約） */
	private static final String KK_CUST_GUIDE_T_DSL = "KK_CUST_GUIDE_T_DSL";
	/** お客様への案内（電話・休止中） */
	private static final String KK_CUST_GUIDE_T_PSE = "KK_CUST_GUIDE_T_PSE";
	/** 申込可能（ネット） */
	private static final String KK_MSKM_PSB_NET = "KK_MSKM_PSB_NET";
	/** 申込不可（ネット） */
	private static final String KK_MSKM_FL_NET = "KK_MSKM_FL_NET";
	/** 申込可能（電話） */
	private static final String KK_MSKM_PSB_TEL = "KK_MSKM_PSB_TEL";
	/** 申込不可（電話） */
	private static final String KK_MSKM_FL_TEL = "KK_MSKM_FL_TEL";
	
	/** マップキー（ネット申込可否） */
	private static final String KEY_NET_MSKM_FL = "KEY_NET_MSKM_FL";
	/** マップキー（ネット申込不可理由） */
	private static final String KEY_NET_MSKM_RSN = "KEY_NET_MSKM_RSN";
	/** マップキー（ネット案内） */
	private static final String KEY_NET_GUIDE = "KEY_NET_GUIDE";
	/** マップキー（電話申込可否） */
	private static final String KEY_TEL_MSKM_FL = "KEY_TEL_MSKM_FL";
	/** マップキー（電話申込不可理由） */
	private static final String KEY_TEL_MSKM_RSN = "KEY_TEL_MSKM_RSN";
	/** マップキー（電話案内） */
	private static final String KEY_TEL_GUIDE = "KEY_TEL_GUIDE";
	
	// ++++++++ v5.00.14 del stsart ++++++++
//	/** 処理対象のサービス契約ステータス */
//	private static final LinkedList<String> TARGET_SVC_KEI_STAT = new LinkedList<String>();
//	
//	static{
//		TARGET_SVC_KEI_STAT.add("020");  // 照査済
//		TARGET_SVC_KEI_STAT.add("030");  // 締結済
//		TARGET_SVC_KEI_STAT.add("100");  // サービス提供中
//		TARGET_SVC_KEI_STAT.add("210");  // 休止・中断中
//		TARGET_SVC_KEI_STAT.add("220");  // 停止中
//		TARGET_SVC_KEI_STAT.add("910");  // 解約済
//		TARGET_SVC_KEI_STAT.add("920");  // キャンセル
//	}
	// ++++++++ v5.00.14 del end ++++++++
	
	/**
	 * KDDI向け契約者情報を取得する。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getKddiKeishaInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// ｅｏ光電話番号
		String dnw_bngu = (String)ccMsg.get("dnw_bngu");
		// 申込書番号
		String muskm_bngu = (String)ccMsg.get("muskm_bngu");
		// 連絡先電話番号
		String rnrksk_bngu = (String)ccMsg.get("rnrksk_bngu");
		// 生年月日
		String sinngp = (String)ccMsg.get("sinngp");
		// 法人契約チェック
		String huzn_kiyk_chek = (String)ccMsg.get("huzn_kiyk_chek");
		// 利用場所住所
		String tnmt_stbsho_jusho = (String)ccMsg.get("tnmt_stbsho_jusho");
		
		List<HashMap> listSysid = null; 
		
		if(!"".equals(dnw_bngu))
		{
			
			// サービス契約一覧照会（電話番号）取得
			listSysid = getEKK0081B033(handle, param, fixedText);
			
			// 取得結果が2件以上あった場合
			if(listSysid.size() >= 2){
				
				listSysid = getCurrentSvcKei(listSysid, ccMsg);
				
			}
			
		}
		else if(!"".equals(muskm_bngu))
		{
			
			//  申込明細一覧照会（同一回線）取得
			listSysid = getEKK0021B003(handle, param, fixedText);
			
			if(listSysid.size() == 0)
			{
				
				// 申込書番号指定一覧照会取得
				listSysid = getEKK0021B001(handle, param, fixedText);
				
				if(listSysid.size() == 0)
				{
					
					// 申込書番号指定一覧照会で検索結果がなかった場合、工事案件一意照会取得を行う。
					listSysid = getEKU0011A010(handle, param, fixedText);
					
				}
				
			}
			
		}
		else if(!"".equals(rnrksk_bngu))
		{
			
			// お客様情報一覧照会取得
			listSysid = getECK0011B002(handle, param, fixedText, rnrksk_bngu, "");
			
			if(listSysid.size() == 0)
			{
				
				// お客様情報一覧照会で検索結果がなかった場合、連絡先一覧照会（電話番号）取得を行う。
				listSysid = getECK0201B005(handle, param, fixedText);
				
			}
		}
		else
		{
			
			// お客様情報一覧照会取得
			listSysid = getECK0011B002(handle, param, fixedText, "", sinngp);
			
		}
		
		// 検索結果がなかった場合
		if(listSysid.size() == 0)
		{
			
			// 結果コード、完了コード、詳細コード、ネット存在件数の設定
			ccMsg.put("result_cd", "000000");
			ccMsg.put("knryo_cd", "0");
			ccMsg.put("shosi_cd", "0");
			ccMsg.put("netknsu", "0");
			
			return param;
			
		}
		
		List<HashMap> custList = new LinkedList<HashMap>();
		HashMap<String, Object> custMap = null;
		
		//契約者氏名（漢字）
		String tmp_kiyksha_mi = removeSpace((String)ccMsg.get("kiyksha_mi"));
		
		// 法人契約チェックが「1：法人」の場合
		if("1".equals(huzn_kiyk_chek))
		{
			//法人格文字の削除を行う
			tmp_kiyksha_mi = removeHojinkakuMoji(tmp_kiyksha_mi);
		}
		
		//契約者氏名（カナ）
		String tmp_kiyksha_mi_kn = kanaUpperCase(editHankakuKana((String)ccMsg.get("kiyksha_mi_kn"), huzn_kiyk_chek));
		
		for(int i = 0; i < listSysid.size(); i++)
		{
			
			HashMap<String, Object> map = listSysid.get(i);
			String sysid = (String)map.get("SYSID");
			String svcKeiKaisenUcwkNo = (String)map.get("SVC_KEI_KAISEN_UCWK_NO");
			
			// お客様一意照会取得
			CAANMsg cAANMsgCust = getECK0011A010(handle, param, fixedText, sysid);
			
			if(cAANMsgCust != null)
			{
				
				// お客様名
				String custNm = getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM));
				
				// お客様名カナ
				String custKanaNm = getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA));
				
				// 契約者タイプコード
				String keishaTypeCd = getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD));
				
				// 法人契約チェックが「0：個人」の場合
				if("0".equals(huzn_kiyk_chek))
				{
					
					// 契約者タイプコードが「2：法人」の場合、次のデータにスキップ。
					if(JKKStrConst.KEISHA_TYPE_CD_HOJIN.equals(keishaTypeCd) )
					{
						
						continue;
						
					}
					
					// 契約者氏名（漢字）のみが設定されていた場合
					if(!JKKCommonUtil.isNull(tmp_kiyksha_mi) && JKKCommonUtil.isNull(tmp_kiyksha_mi_kn))
					{
						
						
						// お客様名とパラメータの契約者氏名（漢字）が同じ場合
						if(tmp_kiyksha_mi.equals(removeSpace(custNm)))
						{
							
							custMap = new HashMap<String, Object>();
							custMap.put("SYSID",         getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.SYSID)));
							custMap.put("CUST_NM",       getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM)));
							custMap.put("CUST_KN_NM",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
							custMap.put("CUST_BIRTHDAY", getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_BIRTHD)));
							custMap.put("CUST_TELNO",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TELNO)));
							// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
							custMap.put("ORSJGS_NM",     getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.ORSJGS_NM)));
							// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
							
							custMap.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(svcKeiKaisenUcwkNo));
							
							custList.add(custMap);
							
						}
						
					}
					else if(JKKCommonUtil.isNull(tmp_kiyksha_mi) && !JKKCommonUtil.isNull(tmp_kiyksha_mi_kn))
					{
						// 契約者氏名（カナ）のみが設定されていた場合
						
						// お客様名カナとパラメータの契約者氏名（カナ）が同じ場合
						if(tmp_kiyksha_mi_kn.equals(kanaUpperCase(removeSpace(custKanaNm))))
						{
							
							custMap = new HashMap<String, Object>();
							custMap.put("SYSID",         getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.SYSID)));
							custMap.put("CUST_NM",       getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM)));
							custMap.put("CUST_KN_NM",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
							custMap.put("CUST_BIRTHDAY", getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_BIRTHD)));
							custMap.put("CUST_TELNO",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TELNO)));
							// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
							custMap.put("ORSJGS_NM",     getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.ORSJGS_NM)));
							// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
							
							custMap.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(svcKeiKaisenUcwkNo));
							
							custList.add(custMap);
							
						}
						
					}
					else if(!JKKCommonUtil.isNull(tmp_kiyksha_mi) && !JKKCommonUtil.isNull(tmp_kiyksha_mi_kn))
					{
						// 契約者氏名（漢字）と契約者氏名（カナ）が設定されていた場合
						
						// お客様名とパラメータの契約者氏名（漢字）と　お客様名カナとパラメータの契約者氏名（カナ）が同じ場合
						if(tmp_kiyksha_mi.equals(removeSpace(custNm)) && tmp_kiyksha_mi_kn.equals(kanaUpperCase(removeSpace(custKanaNm))))
						{
							
							custMap = new HashMap<String, Object>();
							custMap.put("SYSID",         getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.SYSID)));
							custMap.put("CUST_NM",       getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM)));
							custMap.put("CUST_KN_NM",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
							custMap.put("CUST_BIRTHDAY", getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_BIRTHD)));
							custMap.put("CUST_TELNO",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TELNO)));
							// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
							custMap.put("ORSJGS_NM",     getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.ORSJGS_NM)));
							// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
							
							custMap.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(svcKeiKaisenUcwkNo));
							
							custList.add(custMap);
							
						}
						
					}
					
					
				}
				else if("1".equals(huzn_kiyk_chek))
				{
					// 法人契約チェックが「1：法人」の場合

					// 契約者タイプコードが「2：法人」以外の場合、次のデータにスキップ。
					if( !JKKStrConst.KEISHA_TYPE_CD_HOJIN.equals(keishaTypeCd) )
					{
						
						continue;
						
					}
					
					// お客様名 法人格削除
					custNm = removeHojinkakuMoji(custNm);
					// お客様名カナ 法人格削除
					custKanaNm = removeSpecialHalfKana(custKanaNm);
					
					// 契約者氏名（漢字）のみが設定されていた場合
					if(!JKKCommonUtil.isNull(tmp_kiyksha_mi) && JKKCommonUtil.isNull(tmp_kiyksha_mi_kn))
					{
						
						// お客様名とパラメータの契約者氏名（漢字）が前方一致した場合
						if(removeSpace(custNm).startsWith(tmp_kiyksha_mi))
						{
							
							custMap = new HashMap<String, Object>();
							custMap.put("SYSID",         getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.SYSID)));
							custMap.put("CUST_NM",       getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM)));
							custMap.put("CUST_KN_NM",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
							custMap.put("CUST_BIRTHDAY", "");
							custMap.put("CUST_TELNO",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TELNO)));
							// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
							custMap.put("ORSJGS_NM",     getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.ORSJGS_NM)));
							// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
							
							custMap.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(svcKeiKaisenUcwkNo));
							
							custList.add(custMap);
							
						}
						
					}
					else if(JKKCommonUtil.isNull(tmp_kiyksha_mi) && !JKKCommonUtil.isNull(tmp_kiyksha_mi_kn))
					{
						// 契約者氏名（カナ）のみが設定されていた場合

						// お客様名カナとパラメータの契約者氏名（カナ）が前方一致した場合
						if(kanaUpperCase(removeSpace(custKanaNm)).startsWith(tmp_kiyksha_mi_kn))
						{
							
							custMap = new HashMap<String, Object>();
							custMap.put("SYSID",         getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.SYSID)));
							custMap.put("CUST_NM",       getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM)));
							custMap.put("CUST_KN_NM",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
							custMap.put("CUST_BIRTHDAY", "");
							custMap.put("CUST_TELNO",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TELNO)));
							// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
							custMap.put("ORSJGS_NM",     getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.ORSJGS_NM)));
							// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
							
							custMap.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(svcKeiKaisenUcwkNo));
							
							custList.add(custMap);
							
						}
						
					}
					else if(!JKKCommonUtil.isNull(tmp_kiyksha_mi) && !JKKCommonUtil.isNull(tmp_kiyksha_mi_kn))
					{
						// 契約者氏名（漢字）と契約者氏名（カナ）が設定されていた場合

						// お客様名とパラメータの契約者氏名（漢字）と　お客様名カナとパラメータの契約者氏名（カナ）が前方一致した場合
						if(removeSpace(custNm).startsWith(tmp_kiyksha_mi) && kanaUpperCase(removeSpace(custKanaNm)).startsWith(tmp_kiyksha_mi_kn))
						{
							
							custMap = new HashMap<String, Object>();
							custMap.put("SYSID",         getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.SYSID)));
							custMap.put("CUST_NM",       getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_NM)));
							custMap.put("CUST_KN_NM",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
							custMap.put("CUST_BIRTHDAY", "");
							custMap.put("CUST_TELNO",    getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.KEISHA_TELNO)));
							// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
							custMap.put("ORSJGS_NM",     getNullToStr(cAANMsgCust.getString(ECK0011A010CBSMsg1List.ORSJGS_NM)));
							// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
							
							custMap.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(svcKeiKaisenUcwkNo));
							
							custList.add(custMap);
							
						}
						
					}
					

				}
			}
			
		}
		
// ++++++++ v5.00.12 add start ++++++++
		// 抽出結果が1件でなかった場合
//		if(custList.size() != 1)
		// 抽出結果が0件の場合
		if(custList.size() == 0)
// ++++++++ v5.00.12 add end ++++++++
		{
			
			// 結果コード、完了コード、詳細コード、ネット存在件数の設定
			ccMsg.put("result_cd", "000000");
			ccMsg.put("knryo_cd", "0");
			ccMsg.put("shosi_cd", "0");
			ccMsg.put("netknsu", "0");
			
			return param;
			
		}
		
		List<CAANMsg> svcKeiList = new LinkedList<CAANMsg>();
		HashMap<String, Object> tmpCustInfoMap = new HashMap<String, Object>();
		String sysid = "";
		String tmpSvcKeiKaisenUcwkNo = "";
		
// ++++++++ v5.00.17 upd start ++++++++
		// 抽出した件数分繰り返す
		for(int i = 0; i < custList.size(); i++)
		{
			
			HashMap<String, Object> map = (HashMap)custList.get(i);
			sysid = (String)map.get("SYSID");
			tmpSvcKeiKaisenUcwkNo = (String)map.get("SVC_KEI_KAISEN_UCWK_NO");
			
			// 利用場所住所
			String tmp_tnmt_stbsho_jusho = removeSpace(tnmt_stbsho_jusho);
			
			// ■SYSIDから対象となる回線リストを取得する
			ArrayList<HashMap<String,Object>> kaisenInfoList = 
					getKaisenInfoList(handle, param, fixedText, sysid, tmp_tnmt_stbsho_jusho, muskm_bngu, tmpSvcKeiKaisenUcwkNo);
			
			for(int j = 0; j < kaisenInfoList.size(); j++)
			{
				HashMap<String,Object> kaisenMap = (HashMap<String,Object>)kaisenInfoList.get(j);
				
				// ++++++++ v5.00.18 upd start ++++++++
				// スマバリ申込の出力回線判別フラグ
				String smrt_val_mskm_judge_flg = (String)kaisenMap.get("smrt_val_mskm_judge_flg");
				// 利用場所住所の出力回線判別フラグ
				String kaisen_place_ad_judge_flg = (String)kaisenMap.get("kaisen_place_ad_judge_flg");
				
				// ------------------------------
				// スマバリ申込の出力回線判別フラグの値からサービス契約リストを取得する
				//   null : 住変中以外の回線に紐づくサービス契約番号
				//      0 : 住変中で移転元にて利用しているサービス契約のリスト
				//      1 : 住変中で移転先にて利用するサービス契約のリスト
				// ------------------------------
				
				// 住変中以外の回線に紐づくサービス契約番号
				ArrayList<HashMap<String,Object>> svcKeiNoList = (ArrayList<HashMap<String,Object>>)kaisenMap.get("svc_kei_no_list");
				String kaisenPlace_kaisenUcwkNo = (String)kaisenMap.get("svc_kei_kaisen_ucwk_no");
				String svcKeiKaisenUcwkNo = (String)kaisenMap.get("svc_kei_kaisen_ucwk_no");
				
				// スマバリ申込の出力回線判別フラグが、0:移転元の場合
				if ("0".equals(smrt_val_mskm_judge_flg))
				{
					// 住変中で移転元にて利用しているサービス契約のリスト
					svcKeiNoList = (ArrayList<HashMap<String,Object>>)kaisenMap.get("iten_moto_svc_kei_no_list");
					svcKeiKaisenUcwkNo = (String)kaisenMap.get("itnm_svkei_kisuw_no");			// 移転元
				}
				// スマバリ申込の出力回線判別フラグが、1:移転先の場合
				else if ("1".equals(smrt_val_mskm_judge_flg))
				{
					// 住変中で移転先にて利用するサービス契約のリスト
					svcKeiNoList = (ArrayList<HashMap<String,Object>>)kaisenMap.get("iten_saki_svc_kei_no_list");
					svcKeiKaisenUcwkNo = (String)kaisenMap.get("itens_svkei_kisuw_no");			// 移転先
				}
				
				// 利用場所住所の出力回線判別フラグが、0:移転元の場合
				if ("0".equals(kaisen_place_ad_judge_flg))
				{
					kaisenPlace_kaisenUcwkNo = (String)kaisenMap.get("itnm_svkei_kisuw_no");	// 移転元
				}
				// ANK-2228-00-00 DEL START
				// 利用場所住所の出力回線判別フラグが、1:移転先の場合
				// else if ("1".equals(kaisen_place_ad_judge_flg))
				// {
				//   kaisenPlace_kaisenUcwkNo = (String)kaisenMap.get("itens_svkei_kisuw_no");	// 移転先
				// }
				// ANK-2228-00-00 DEL END
				// ++++++++ v5.00.18 upd end ++++++++
				
				// サービス契約回線内訳一覧照会
				CAANMsg cAANMsgData = getEKK0251A010(handle, param, fixedText, kaisenPlace_kaisenUcwkNo);
				
				// 回線住所の取得(回線場所都道府県名〜回線場所住所補記・部屋番号)
				String state   = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
				String city    = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
				String oaztsu  = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
				String azcho   = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
				String bnchigo = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
				String adrttm  = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
				String adrrm   = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
				String pcd     = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
				
				for (int k = 0; k < svcKeiNoList.size(); k++)
				{
					HashMap<String,Object> svcKeiMap = svcKeiNoList.get(k);
					String svc_kei_no = (String)svcKeiMap.get("svc_kei_no");
					
//OM-2016-0001018 ADD START
					// 住所変更で継続のサービス契約の場合、サービス契約回線内訳の数だけ処理対象となるため
					// 既に処理済みのサービス契約は処理対象外にする。
					if (!tmpCustInfoMap.containsKey(svc_kei_no))
					{
//OM-2016-0001018 ADD END
					
					// サービス契約一意照会
					CAANMsg[] cbsMsg1List = getEKK0081A010(handle, param, fixedText, svc_kei_no);
					
					CAANMsg msgData = new CAANMsg(EKK0251B005CBSMsg1List.class.getName());
					
					msgData.set(EKK0251B005CBSMsg1List.SVC_KEI_NO, svc_kei_no);
					msgData.set(EKK0251B005CBSMsg1List.SVC_KEI_STAT, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
					msgData.set(EKK0251B005CBSMsg1List.MSKM_DTL_NO, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
					msgData.set(EKK0251B005CBSMsg1List.PRC_GRP_CD, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
					msgData.set(EKK0251B005CBSMsg1List.PCRS_CD, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PCRS_CD));
					msgData.set(EKK0251B005CBSMsg1List.PPLAN_CD, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PPLAN_CD));
					msgData.set(EKK0251B005CBSMsg1List.PAUSE_STP_CD, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PAUSE_STP_CD));
					msgData.set(EKK0251B005CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_PCD,       pcd);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_STATE_NM,  state);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_CITY_NM,   city);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_OAZTSU_NM, oaztsu);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_AZCHO_NM,  azcho);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_BNCHIGO,   bnchigo);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRTTM,    adrttm);
					msgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRRM,     adrrm);
					msgData.set(EKK0251B005CBSMsg1List.TK_HOSHIKI_KEI_NO, 
							cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
					
					svcKeiList.add(msgData);
					
					// サービス契約番号に紐づくお客様情報を退避
					tmpCustInfoMap.put(svc_kei_no, map);
//OM-2016-0001018 ADD START
					}
//OM-2016-0001018 ADD END
				}
				
			}
		}
// ++++++++ v5.00.17 upd end ++++++++
// ++++++++ v5.00.17 del start ++++++++
//		// 抽出した件数分繰り返す
//		for(int i = 0; i < custList.size(); i++)
//		{
//			
//			HashMap<String, Object> map = (HashMap)custList.get(i);
//			sysid = (String)map.get("SYSID");
//			svcKeiKaisenUcwkNo = (String)map.get("SVC_KEI_KAISEN_UCWK_NO");
//			
//// ++++++++ v5.00.16 add start ++++++++
//			// 住変中チェックを行う
//			HashMap<String, Object> resultMap = checkAdchg(handle, param, fixedText, sysid);
//			
//			// 住変中で移転先にて利用するサービス契約のリスト
//			ArrayList<String> itenSakiSvcKeiNoList = (ArrayList<String>)resultMap.get("iten_saki_svc_kei_no_list");
//			
//			// 住所変更中の場合
//			if (itenSakiSvcKeiNoList != null && itenSakiSvcKeiNoList.size() > 0)
//			{
//				// 移転元サービス契約回線内訳番号
//				String itnmSvkeiKisuwNo = (String)resultMap.get("itnm_svkei_kisuw_no");
//				
//				// 移転先サービス契約回線内訳番号
//				String itensSvkeiKisuwNo = (String)resultMap.get("itens_svkei_kisuw_no");
//				
//				// サービス契約回線内訳一覧照会
//				CAANMsg cAANMsgData = getEKK0251A010(handle, param, fixedText, itnmSvkeiKisuwNo);
//				
//				String tmp_tnmt_stbsho_jusho = removeSpace(tnmt_stbsho_jusho);
//				
//				if (cAANMsgData != null)
//				{
//					// 回線住所の取得(回線場所都道府県名〜回線場所住所補記・部屋番号)
//					String state   = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
//					String city    = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
//					String oaztsu  = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
//					String azcho   = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
//					String bnchigo = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
//					String adrttm  = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
//					String adrrm   = getNullToStr(cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
//					
//					String kaisenAddress = JZMAdOutputEdit.getPtn01(state, city, oaztsu, azcho, bnchigo, adrttm, adrrm);
//					String tmp_kaisenAddress = removeSpace(kaisenAddress);
//					
//					// 回線場所住所に前方一致した場合
//					if(tmp_kaisenAddress.startsWith(tmp_tnmt_stbsho_jusho))
//					{
//						for (int j = 0; j < itenSakiSvcKeiNoList.size(); j++)
//						{
//							String iten_saki_svc_kei_no = itenSakiSvcKeiNoList.get(j);
//							
//							// サービス契約一意照会
//							CAANMsg[] cbsMsg1List = getEKK0081A010(handle, param, fixedText, iten_saki_svc_kei_no);
//							
//							CAANMsg adchgMsgData = new CAANMsg(EKK0251B005CBSMsg1List.class.getName());
//							
//							adchgMsgData.set(EKK0251B005CBSMsg1List.SVC_KEI_NO, iten_saki_svc_kei_no);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.SVC_KEI_STAT, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.MSKM_DTL_NO, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.PRC_GRP_CD, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.PCRS_CD, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PCRS_CD));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.PPLAN_CD, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PPLAN_CD));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.PAUSE_STP_CD, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PAUSE_STP_CD));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO, itensSvkeiKisuwNo);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_PCD, 
//									cAANMsgData.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_STATE_NM,  state);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_CITY_NM,   city);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_OAZTSU_NM, oaztsu);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_AZCHO_NM,  azcho);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_BNCHIGO,   bnchigo);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRTTM,    adrttm);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRRM,     adrrm);
//							adchgMsgData.set(EKK0251B005CBSMsg1List.TK_HOSHIKI_KEI_NO, 
//									cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
//							
//							svcKeiList.add(adchgMsgData);
//							
//							// サービス契約番号に紐づくお客様情報を退避
//							tmpCustInfoMap.put(iten_saki_svc_kei_no, map);
//						}
//					}
//				}
//				
//			}
//			else
//			{
////++++++++ v5.00.16 add end ++++++++
//				
//				// サービス契約回線内訳一覧照会（SYSID）取得
//				String prcGrpCd = "02,03,04,10,11,13";
//				CAANMsg[] cAANMsgSvcKei = getEKK0251B005(handle, param, fixedText, sysid, svcKeiKaisenUcwkNo, prcGrpCd);
//				
//				String tmp_tnmt_stbsho_jusho = removeSpace(tnmt_stbsho_jusho);
//				
//				for(int j = 0; j < cAANMsgSvcKei.length; j++)
//				{
//					
//					CAANMsg cAANMsgData = cAANMsgSvcKei[j];
//					
//					// 回線住所の取得(回線場所都道府県名〜回線場所住所補記・部屋番号)
//					String state   = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_STATE_NM));
//					String city    = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_CITY_NM));
//					String oaztsu  = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
//					String azcho   = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
//					String bnchigo = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_BNCHIGO));
//					String adrttm  = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRTTM));
//					String adrrm   = getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRRM));
//					
//					String kaisenAddress = JZMAdOutputEdit.getPtn01(state, city, oaztsu, azcho, bnchigo, adrttm, adrrm);
//					String tmp_kaisenAddress = removeSpace(kaisenAddress);
//					
//					// 回線場所住所に前方一致した場合
//					if(tmp_kaisenAddress.startsWith(tmp_tnmt_stbsho_jusho))
//					{
//						
//	// ++++++++ v5.00.15 add start ++++++++
//	//					svcKeiList.add(cAANMsgData);
//						
//						// 住所変更データによりサービス契約回線内訳番号が複数あるため考慮
//						// パターン２(申込書番号(EKK0021B001, EKU0011A010)), パターン３(連絡先電話番号), パターン４(生年月日)の検索では
//						// 回線内訳番号を保持できていないため、サービス契約番号で回線対象サービス契約から回線を取得する
//						if (checkKaisenToktei(handle, param, fixedText, cAANMsgData))
//						{
//							svcKeiList.add(cAANMsgData);
//						}
//	// ++++++++ v5.00.15 add end ++++++++
//						
//	// ++++++++ v5.00.13 add start ++++++++
//						// お客様情報を退避
//	//					tmpCustInfoMap = map;
//						// サービス契約番号に紐づくお客様情報を退避
//						tmpCustInfoMap.put(getNullToStr(cAANMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO)), map);
//	// ++++++++ v5.00.13 add end ++++++++
//						
//					}
//					
//					
//				}
////++++++++ v5.00.16 add start ++++++++
//			}
////++++++++ v5.00.16 add end ++++++++
//		}
// ++++++++ v5.00.17 del end ++++++++
		
		List<CAANMsg> list = null;
		
		// 抽出結果がなかった場合
		if(svcKeiList.size() == 0)
		{
			
			// 結果コード、完了コード、詳細コード、ネット存在件数の設定
			ccMsg.put("result_cd", "000000");
			ccMsg.put("knryo_cd", "0");
			ccMsg.put("shosi_cd", "0");
			ccMsg.put("netknsu", "0");
			
			return param;
			
		}
		else if(svcKeiList.size() >= 1)
		{
			// 抽出結果が1件以上の場合
			
			// ++++++++ v5.00.14 upd start ++++++++
			// 契約中のネット件数の抽出
//			list = extractSvcKeiStateKei(svcKeiList);
			list = extractSvcKeiStateKei(handle, param, fixedText, svcKeiList);
			// ++++++++ v5.00.14 upd end ++++++++
			
			// 抽出結果が2件以上の場合
			if(list.size() >= 2)
			{
				
				// 結果コード、完了コード、詳細コード、ネット存在件数の設定
				ccMsg.put("result_cd", "000000");
				ccMsg.put("knryo_cd", "0");
				ccMsg.put("shosi_cd", "0");
				ccMsg.put("netknsu", "2");
				
				return param;
				
			}
			else if(list.size() == 0)
			{
				// 抽出結果がなかった場合
				
				// ++++++++ v5.00.14 upd start ++++++++
				// 解約キャンセルのネット件数の抽出
//				list = extractSvcKeiStateCancel(svcKeiList);
				list = extractSvcKeiStateCancel(handle, param, fixedText, svcKeiList);
				// ++++++++ v5.00.14 upd end ++++++++
				
				// 抽出結果が2件以上の場合
				if(list.size() >= 2)
				{
					
					// 結果コード、完了コード、詳細コード、ネット存在件数の設定
					ccMsg.put("result_cd", "000000");
					ccMsg.put("knryo_cd", "0");
					ccMsg.put("shosi_cd", "0");
					ccMsg.put("netknsu", "2");
					
					return param;
					
				}
				else if(list.size() == 0)
				{
					// 抽出結果がなかった場合
					
					// 電話情報の抽出
					list = extractTel(svcKeiList);
					
					// 抽出結果が2件以上の場合
					if(list.size() >= 2)
					{
						
						// 結果コード、完了コード、詳細コード、ネット存在件数の設定
						ccMsg.put("result_cd", "000000");
						ccMsg.put("knryo_cd", "0");
						ccMsg.put("shosi_cd", "0");
						ccMsg.put("netknsu", "0");
						
						return param;
						
					}
					else if(list.size() == 0)
					{
						// 抽出結果がなかった場合
						
						// TV情報の抽出
						list = extractTV(svcKeiList);
						
						
						// 抽出結果がなかった場合
						if(list.size() == 0)
						{
							
							// 結果コード、完了コード、詳細コード、ネット存在件数の設定
							ccMsg.put("result_cd", "000000");
							ccMsg.put("knryo_cd", "0");
							ccMsg.put("shosi_cd", "0");
							ccMsg.put("netknsu", "0");
							
							return param;
							
						}
						else if(list.size() >= 2)
						{
							// 抽出結果が2件以上の場合
							
							// TV情報の抽出
							list = extractTVByPriority(list);
							
							
						}
					}
					
				}
				
			}
			
		}
		
		CAANMsg svcKeiData = list.get(0);
		
		// 申込明細番号取得
		String mskmDtlNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.MSKM_DTL_NO));
		
// ++++++++ v5.00.09 add start ++++++++
		// サービス契約番号取得
		String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
		
		if (!"".equals(svcKeiNo))
		{
			// 申込明細一意照会取得
			CAANMsg[] cAANMsgSvcKei = getEKK0081B024(handle, param, fixedText, svcKeiNo);
			if (cAANMsgSvcKei != null && cAANMsgSvcKei.length > 0)
			{
				// 申込明細番号取得(取得したサービス契約の履歴における最終（世代がもっとも古い）レコードより取得)
				mskmDtlNo = getNullToStr(cAANMsgSvcKei[cAANMsgSvcKei.length -1].getString(EKK0081B024CBSMsg1List.MSKM_DTL_NO));
			}
		}
// ++++++++ v5.00.09 add end ++++++++
		
		// 申込明細一意照会取得
		CAANMsg[] cAANMsgMskmDtl = getEKK0021A010(handle, param, fixedText, mskmDtlNo);
		
		if(cAANMsgMskmDtl != null && cAANMsgMskmDtl.length > 0)
		{
			
			// 申込書番号格納
			ccMsg.put("out_prmt1", getNullToStr(cAANMsgMskmDtl[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_DTL_NO)));
			// 受付番号格納
			ccMsg.put("out_prmt28", getNullToStr(cAANMsgMskmDtl[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_NO)));
			
		}
		
// ++++++++ v5.00.13 add start ++++++++
		// 契約者情報の設定
		// 「お客様名」または「会社名」
//		ccMsg.put("out_prmt2", (String)tmpCustInfoMap.get("CUST_NM"));
//		ccMsg.put("out_prmt3", (String)tmpCustInfoMap.get("CUST_KN_NM"));
//		ccMsg.put("out_prmt4", (String)tmpCustInfoMap.get("CUST_BIRTHDAY"));
//		ccMsg.put("out_prmt7", (String)tmpCustInfoMap.get("CUST_TELNO"));
		
		// 契約者情報の設定
		HashMap<String, Object> custInfoMap = (HashMap<String, Object>)tmpCustInfoMap.get(svcKeiNo);
		// 「お客様名」または「会社名」
		ccMsg.put("out_prmt2", (String)custInfoMap.get("CUST_NM"));
		ccMsg.put("out_prmt3", (String)custInfoMap.get("CUST_KN_NM"));
		ccMsg.put("out_prmt4", (String)custInfoMap.get("CUST_BIRTHDAY"));
		ccMsg.put("out_prmt7", (String)custInfoMap.get("CUST_TELNO"));
		// ▼▼▼▼▼ ANK-3478-00-00 ADD START ▼▼▼▼▼
		ccMsg.put("out_prmt29", (String)custInfoMap.get("ORSJGS_NM"));
		// ▲▲▲▲▲ ANK-3478-00-00 ADD START ▲▲▲▲▲
		sysid = (String)custInfoMap.get("SYSID");
// ++++++++ v5.00.13 add end ++++++++
		
		// 利用場所住所の設定
		ccMsg.put("out_prmt5", getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_PCD)));
		String kaisen_state   = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_STATE_NM));
		String kaisen_city    = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_CITY_NM));
		String kaisen_oaztsu  = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
		String kaisen_azcho   = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
		String kaisen_bnchigo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_BNCHIGO));
		String kaisen_adrttm  = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRTTM));
		String kaisen_adrrm   = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.KAISEN_PLACE_ADRRM));
		
		String kaisen_Address = JZMAdOutputEdit.getPtn01(kaisen_state, 
															kaisen_city, 
															kaisen_oaztsu, 
															kaisen_azcho, 
															kaisen_bnchigo, 
															kaisen_adrttm, 
															kaisen_adrrm);
		
		ccMsg.put("out_prmt6", removeSpace(kaisen_Address));
		
// ++++++++ v5.00.09 del start ++++++++
// サービス契約番号の取得位置を変更
//		// サービス契約番号取得
//		String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
// ++++++++ v5.00.09 del end ++++++++
		
		// 他事業者割引契約一覧照会取得
		CAANMsg[] cAANMsgTajgsWribKei = getEKK2441B004(handle, param, fixedText, svcKeiNo);
		
		if(cAANMsgTajgsWribKei != null && cAANMsgTajgsWribKei.length > 0)
		{
			//KDDIバリューコード取得
			String kddiValCd = getNullToStr(cAANMsgTajgsWribKei[0].getString(EKK2441B004CBSMsg1List.KDDI_VAL_CD));
			//他事業者割引契約解約年月日取得
			String tajgsWribKeiDslYMD = getNullToStr(cAANMsgTajgsWribKei[0].getString(EKK2441B004CBSMsg1List.TAJGS_WRIB_KEI_DSL_YMD));
			
			if(!JKKCommonUtil.isNull(kddiValCd))
			{
				// ａｕスマートバリューコード
				ccMsg.put("out_prmt8", kddiValCd);
				
				if(!JKKCommonUtil.isNull(tajgsWribKeiDslYMD) && !tajgsWribKeiDslYMD.equals(SHK_SET_20991231))
				{
					ccMsg.put("out_prmt27", tajgsWribKeiDslYMD);
				}
				// ++++++++ v5.00.11 del start ++++++++
				//else
				//{
				//	
				//	Arrays.sort(cAANMsgTajgsWribKei, new JCRSortComparator(EKK2441B004CBSMsg1List.TAJGS_WRIB_KEI_DSL_YMD, JCRSortComparator.SORT_TYPE_DESC));
				//	
				//	// 降順ソート後の1件目を取得
				//	for(int i = 0; i < cAANMsgTajgsWribKei.length; i++)
				//	{
				//		CAANMsg outMsg = cAANMsgTajgsWribKei[i];
				//		
				//		String tajgsWribKeiDslYMD_max = getNullToStr(outMsg.getString(EKK2441B004CBSMsg1List.TAJGS_WRIB_KEI_DSL_YMD));
				//		
				//		if(!JKKCommonUtil.isNull(tajgsWribKeiDslYMD_max) && !tajgsWribKeiDslYMD_max.equals(SHK_SET_20991231))
				//		{
				//			ccMsg.put("out_prmt27", tajgsWribKeiDslYMD_max);
				//			break;
				//		}
				//	}
				//	
				//}
				// ++++++++ v5.00.11 del end ++++++++
			}
			
		}
		
		// ネット契約のスマートバリュー申込可否の設定
		setNetKeiSmartValueMskmKh(handle, param, fixedText, ccMsg, svcKeiData);
		
		// 電話契約のスマートバリュー申込可否の設定
		setTelKeiSmartValueMskmKh(handle, param, fixedText, ccMsg, svcKeiData);
		
		// サービス契約回線内訳一覧照会（SYSID）取得
		String prcGrpCd_TV = "11,13";
		// サービス契約回線内訳番号は指定しない
		CAANMsg[] cAANMsgSvcKei_TV = getEKK0251B005(handle, param, fixedText, sysid, "", prcGrpCd_TV);
		List<CAANMsg> svcKeiList_TV = Arrays.asList(cAANMsgSvcKei_TV);
		
		// TVの契約状態の設定
		setTVKeiyakuJotai(handle, param, fixedText, ccMsg, svcKeiList_TV);
		
		// 結果コード、完了コード、詳細コードの設定
		ccMsg.put("result_cd", "000000");
		ccMsg.put("knryo_cd", "0");
		ccMsg.put("shosi_cd", "0");
		
		return param;
		
	}
	
	// ++++++++ v5.00.17 add start ++++++++
	/**
	 * SYSIDと検索条件から、対象となる回線を特定し、回線リストを構築して返却します。
	 * <p>
	 * 住所変更スキーマより住変中の回線かどうか判定します。<br>
	 * 住変中ではない回線の場合は、そのサービス契約回線内訳番号と紐づくサービス契約番号のみを設定します。
	 * <br>
	 * 住変中の回線である場合は、転居元の回線に紐づくネット契約・電話契約を取得し、<br>
	 * スマバリ申込可否がネット・電話共に「○(可)」となる場合、判別フラグに「0:移転元」を設定します。<br>
	 * スマバリ申込可否がネット・電話共に「○(可)」とならない場合、判別フラグに「1:移転先」を設定します。<br>
	 * ※利用場所住所に関してはスマバリ申込可否に関わらず、一律、判別フラグに「0:移転元」を設定します。<br>
	 * <p>
	 * 【データ構造】<br>
	 * 回線リスト (ArrayList) <br>
	 * 　　├ svc_kei_kaisen_ucwk_no    (String) 住変中以外のサービス契約回線内訳番号<br>
	 * 　　├ svc_kei_no_list           (ArrayList) <br>
	 * 　　│　　　└ svc_kei_no        (String) 住変中以外のサービス契約番号<br>
	 * 　　│<br>
	 * 　　├ adchg_no                  (String) 住所変更.住所変更番号 ※<br>
	 * 　　├ itnm_svkei_kisuw_no       (String) 移転元のサービス契約回線内訳番号 ※<br>
	 * 　　├ itens_svkei_kisuw_no      (String) 移転先のサービス契約回線内訳番号 ※<br>
	 * 　　├ smrt_val_mskm_judge_flg   (String) スマバリ申込可否を出力する回線の判別フラグ (0:移転元 / 1:移転先) ※<br>
	 * 　　├ kaisen_place_ad_judge_flg (String) 利用場所住所を出力する回線の判別フラグ (0:移転元 / 1:移転先) ※<br>
	 * 　　├ iten_moto_svc_kei_no_list (ArrayList) <br>
	 * 　　│　　　└ svc_kei_no        (String) 移転元の回線に紐づくサービス契約番号 ※<br>
	 * 　　└ iten_saki_svc_kei_no_list (ArrayList) <br>
	 * 　　　　　　└ svc_kei_no        (String) 移転先の回線に紐づくサービス契約番号 ※<br>
	 * <br>
	 * ※マークは住変中の場合のみに設定される
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param sysid
	 * @param tmp_tnmt_stbsho_jusho [検索条件]利用場所住所
	 * @param muskm_bngu            [検索条件]eo申込番号/受付番号
	 * @param tmpSvcKeiKaisenUcwkNo [検索条件]より特定された回線
	 * @return 回線リスト
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getKaisenInfoList(SessionHandle handle,
																IRequestParameterReadWrite param, 
																String fixedText,
																String sysid,
																String tmp_tnmt_stbsho_jusho,
																String muskm_bngu,
																String tmpSvcKeiKaisenUcwkNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		ArrayList<String> svcKeiKaisenUcwkNoList = new ArrayList<String>();
		
		// ***** EKK0081B016_サービス契約一覧照会(料金グループコード) *****
		// SYSIDをキーにサービス契約を検索する
		Object[][] ekk0081b016IN = createParamEKK0081B016(sysid);
		
		CAANMsg[] ekk0081b016MsgList = callSC(handle, scCall, param, fixedText, ekk0081b016IN).getCAANMsgList(EKK0081B016CBSMsg.EKK0081B016CBSMSG1LIST);
		
		for (int i = 0; i < ekk0081b016MsgList.length; i++)
		{
			String prcGrpCd = ekk0081b016MsgList[i].getString(EKK0081B016CBSMsg1List.PRC_GRP_CD);
			
			// 料金グループコードが、"02","03","04"（ホームタイプ、メゾンタイプ、マンションタイプ）
			//                       "10","11","13"（ｅｏ光電話、ｅｏ光テレビ(K-CAT)、ｅｏ光テレビ(再送信)）の場合
			if (PRC_GRP_CD_NET.contains(prcGrpCd)
					|| JKKStrConst.CD00133_10.equals(prcGrpCd)
					|| JKKStrConst.CD00133_11.equals(prcGrpCd)
					|| JKKStrConst.CD00133_13.equals(prcGrpCd))
			{
				String svcKeiNo = ekk0081b016MsgList[i].getString(EKK0081B016CBSMsg1List.SVC_KEI_NO);
				
				// ***** EKK0081A010_サービス契約一意照会 *****
				// サービス契約のカレントを取得
				Object[][] ekk0081a010IN = createParamEKK0081A010(ccMsg, svcKeiNo);
				
				CAANMsg[] ekk0081a010MsgList = callSC(handle, scCall, param, fixedText, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
				
				if (ekk0081a010MsgList == null || ekk0081a010MsgList.length == 0)
				{
					continue;
				}
				
				// 照査年月日が未設定の場合
				String shosaYMD = ekk0081a010MsgList[0].getString(EKK0081A010CBSMsg1List.SHOSA_YMD);
				
				if ("".equals(shosaYMD))
				{
					continue;
				}
				
				// ■(iTas画面の抽出条件の「eo申込番号/受付番号」が入力されている場合)
				if (!"".equals(muskm_bngu))
				{
					// 入力されたeo申込番号/受付番号が、
					// サービス契約(世代が最も古い).申込書番号あるいは申込書明細番号と一致しない場合
					if (!isEqualMuskmBngu(handle, param, fixedText, muskm_bngu, svcKeiNo))
					{
						// 対象外
						continue;
					}
				}
				
				// ***** EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号） *****
				// (回線使用開始[20991231]〜使用終了[20991231]も取得)
				Object[][] ekk0251b001IN = createParamEKK0251B001(svcKeiNo);
				
				CAANMsg[] ekk0251b001MsgList = callSC(handle, scCall, param, fixedText, ekk0251b001IN).getCAANMsgList(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST);
				
				if (ekk0251b001MsgList == null || ekk0251b001MsgList.length == 0)
				{
					continue;
				}
				
				for (int j = 0; j < ekk0251b001MsgList.length; j++)
				{
					String svcKeiKaisenUcwkNo = ekk0251b001MsgList[j].getString(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					
					// ■iTas画面に入力された検索条件により、回線が特定されている場合
					if (tmpSvcKeiKaisenUcwkNo != null && !"".equals(tmpSvcKeiKaisenUcwkNo))
					{
						if (!tmpSvcKeiKaisenUcwkNo.equals(svcKeiKaisenUcwkNo))
						{
							// 不一致なら対象外
							continue;
						}
					}
					
					// 回線内訳使用終了年月日が運用日より過去日の場合は、住変確定後の旧回線、あるいは、使用終了している回線のため除外させる
					String kaisenUcwkUseEndymd = ekk0251b001MsgList[j].getString(EKK0251B001CBSMsg1List.KAISEN_UCWK_USE_ENDYMD);
					String opeDate = (String)ccMsg.get("opeDate");
					
					// 回線内訳使用終了年月日 ＜ 運用日 の場合
					if(JPCUtilCommon.isPastDate(kaisenUcwkUseEndymd, opeDate, "0"))
					{
						// 除外
						continue;
					}
					
					// 既に保持済みのサービス契約回線内訳番号はリストに追加しない
					if (!svcKeiKaisenUcwkNoList.contains(svcKeiKaisenUcwkNo))
					{
						// 住所変更中の元回線・先回線、あるいは、住変確定後の先回線などの使用終了日が[20991231]である回線を保持
						svcKeiKaisenUcwkNoList.add(svcKeiKaisenUcwkNo);
					}
				}
			}
		}
		
		ArrayList<String> svcKeiKaisenUcwkNoHitList = new ArrayList<String>();
		
		for (int i = 0; i < svcKeiKaisenUcwkNoList.size(); i++)
		{
			String svcKeiKaisenUcwkNo = svcKeiKaisenUcwkNoList.get(i);
			
			// ***** EKK0251A010_サービス契約回線内訳一意照会 *****
			CAANMsg ekk0251a010Msg = getEKK0251A010(handle, param, fixedText, svcKeiKaisenUcwkNo);
			
			// 検索結果がある場合
			if (ekk0251a010Msg != null)
			{
				// 回線住所の取得(回線場所都道府県名〜回線場所住所補記・部屋番号)
				String state   = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
				String city    = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
				String oaztsu  = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
				String azcho   = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
				String bnchigo = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
				String adrttm  = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
				String adrrm   = getNullToStr(ekk0251a010Msg.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
				
				String kaisenAddress = JZMAdOutputEdit.getPtn01(state, city, oaztsu, azcho, bnchigo, adrttm, adrrm);
				String tmp_kaisenAddress = removeSpace(kaisenAddress);
				
				// 回線場所住所に前方一致した場合
				// ■(iTas画面の抽出条件の利用場所住所が未入力の場合もtrueとなる)
				if(tmp_kaisenAddress.startsWith(tmp_tnmt_stbsho_jusho))
				{
					// 前方一致した回線内訳番号を保持しておく
					svcKeiKaisenUcwkNoHitList.add(svcKeiKaisenUcwkNo);
				}
			}
		}
		
		// ■住変中チェック
		ArrayList<HashMap<String, Object>> adchgList = new ArrayList<HashMap<String, Object>>();
		
		for (int i = 0; i < svcKeiKaisenUcwkNoHitList.size(); i++)
		{
			String svcKeiKaisenUcwkNo = svcKeiKaisenUcwkNoHitList.get(i);
			
			// ***** EKK2091B001_住所変更一覧照会 *****
			// 移転元サービス契約回線内訳番号にサービス契約回線内訳番号を指定
			Object[][] ekk2091b001IN = createParamEKK2091B001("", "", svcKeiKaisenUcwkNo, "");
			
			CAANMsg[] ekk2091b001MsgList = callSC(handle, scCall, param, fixedText, ekk2091b001IN).getCAANMsgList(EKK2091B001CBSMsg.EKK2091B001CBSMSG1LIST);
			
			// 検索結果が存在する場合
			if (ekk2091b001MsgList != null && ekk2091b001MsgList.length > 0)
			{
				for (int j = 0; j < ekk2091b001MsgList.length; j++)
				{
					String adchgStat = ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ADCHG_STAT);
					
					// 住所変更ステータスが"001:登録済"以外の場合
					if (!"001".equals(adchgStat))
					{
						// 住変中ではないため対象外
						continue;
					}
					
					HashMap<String, Object> map = new HashMap<String, Object>();
					map.put("adchg_no", ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ADCHG_NO));
					map.put("itnm_svkei_kisuw_no", ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ITNM_SVKEI_KISUW_NO));
					map.put("itens_svkei_kisuw_no", ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO));
					adchgList.add(map);
				}
			}
		}
		
		for (int i = 0; i < svcKeiKaisenUcwkNoHitList.size(); i++)
		{
			String svcKeiKaisenUcwkNo = svcKeiKaisenUcwkNoHitList.get(i);
			
			boolean searchExecFlag = true;
			for (int j = 0; j < adchgList.size(); j++)
			{
				HashMap<String, Object> map = adchgList.get(j);
				
				// 住変中の移転先サービス契約回線内訳番号と一致した場合
				if (svcKeiKaisenUcwkNo.equals((String)map.get("itens_svkei_kisuw_no")))
				{
					// 検索不要
					searchExecFlag = false;
					break;
				}
			}
			
			if (searchExecFlag)
			{
				// ***** EKK2091B001_住所変更一覧照会 *****
				// 移転先サービス契約回線内訳番号にサービス契約回線内訳番号を指定
				Object[][] ekk2091b001IN = createParamEKK2091B001("", "", "", svcKeiKaisenUcwkNo);
				
				CAANMsg[] ekk2091b001MsgList = callSC(handle, scCall, param, fixedText, ekk2091b001IN).getCAANMsgList(EKK2091B001CBSMsg.EKK2091B001CBSMSG1LIST);
				
				// 検索結果が存在する場合
				if (ekk2091b001MsgList != null && ekk2091b001MsgList.length > 0)
				{
					for (int j = 0; j < ekk2091b001MsgList.length; j++)
					{
						String adchgStat = ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ADCHG_STAT);
						
						// 住所変更ステータスが"001:登録済"以外の場合
						if (!"001".equals(adchgStat))
						{
							// 住変中ではないため対象外
							continue;
						}
						
						HashMap<String, Object> map = new HashMap<String, Object>();
						map.put("adchg_no", ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ADCHG_NO));
						map.put("itnm_svkei_kisuw_no", ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ITNM_SVKEI_KISUW_NO));
						map.put("itens_svkei_kisuw_no", ekk2091b001MsgList[j].getString(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO));
						adchgList.add(map);
					}
				}
			}
		}
		
		for (int i = 0; i < adchgList.size(); i++)
		{
			ArrayList<HashMap<String, Object>> itenSakiSvcKeiNoList = new ArrayList<HashMap<String, Object>>();
			ArrayList<HashMap<String, Object>> itenMotoSvcKeiNoList = new ArrayList<HashMap<String, Object>>();
			
			HashMap<String, Object> map = adchgList.get(i);
			String adchgNo = (String)map.get("adchg_no");
			
			// ***** EKK2101B001_住所変更明細一覧照会 *****
			// 住所変更番号と住所変更明細種別コード"01:サービス契約番号"を指定
			Object[][] ekk2101b001IN = createParamEKK2101B001(adchgNo, "01");
			
			CAANMsg[] ekk2101b001MsgList = callSC(handle, scCall, param, fixedText, ekk2101b001IN).getCAANMsgList(EKK2101B001CBSMsg.EKK2101B001CBSMSG1LIST);
			
			for (int j = 0; j < ekk2101b001MsgList.length; j++)
			{
				String itenSakiSvcKeiNo = ekk2101b001MsgList[j].getString(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				
				// サービス契約番号が設定されている場合
				// （移転先では利用しないサービスのとき値が未設定となるので考慮）
				if (itenSakiSvcKeiNo != null)
				{
					HashMap<String, Object> itenSakiMap = new HashMap<String, Object>();
					itenSakiMap.put("svc_kei_no", itenSakiSvcKeiNo);
					itenSakiSvcKeiNoList.add(itenSakiMap);
				}
				
				String itenMotoSvcKeiNo = ekk2101b001MsgList[j].getString(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
				
				// サービス契約番号が設定されている場合
				// （移転元では利用していないサービスのとき値が未設定となるので考慮）
				if (itenMotoSvcKeiNo != null)
				{
					HashMap<String, Object> itenMotoMap = new HashMap<String, Object>();
					itenMotoMap.put("svc_kei_no", itenMotoSvcKeiNo);
					itenMotoSvcKeiNoList.add(itenMotoMap);
				}
			}
			map.put("iten_saki_svc_kei_no_list", itenSakiSvcKeiNoList);
			map.put("iten_moto_svc_kei_no_list", itenMotoSvcKeiNoList);
		}
		
		// ■住変中の場合、転居元の回線に紐づくネット・電話契約状態を判定する
		HashMap<String, String> workParamKeyMap = new HashMap<String, String>();
		workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_PSB_NET);
		workParamKeyMap.put(KEY_TEL_MSKM_FL, KK_MSKM_PSB_TEL);
		
		// 業務パラメータ管理一意照会
		HashMap<String, Object> workmap = getSmartValueMskmKhMap(handle, param, fixedText, null, workParamKeyMap);
		
		for (int i = 0; i < adchgList.size(); i++)
		{
			// ++++++++ v5.00.18 upd start ++++++++
			// ▼スマバリ申込の出力回線判別フラグの設定処理
			HashMap<String, Object> map = adchgList.get(i);
			String itnmSvkeiKisuwNo = (String)map.get("itnm_svkei_kisuw_no");
			ArrayList<HashMap<String, Object>> itenMotoSvcKeiNoList = (ArrayList<HashMap<String, Object>>)map.get("iten_moto_svc_kei_no_list");
			
			// 転居元の回線に紐づくネット契約・電話契約からスマバリ申込可否設定を行った情報を取得
			HashMap<String, Object> work_ccMsg = getSmartValueMskmKh(handle, param, fixedText, itenMotoSvcKeiNoList, itnmSvkeiKisuwNo);
			
			String netSmartValueMskmKh = getNullToStr((String)work_ccMsg.get("out_prmt9"));
			String telSmartValueMskmKh = getNullToStr((String)work_ccMsg.get("out_prmt18"));
			
			// 住変中の場合、転居元の回線に紐づくネット契約・電話契約のスマバリ申込可否が共に「○(可)」の場合
			if (netSmartValueMskmKh.equals(workmap.get(KEY_NET_MSKM_FL)) && telSmartValueMskmKh.equals(workmap.get(KEY_TEL_MSKM_FL)))
			{
				// 転居元の回線をスマバリ申込の出力とする
				map.put("smrt_val_mskm_judge_flg", "0");
			}
			else
			{
				// 共に「○(可)」以外の場合、転居先の回線をスマバリ申込の出力とする
				map.put("smrt_val_mskm_judge_flg", "1");
			}
			
			// ▼利用場所住所の出力回線判別フラグの設定処理
			// 住変中の場合、転居元の回線に紐づくネット契約・電話契約のスマバリ申込可否が共に「○(可)」の場合
			if (netSmartValueMskmKh.equals(workmap.get(KEY_NET_MSKM_FL)) && telSmartValueMskmKh.equals(workmap.get(KEY_TEL_MSKM_FL)))
			{
				String itensSvkeiKisuwNo = (String)map.get("itens_svkei_kisuw_no");
				ArrayList<HashMap<String, Object>> itenSakiSvcKeiNoList = (ArrayList<HashMap<String, Object>>)map.get("iten_saki_svc_kei_no_list");
				
				// 転居先の回線に紐づくネット契約・電話契約からスマバリ申込可否設定を行った情報を取得
				HashMap<String, Object> itenSaki_work_ccMsg = getSmartValueMskmKh(handle, param, fixedText, itenSakiSvcKeiNoList, itensSvkeiKisuwNo);
				
				String itenSakiNetSmaValMskmKh = getNullToStr((String)itenSaki_work_ccMsg.get("out_prmt9"));
				String itenSakiTelSmaValMskmKh = getNullToStr((String)itenSaki_work_ccMsg.get("out_prmt18"));
				
				// 転居先の回線に紐づくネット契約・電話契約のスマバリ申込可否も共に「○(可)」の場合
				if (itenSakiNetSmaValMskmKh.equals(workmap.get(KEY_NET_MSKM_FL)) && itenSakiTelSmaValMskmKh.equals(workmap.get(KEY_TEL_MSKM_FL)))
				{
					// ANK-2228-00-00 MOD START
					// 転居先の回線を利用場所住所の出力とする
					// map.put("kaisen_place_ad_judge_flg", "1");
					// 転居元の回線を利用場所住所の出力とする
					map.put("kaisen_place_ad_judge_flg", "0");
					// ANK-2228-00-00 MOD END
				}
				else
				{
					// 転居元の回線を利用場所住所の出力とする
					map.put("kaisen_place_ad_judge_flg", "0");
				}
			}
			else
			{
				// ANK-2228-00-00 MOD START
				// 転居先の回線を利用場所住所の出力とする
				// map.put("kaisen_place_ad_judge_flg", "1");
				// 転居元の回線を利用場所住所の出力とする
				map.put("kaisen_place_ad_judge_flg", "0");
				// ANK-2228-00-00 MOD END
			}
			// ++++++++ v5.00.18 upd end ++++++++
		}
		
		// ■回線Hitリストに保持している回線で、住変中以外の回線を住変リストに追加して返却する
		for (int i = 0; i < svcKeiKaisenUcwkNoHitList.size(); i++)
		{
			boolean adchgKaisenUmuFlag = false;
			String svcKeiKaisenUcwkNo = svcKeiKaisenUcwkNoHitList.get(i);
			
			for (int j = 0; j < adchgList.size(); j++)
			{
				HashMap<String, Object> map = adchgList.get(j);
				String itnmSvkeiKisuwNo = (String)map.get("itnm_svkei_kisuw_no");
				String itensSvkeiKisuwNo = (String)map.get("itens_svkei_kisuw_no");
				
				// 住変中の移転元、あるいは、移転先の回線内訳番号と一致する場合
				if (svcKeiKaisenUcwkNo.equals(itnmSvkeiKisuwNo) || svcKeiKaisenUcwkNo.equals(itensSvkeiKisuwNo))
				{
					adchgKaisenUmuFlag = true;
					break;
				}
			}
			
			// 住変中以外の回線である場合
			if (!adchgKaisenUmuFlag)
			{
				// 住変中以外の回線をリストに追加する
				ArrayList<HashMap<String, Object>> svcKeiNoList = new ArrayList<HashMap<String, Object>>();
				
				// ***** EKK0241B002(回線対象サービス契約一覧照会) の実行 *****
				Object[][] ekk0241b002IN = createParamEKK0241B002(svcKeiKaisenUcwkNo);
				
				CAANMsg[] ekk0241b002MsgList = callSC(handle, scCall, param, fixedText, ekk0241b002IN).getCAANMsgList(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST);
				
				for (int j = 0; j < ekk0241b002MsgList.length; j++)
				{
					//OM-2022-0000665 ADD START
					String kaisenUcwkUseEndymd = (String)ekk0241b002MsgList[j].getString(EKK0241B002CBSMsg1List.KAISEN_UCWK_USE_ENDYMD);
					//回線内訳使用終了年月日が「20991231」である場合
					if(JKKStrConst.END_YMD_DEFAULT.equals(kaisenUcwkUseEndymd))
					{
					//OM-2022-0000665 ADD END
						HashMap<String, Object> svcKeiMap = new HashMap<String, Object>();
						svcKeiMap.put("svc_kei_no", (String)ekk0241b002MsgList[j].getString(EKK0241B002CBSMsg1List.SVC_KEI_NO));
						svcKeiNoList.add(svcKeiMap);
					//OM-2022-0000665 ADD START
					}
					//OM-2022-0000665 ADD END
				}
				
				HashMap<String, Object> map = new HashMap<String, Object>();
				map.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
				map.put("svc_kei_no_list", svcKeiNoList);
				adchgList.add(map);
			}
		}
		
		// ログ出力用にセット
		ccMsg.put("sysid_"+sysid, adchgList);
		ccMsg.put("tmpSvcKeiKaisenUcwkNo", tmpSvcKeiKaisenUcwkNo);
		
		return adchgList;
	}
// ++++++++ v5.00.17 add end ++++++++

// ++++++++ v5.00.17 add start ++++++++
	/**
	 * 入力されたeo申込番号/受付番号が、サービス契約(世代が最も古い).申込書番号あるいは申込書明細番号と一致するかチェックします。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param muskm_bngu
	 * @param svcKeiNo
	 * @return
	 * @throws Throwable
	 */
	private boolean isEqualMuskmBngu(SessionHandle handle,
										IRequestParameterReadWrite param,
										String fixedText,
										String muskm_bngu,
										String svcKeiNo) throws Throwable
	{
		String mskmDtlNo = "";
		
		// サービス契約履歴一覧照会
		CAANMsg[] cAANMsgSvcKei = getEKK0081B024(handle, param, fixedText, svcKeiNo);
		if (cAANMsgSvcKei != null && cAANMsgSvcKei.length > 0)
		{
			// 申込明細番号取得(取得したサービス契約の履歴における最終（世代がもっとも古い）レコードより取得)
			mskmDtlNo = getNullToStr(cAANMsgSvcKei[cAANMsgSvcKei.length -1].getString(EKK0081B024CBSMsg1List.MSKM_DTL_NO));
		}
		
		// 申込明細番号が未設定の場合
		if ("".equals(mskmDtlNo))
		{
			return false;
		}
		
		// 申込明細一意照会取得
		CAANMsg[] cAANMsgMskmDtl = getEKK0021A010(handle, param, fixedText, mskmDtlNo);
		
		if(cAANMsgMskmDtl != null && cAANMsgMskmDtl.length > 0)
		{
			// 申込番号(申込書明細番号)
			String mskmshoDtlNo = getNullToStr(cAANMsgMskmDtl[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_DTL_NO));
			// 受付番号(申込書番号)
			String mskmshoNo = getNullToStr(cAANMsgMskmDtl[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_NO));
			
			// どちらか一致する場合
			if (mskmshoDtlNo.equals(muskm_bngu) || mskmshoNo.equals(muskm_bngu))
			{
				return true;
			}
		}
		return false;
	}
// ++++++++ v5.00.17 add end ++++++++

// ++++++++ v5.00.18 add start ++++++++
	/**
	 * 引数に指定された移転元、あるいは、移転先の回線に紐づくネット契約・電話契約のスマバリ申込可否「○×」設定を行う。<br>
	 * 「○×」設定を行ったwork用のccMsgを返却します。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param itenMotoSakiSvcKeiNoList 移転元あるいは移転先の回線に紐づく契約番号リスト
	 * @param itenMotoSakiKisuwNo 移転元あるいは移転先のサービス契約回線内訳番号
	 * @return work用のccMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getSmartValueMskmKh(SessionHandle handle,
														IRequestParameterReadWrite param,
														String fixedText,
														ArrayList<HashMap<String, Object>> itenMotoSakiSvcKeiNoList,
														String itenMotoSakiKisuwNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// work_ccMsgのインスタンスを再生成する
		HashMap<String, Object> work_ccMsg = getWorkCCMsg(ccMsg);
		
		for (int i = 0; i < itenMotoSakiSvcKeiNoList.size(); i++)
		{
			HashMap<String, Object> itenMotoSakiMap = itenMotoSakiSvcKeiNoList.get(i);
			String svc_kei_no = (String)itenMotoSakiMap.get("svc_kei_no");
			
			// サービス契約一意照会
			CAANMsg[] cbsMsg1List = getEKK0081A010(handle, param, fixedText, svc_kei_no);
			
			CAANMsg adchgMsgData = new CAANMsg(EKK0251B005CBSMsg1List.class.getName());
			
			adchgMsgData.set(EKK0251B005CBSMsg1List.SVC_KEI_NO, svc_kei_no);
			adchgMsgData.set(EKK0251B005CBSMsg1List.SVC_KEI_STAT, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
			adchgMsgData.set(EKK0251B005CBSMsg1List.MSKM_DTL_NO, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
			adchgMsgData.set(EKK0251B005CBSMsg1List.PRC_GRP_CD, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
			adchgMsgData.set(EKK0251B005CBSMsg1List.PCRS_CD, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PCRS_CD));
			adchgMsgData.set(EKK0251B005CBSMsg1List.PPLAN_CD, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PPLAN_CD));
			adchgMsgData.set(EKK0251B005CBSMsg1List.PAUSE_STP_CD, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.PAUSE_STP_CD));
			adchgMsgData.set(EKK0251B005CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO, itenMotoSakiKisuwNo);
			adchgMsgData.set(EKK0251B005CBSMsg1List.TK_HOSHIKI_KEI_NO, 
					cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
			
			String svc_cd = cbsMsg1List[0].getString(EKK0081A010CBSMsg1List.SVC_CD);
			
			// ネット契約の場合
			if ("01".equals(svc_cd))
			{
				// ネット契約のスマートバリュー申込可否の設定
				setNetKeiSmartValueMskmKh(handle, param, fixedText, work_ccMsg, adchgMsgData);
			}
			else if ("02".equals(svc_cd))
			{
				// 電話契約のスマートバリュー申込可否の設定
				setTelKeiSmartValueMskmKh(handle, param, fixedText, work_ccMsg, adchgMsgData);
			}
		}
		
		return work_ccMsg;
	}
// ++++++++ v5.00.18 add end ++++++++

// ++++++++ v5.00.17 add start ++++++++
	/**
	 * ccMsgのキーと値を転記させたwork用のccMsgを返却します。
	 * @param ccMsg
	 * @return work用のccMsg
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getWorkCCMsg(HashMap<String, Object> ccMsg)
	{
		HashMap<String, Object> work_ccMsg = new HashMap<String, Object>();
		
		Iterator it = ccMsg.keySet().iterator();
		while (it.hasNext())
		{
			String key = (String)it.next();
			work_ccMsg.put(key, ccMsg.get(key));
		}
		
		return work_ccMsg;
	}
// ++++++++ v5.00.17 add end ++++++++

	/**
	 * KDDI向け契約者情報参照ＣＣのチェック処理用サービスインターフェイス作成。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public  HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws RequestParameterException
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		List<CAANMsg> templates = new ArrayList<CAANMsg>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文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));
		
		Object[][] inParamData = null;
		inParamData = createParamEKK0081B033(ccMsg);
		
		templates.add(((CAANMsg[])editInMsg(param, inParamData).get(JCMConstants.TEMPLATE_LIST_KEY))[0]);
		
		// チェック用サービスインターフェイス
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates.toArray(new CAANMsg[0]));
		return paramMap;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * <br>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます。
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws RequestParameterException
	{
		for (int i = 0; i < templates.length; i++)
		{
			editErrorInfoCom(param, templates, returnCode, fixedText);
		}
		return param;
	}

	/**
	 * サービス契約の1件絞り込み
	 * @param listSysid
	 * @param ccMsg 
	 * @return List<HashMap>
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getCurrentSvcKei(List<HashMap> listSysid, HashMap<String, Object> ccMsg)
	{
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		for(int i = 0; i < listSysid.size(); i++)
		{
			
			HashMap<String, String> map = (HashMap)listSysid.get(i);
			
			String kaisenUcwkUseStaymd = convNulltoMaxYMD((String)map.get("KAISEN_UCWK_USE_STAYMD"));
			String kaisenUcwkUseEndymd = convNulltoMaxYMD((String)map.get("KAISEN_UCWK_USE_ENDYMD"));
			String opeDate = (String)ccMsg.get("opeDate");
			
			// 回線内訳使用開始年月日 ＜ 運用日 ＜ 回線内訳使用終了年月日の情報を返却する。
			if(JPCUtilCommon.isPastDate(kaisenUcwkUseStaymd, opeDate, "1") && JPCUtilCommon.isFutureDate(kaisenUcwkUseEndymd,opeDate, "1")){
				
				list.add(map);
				break;
				
			}
			
		}
		
		// 1件に絞り込まれなければ(0件)、回線内訳使用開始年月日の最大のものを返却する。
		if(list.size() == 0){
			
			String maxYMD = "";
			HashMap<String, String> maxMap = new HashMap<String, String>();
			
			for(int i = 0; i < listSysid.size(); i++)
			{
				
				HashMap<String, String> map = (HashMap)listSysid.get(i);
				
				String kaisenUcwkUseStaymd = convNulltoMaxYMD((String)map.get("KAISEN_UCWK_USE_STAYMD"));
				
				// 回線内訳使用開始年月日が「20991231」以外で最大のものを取得
				if( !JKKStrConst.END_YMD_DEFAULT.equals(kaisenUcwkUseStaymd) && maxYMD.compareTo(kaisenUcwkUseStaymd) < 0 ){
					
					maxYMD = kaisenUcwkUseStaymd;
					maxMap = map;
				}
			
			}
			
			list.add(maxMap);
			
		}
		
		return list;
		
	}

	/**
	 * パラメタが空白またはNullの場合、日付の最大値(20991231)を返却します。
	 * @param prmYMD
	 * @return String
	 */
	private String convNulltoMaxYMD(String prmYMD)
	{
		
		String rtnYMD = prmYMD;
		
		if(JKKCommonUtil.isNull(rtnYMD)){
			
			rtnYMD = JKKStrConst.END_YMD_DEFAULT;
			
		}
		
		return rtnYMD;
	}

	/**
	 * ネット契約のスマートバリュー申込可否の設定
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param svcKeiData
	 * @throws Throwable 
	 */
	private void setNetKeiSmartValueMskmKh(SessionHandle handle, 
												IRequestParameterReadWrite param, 
												String fixedText, 
												HashMap<String, Object> ccMsg, 
												CAANMsg svcKeiData) throws Throwable
	{
		
		HashMap<String, String> workParamKeyMap = new HashMap<String, String>();
		
		// ネットありの場合
		if(isNetKei(svcKeiData))
		{
			
			String netCnt = "1";
			
			// ネット状態がマンション(プライベート)の場合
			if(isMansionPrvt(handle, param, fixedText, ccMsg, svcKeiData))
			{
				
				workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
				workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_PRVT);
				workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_PRVT);
				
			}
			else if(isJuryosei(svcKeiData))
			{
				// ネット状態が従量制の場合
				workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
				workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_JRY);
				workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_JRY);
				
			}
			else
			{
				
				// ネット状態が上記以外
				
				// ANK-3136-00-00 2017/12/04 ADD START
				// 工事仮シャンセル情報を取得する
				String kjKrCnclFlg = isSvcKeiKariCnclFrg(handle, param, fixedText, svcKeiData);
				// ANK-3136-00-00 2017/12/04 ADD END
				
				// ++++++++ v5.00.14 add start ++++++++
				// サービス契約ステータスが「照査済」の場合
				if ("020".equals(getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT))))
				{
					String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
					
					// 照査ＯＫの場合 かつ 工事仮キャンセルフラグが"有"以外の場合
					// ANK-3136-00-00 2017/12/04 MOD START
					//if (isShosaOK(handle, param, fixedText, svcKeiNo))
					if (isShosaOK(handle, param, fixedText, svcKeiNo) && !"1".equals(kjKrCnclFlg))
					{
						workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_PSB_NET);
					}
					else
					{
						// workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
						// workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_DSL);
						// workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_DSL);
						if("1".equals(kjKrCnclFlg))
						{
							workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
							workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_KRCN);
							workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_KRCN);
						}
						else
						{
							workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
							workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_DSL);
							workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_DSL);
						}
						
					}
					// ANK-3136-00-00 2017/12/04 MOD END
				}
				// ++++++++ v5.00.14 add end ++++++++
				
				// ANK-3136-00-00 2017/12/04 ADD START
				else if("030".equals(getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT))))
				{
					if("1".equals(kjKrCnclFlg))
					{
						workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
						workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_KRCN);
						workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_KRCN);
					}
					else
					{
						workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_PSB_NET);
					}
				}
				// ANK-3136-00-00 2017/12/04 ADD END
				
				// サービス契約ステータスが「解約」、「キャンセル」の場合
				else if(isSvcKeiStatusCancel(svcKeiData))
				{
					
					workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
					workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_DSL);
					workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_DSL);
					
				}
				
				else if(isSvcKeiStatusPause(svcKeiData))
				{
					// サービス契約ステータスが「休止・中断中」かつ、休止中断コードが「02」以外の場合
					workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
					workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_PSE);
					workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_PSE);
					
				}
				else if(isSvcKeiStatusKeiyaku(svcKeiData))
				{
					// サービス契約ステータスが「締結済」、「サービス提供中」、「停止中」、「休止・中断中」かつ、休止中断コードが「02」以外の場合
					workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_PSB_NET);
					
				}
				else
				{
					// 上記以外の場合は、ネット契約なしとみなす。
					
					netCnt = "0";
					workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
					workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_NON);
					workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_NON);
					
				}
				
			}
			
			// ネットの契約状態設定
			setNetKeiyakuJotai(handle, param, fixedText, ccMsg, svcKeiData);
			ccMsg.put("netknsu", netCnt);
			
		}
		else
		{
			// ネットなしの場合
			workParamKeyMap.put(KEY_NET_MSKM_FL, KK_MSKM_FL_NET);
			workParamKeyMap.put(KEY_NET_MSKM_RSN, KK_MKM_FL_RSN_N_NON);
			workParamKeyMap.put(KEY_NET_GUIDE, KK_CUST_GUIDE_N_NON);
			
			// ネットの契約状態設定
			// コード名称管理一意照会取得
			CAANMsg cAANMsgCdNmKanri = getEZM0171A010(handle, param, fixedText, "CD01536", "000");
			ccMsg.put("out_prmt12", getNullToStr(cAANMsgCdNmKanri.getString(EZM0171A010CBSMsg1List.CD_DIV_NM)));
			ccMsg.put("netknsu", "0");
			
		}
		
		// ネット契約のスマートバリュー申込可否情報を取得
		HashMap<String, Object> netMskmMap = getSmartValueMskmKhMap(handle, param, fixedText, ccMsg, workParamKeyMap);
		
		ccMsg.put("out_prmt9", getNullToStr((String)netMskmMap.get(KEY_NET_MSKM_FL)));
		ccMsg.put("out_prmt10", getNullToStr((String)netMskmMap.get(KEY_NET_MSKM_RSN)));
		ccMsg.put("out_prmt11", getNullToStr((String)netMskmMap.get(KEY_NET_GUIDE)));
		
	}
	
	/**
	 * 指定されたサービス契約がネット契約かを判定します。
	 * @param svcKeiData
	 * @return true：料金グループコードが「02:ホームタイプ」「03:メゾンタイプ」「04:マンションタイプ」
	 *          false：上記以外
	 */
	private boolean isNetKei(CAANMsg svcKeiData)
	{
		// 料金グループコード取得
		String prc_grp_cd = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.PRC_GRP_CD));
		
		return PRC_GRP_CD_NET.contains(prc_grp_cd);
		
	}
	
	/**
	 * ネット状態がマンション(プライベート)かを判定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param svcKeiData
	 * @return boolean
	 * @throws Throwable 
	 */
	private boolean isMansionPrvt(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String fixedText, 
									HashMap<String, Object> ccMsg, 
									CAANMsg svcKeiData) throws Throwable
	{
		boolean result = false;
		
		// 提供方式契約番号の取得
		String tkHoshikiKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.TK_HOSHIKI_KEI_NO));
		
		// 提供方式契約番号が空の場合は、提供方式契約一意照会取得以降の処理をしない。
		if(JKKCommonUtil.isNull(tkHoshikiKeiNo))
		{
			
			return result;
			
		}
		
		// 提供方式契約一意照会取得
		CAANMsg cAANMsgTkHoshiki = getEKK0891A010(handle, param, fixedText, tkHoshikiKeiNo);
		
		// マンションプランコードの取得
		String mansionPlanCd = getNullToStr(cAANMsgTkHoshiki.getString(EKK0891A010CBSMsg1List.MANSION_PLAN_CD));
		
		// マンションプラン一意照会取得
		CAANMsg cAANMsgMansionPlan = getEKK0921A010(handle, param, fixedText, mansionPlanCd);
		
		// マンションコースコードの取得
		String mansionCourseCd = getNullToStr(cAANMsgMansionPlan.getString(EKK0921A010CBSMsg1List.MANSION_COURSE_CD));
		
		// マンションコース一意照会取得
		CAANMsg cAANMsgMansionCourseCd = getEKK0911A010(handle, param, fixedText, mansionCourseCd);
		
		// IP払出コードの取得
		String ipHradsiCd = getNullToStr(cAANMsgMansionCourseCd.getString(EKK0911A010CBSMsg1List.IP_HRADSI_CD));
		
		// 判定
		if("01".equals(ipHradsiCd))
		{
			
			result = true;
			
		}
		
		return result;
	}
	
	/**
	 * 指定されたサービス契約が従量制かを判定します。
	 * @param svcKeiData
	 * @return true：料金プランコードが「PA0311」「PA0811」の場合
	 *          false：上記以外
	 */
	private boolean isJuryosei(CAANMsg svcKeiData)
	{
		boolean result = false;
		
		// 料金プランコード取得
		String pplanCd = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.PPLAN_CD));
		
		if("PA0311".equals(pplanCd) || "PA0811".equals(pplanCd))
		{
			result = true;
		}
		
		return result;
	}
	
	/**
	 * サービス契約ステータスが「解約」、「キャンセル」かを判定します。
	 * @param svcKeiData
	 * @return true：サービス契約ステータスが「910」「920」の場合
	 *          false：上記以外
	 */
	private boolean isSvcKeiStatusCancel(CAANMsg svcKeiData)
	{
		boolean result = false;
		
		// サービス契約ステータス取得
		String svcKeiStat = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
		
		if("910".equals(svcKeiStat) || "920".equals(svcKeiStat))
		{
			result = true;
		}
		
		return result;
	}

	/**
	 * サービス契約ステータスが「休止・中断中」かを判定します。
	 * @param svcKeiData
	 * @return true：サービス契約ステータスが「210」かつ、休止中断コードが「02」以外の場合
	 *          false：上記以外
	 */
	private boolean isSvcKeiStatusPause(CAANMsg svcKeiData)
	{
		boolean result = false;
		
		// サービス契約ステータス取得
		String svcKeiStat = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
		// 休止中断コード
		String pauseStpCd = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.PAUSE_STP_CD));
		
		if("210".equals(svcKeiStat) && !"02".equals(pauseStpCd))
		{
			result = true;
		}
		
		return result;
	}

	/**
	 * サービス契約が「契約中」かを判定します。
	 * @param svcKeiData
	 * @return true：サービス契約ステータスが「照査済」、「締結済」、「サービス提供中」、「停止中」、「休止・中断中」かつ、
	 *                休止中断コードが「02」以外の場合
	 *          false：上記以外
	 */
	private boolean isSvcKeiStatusKeiyaku(CAANMsg svcKeiData)
	{
		boolean result = false;
		
		List<String> statusList = new LinkedList<String>();
		// ++++++++ v5.00.14 add start ++++++++
//		statusList.add("020");
		// ++++++++ v5.00.14 add end ++++++++
		statusList.add("030");
		statusList.add("100");
		statusList.add("220");
		
		// サービス契約ステータス取得
		String svcKeiStat = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
		// 休止中断コード
		String pauseStpCd = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.PAUSE_STP_CD));
		
		if(statusList.contains(svcKeiStat) || ("210".equals(svcKeiStat) && "02".equals(pauseStpCd)))
		{
			result = true;
		}
		
		return result;
	}

	// ANK-3136-00-00 2017/11/28 ADD START
	/**
	 * サービス契約ステータスが「照査済」＆照査完了コードが"1"、「締結済」かを判定します。
	 * @param svcKeiData
	 * @return TRUE：サービス契約ステータスが「020」& 照査完了コードが「1」または「030」の場合
	 *                   工事仮キャンセルフラグが「無」の場合、
	 *                サービス契約ステータスが「020」& 照査完了コードが「1」または「030」の場合
	 *                   工事仮キャンセルフラグが「有」の場合
	 *          FALSE：サービス契約ステータスが「020」& 照査完了コードが「1」または「030」以外の場合
	 */
	private String isSvcKeiKariCnclFrg(SessionHandle handle, IRequestParameterReadWrite param, 
			String fixedText, CAANMsg svcKeiData) throws Throwable
	{
		// サービス契約番号取得
		String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
		
		String kojiakNo = null;
		//OM-2018-0001092 MOD START
		//String kjKrCnclFlg = null;
		String kjKrCnclFlg = "";
		//OM-2018-0001092 MOD END
		// サービス契約_工事案件一覧照会情報取得
		CAANMsg[] cAANMsgCust = getEKU0081B010(handle, param, fixedText, svcKeiNo);
		
		if(cAANMsgCust != null)
		{
//OM-2018-0001092 ADD START
			if(cAANMsgCust.length != 0)
			{
//OM-2018-0001092 ADD END

				// 工事案件番号を取得
				kojiakNo = getNullToStr(cAANMsgCust[0].getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
		
				// 工事案件一意照会情報取得処理
				CAANMsg cAANMsgKoji = getEKU0011A010(handle, param, fixedText, kojiakNo);
				
				if(cAANMsgKoji != null)
				{	
					//工事仮キャンセルフラグを取得
					kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KJ_KR_CNCL_FLG));
				}
//OM-2018-0001092 ADD START
			}
//OM-2018-0001092 ADD END
		}
		
		return kjKrCnclFlg;
	}
	// ANK-3136-00-00 2017/11/28 ADD END
	/**
	 * ネットの契約状態を設定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param svcKeiData
	 * @return
	 * @throws Throwable 
	 */
	private void setNetKeiyakuJotai(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> ccMsg, 
										CAANMsg svcKeiData) throws Throwable
	{
		
		// サービス契約ステータス取得
		String svcKeiStat = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
		
		//ANK-3136-00-00 2017/12/04 ADD START
		// サービス契約番号
		String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
		
		//OM-2018-0001092 MOD START
		////工事案件番号
		//String kojiakNo = null;
		////工事案件ステータス
		//String kojiakStat = null;
		////工事案件種別コード
		//String kojiakSbtCd = null;
		////工事仮キャンセルフラグ
		//String kjKrCnclFlg = null;
		//工事案件番号
		String kojiakNo = "";
		//工事案件ステータス
		String kojiakStat = "";
		//工事案件種別コード
		String kojiakSbtCd = "";
		//工事仮キャンセルフラグ
		String kjKrCnclFlg = "";
		//OM-2018-0001092 MOD END
		
		List<String> kojiStatList = new LinkedList<String>();
		// 工事案件ステータス : 依頼中
		kojiStatList.add(JKKStrConst.CD00474_140);
		// 工事案件ステータス : 宅内調査完了済
		kojiStatList.add(JKKStrConst.CD00474_150);
		// 工事案件ステータス : 工事会社決定済
		kojiStatList.add(JKKStrConst.CD00474_160);
		// 工事案件ステータス : 宅内機器予定登録済
		kojiStatList.add(JKKStrConst.CD00474_170);
		// 工事案件ステータス : 仮鍵開発行依頼済
		kojiStatList.add(JKKStrConst.CD00474_180);
		// 工事案件ステータス : 現場作業完了済
		kojiStatList.add(JKKStrConst.CD00474_190);
		
		// サービス契約_工事案件一覧照会情報取得
		CAANMsg[] cAANMsgCust = getEKU0081B010(handle, param, fixedText, svcKeiNo);
		
		if(cAANMsgCust != null)
		{
			//OM-2018-0001092 ADD START
			if(cAANMsgCust.length != 0)
			{
			//OM-2018-0001092 ADD END
				// 工事案件番号を取得
				kojiakNo = getNullToStr(cAANMsgCust[0].getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
					
				// 工事案件一意照会情報取得処理
				CAANMsg cAANMsgKoji = getEKU0011A010(handle, param, fixedText, kojiakNo);
					
				if(cAANMsgKoji != null)
				{	
					//工事案件ステータスを取得
					kojiakStat = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT));
					//工事案件種別コードを取得
					kojiakSbtCd = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
					//工事仮キャンセルフラグを取得
					kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KJ_KR_CNCL_FLG));
				}
			//OM-2018-0001092 ADD START
			}
			//OM-2018-0001092 ADD END
		}
		//ANK-3136-00-00 2017/12/04 ADD END
		
		// ++++++++ v5.00.14 upd start ++++++++
		// 対象外(受付済)のサービス契約ステータスの場合
		if("010".equals(svcKeiStat))
		{
			svcKeiStat = "000";
		}
		// ANK-3136-00-00 MOD 2017/12/04 START
		// // 照査済の場合
		// else if ("020".equals(svcKeiStat))
		// {
		// 	// サービス契約番号
		// 	String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
		// 	
		// 	// 照査ＯＫ以外の場合
		// 	if (!isShosaOK(handle, param, fixedText, svcKeiNo))
		// 	{
		// 		// 照査ＮＧのため契約状態を「解約済」に編集する
		// 		svcKeiStat = "910";
		// 	}
		// }
		// ++++++++ v5.00.14 upd end ++++++++
		// 「照査済」、「締結済」の場合
		else if("020".equals(svcKeiStat) || "030".equals(svcKeiStat))
		{	
			// 照査ＯＫ以外、「照査済」の場合
			if (!isShosaOK(handle, param, fixedText, svcKeiNo) && "020".equals(svcKeiStat))
			{
				// 照査ＮＧのため契約状態を「解約済」に編集する
				svcKeiStat = "910";
			}
			// 照査済（照査OK）、締結済の場合
			// 工事案件ステータスが「依頼中」〜「現場作業完了済」、工事種別コードが「新設」の場合、かつ 工事仮キャンセルフラグが「有」の場合
			else if("001".equals(kojiakSbtCd) && kojiStatList.contains(kojiakStat) && "1".equals(kjKrCnclFlg))
			{
				// 仮キャンセル状態の新設工事に紐付く契約は「解約済」に編集する
				svcKeiStat = "910";
			}
		}
		// ANK-3136-00-00 MOD 2017/12/04 END
		// コード名称管理一意照会取得
		CAANMsg cAANMsgCdNmKanri = getEZM0171A010(handle, param, fixedText, "CD01536", svcKeiStat);
		
		ccMsg.put("out_prmt12", getNullToStr(cAANMsgCdNmKanri.getString(EZM0171A010CBSMsg1List.CD_DIV_NM)));
		
	}
	
	/**
	 * 電話契約のスマートバリュー申込可否の設定
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param svcKeiData
	 * @throws Throwable 
	 */
	private void setTelKeiSmartValueMskmKh(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMsg,
			CAANMsg svcKeiData) throws Throwable
	{
// ++++++++ v5.00.16 upd start ++++++++
//		// サービス契約番号取得
//		String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
//		
//		// 回線対象サービス契約一覧照会（サービス契約番号）取得
//		CAANMsg cAANMsgKaisen = getEKK0241B003(handle, param, fixedText, svcKeiNo);
//		
//		if(cAANMsgKaisen != null)
//		{
			
			boolean cancelKeiFlg = false;
			
			HashMap<String, String> workParamKeyMap = new HashMap<String, String>();
			
			// サービス契約回線内訳番号
//			String svcKeiKaisenUcwkiNo = getNullToStr(cAANMsgKaisen.getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			String svcKeiKaisenUcwkiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			
			// サービス契約内訳<eo光電話>一覧照会（同一回線）取得
			CAANMsg[] cAANMsgSvcKeiUcwkTel = getEKK0191B009(handle, param, fixedText, svcKeiKaisenUcwkiNo);
			
			// eo光電話の契約がない場合
			if(cAANMsgSvcKeiUcwkTel == null || cAANMsgSvcKeiUcwkTel.length == 0)
			{
				
				cancelKeiFlg = true;
				
				workParamKeyMap.put(KEY_TEL_MSKM_FL, KK_MSKM_FL_TEL);
				workParamKeyMap.put(KEY_TEL_MSKM_RSN, KK_MKM_FL_RSN_T_NON);
				workParamKeyMap.put(KEY_TEL_GUIDE, KK_CUST_GUIDE_T_NON);
				
				// 電話の契約状態設定
				// コード名称管理一意照会取得
				CAANMsg cAANMsgCdNmKanri = getEZM0171A010(handle, param, fixedText, "CD01537", "000");
				ccMsg.put("out_prmt16", getNullToStr(cAANMsgCdNmKanri.getString(EZM0171A010CBSMsg1List.CD_DIV_NM)));
				
			}
			else
			{
				CAANMsg targetSvcKeiUcwkTel = null;
				
				// eo光電話の契約がある場合
				
				// すべてが「解約」、「キャンセル」、「照査ＮＧ」の場合
				// ANK-3136-00-00 MOD START
				/*if(isAllCancel(handle, param, fixedText, cAANMsgSvcKeiUcwkTel))*/
				if(isAllCancel(handle, param, fixedText, cAANMsgSvcKeiUcwkTel, svcKeiData))
				// ANK-3136-00-00 MOD END
				{
					
					cancelKeiFlg = true;
					
					workParamKeyMap.put(KEY_TEL_MSKM_FL, KK_MSKM_FL_TEL);
					workParamKeyMap.put(KEY_TEL_MSKM_RSN, KK_MKM_FL_RSN_T_DSL);
					workParamKeyMap.put(KEY_TEL_GUIDE, KK_CUST_GUIDE_T_DSL);
					
					targetSvcKeiUcwkTel = cAANMsgSvcKeiUcwkTel[0];
				}
				else
				{
					
					// 応答電文に出力するサービス契約内訳を取得する。
					targetSvcKeiUcwkTel = getTargetSvcKeiUcwk(cAANMsgSvcKeiUcwkTel);
					
					// サービス契約内訳ステータスの取得
					String status = getNullToStr(targetSvcKeiUcwkTel.getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_STAT));
					// 休止中断コードの取得
					String pauseStpCd = getNullToStr(targetSvcKeiUcwkTel.getString(EKK0191B009CBSMsg1List.PAUSE_STP_CD));
					
					// 取得したサービス契約内訳のステータスが「210」かつ、休中断コードが「02」以外の場合、申込不可
					if("210".equals(status) && !"02".equals(pauseStpCd))
					{
						
						cancelKeiFlg = true;
						
						workParamKeyMap.put(KEY_TEL_MSKM_FL, KK_MSKM_FL_TEL);
						workParamKeyMap.put(KEY_TEL_MSKM_RSN, KK_MKM_FL_RSN_T_PSE);
						workParamKeyMap.put(KEY_TEL_GUIDE, KK_CUST_GUIDE_T_PSE);
						
					}
					else
					{
						// 上記以外は、申込可能
						cancelKeiFlg = false;
						
						workParamKeyMap.put(KEY_TEL_MSKM_FL, KK_MSKM_PSB_TEL);
						
					}
				}
				
				// 電話の契約状態取得
				// IT1-2018-0000088 MOD START
//				String keiJotai = getTelKeiyakuJotai(handle, param, fixedText, ccMsg, targetSvcKeiUcwkTel);
				String keiJotai = getTelKeiyakuJotai(handle, param, fixedText, ccMsg, targetSvcKeiUcwkTel, svcKeiData);
				// IT1-2018-0000088 MOD END
				
				if(cancelKeiFlg)
				{
					// 応答電文パラメータ１６に設定
					ccMsg.put("out_prmt16", keiJotai);
					
					// 電話番号
					String telNo = getNullToStr(targetSvcKeiUcwkTel.getString(EKK0191B009CBSMsg1List.TELNO));
					ccMsg.put("out_prmt17", telNo);
					
				}
				else
				{
					// 応答電文パラメータ２１に設定
					ccMsg.put("out_prmt21", keiJotai);
					
					// eo光電話１〜４の設定
					setEoHikariTel1_4(handle, param, fixedText, ccMsg, cAANMsgSvcKeiUcwkTel);
				}
			}
			
			// 電話の契約のスマートバリュー申込可否情報を取得
			HashMap<String, Object> telMskmMap = getSmartValueMskmKhMap(handle, param, fixedText, ccMsg, workParamKeyMap);
			
			
			if(cancelKeiFlg)
			{
				// 応答電文パラメータ１３〜１５に設定
				ccMsg.put("out_prmt13", getNullToStr((String)telMskmMap.get(KEY_TEL_MSKM_FL)));
				ccMsg.put("out_prmt14", getNullToStr((String)telMskmMap.get(KEY_TEL_MSKM_RSN)));
				ccMsg.put("out_prmt15", getNullToStr((String)telMskmMap.get(KEY_TEL_GUIDE)));
				
			}
			else
			{
				// 応答電文パラメータ１８〜２０に設定
				ccMsg.put("out_prmt18", getNullToStr((String)telMskmMap.get(KEY_TEL_MSKM_FL)));
				ccMsg.put("out_prmt19", getNullToStr((String)telMskmMap.get(KEY_TEL_MSKM_RSN)));
				ccMsg.put("out_prmt20", getNullToStr((String)telMskmMap.get(KEY_TEL_GUIDE)));
				
			}
//		}
// ++++++++ v5.00.16 upd end ++++++++
		
	}
	
	/**
	 * 指定されたサービス契約内訳がすべて「解約」、「キャンセル」、「照査ＮＧ」かを判定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param msgSvcKeiUcwkTel
	 * @return boolean
	 */
	// ANK-3136-00-00 MOD START
	// private boolean isAllCancel(SessionHandle handle, 
	// 								IRequestParameterReadWrite param, 
	// 								String fixedText, 
	// 								CAANMsg[] msgSvcKeiUcwkTel) throws Throwable
	private boolean isAllCancel(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String fixedText, 
									CAANMsg[] msgSvcKeiUcwkTel,
									CAANMsg svcKeiData) throws Throwable
	// ANK-3136-00-00 MOD END
	{
		
		// ++++++++ v5.00.14 del start ++++++++
//		for(int i = 0; i < msgSvcKeiUcwkTel.length; i++)
//		{
//			
//			// サービス契約内訳ステータスの取得
//			String svcKeiUcwkStat = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_STAT));
//			
//			// 1件でも「解約」、「キャンセル」以外があれば処理終了
//			if(!"910".equals(svcKeiUcwkStat) && !"920".equals(svcKeiUcwkStat))
//			{
//				return false;
//			}
//			
//		}
//		
//		// ここまで来た場合は、すべてが「解約」、「キャンセル」
//		return true;
		// ++++++++ v5.00.14 del end ++++++++
		
		// ANK-3136-00-00 ADD START
		// 工事仮キャンセル情報を取得する
		String kjKrCnclFlg = isSvcKeiKariCnclFrg(handle, param, fixedText, svcKeiData);
		// ANK-3136-00-00 ADD END
		
		// ++++++++ v5.00.14 add start ++++++++
		for(int i = 0; i < msgSvcKeiUcwkTel.length; i++)
		{
			// サービス契約内訳ステータス
			String svcKeiUcwkStat = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_STAT));
			// サービス契約内訳番号
			String svcKeiUcwkNo = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_NO));
			
			// 「解約」の場合
			if ("910".equals(svcKeiUcwkStat))
			{
				continue;
			}
			// 「キャンセル」の場合
			if ("920".equals(svcKeiUcwkStat))
			{
				continue;
			}
			// 「照査済」かつ「照査ＮＧ」の場合
			if ("020".equals(svcKeiUcwkStat) && !isUcwkShosaOK(handle, param, fixedText, svcKeiUcwkNo))
			{
				continue;
			}
			// ANK-3136-00-00 ADD START
			// 「照査済」かつ「工事仮キャンセル：有」の場合
			if ("020".equals(svcKeiUcwkStat) && "1".equals(kjKrCnclFlg))
			{
				continue;
			}
			// 「締結済」かつ「工事仮キャンセル：有」の場合
			if ("030".equals(svcKeiUcwkStat) && "1".equals(kjKrCnclFlg))
			{
				continue;
			}
			// ANK-3136-00-00 ADD END
			//  1件でも「解約」、「キャンセル」、「照査ＮＧ」、「工事仮キャンセル：有」以外があれば処理終了
			return false;
			
		}
		
		// ここまで来た場合は、すべてが「解約」、「キャンセル」、「照査ＮＧ」
		return true;
		// ++++++++ v5.00.14 add end ++++++++
		
	}
	
	/**
	 * 応答電文に出力するサービス契約内訳を取得する。
	 * @param msgSvcKeiUcwkTel
	 * @return CAANMsg
	 */
	private CAANMsg getTargetSvcKeiUcwk(CAANMsg[] msgSvcKeiUcwkTel)
	{
		
		// 出力対象の高い順に条件を設定
		List<String[]> statusList = new LinkedList<String[]>();
		statusList.add(new String[]{"100", null});
		statusList.add(new String[]{"210", "1"});     // 二つ目の要素「1」は、休止中断コード＝02を判定するためのもの
		statusList.add(new String[]{"220", null});
		statusList.add(new String[]{"020", null});
		statusList.add(new String[]{"030", null});
		statusList.add(new String[]{"210", "0"});     // 二つ目の要素「0」は、休止中断コード≠02を判定するためのもの
		
		for(int i = 0; i < statusList.size(); i++)
		{
			
			String[] arrayStat = statusList.get(i);
			
			for(int j = 0; j < msgSvcKeiUcwkTel.length; j++)
			{
				CAANMsg caanMsg = msgSvcKeiUcwkTel[j];
				
				// サービス契約内訳ステータスの取得
				String status = getNullToStr(caanMsg.getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_STAT));
				// 休止中断コードの取得
				String pauseStpCd = getNullToStr(caanMsg.getString(EKK0191B009CBSMsg1List.PAUSE_STP_CD));
				
				if(arrayStat[0].equals(status))
				{
					
					if(arrayStat[1] == null)
					{
						return caanMsg;
					}
					else if("1".equals(arrayStat[1]))
					{
						
						if("02".equals(pauseStpCd))
						{
							return caanMsg;
						}
					}
					else if("0".equals(arrayStat[1]))
					{
						
						if(!"02".equals(pauseStpCd))
						{
							return caanMsg;
						}
					}
					
				}
			}
			
		}
		
		// 上記条件で取得できなかった場合は、1件目のデータを返却
		return msgSvcKeiUcwkTel[0];
	}
	
	/**
	 * 電話の契約状態を取得します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param targetSvcKeiUcwkTel
	 * @return String
	 * @throws Throwable 
	 */
	private String getTelKeiyakuJotai(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> ccMsg, 
										CAANMsg targetSvcKeiUcwkTel
										// IT1-2018-0000088 ADD START
										, CAANMsg svcKeiData
										// IT1-2018-0000088 ADD END
										) throws Throwable
	{
		
		// サービス契約内訳ステータス取得
		String svcKeiUcwkStat = getNullToStr(targetSvcKeiUcwkTel.getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_STAT));
		
		//IT1-2018-0000088 ADD START
		// サービス契約番号
		String svcKeiNo = getNullToStr(svcKeiData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
		// サービス契約内訳番号
		String svcKeiUcwkNo = getNullToStr(targetSvcKeiUcwkTel.getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_NO));
				
		//OM-2018-0001092 MOD START
		////工事案件番号
		//String kojiakNo = null;
		////工事案件ステータス
		//String kojiakStat = null;
		////工事案件種別コード
		//String kojiakSbtCd = null;
		////工事仮キャンセルフラグ
		//String kjKrCnclFlg = null;
		//工事案件番号
		String kojiakNo = "";
		//工事案件ステータス
		String kojiakStat = "";
		//工事案件種別コード
		String kojiakSbtCd = "";
		//工事仮キャンセルフラグ
		String kjKrCnclFlg = "";
		//OM-2018-0001092 MOD END
		
		List<String> kojiStatList = new LinkedList<String>();
		// 工事案件ステータス : 依頼中
		kojiStatList.add(JKKStrConst.CD00474_140);
		// 工事案件ステータス : 宅内調査完了済
		kojiStatList.add(JKKStrConst.CD00474_150);
		// 工事案件ステータス : 工事会社決定済
		kojiStatList.add(JKKStrConst.CD00474_160);
		// 工事案件ステータス : 宅内機器予定登録済
		kojiStatList.add(JKKStrConst.CD00474_170);
		// 工事案件ステータス : 仮鍵開発行依頼済
		kojiStatList.add(JKKStrConst.CD00474_180);
		// 工事案件ステータス : 現場作業完了済
		kojiStatList.add(JKKStrConst.CD00474_190);
		
		// サービス契約_工事案件一覧照会情報取得
		CAANMsg[] cAANMsgCust = getEKU0081B010(handle, param, fixedText, svcKeiNo);
		
		if(cAANMsgCust != null)
		{
			//OM-2018-0001092 ADD START
			if(cAANMsgCust.length != 0)
			{
			//OM-2018-0001092 ADD END	
				// 工事案件番号を取得
				kojiakNo = getNullToStr(cAANMsgCust[0].getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
					
				// 工事案件一意照会情報取得処理
				CAANMsg cAANMsgKoji = getEKU0011A010(handle, param, fixedText, kojiakNo);
					
				if(cAANMsgKoji != null)
				{	
					//工事案件ステータスを取得
					kojiakStat = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT));
					//工事案件種別コードを取得
					kojiakSbtCd = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
					//工事仮キャンセルフラグを取得
					kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KJ_KR_CNCL_FLG));
				}
			//OM-2018-0001092 ADD START
			}
			//OM-2018-0001092 ADD END
		}
		//IT1-2018-0000088 ADD END
		
		// ++++++++ v5.00.14 upd start ++++++++
		// 対象外(受付済)のサービス契約ステータスの場合
		if("010".equals(svcKeiUcwkStat))
		{
			svcKeiUcwkStat = "000";
		}
		// IT1-2018-0000088 MOD START
		// 照査済の場合
		//else if ("020".equals(svcKeiUcwkStat))
		//{
			// サービス契約内訳番号
			//String svcKeiUcwkNo = getNullToStr(targetSvcKeiUcwkTel.getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_NO));
			
			// 照査ＯＫ以外の場合
			//if (!isUcwkShosaOK(handle, param, fixedText, svcKeiUcwkNo))
			//{
				// 照査ＮＧのため契約状態を「解約済」に編集する
				//svcKeiUcwkStat = "910";
			//}
		//}
		// ++++++++ v5.00.14 upd end ++++++++
		// 「照査済」、「締結済」の場合
		else if("020".equals(svcKeiUcwkStat) || "030".equals(svcKeiUcwkStat))
		{	
			// 照査ＯＫ以外、「照査済」の場合
			if (!isUcwkShosaOK(handle, param, fixedText, svcKeiUcwkNo) && "020".equals(svcKeiUcwkStat))
			{
				// 照査ＮＧのため契約状態を「解約済」に編集する
				svcKeiUcwkStat = "910";
			}
			// 照査済（照査OK）、締結済の場合
			// 工事案件ステータスが「依頼中」〜「現場作業完了済」、工事種別コードが「新設」の場合、かつ 工事仮キャンセルフラグが「有」の場合
			else if("001".equals(kojiakSbtCd) && kojiStatList.contains(kojiakStat) && "1".equals(kjKrCnclFlg))
			{
				// 仮キャンセル状態の新設工事に紐付く契約は「解約済」に編集する
				svcKeiUcwkStat = "910";
			}
		}
		// IT1-2018-0000088 MOD END
		// コード名称管理一意照会取得
		CAANMsg cAANMsgCdNmKanri = getEZM0171A010(handle, param, fixedText, "CD01537", svcKeiUcwkStat);
		
		return getNullToStr(cAANMsgCdNmKanri.getString(EZM0171A010CBSMsg1List.CD_DIV_NM));
		
	}
	
	/**
	 * eo光電話１〜４の設定を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param msgSvcKeiUcwkTel
	 * @throws Throwable 
	 */
	private void setEoHikariTel1_4(SessionHandle handle,
									IRequestParameterReadWrite param,
									String fixedText,
									HashMap<String, Object> ccMsg,
									CAANMsg[] msgSvcKeiUcwkTel) throws Throwable
	{
		
		String telNo1 = "";
		String telNo2 = "";
		String telNo3 = "";
		String telNo4 = "";
		
		// 電話番号順番が「1」でサービス提供中のサービス契約を取得
		CAANMsg caanMsg1 = getSvcKeiUcwkTeikyochu(msgSvcKeiUcwkTel, "1");
		// 電話番号順番が「2」でサービス提供中のサービス契約を取得
		CAANMsg caanMsg2 = getSvcKeiUcwkTeikyochu(msgSvcKeiUcwkTel, "2");
		// 電話番号順番が「1」で予約中のサービス契約を取得
		CAANMsg caanMsg3 = getSvcKeiUcwkRsv(msgSvcKeiUcwkTel, "1", (String)ccMsg.get("opeDate"));
		// 電話番号順番が「2」で予約中のサービス契約を取得
		CAANMsg caanMsg4 = getSvcKeiUcwkRsv(msgSvcKeiUcwkTel, "2", (String)ccMsg.get("opeDate"));
		
		// 電話番号順番が「1」の設定
		if(caanMsg1 != null)
		{
			telNo1 = getNullToStr(caanMsg1.getString(EKK0191B009CBSMsg1List.TELNO));
			
			if(caanMsg3 != null)
			{
				
				// 同番移転に存在していた場合は設定しない
				if(!isExistDoubanIten(handle, param, fixedText, caanMsg3))
				{
					telNo3 = getNullToStr(caanMsg3.getString(EKK0191B009CBSMsg1List.TELNO));
				}
				
			}
		}
		else
		{
			if(caanMsg3 != null)
			{
				telNo1 = getNullToStr(caanMsg3.getString(EKK0191B009CBSMsg1List.TELNO));
			}
		}
		
		// 電話番号順番が「2」の設定
		if(caanMsg2 != null)
		{
			telNo2 = getNullToStr(caanMsg2.getString(EKK0191B009CBSMsg1List.TELNO));
			
			if(caanMsg4 != null)
			{
				
				// 同番移転に存在していた場合は設定しない
				if(!isExistDoubanIten(handle, param, fixedText, caanMsg4))
				{
					telNo4 = getNullToStr(caanMsg4.getString(EKK0191B009CBSMsg1List.TELNO));
				}
				
			}
		}
		else
		{
			if(caanMsg4 != null)
			{
				telNo2 = getNullToStr(caanMsg4.getString(EKK0191B009CBSMsg1List.TELNO));
			}
		}
		
		// 応答電文に格納
		ccMsg.put("out_prmt22", telNo1);
		ccMsg.put("out_prmt23", telNo2);
		ccMsg.put("out_prmt24", telNo3);
		ccMsg.put("out_prmt25", telNo4);
		
	}

	/**
	 * 指定された電話番号順番のサービス提供中のサービス契約を取得します。
	 * @param msgSvcKeiUcwkTel
	 * @param telNoJun
	 * @return CAANMsg
	 */
	private CAANMsg getSvcKeiUcwkTeikyochu(CAANMsg[] msgSvcKeiUcwkTel, String telNoJun)
	{
		
		CAANMsg caanMsg = null;
		String tmpTelNoJun = null;
		String tmpSvcKeiUcwkStat = null;
		
		for(int i = 0; i < msgSvcKeiUcwkTel.length; i++)
		{
			// 電話番号順番
			tmpTelNoJun = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.TELNO_JUN));
			// サービス開始年月日
			tmpSvcKeiUcwkStat = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_STAT));
			
			// 指定された電話番号順番と同じでかつ、サービス契約内訳ステータスが「サービス提供中」の場合
			if(telNoJun.equals(tmpTelNoJun) && "100".equals(tmpSvcKeiUcwkStat))
			{
				return msgSvcKeiUcwkTel[i];
			}
			
		}
		
		return caanMsg;
	}

	/**
	 * 指定された電話番号順番の予約中のサービス契約を取得します。
	 * @param msgSvcKeiUcwkTel
	 * @param telNoJun
	 * @param opeDate
	 * @return CAANMsg
	 */
	private CAANMsg getSvcKeiUcwkRsv(CAANMsg[] msgSvcKeiUcwkTel, String telNoJun, String opeDate)
	{
		
		CAANMsg caanMsg = null;
		String tmpTelNoJun = null;
		String tmpSvcStaYmd = null;
		
		for(int i = 0; i < msgSvcKeiUcwkTel.length; i++)
		{
			// 電話番号順番
			tmpTelNoJun = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.TELNO_JUN));
			// サービス開始年月日
			tmpSvcStaYmd = getNullToStr(msgSvcKeiUcwkTel[i].getString(EKK0191B009CBSMsg1List.SVC_STA_YMD));
			
			// 指定された電話番号順番と同じでかつ、「運用日＜サービス開始年月日」
			if(telNoJun.equals(tmpTelNoJun) && ( JKKCommonUtil.isNull(tmpSvcStaYmd) || JPCUtilCommon.isFutureDate(tmpSvcStaYmd, opeDate, "0")))
			{
				return msgSvcKeiUcwkTel[i];
			}
			
		}
		
		return caanMsg;
	}

	/**
	 * 同番移転テーブルにデータが存在するか判定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @throws Throwable 
	 * @throws Throwable
	 */
	private boolean isExistDoubanIten(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, CAANMsg ccMsg) throws Throwable
	{
		
		boolean ret = false;
		
		// サービス契約内訳番号を取得
		String svcUcwkNo = getNullToStr(ccMsg.getString(EKK0191B009CBSMsg1List.SVC_KEI_UCWK_NO));
		
		// 同番移転一覧照会（サービス契約内訳番号）取得
		CAANMsg[] cBSMsg1List = getETU0021B016(handle, param, fixedText, svcUcwkNo);
		
		// 取得結果が存在した場合
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			ret = true;
		}
		
		return ret;
	}

	/**
	 * TVの契約状態を設定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param svcKeiList
	 * @throws Throwable
	 */
	private void setTVKeiyakuJotai(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String fixedText, 
									HashMap<String, Object> ccMsg, 
									List<CAANMsg> svcKeiList) throws Throwable
	{
		
		String svcKeiStat = "000";
		
		// TV情報の抽出
		List<CAANMsg> listTVKei = extractTV(svcKeiList);
		
		if(listTVKei != null && listTVKei.size() > 0)
		{
			
			// 優先度の高いTV情報の抽出
			listTVKei = extractTVByPriority(listTVKei);
			
			// TVの契約状態設定
			svcKeiStat = getNullToStr(listTVKei.get(0).getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
			
			// ++++++++ v5.00.14 upd start ++++++++
			// 対象外(受付済)のサービス契約ステータスの場合
			if("010".contains(svcKeiStat))
			{
				svcKeiStat = "000";
			}
			// 照査済の場合
			else if ("020".equals(svcKeiStat))
			{
				String svcKeiNo = listTVKei.get(0).getString(EKK0251B005CBSMsg1List.SVC_KEI_NO);
				
				// 照査ＯＫ以外の場合
				if (!isShosaOK(handle, param, fixedText, svcKeiNo))
				{
					// 照査ＮＧのため契約状態を「解約済」に編集する
					svcKeiStat = "910";
				}
			}
			// ++++++++ v5.00.14 upd end ++++++++
		}
		
		// コード名称管理一意照会取得
		CAANMsg cAANMsgCdNmKanri = getEZM0171A010(handle, param, fixedText, "CD01538", svcKeiStat);
		
		ccMsg.put("out_prmt26", getNullToStr(cAANMsgCdNmKanri.getString(EZM0171A010CBSMsg1List.CD_DIV_NM)));
		
	}

	/**
	 * スマートバリュー申込可否情報を取得します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccMsg
	 * @param workParamKeyMap
	 * @return HashMap<String, Object>
	 * @throws Throwable 
	 */
	private HashMap<String, Object> getSmartValueMskmKhMap(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			HashMap<String, Object> ccMsg, HashMap<String, String> workParamKeyMap) throws Throwable
	{
		HashMap<String, Object> rtnMap = new HashMap<String, Object>();
		
		Iterator<String> it = workParamKeyMap.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();
			String workParamId = (String)workParamKeyMap.get(mapkey);
			
			// 業務パラメータ管理一意照会取得
			CAANMsg cAANMsg = getEZM0321A010(handle, param, fixedText, workParamId);
			
			if(cAANMsg != null)
			{
				rtnMap.put(mapkey, getNullToStr(cAANMsg.getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE)));
			}
			else
			{
				rtnMap.put(mapkey, "");
			}
		}
		
		return rtnMap;
	}

	/**
	 * サービス契約一覧照会（電話番号）を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return List<HashMap>
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getEKK0081B033(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		// サービス契約一覧照会（電話番号）のパラメタ作成
		Object[][] inParam = createParamEKK0081B033(ccMsg);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0081B033CBSMsg.EKK0081B033CBSMSG1LIST);
		
		for(int i = 0; i < cBSMsg1List.length; i++)
		{
			
			CAANMsg caanMsgData = cBSMsg1List[i];
			
			HashMap<String, String> map = new HashMap<String, String>();
			map.put("SYSID", getNullToStr(caanMsgData.getString(EKK0081B033CBSMsg1List.SYSID)));
			map.put("SVC_KEI_NO", getNullToStr(caanMsgData.getString(EKK0081B033CBSMsg1List.SVC_KEI_NO)));
			map.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(caanMsgData.getString(EKK0081B033CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)));
			map.put("KAISEN_UCWK_USE_STAYMD", getNullToStr(caanMsgData.getString(EKK0081B033CBSMsg1List.KAISEN_UCWK_USE_STAYMD)));
			map.put("KAISEN_UCWK_USE_ENDYMD", getNullToStr(caanMsgData.getString(EKK0081B033CBSMsg1List.KAISEN_UCWK_USE_ENDYMD)));
			
			list.add(map);
		}
		
		return list;
	}

	/**
	 * サービス契約一覧照会（電話番号）のパラメタを作成します。
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0081B033(HashMap<String, Object> ccMsg)
	{
		
		Object[][] arraysParam = {
									{EKK0081B033CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B033},
									{EKK0081B033CBSMsg.FUNC_CODE,  "1"},
									{EKK0081B033CBSMsg.KEY_TELNO,  (String)ccMsg.get("dnw_bngu")},
				};
			
		return arraysParam;
	}

	/**
	 * 申込明細一覧照会（同一回線）を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return List<HashMap>
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getEKK0021B003(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		List<String> prcGrpCdList = new LinkedList<String>();
		prcGrpCdList.add("02");
		prcGrpCdList.add("03");
		prcGrpCdList.add("04");
		prcGrpCdList.add("10");
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		// 申込明細一覧照会（同一回線）のパラメタ作成（申込書番号での検索）
		Object[][] inParam = createParamEKK0021B003(ccMsg);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0021B003CBSMsg.EKK0021B003CBSMSG1LIST);
		
//OM-2016-0001018 DEL START
//		HashMap<String, String> map = new HashMap<String, String>();
//OM-2016-0001018 DEL END
		
		for(int i = 0; i < cBSMsg1List.length; i++)
		{
//OM-2016-0001018 ADD START
			HashMap<String, String> map = new HashMap<String, String>();
//OM-2016-0001018 ADD END
			
			CAANMsg caanMsgData = cBSMsg1List[i];
			
			String prcGrpCd = getNullToStr(caanMsgData.getString(EKK0021B003CBSMsg1List.PRC_GRP_CD));
			String keySysid = getNullToStr(caanMsgData.getString(EKK0021B003CBSMsg1List.SYSID));
			
			// 料金グループコードにネット、電話がある場合は、サービス契約回線内訳コードを格納する。
			if(prcGrpCdList.contains(prcGrpCd)){
				
				map.put("SVC_KEI_KAISEN_UCWK_NO", getNullToStr(caanMsgData.getString(EKK0021B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)));
				
			}
			
//OM-2016-0001018 MOD START
//			// SYSIDが既に格納してあれば追加しない
//			if(!keySysid.equals(map.get("SYSID"))){
//				
//				map.put("SYSID", keySysid);
//				
//				list.add(map);
//				
//			}
			map.put("SYSID", keySysid);
			list.add(map);
//OM-2016-0001018 MOD END
		}
		
		return list;
	}

	/**
	 * 申込明細一覧照会（同一回線）のパラメタを作成します。
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0021B003(HashMap<String, Object> ccMsg)
	{
		//申込書番号で検索(申込書番号を申込書番号、申込書明細番号に設定する)
		Object[][] arraysParam = {
									{EKK0021B003CBSMsg.TEMPLATEID,         TEMPLATE_ID_EKK0021B003},
									//v13.00.00 MOD START
									//{EKK0021B003CBSMsg.FUNC_CODE,          "1"},
									{EKK0021B003CBSMsg.FUNC_CODE,          "3"},
									//v13.00.00 MOD END
									{EKK0021B003CBSMsg.KEY_MSKMSHO_NO,     (String)ccMsg.get("muskm_bngu")},
									{EKK0021B003CBSMsg.KEY_MSKMSHO_DTL_NO, (String)ccMsg.get("muskm_bngu")},
				};
			
		return arraysParam;
	}
	
	/**
	 * 申込書番号指定一覧照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return List<HashMap>
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getEKK0021B001(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		// 申込書番号指定一覧照会のパラメタ作成（申込書番号での検索）
		Object[][] inParam = createParamEKK0021B001(ccMsg);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0021B001CBSMsg.EKK0021B001CBSMSG1LIST);
		
		//検索結果がない場合
		if(cBSMsg1List.length == 0)
		{
			// 申込書番号指定一覧照会のパラメタ作成（申込書明細番号での再検索）
			inParam = createParamEKK0021B001_dtl(ccMsg);
			
			cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0021B001CBSMsg.EKK0021B001CBSMSG1LIST);
			
		}
		
		for(int i = 0; i < cBSMsg1List.length; i++)
		{
			
			CAANMsg caanMsgData = cBSMsg1List[i];
			
			HashMap<String, String> map = new HashMap<String, String>();
			map.put("SYSID", getNullToStr(caanMsgData.getString(EKK0021B001CBSMsg1List.SYSID)));
			
			list.add(map);
		}
		
		return list;
	}

	/**
	 * 申込書番号指定一覧照会のパラメタを作成します。
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0021B001(HashMap<String, Object> ccMsg)
	{
		//申込書番号で検索
		Object[][] arraysParam = {
									{EKK0021B001CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0021B001},
									{EKK0021B001CBSMsg.FUNC_CODE,      "1"},
									{EKK0021B001CBSMsg.KEY_MSKMSHO_NO, (String)ccMsg.get("muskm_bngu")},
				};
			
		return arraysParam;
	}
	
	/**
	 * 申込書番号指定一覧照会のパラメタを作成します。
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0021B001_dtl(HashMap<String, Object> ccMsg)
	{
		//申込書明細番号で検索
		Object[][] arraysParam = {
									{EKK0021B001CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0021B001},
									{EKK0021B001CBSMsg.FUNC_CODE,      "1"},
									{EKK0021B001CBSMsg.KEY_MSKMSHO_DTL_NO, (String)ccMsg.get("muskm_bngu")},
				};
			
		return arraysParam;
	}

	/**
	 * 工事案件一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return List<HashMap>
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getEKU0011A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		// 工事案件一意照会のパラメタ作成
		Object[][] inParam = createParamEKU0011A010(ccMsg);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
		
		for(int i = 0; i < cBSMsg1List.length; i++)
		{
			
			CAANMsg caanMsgData = cBSMsg1List[i];
			
			HashMap<String, String> map = new HashMap<String, String>();
			map.put("SYSID", getNullToStr(caanMsgData.getString(EKU0011A010CBSMsg1List.SYSID)));
			
			list.add(map);
		}
		
		return list;
	}

	/**
	 * 工事案件一意照会のパラメタを作成します。
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] createParamEKU0011A010(HashMap<String, Object> ccMsg)
	{
		
		Object[][] arraysParam = {
									{EKU0011A010CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKU0011A010},
									{EKU0011A010CBSMsg.FUNC_CODE,      "1"},
									{EKU0011A010CBSMsg.KEY_KOJIAK_NO, (String)ccMsg.get("muskm_bngu")},
				};
			
		return arraysParam;
	}

	/**
	 * お客様情報一覧照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param telNo
	 * @param birthday
	 * @return List<HashMap>
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getECK0011B002(SessionHandle handle, 
											IRequestParameterReadWrite param, 
											String fixedText, 
											String telNo, 
											String birthday) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		// お客様情報一覧照会のパラメタ作成
		Object[][] inParam = createParamECK0011B002(ccMsg, telNo, birthday);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(ECK0011B002CBSMsg.ECK0011B002CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			for(int i = 0; i < cBSMsg1List.length; i++)
			{
				
				CAANMsg caanMsgData = cBSMsg1List[i];
				
				HashMap<String, String> map = new HashMap<String, String>();
				map.put("SYSID", getNullToStr(caanMsgData.getString(ECK0011B002CBSMsg1List.SYSID)));
				
				list.add(map);
			}
			
		}
		
		return list;
	}

	/**
	 * お客様情報一覧照会のパラメタを作成します。
	 * @param ccMsg
	 * @param telNo
	 * @param birthday
	 * @return Object[][]
	 */
	private Object[][] createParamECK0011B002(HashMap<String, Object> ccMsg, String telNo, String birthday)
	{
		
		Object[][] arraysParam = {
									{ECK0011B002CBSMsg.TEMPLATEID,       TEMPLATE_ID_ECK0011B002},
									{ECK0011B002CBSMsg.FUNC_CODE,        "1"},
									{ECK0011B002CBSMsg.KEY_KEISHA_TELNO, telNo},
									{ECK0011B002CBSMsg.KEY_CUST_BIRTHD,  birthday},
// ++++++++ v5.00.12 add start ++++++++
									{ECK0011B002CBSMsg.KEY_MEMBER_SBT_CD,  "10,20"},
// ++++++++ v5.00.12 add start ++++++++
									{ECK0011B002CBSMsg.DISPLAY_NUM,      String.valueOf(Integer.MAX_VALUE)},
									{ECK0011B002CBSMsg.DISPLAY_PAGE_NUM, "1"},
									{ECK0011B002CBSMsg.MAX_SEARCH_NUM,   String.valueOf(Integer.MAX_VALUE)},
				};
			
		return arraysParam;
	}

	/**
	 * 連絡先一覧照会（電話番号）を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return List<HashMap>
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private List<HashMap> getECK0201B005(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		List<HashMap> list = new LinkedList<HashMap>();
		
		// 連絡先一覧照会（電話番号）のパラメタ作成
		Object[][] inParam = createParamECK0201B005(ccMsg);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(ECK0201B005CBSMsg.ECK0201B005CBSMSG1LIST);
		
		for(int i = 0; i < cBSMsg1List.length; i++)
		{
			
			CAANMsg caanMsgData = cBSMsg1List[i];
			
			HashMap<String, String> map = new HashMap<String, String>();
			map.put("SYSID", getNullToStr(caanMsgData.getString(ECK0201B005CBSMsg1List.SYSID)));
			
			list.add(map);
		}
		
		return list;
	}

	/**
	 * 連絡先一覧照会（電話番号）のパラメタを作成します。
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] createParamECK0201B005(HashMap<String, Object> ccMsg)
	{
		
		Object[][] arraysParam = {
									{ECK0201B005CBSMsg.TEMPLATEID,         TEMPLATE_ID_ECK0201B005},
									{ECK0201B005CBSMsg.FUNC_CODE,          "1"},
									{ECK0201B005CBSMsg.KEY_TELNO,          (String)ccMsg.get("rnrksk_bngu")},
									{ECK0201B005CBSMsg.KEY_RRKS_BUNRUI_CD, "0"},
									{ECK0201B005CBSMsg.KEY_RRKS_SBT_CD,    "2,5"},
									{ECK0201B005CBSMsg.KEY_RRK_WAY_CD,     "003"},
				};
			
		return arraysParam;
	}

	/**
	 * お客様情報一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param sysid
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getECK0011A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String sysid) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// お客様情報一意照会のパラメタ作成
		Object[][] inParam = createParamECK0011A010(ccMsg, sysid);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}

	/**
	 * お客様情報一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param sysid
	 * @return Object[][]
	 */
	private Object[][] createParamECK0011A010(HashMap<String, Object> ccMsg, String sysid)
	{
		
		Object[][] arraysParam = {
				{ECK0011A010CBSMsg.TEMPLATEID,                 TEMPLATE_ID_ECK0011A010},
				{ECK0011A010CBSMsg.FUNC_CODE,                  "2"},
				{ECK0011A010CBSMsg.KEY_SYSID,                  sysid},
				{ECK0011A010CBSMsg.KEY_GENE_ADD_DTM,           ""},
				{ECK0011A010CBSMsg.KEY_RSV_APLY_YMD,           (String)ccMsg.get("opeDate")},
			};
		
		return arraysParam;
	}


	/**
	 * サービス契約回線内訳一覧照会（SYSID）を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param sysid
	 * @param svcKeiKaisenUcwkNo
	 * @param prcGrpCd
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK0251B005(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String fixedText, String sysid, 
										String svcKeiKaisenUcwkNo,
										String prcGrpCd) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// サービス契約回線内訳一覧照会（SYSID）のパラメタ作成
		Object[][] inParam = createParamEKK0251B005(ccMsg, sysid, svcKeiKaisenUcwkNo, prcGrpCd);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0251B005CBSMsg.EKK0251B005CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}

	/**
	 * サービス契約回線内訳一覧照会（SYSID）のパラメタを作成します。
	 * @param ccMsg
	 * @param sysid
	 * @param svcKeiKaisenUcwkNo
	 * @param prcGrpCd
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0251B005(HashMap<String, Object> ccMsg, String sysid, String svcKeiKaisenUcwkNo, String prcGrpCd)
	{
		
		Object[][] arraysParam = {
									{EKK0251B005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B005},
									{EKK0251B005CBSMsg.FUNC_CODE,  "1"},
									{EKK0251B005CBSMsg.KEY_SYSID,  sysid},
									{EKK0251B005CBSMsg.KEY_PRC_GRP_CD,  prcGrpCd},
									{EKK0251B005CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo},
				};
			
		return arraysParam;
	}

	/**
	 * 申込明細一意照会取得を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param mskmDtlNo
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK0021A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String mskmDtlNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 申込明細一意照会取得のパラメタ作成
		Object[][] inParam = createParamEKK0021A010(ccMsg, mskmDtlNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}

	/**
	 * 申込明細一意照会のパラメタを作成します。
	 * @param ccMsg
	 * @param mskmDtlNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0021A010(HashMap<String, Object> ccMsg, String mskmDtlNo)
	{
		
		Object[][] arraysParam = {
									{EKK0021A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021A010},
									{EKK0021A010CBSMsg.FUNC_CODE,  "2"},
									{EKK0021A010CBSMsg.KEY_MSKM_DTL_NO,  mskmDtlNo},
									{EKK0021A010CBSMsg.KEY_GENE_ADD_DTM,  ""},
				};
			
		return arraysParam;
	}

	/**
	 * サービス契約履歴一覧照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param mskmDtlNo
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK0081B024(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// サービス契約履歴一覧照会のパラメタ作成
		Object[][] inParam = createParamEKK0081B024(ccMsg, svcKeiNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0081B024CBSMsg.EKK0081B024CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}

	/**
	 * サービス契約履歴一覧照会のパラメタを作成します。
	 * @param ccMsg
	 * @param mskmDtlNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0081B024(HashMap<String, Object> ccMsg, String mskmDtlNo)
	{
		
		Object[][] arraysParam = {
									{EKK0081B024CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B024},
									{EKK0081B024CBSMsg.FUNC_CODE,  "1"},
									{EKK0081B024CBSMsg.KEY_SVC_KEI_NO,  mskmDtlNo}
				};
			
		return arraysParam;
	}
	
	/**
	 * 他事業者割引契約一覧照会取得を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK2441B004(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 他事業者割引契約一覧照会取得のパラメタ作成
		Object[][] inParam = createParamEKK2441B004(ccMsg, svcKeiNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK2441B004CBSMsg.EKK2441B004CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}

	/**
	 * 他事業者割引契約一覧照会のパラメタを作成します。
	 * @param ccMsg
	 * @param svcKeiNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK2441B004(HashMap<String, Object> ccMsg, String svcKeiNo)
	{
		
		Object[][] arraysParam = {
									{EKK2441B004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2441B004},
									{EKK2441B004CBSMsg.FUNC_CODE,  "1"},
									{EKK2441B004CBSMsg.KEY_SVC_KEI_NO,  svcKeiNo},
				};
			
		return arraysParam;
	}

	/**
	 * 提供方式契約一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param tkHoshikiKeiNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEKK0891A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String tkHoshikiKeiNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// 提供方式契約一意照会のパラメタ作成
		Object[][] inParam = createParamEKK0891A010(ccMsg, tkHoshikiKeiNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}

	/**
	 * 提供方式契約一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param tkHoshikiKeiNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0891A010(HashMap<String, Object> ccMsg, String tkHoshikiKeiNo)
	{
		
		Object[][] arraysParam = {
				{EKK0891A010CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0891A010},
				{EKK0891A010CBSMsg.FUNC_CODE,                  "1"},
				{EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO,      tkHoshikiKeiNo},
			};
		
		return arraysParam;
	}

	/**
	 * マンションプラン一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param mansionPlanCd
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEKK0921A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String mansionPlanCd) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// マンションプラン一意照会のパラメタ作成
		Object[][] inParam = createParamEKK0921A010(ccMsg, mansionPlanCd);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0921A010CBSMsg.EKK0921A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}

	/**
	 * マンションプラン一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param mansionPlanCd
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0921A010(HashMap<String, Object> ccMsg, String mansionPlanCd)
	{
		
		Object[][] arraysParam = {
				{EKK0921A010CBSMsg.TEMPLATEID,            TEMPLATE_ID_EKK0921A010},
				{EKK0921A010CBSMsg.FUNC_CODE,             "2"},
				{EKK0921A010CBSMsg.KEY_MANSION_PLAN_CD,   mansionPlanCd},
				{EKK0921A010CBSMsg.KEY_RSV_APLY_YMD,      (String)ccMsg.get("opeDate")},
			};
		
		return arraysParam;
	}

	/**
	 * マンションコース一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param mansionCourseCd
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEKK0911A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String mansionCourseCd) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// マンションコース一意照会のパラメタ作成
		Object[][] inParam = createParamEKK0911A010(ccMsg, mansionCourseCd);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0911A010CBSMsg.EKK0911A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}

	/**
	 * マンションコース一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param mansionCourseCd
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0911A010(HashMap<String, Object> ccMsg, String mansionCourseCd)
	{
		
		Object[][] arraysParam = {
				{EKK0911A010CBSMsg.TEMPLATEID,              TEMPLATE_ID_EKK0911A010},
				{EKK0911A010CBSMsg.FUNC_CODE,               "2"},
				{EKK0911A010CBSMsg.KEY_MANSION_COURSE_CD,   mansionCourseCd},
				{EKK0911A010CBSMsg.KEY_RSV_APLY_YMD,        (String)ccMsg.get("opeDate")},
			};
		
		return arraysParam;
	}

	/**
	 * コード名称管理一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param cdSbtCd
	 * @param cdDiv
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEZM0171A010(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String fixedText, 
									String cdSbtCd, 
									String cdDiv) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// コード名称管理一意照会のパラメタ作成
		Object[][] inParam = createParamEZM0171A010(ccMsg, cdSbtCd, cdDiv);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EZM0171A010CBSMsg.EZM0171A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}

	/**
	 * コード名称管理一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param cdSbtCd
	 * @param cdDiv
	 * @return Object[][]
	 */
	private Object[][] createParamEZM0171A010(HashMap<String, Object> ccMsg, String cdSbtCd, String cdDiv)
	{
		
		Object[][] arraysParam = {
				{EZM0171A010CBSMsg.TEMPLATEID,      TEMPLATE_ID_EZM0171A010},
				{EZM0171A010CBSMsg.FUNC_CODE,       "1"},
				{EZM0171A010CBSMsg.KEY_CD_SBT_CD,   cdSbtCd},
				{EZM0171A010CBSMsg.KEY_CD_DIV,      cdDiv},
			};
		
		return arraysParam;
	}

	/**
	 * 業務パラメータ管理一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param workParamId
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEZM0321A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String workParamId) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// 業務パラメータ管理一意照会のパラメタ作成
		Object[][] inParam = createParamEZM0321A010(ccMsg, workParamId);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}

	/**
	 * 業務パラメータ管理一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param workParamId
	 * @return Object[][]
	 */
	private Object[][] createParamEZM0321A010(HashMap<String, Object> ccMsg, String workParamId)
	{
		
		Object[][] arraysParam = {
				{EZM0321A010CBSMsg.TEMPLATEID,          TEMPLATE_ID_EZM0321A010},
				{EZM0321A010CBSMsg.FUNC_CODE,           "1"},
				{EZM0321A010CBSMsg.KEY_WORK_PARAM_ID,   workParamId},
			};
		
		return arraysParam;
	}

// ++++++++ v5.00.16 del start ++++++++
//	/**
//	 * 回線対象サービス契約一覧照会（サービス契約番号）を行います。
//	 * @param handle
//	 * @param param
//	 * @param fixedText
//	 * @param svcKeiNo
//	 * @return CAANMsg
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private CAANMsg getEKK0241B003(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Throwable
//	{
//		
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
//		
//		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//		
//		CAANMsg cAANMsg = null;
//		
//		// 回線対象サービス契約一覧照会（サービス契約番号）のパラメタ作成
//		Object[][] inParam = createParamEKK0241B003(ccMsg, svcKeiNo);
//		
//		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0241B003CBSMsg.EKK0241B003CBSMSG1LIST);
//		
//		if(cBSMsg1List != null && cBSMsg1List.length > 0)
//		{
//			
//			cAANMsg = cBSMsg1List[0];
//			
//		}
//		
//		return cAANMsg;
//		
//	}

//	/**
//	 * 回線対象サービス契約一覧照会（サービス契約番号）のパラメタを作成します。
//	 * <br>
//	 * @param ccMsg
//	 * @param svcKeiNo
//	 * @return Object[][]
//	 */
//	private Object[][] createParamEKK0241B003(HashMap<String, Object> ccMsg, String svcKeiNo)
//	{
//		
//		Object[][] arraysParam = {
//				{EKK0241B003CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0241B003},
//// ++++++++ v5.00.15 add start ++++++++
////				{EKK0241B003CBSMsg.FUNC_CODE,        "2"},
//				{EKK0241B003CBSMsg.FUNC_CODE,        "1"},
//// ++++++++ v5.00.15 add end ++++++++
//				{EKK0241B003CBSMsg.KEY_SVC_KEI_NO,   svcKeiNo},
//			};
//		
//		return arraysParam;
//	}
// ++++++++ v5.00.16 del end ++++++++

	/**
	 * サービス契約内訳<eo光電話>一覧照会（同一回線）を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param kaisenUcwkNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK0191B009(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String kaisenUcwkNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// サービス契約内訳<eo光電話>一覧照会（同一回線）のパラメタ作成
		Object[][] inParam = createParamEKK0191B009(ccMsg, kaisenUcwkNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0191B009CBSMsg.EKK0191B009CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}

	/**
	 * サービス契約内訳<eo光電話>一覧照会（同一回線）のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param svcKeiKaisenUcwkiNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0191B009(HashMap<String, Object> ccMsg, String svcKeiKaisenUcwkiNo)
	{
		
		Object[][] arraysParam = {
				{EKK0191B009CBSMsg.TEMPLATEID,                   TEMPLATE_ID_EKK0191B009},
				{EKK0191B009CBSMsg.FUNC_CODE,                    "1"},
				{EKK0191B009CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,   svcKeiKaisenUcwkiNo},
			};
		
		return arraysParam;
	}

	/**
	 * 同番移転一覧照会（サービス契約内訳番号）を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcUcwkNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getETU0021B016(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										String svcUcwkNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 同番移転一覧照会（サービス契約内訳番号）のパラメタ作成
		Object[][] inParam = createParamETU0021B016(ccMsg, svcUcwkNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(ETU0021B016CBSMsg.ETU0021B016CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}

	/**
	 * 同番移転一覧照会（サービス契約内訳番号）のパラメタを作成します。
	 * @param ccMsg
	 * @param svcUcwkNo
	 * @return Object[][]
	 */
	private Object[][] createParamETU0021B016(HashMap<String, Object> ccMsg, String svcUcwkNo)
	{
		
		Object[][] arraysParam = {
									{ETU0021B016CBSMsg.TEMPLATEID,       TEMPLATE_ID_ETU0021B016},
									{ETU0021B016CBSMsg.FUNC_CODE,        "1"},
									{ETU0021B016CBSMsg.KEY_SVC_KEI_UCWK_NO, svcUcwkNo},
				};
			
		return arraysParam;
	}

	// ++++++++ v5.00.14 add start ++++++++
	/**
	 * サービス契約一意照会を行い、照査解約完了コードの値から照査ＯＫかどうかを判定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @return 照査解約完了コードが１:照査ＯＫの場合は、true。 それ以外(２:照査ＮＧ)の場合は、false
	 * @throws Throwable
	 */
	private boolean isShosaOK(SessionHandle handle, 
								IRequestParameterReadWrite param, 
								String fixedText, 
								String svcKeiNo) throws Throwable
	{
		// サービス契約一意照会
		CAANMsg[] cAANMsgSvcKei = getEKK0081A010(handle, param, fixedText, svcKeiNo);
		
		if (cAANMsgSvcKei != null && cAANMsgSvcKei.length > 0)
		{
			// 照査解約完了コードを取得し、"1：照査ＯＫ"の場合
			String shosaDslFinCd = getNullToStr(cAANMsgSvcKei[0].getString(EKK0081A010CBSMsg1List.SHOSA_DSL_FIN_CD));
			if ("1".equals(shosaDslFinCd))
			{
				return true;
			}
		}
		return false;
	}
	// ++++++++ v5.00.14 add end ++++++++
	
	// ++++++++ v5.00.14 add start ++++++++
	/**
	 * サービス契約一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK0081A010(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										String svcKeiNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// サービス契約一意照会のパラメタ作成
		Object[][] inParam = createParamEKK0081A010(ccMsg, svcKeiNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}
	// ++++++++ v5.00.14 add end ++++++++
	
	// ++++++++ v5.00.14 add start ++++++++
	/**
	 * サービス契約一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param svcKeiNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0081A010(HashMap<String, Object> ccMsg, String svcKeiNo)
	{
		
		Object[][] arraysParam = {
				{EKK0081A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0081A010},
				{EKK0081A010CBSMsg.FUNC_CODE,        "2"},
				{EKK0081A010CBSMsg.KEY_SVC_KEI_NO,   svcKeiNo},
				{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, (String)ccMsg.get("opeDate")}
		};
		
		return arraysParam;
	}
	// ++++++++ v5.00.14 add end ++++++++
	
	// ++++++++ v5.00.14 add start ++++++++
	/**
	 * サービス契約内訳一意照会を行い、照査解約完了コードの値から照査ＯＫかどうかを判定します。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiUcwkNo
	 * @return 照査解約完了コードが１:照査ＯＫの場合は、true。 それ以外(２:照査ＮＧ)の場合は、false
	 * @throws Throwable
	 */
	private boolean isUcwkShosaOK(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String fixedText, 
									String svcKeiUcwkNo) throws Throwable
	{
		// サービス契約一意照会
		CAANMsg[] cAANMsgSvcKei = getEKK0161A010(handle, param, fixedText, svcKeiUcwkNo);
		
		if (cAANMsgSvcKei != null && cAANMsgSvcKei.length > 0)
		{
			// 照査解約完了コードを取得し、"1：照査ＯＫ"の場合
			String shosaDslFinCd = getNullToStr(cAANMsgSvcKei[0].getString(EKK0161A010CBSMsg1List.SHOSA_DSL_FIN_CD));
			if ("1".equals(shosaDslFinCd))
			{
				return true;
			}
		}
		return false;
	}
	// ++++++++ v5.00.14 add end ++++++++
	
	// ++++++++ v5.00.14 add start ++++++++
	/**
	 * サービス契約内訳一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiUcwkNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKK0161A010(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										String svcKeiUcwkNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// サービス契約一意照会のパラメタ作成
		Object[][] inParam = createParamEKK0161A010(ccMsg, svcKeiUcwkNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}
	// ++++++++ v5.00.14 add end ++++++++
	
	// ++++++++ v5.00.14 add start ++++++++
	/**
	 * サービス契約一意照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param svcKeiUcwkNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0161A010(HashMap<String, Object> ccMsg, String svcKeiUcwkNo)
	{
		
		Object[][] arraysParam = {
				{EKK0161A010CBSMsg.TEMPLATEID,          TEMPLATE_ID_EKK0161A010},
				{EKK0161A010CBSMsg.FUNC_CODE,           "2"},
				{EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo},
				{EKK0161A010CBSMsg.KEY_RSV_APLY_YMD,    (String)ccMsg.get("opeDate")}
		};
		
		return arraysParam;
	}
	// ++++++++ v5.00.14 add end ++++++++

	// ANK-3136-00-00 2017/11/28 ADD START
	/**
	 * サービス契約_工事案件一覧照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getEKU0081B010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// お客様情報一意照会のパラメタ作成
		Object[][] inParam = createParamEKU0081B010(ccMsg, svcKeiNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST);
		
		return cBSMsg1List;
		
	}
	
	/**
	 * サービス契約_工事案件一覧照会のパラメタを作成します。
	 * <br>
	 * @param ccMsg
	 * @param kojiakNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKU0081B010(HashMap<String, Object> ccMsg, String svcKeiNo)
	{
		
		Object[][] arraysParam = {
				{EKU0081B010CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKU0081B010},
				{EKU0081B010CBSMsg.FUNC_CODE,                  "1"},
				{EKU0081B010CBSMsg.KEY_SVC_KEI_NO,             svcKeiNo},
			};
		
		return arraysParam;
	}
	
	/**
	 * 工事案件一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param kojiakNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEKU0011A010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String kojiakNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// お客様情報一意照会のパラメタ作成
		Object[][] inParam = createParamEKU0011A010_KeyKojiakNo(ccMsg, kojiakNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			
			cAANMsg = cBSMsg1List[0];
			
		}
		
		return cAANMsg;
		
	}
	
	/**
	 * 工事案件一意照会のパラメタを作成します。(工事案件番号を取得する)
	 * @param ccMsg
	 * @param kojiakNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKU0011A010_KeyKojiakNo(HashMap<String, Object> ccMsg, String kojiakNo)
	{
		
		Object[][] arraysParam = {
									{EKU0011A010CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKU0011A010},
									{EKU0011A010CBSMsg.FUNC_CODE,      "1"},
									{EKU0011A010CBSMsg.KEY_KOJIAK_NO,  kojiakNo},
				};
			
		return arraysParam;
	}
	// ANK-3136-00-00 2017/11/28 ADD END
	
	// ++++++++ v5.00.17 del start ++++++++
//	// ++++++++ v5.00.15 add start ++++++++
//	/**
//	 * 回線対象サービス契約一意照会のパラメタを作成します。
//	 * <br>
//	 * @param svcKeiNo
//	 * @param svcKeiKaisenUcwkNo
//	 * @return Object[][]
//	 */
//	private Object[][] createParamEKK0241A010(String svcKeiNo, String svcKeiKaisenUcwkNo)
//	{
//		
//		Object[][] arraysParam = {
//				{EKK0241A010CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0241A010},
//				{EKK0241A010CBSMsg.FUNC_CODE,                  "1"},
//				{EKK0241A010CBSMsg.KEY_SVC_KEI_NO,             svcKeiNo},
//				{EKK0241A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo}
//		};
//		
//		return arraysParam;
//	}
	// ++++++++ v5.00.15 add end ++++++++

	// ++++++++ v5.00.15 add start ++++++++
//	/**
//	 * サービス契約番号からサービス契約回線内訳番号を特定する。
//	 * @param handle
//	 * @param param
//	 * @param fixedText
//	 * @param caanMsgData
//	 * @return
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private boolean checkKaisenToktei(SessionHandle handle, 
//										IRequestParameterReadWrite param, 
//										String fixedText,
//										CAANMsg caanMsgData) throws Throwable
//	{
//		// 住所変更データによりサービス契約回線内訳番号が複数あるため考慮
//		
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
//		
//		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//		
//		String svcKeiNo = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
//		String svcKeiKaisenUcwkNo = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//		
//		// 回線対象サービス契約一意照会のパラメタ作成
//		Object[][] inParam = createParamEKK0241A010(svcKeiNo, svcKeiKaisenUcwkNo);
//		
//		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, inParam).getCAANMsgList(EKK0241A010CBSMsg.EKK0241A010CBSMSG1LIST);
//		
//		if(cBSMsg1List != null && cBSMsg1List.length > 0)
//		{
//			String kaisenUcwkUseStaymd = cBSMsg1List[0].getString(EKK0241A010CBSMsg1List.KAISEN_UCWK_USE_STAYMD);
//			String kaisenUcwkUseEndymd = cBSMsg1List[0].getString(EKK0241A010CBSMsg1List.KAISEN_UCWK_USE_ENDYMD);
//			String opeDate = (String)ccMsg.get("opeDate");
//			
//			// 回線内訳使用開始年月日 ≦ 運用日 ≦ 回線内訳使用終了年月日 の場合
//			if(JPCUtilCommon.isPastDate(kaisenUcwkUseStaymd, opeDate, "1") && JPCUtilCommon.isFutureDate(kaisenUcwkUseEndymd, opeDate, "1"))
//			{
//				return true;
//			}
//		}
//		return false;
//	}
	// ++++++++ v5.00.15 add end ++++++++

	// ++++++++ v5.00.16 add start ++++++++
//	/**
//	 * 住変中チェックを行います。
//	 * @param handle
//	 * @param param
//	 * @param fixedText
//	 * @param sysid
//	 * @return
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private HashMap<String, Object> checkAdchg(SessionHandle handle, 
//												IRequestParameterReadWrite param, 
//												String fixedText,
//												String sysid) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
//		
//		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//		
//		Long maxSvcKeiKaisenUcwkNo = new Long(-1);
//		Long maxAdchgNo = new Long(-1);
//		HashMap<String, Object> resultMap = new HashMap<String, Object>();
//		
//		// ***** EKK0081B016_サービス契約一覧照会(料金グループコード) *****
//		// SYSIDをキーにサービス契約を検索する
//		Object[][] ekk0081b016IN = createParamEKK0081B016(sysid);
//		
//		CAANMsg[] ekk0081b016MsgList = callSC(handle, scCall, param, fixedText, ekk0081b016IN).getCAANMsgList(EKK0081B016CBSMsg.EKK0081B016CBSMSG1LIST);
//		
//		for (int i = 0; i < ekk0081b016MsgList.length; i++)
//		{
//			String prcGrpCd = ekk0081b016MsgList[i].getString(EKK0081B016CBSMsg1List.PRC_GRP_CD);
//			
//			// 料金グループコードが、"02","03","04"（ホームタイプ、メゾンタイプ、マンションタイプ）
//			//                       "10","11","13"（ｅｏ光電話、ｅｏ光テレビ(K-CAT)、ｅｏ光テレビ(再送信)）の場合
//			if (PRC_GRP_CD_NET.contains(prcGrpCd)
//					|| JKKStrConst.CD00133_10.equals(prcGrpCd)
//					|| JKKStrConst.CD00133_11.equals(prcGrpCd)
//					|| JKKStrConst.CD00133_13.equals(prcGrpCd))
//			{
//				String svcKeiNo = ekk0081b016MsgList[i].getString(EKK0081B016CBSMsg1List.SVC_KEI_NO);
//				
//				// ***** EKK0081A010_サービス契約一意照会 *****
//				// サービス契約のカレントを取得
//				Object[][] ekk0081a010IN = createParamEKK0081A010(ccMsg, svcKeiNo);
//				
//				CAANMsg[] ekk0081a010MsgList = callSC(handle, scCall, param, fixedText, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
//				
//				if (ekk0081a010MsgList == null || ekk0081a010MsgList.length == 0)
//				{
//					continue;
//				}
//				
//				// 照査年月日が未設定の場合
//				String shosaYMD = ekk0081a010MsgList[0].getString(EKK0081A010CBSMsg1List.SHOSA_YMD);
//				
//				if ("".equals(shosaYMD))
//				{
//					continue;
//				}
//				
//				// ***** EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号） *****
//				// (回線使用開始[20991231]〜使用終了[20991231]も取得)
//				Object[][] ekk0251b001IN = createParamEKK0251B001(svcKeiNo);
//				
//				CAANMsg[] ekk0251b001MsgList = callSC(handle, scCall, param, fixedText, ekk0251b001IN).getCAANMsgList(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST);
//				
//				if (ekk0251b001MsgList == null || ekk0251b001MsgList.length == 0)
//				{
//					continue;
//				}
//				
//				// 同一SYSID内で、最大のサービス契約回線内訳番号の判定
//				int max = ekk0251b001MsgList.length - 1;
//				String svcKeiKaisenUcwkNo = ekk0251b001MsgList[max].getString(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
//				
//				// 最大のサービス契約回線内訳番号より取得したサービス契約回線内訳番号が大きい場合
//				if (maxSvcKeiKaisenUcwkNo.compareTo(new Long(svcKeiKaisenUcwkNo)) < 0)
//				{
//					maxSvcKeiKaisenUcwkNo = new Long(svcKeiKaisenUcwkNo);
//					resultMap.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
//				}
//			}
//		}
//		
//		String svcKeiKaisenUcwkNo = (String)resultMap.get("svc_kei_kaisen_ucwk_no");
//		if (svcKeiKaisenUcwkNo != null)
//		{
//			// ***** EKK2091B001_住所変更一覧照会 *****
//			// 移転先サービス契約回線内訳番号にサービス契約回線内訳番号を指定
//			Object[][] ekk2091b001IN = createParamEKK2091B001("", "", "", svcKeiKaisenUcwkNo);
//			
//			CAANMsg[] ekk2091b001MsgList = callSC(handle, scCall, param, fixedText, ekk2091b001IN).getCAANMsgList(EKK2091B001CBSMsg.EKK2091B001CBSMSG1LIST);
//			
//			// 検索結果が存在する場合
//			if (ekk2091b001MsgList != null && ekk2091b001MsgList.length > 0)
//			{
//				for (int i = 0; i < ekk2091b001MsgList.length; i++)
//				{
//					String adchgStat = ekk2091b001MsgList[i].getString(EKK2091B001CBSMsg1List.ADCHG_STAT);
//					
//					// 住所変更ステータスが"001:登録済"以外の場合
//					if (!"001".equals(adchgStat))
//					{
//						// 住変中ではないため対象外
//						continue;
//					}
//					
//					String adchgNo = ekk2091b001MsgList[i].getString(EKK2091B001CBSMsg1List.ADCHG_NO);
//					
//					// 最大の住所変更番号より取得した住所変更番号が大きい場合
//					if (maxAdchgNo.compareTo(new Long(adchgNo)) < 0)
//					{
//						maxAdchgNo = new Long(adchgNo);
//						resultMap.put("adchg_no", adchgNo);
//						resultMap.put("itnm_svkei_kisuw_no", ekk2091b001MsgList[i].getString(EKK2091B001CBSMsg1List.ITNM_SVKEI_KISUW_NO));
//						resultMap.put("itens_svkei_kisuw_no", ekk2091b001MsgList[i].getString(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO));
//					}
//				}
//				
//				ArrayList<String> itenSakiSvcKeiNoList = new ArrayList<String>();
//				ArrayList<String> itenMotoSvcKeiNoList = new ArrayList<String>();
//				String adchgNo = (String)resultMap.get("adchg_no");
//				
//				// 住所変更ステータスが"001:登録済"のレコード(住所変更番号)が存在した場合、住所変更明細の検索を行う
//				if (adchgNo != null)
//				{
//					
//					// ***** EKK2101B001_住所変更明細一覧照会 *****
//					// 住所変更番号と住所変更明細種別コード"01:サービス契約番号"を指定
//					Object[][] ekk2101b001IN = createParamEKK2101B001(adchgNo, "01");
//					
//					CAANMsg[] ekk2101b001MsgList = callSC(handle, scCall, param, fixedText, ekk2101b001IN).getCAANMsgList(EKK2101B001CBSMsg.EKK2101B001CBSMSG1LIST);
//					
//					for (int i = 0; i < ekk2101b001MsgList.length; i++)
//					{
//						String itenSakiSvcKeiNo = ekk2101b001MsgList[i].getString(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
//						
//						// サービス契約番号が設定されている場合
//						// （移転先では利用しないサービスのとき値が未設定となるので考慮）
//						if (itenSakiSvcKeiNo != null)
//						{
//							itenSakiSvcKeiNoList.add(itenSakiSvcKeiNo);
//						}
//						
//					}
//					resultMap.put("iten_saki_svc_kei_no_list", itenSakiSvcKeiNoList);
//					resultMap.put("iten_moto_svc_kei_no_list", itenMotoSvcKeiNoList);
//				}
//				
//			}
//			else
//			{
//				// 住変データなしの場合、処理なし
//			}
//		}
//		
//		return resultMap;
//	}
	// ++++++++ v5.00.17 del end ++++++++

	/**
	 * サービス契約一覧照会(料金グループコード) のパラメタを作成します。
	 * <br>
	 * @param sysid
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0081B016(String sysid)
	{
		Object[][] arraysParam = {
				{EKK0081B016CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0081B016},
				{EKK0081B016CBSMsg.FUNC_CODE,      "2"},
				{EKK0081B016CBSMsg.KEY_SYSID,      sysid},
				{EKK0081B016CBSMsg.KEY_PRC_GRP_CD, ""}
		};
		return arraysParam;
	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）のパラメタを作成します。
	 * <br>
	 * @param svcKeiNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0251B001(String svcKeiNo)
	{
		Object[][] arraysParam = {
				{EKK0251B001CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0251B001},
				{EKK0251B001CBSMsg.FUNC_CODE,      "2"},
				{EKK0251B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo}
		};
		return arraysParam;
	}

	/**
	 * 住所変更一覧照会のパラメタを作成します。
	 * <br>
	 * @param adchgNo
	 * @param mskmNo
	 * @param itnMotoKaisenUwNo
	 * @param itnSakiKaisenUwNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK2091B001(String adchgNo, String mskmNo, String itnMotoKaisenUwNo, String itnSakiKaisenUwNo)
	{
		Object[][] arraysParam = {
				{EKK2091B001CBSMsg.TEMPLATEID,               TEMPLATE_ID_EKK2091B001},
				{EKK2091B001CBSMsg.FUNC_CODE,                "1"},
				{EKK2091B001CBSMsg.KEY_ADCHG_NO,             adchgNo},
				{EKK2091B001CBSMsg.KEY_MSKM_NO,              mskmNo},
				{EKK2091B001CBSMsg.KEY_ITNM_SVKEI_KISUW_NO,  itnMotoKaisenUwNo},
				{EKK2091B001CBSMsg.KEY_ITENS_SVKEI_KISUW_NO, itnSakiKaisenUwNo}
		};
		return arraysParam;
	}

	/**
	 * 住所変更明細一覧照会のパラメタを作成します。
	 * <br>
	 * @param adchgNo
	 * @param adchgDtlSbtCd
	 * @return Object[][]
	 */
	private Object[][] createParamEKK2101B001(String adchgNo, String adchgDtlSbtCd)
	{
		Object[][] arraysParam = {
				{EKK2101B001CBSMsg.TEMPLATEID,           TEMPLATE_ID_EKK2101B001},
				{EKK2101B001CBSMsg.FUNC_CODE,            "1"},
				{EKK2101B001CBSMsg.KEY_ADCHG_NO,         adchgNo},
				{EKK2101B001CBSMsg.KEY_ADCHG_DTL_SBT_CD, adchgDtlSbtCd}
		};
		return arraysParam;
	}

	/**
	 * サービス契約回線内訳一意照会を行います。
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param svcKeiKaisenUcwkNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg getEKK0251A010(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String fixedText,
									String svcKeiKaisenUcwkNo) throws Throwable
	{
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg cAANMsg = null;
		
		// サービス契約一覧照会(料金グループコード) のパラメタ作成
		Object[][] ekk0251a010IN = createParamEKK0251A010(svcKeiKaisenUcwkNo);
		
		CAANMsg[] cBSMsg1List = callSC(handle, scCall, param, fixedText, ekk0251a010IN).getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST);
		
		if(cBSMsg1List != null && cBSMsg1List.length > 0)
		{
			cAANMsg = cBSMsg1List[0];
		}
		
		return cAANMsg;
	}

	/**
	 * サービス契約回線内訳一意照会のパラメタを作成します。
	 * <br>
	 * @param svcKeiKaisenUcwkNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0251A010(String svcKeiKaisenUcwkNo)
	{
		Object[][] arraysParam = {
				{EKK0251A010CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0251A010},
				{EKK0251A010CBSMsg.FUNC_CODE,                  "2"},
				{EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo}
		};
		return arraysParam;
	}
// ++++++++ v5.00.16 add end ++++++++

// ++++++++ v5.00.17 add start ++++++++
	/**
	 * 回線対象サービス契約一覧照会のパラメタを作成します。
	 * <br>
	 * @param svcKeiKaisenUcwkNo
	 * @return Object[][]
	 */
	private Object[][] createParamEKK0241B002(String svcKeiKaisenUcwkNo)
	{
		Object[][] arraysParam = {
				{EKK0241B002CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0241B002},
				{EKK0241B002CBSMsg.FUNC_CODE,                  "1"},
				{EKK0241B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo}
		};
		return arraysParam;
	}
// ++++++++ v5.00.17 add end ++++++++

	/**
	 * 契約中(契約手続中、契約中、中断中)のネット契約のサービス契約を抽出する。
	 * @param svcKeiList
	 * @return List<CAANMsg>
	 */
	private List<CAANMsg> extractSvcKeiStateKei(SessionHandle handle, 
												IRequestParameterReadWrite param, 
												String fixedText,
												List<CAANMsg> svcKeiList) throws Throwable
	{
		
		List<CAANMsg> list = new LinkedList<CAANMsg>();
		
		List<String> statusList = new LinkedList<String>();
		// ++++++++ v5.00.14 del start ++++++++
//		statusList.add("020");
		// ++++++++ v5.00.14 del end ++++++++
		statusList.add("030");
		statusList.add("100");
		statusList.add("210");
		
		// ANK-3136-00-00 2017/11/28 ADD START
		//OM-2018-0001092 MOD START
		////工事案件番号
		//String kojiakNo = null;
		////工事案件ステータス
		//String kojiakStat = null;
		////工事案件種別コード
		//String kojiakSbtCd = null;
		////工事仮キャンセルフラグ
		//String kjKrCnclFlg = null;
		//工事案件番号
		String kojiakNo = "";
		//工事案件ステータス
		String kojiakStat = "";
		//工事案件種別コード
		String kojiakSbtCd = "";
		//工事仮キャンセルフラグ
		String kjKrCnclFlg = "";
		//OM-2018-0001092 MOD END
		
		List<String> kojiStatList = new LinkedList<String>();
		// 工事案件ステータス : 依頼中
		kojiStatList.add(JKKStrConst.CD00474_140);
		// 工事案件ステータス : 宅内調査完了済
		kojiStatList.add(JKKStrConst.CD00474_150);
		// 工事案件ステータス : 工事会社決定済
		kojiStatList.add(JKKStrConst.CD00474_160);
		// 工事案件ステータス : 宅内機器予定登録済
		kojiStatList.add(JKKStrConst.CD00474_170);
		// 工事案件ステータス : 仮鍵開発行依頼済
		kojiStatList.add(JKKStrConst.CD00474_180);
		// 工事案件ステータス : 現場作業完了済
		kojiStatList.add(JKKStrConst.CD00474_190);
		
		// ANK-3136-00-00 2017/11/28 ADD END
		
		for(int i = 0; i < svcKeiList.size(); i++)
		{
			
			CAANMsg caanMsgData = svcKeiList.get(i);
			// 料金グループコードの取得
			String prc_grp_cd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.PRC_GRP_CD));
			String statusCd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
			
			// ++++++++ v5.00.14 upd strat ++++++++
			// 料金グループコードが（"02","03","04"（ホームタイプ、メゾンタイプ、マンションタイプ））かつ、
			// （
			//   （サービス契約ステータスが"020"（照査済）かつ、照査ＯＫ）
			//   または
			//   （サービス契約ステータスが"030"（締結済）,"100"（サービス提供中）,"210"（休止・中断中））
			//  ）の場合
			if(PRC_GRP_CD_NET.contains(prc_grp_cd))
			{
				// サービス契約番号
				String svcKeiNo = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
				// ANK-3136-00-00 2017/11/28 MOD START
				
				//if (("020".equals(statusCd) && isShosaOK(handle, param, fixedText, svcKeiNo))
				//		|| statusList.contains(statusCd))
				//{
				//	// 契約中(契約手続中、契約中、中断中)のネット契約としてカウントする
				//	list.add(caanMsgData);
				//}
				
				// サービス契約_工事案件一覧照会情報取得
				CAANMsg[] cAANMsgCust = getEKU0081B010(handle, param, fixedText, svcKeiNo);
				
				if(cAANMsgCust != null)
				{
				//OM-2018-0001092 ADD START
					if(cAANMsgCust.length != 0)
					{
				//OM-2018-0001092 ADD END
						for(int k = 0; k<cAANMsgCust.length; k++)
						{
							// 工事案件番号を取得
							kojiakNo = getNullToStr(cAANMsgCust[k].getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
							
							// 工事案件一意照会情報取得処理
							CAANMsg cAANMsgKoji = getEKU0011A010(handle, param, fixedText, kojiakNo);
							
							if(cAANMsgKoji != null)
							{	
								//工事案件ステータスを取得
								kojiakStat = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT));
								//工事案件種別コードを取得
								kojiakSbtCd = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
								// IT1-2018-0000127 2018/07/26 MOD START
								// 工事中(工事案件ステータス：依頼中〜現場作業完了済)の工事案件(工事種別コード：新設)の場合
								if(kojiStatList.contains(kojiakStat) && JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd) )
								{
									//工事仮キャンセルフラグを取得
									kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KJ_KR_CNCL_FLG));
									break;
								}
								// IT1-2018-0000127 2018/07/26 MOD END
								
								// IT1-2018-0000127 2018/07/26 DEL START
								//if (("020".equals(statusCd) && isShosaOK(handle, param, fixedText, svcKeiNo))
								//		|| statusList.contains(statusCd))
								//{
								//	// サービス契約ステータスが"020:「照査済」"、"030：「締結済」"の場合
								//	if("020".equals(statusCd) || "030".equals(statusCd))
								//	{
								//		// 工事中(工事案件ステータス：依頼中〜現場作業完了済)の工事案件(工事種別コード：新設)の場合、
								//		// 工事案件の仮キャンセルフラグが有(値設定されている)）以外の場合、カウントする
								//		if(!(kojiStatList.contains(kojiakStat) && JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd) && "1".equals(kjKrCnclFlg)))
								//		{
								//			list.add(caanMsgData);
								//		}
								//	}
								//	else
								//	{
								//		// 契約中(契約手続中、契約中、中断中)のネット契約としてカウントする
								//		list.add(caanMsgData);
								//	}
								//}
								// IT1-2018-0000127 2018/07/26 DEL END
							}
						}
					//OM-2018-0001092 ADD START
					}
					//OM-2018-0001092 ADD END
				}
				// IT1-2018-0000127 2018/07/26 ADD START
				if (("020".equals(statusCd) && isShosaOK(handle, param, fixedText, svcKeiNo))
						|| statusList.contains(statusCd))
				{
					// サービス契約ステータスが"020:「照査済」"、"030：「締結済」"の場合
					if("020".equals(statusCd) || "030".equals(statusCd))
					{
						// 工事案件の仮キャンセルフラグが有(値設定されている)）以外の場合、カウントする
						if(!("1".equals(kjKrCnclFlg)))
						{
							list.add(caanMsgData);
						}
					}
					else
					{
						// 契約中(契約手続中、契約中、中断中)のネット契約としてカウントする
						list.add(caanMsgData);
					}
				}
				// IT1-2018-0000127 2018/07/26 ADD END
				// ANK-3136-00-00 2017/11/28 MOD END

			}
			// ++++++++ v5.00.14 upd end ++++++++
			
		}
		
		return list;
	}

	/**
	 * 解約、キャンセルのネット契約のサービス契約を抽出する。
	 * @param svcKeiList
	 * @return List<CAANMsg>
	 */
	private List<CAANMsg> extractSvcKeiStateCancel(SessionHandle handle, 
													IRequestParameterReadWrite param, 
													String fixedText,
													List<CAANMsg> svcKeiList) throws Throwable
	{
		
		List<CAANMsg> list = new LinkedList<CAANMsg>();
		
		List<String> statusList = new LinkedList<String>();
		statusList.add("220");
		statusList.add("910");
		statusList.add("920");
		
		// ANK-3136-00-00 2017/11/28 ADD START
		//OM-2018-0001092 MOD START
		////工事案件番号
		//String kojiakNo = null;
		////工事案件ステータス
		//String kojiakStat = null;
		////工事案件種別コード
		//String kojiakSbtCd = null;
		////工事仮キャンセルフラグ
		//String kjKrCnclFlg = null;
		//工事案件番号
		String kojiakNo = "";
		//工事案件ステータス
		String kojiakStat = "";
		//工事案件種別コード
		String kojiakSbtCd = "";
		//工事仮キャンセルフラグ
		String kjKrCnclFlg = "";
		//OM-2018-0001092 MOD END
		
		List<String> kojiStatList = new LinkedList<String>();
		// 工事案件ステータス : 依頼中
		kojiStatList.add(JKKStrConst.CD00474_140);
		// 工事案件ステータス : 宅内調査完了済
		kojiStatList.add(JKKStrConst.CD00474_150);
		// 工事案件ステータス : 工事会社決定済
		kojiStatList.add(JKKStrConst.CD00474_160);
		// 工事案件ステータス : 宅内機器予定登録済
		kojiStatList.add(JKKStrConst.CD00474_170);
		// 工事案件ステータス : 仮鍵開発行依頼済
		kojiStatList.add(JKKStrConst.CD00474_180);
		// 工事案件ステータス : 現場作業完了済
		kojiStatList.add(JKKStrConst.CD00474_190);
		
		// ANK-3136-00-00 2017/11/28 ADD END
		
		for(int i = 0; i < svcKeiList.size(); i++)
		{
			
			CAANMsg caanMsgData = svcKeiList.get(i);
			// 料金グループコードの取得
			String prc_grp_cd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.PRC_GRP_CD));
			String statusCd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
			
			// ++++++++ v5.00.14 upd strat ++++++++
			// 料金グループコードが（"02","03","04"（ホームタイプ、メゾンタイプ、マンションタイプ））かつ、
			// （
			//   （サービス契約ステータスが"020"（照査済）かつ、照査ＮＧ(照査ＯＫ以外) ）
			//   または
			//   （サービス契約ステータスが"220"（停止中）,"910"（解約）,"920"（キャンセル済））
			//   または
			//   （サービス契約ステータスが"020"（照査済）が"030"（締結済）
			//     、工事案件ステータスが「依頼済」〜「現場作業完了」、工事種別コードが「新設」）
			//   かつ
			//    工事仮キャンセルフラグが有（値設定されている）
			//  ）の場合
			if(PRC_GRP_CD_NET.contains(prc_grp_cd))
			{
				// サービス契約番号
				String svcKeiNo = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO));
				
				// ANK-3136-00-00 2017/11/28 MOD START
				
			//	if (("020".equals(statusCd) && !isShosaOK(handle, param, fixedText, svcKeiNo))
			//			|| statusList.contains(statusCd)
			//			)
			//	{
			//		// 契約中(契約手続中、契約中、中断中)のネット契約としてカウントする
			//		list.add(caanMsgData);
			//	}
			//}
			// ++++++++ v5.00.14 upd end ++++++++
				
				// サービス契約_工事案件一覧照会情報取得
				CAANMsg[] cAANMsgCust = getEKU0081B010(handle, param, fixedText, svcKeiNo);
				
				if(cAANMsgCust != null)
				{
					//OM-2018-0001092 ADD START
					if(cAANMsgCust.length != 0)
					{
					//OM-2018-0001092 ADD END
						for(int k = 0; k<cAANMsgCust.length; k++)
						{
							// 工事案件番号を取得
							kojiakNo = getNullToStr(cAANMsgCust[k].getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
							
							// 工事案件一意照会情報取得処理
							CAANMsg cAANMsgKoji = getEKU0011A010(handle, param, fixedText, kojiakNo);
							
							if(cAANMsgKoji != null)
							{	
								//工事案件ステータスを取得
								kojiakStat = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT));
								//工事案件種別コードを取得
								kojiakSbtCd = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
								// IT1-2018-0000127 2018/07/26 MOD START
								// 工事中(工事案件ステータス：依頼中〜現場作業完了済)の工事案件(工事種別コード：新設)の場合
								if(kojiStatList.contains(kojiakStat) && JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd) )
								{
									//工事仮キャンセルフラグを取得
									kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KJ_KR_CNCL_FLG));
									break;
								}
								// IT1-2018-0000127 2018/07/26 MOD END
								// IT1-2018-0000127 2018/07/26 DEL START
								//if (("020".equals(statusCd) && !isShosaOK(handle, param, fixedText, svcKeiNo))
								//		|| statusList.contains(statusCd)
								//		|| (("020".equals(statusCd) || "030".equals(statusCd)) && kojiStatList.contains(kojiakStat) && JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd)
								//				&& "1".equals(kjKrCnclFlg)))
								//{
								//	// 契約中(契約手続中、契約中、中断中)のネット契約としてカウントする
								//	list.add(caanMsgData);
								//}
								// IT1-2018-0000127 2018/07/26 DEL END
							}
						}
					//OM-2018-0001092 ADD START
					}
					//OM-2018-0001092 ADD END
				}
				// IT1-2018-0000127 2018/07/26 ADD START
				if (("020".equals(statusCd) && !isShosaOK(handle, param, fixedText, svcKeiNo))
						|| statusList.contains(statusCd)
						|| (("020".equals(statusCd) || "030".equals(statusCd)) && "1".equals(kjKrCnclFlg)))
				{
					// 解約、キャンセルのネット契約としてカウントする
					list.add(caanMsgData);
				}
				// IT1-2018-0000127 2018/07/26 ADD END
				// ANK-3136-00-00 2017/11/28 MOD END
			}
			
		}
		
		return list;
	}

	/**
	 * 電話情報のサービス契約を抽出する。
	 * @param svcKeiList
	 * @return List<CAANMsg>
	 */
	private List<CAANMsg> extractTel(List<CAANMsg> svcKeiList)
	{
		
		List<CAANMsg> list = new LinkedList<CAANMsg>();
		
		for(int i = 0; i < svcKeiList.size(); i++)
		{
			
			CAANMsg caanMsgData = svcKeiList.get(i);
			// 料金グループコードの取得
			String prc_grp_cd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.PRC_GRP_CD));
			String statusCd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
			
			// 料金グループコードが"10"（ｅｏ光電話）かつ、
			// サービス契約ステータスが"010"（受付済）以外の場合
			if(JKKStrConst.CD00133_10.equals(prc_grp_cd) && !"010".equals(statusCd))
			{
				
				list.add(caanMsgData);
				
			}
			
		}
		
		return list;
	}

	/**
	 * TV情報のサービス契約を抽出する。
	 * @param svcKeiList
	 * @return List<CAANMsg>
	 */
	private List<CAANMsg> extractTV(List<CAANMsg> svcKeiList)
	{
		
		List<CAANMsg> list = new LinkedList<CAANMsg>();
		
		List<String> pcrsList = new LinkedList<String>();
		pcrsList.add("A24");
		pcrsList.add("A64");
		
		for(int i = 0; i < svcKeiList.size(); i++)
		{
			
			CAANMsg caanMsgData = svcKeiList.get(i);
			// 料金グループコードの取得
			String prc_grp_cd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.PRC_GRP_CD));
			String statusCd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
			String pcrs_cd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.PCRS_CD));
			
			// "11"（ｅｏ光テレビ（Ｋ−ＣＡＴ））または、
			// （料金グループコードが"13"（ｅｏ光テレビ（再送信））かつ、
			// 料金コースコードが"A24"、"A64"（ｅｏ光テレビ再送信（多チャンネル）SDコース、HDコース））かつ、
			// サービス契約ステータスが"010"（受付済）以外の場合
			if((JKKStrConst.CD00133_11.equals(prc_grp_cd) ||
				(JKKStrConst.CD00133_13.equals(prc_grp_cd) && pcrsList.contains(pcrs_cd))) && 
				!"010".equals(statusCd))
			{
				
				list.add(caanMsgData);
				
			}
			
		}
		
		return list;
	}

	/**
	 * TVのサービス契約の優先度の高いサービス契約を取得します。
	 *   ・優先順１：サービス契約ステータスが「100」または、「210」または、「220」
	 *   ・優先順２：サービス契約ステータスが「020」または、「030」
	 *   ・優先順３：サービス契約ステータスが「910」または、「920」
	 *   ・優先順４：上記以外
	 * @param list
	 * @return List<CAANMsg>
	 */
	private List<CAANMsg> extractTVByPriority(List<CAANMsg> list)
	{
		
		// 優先度の低い順に並べた配列
		String[] arrayStatus = {"920", "910", "030", "020", "220", "210", "100"};
		
		HashMap<String, Object> map = new HashMap<String, Object>();
		
		for(int i = 0; i < arrayStatus.length; i++)
		{
			
			for(int j = 0; j < list.size(); j++)
			{
				
				CAANMsg caanMsgData = list.get(j);
				String strStatus = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT));
				
				if(arrayStatus[i].equals(strStatus))
				{
					
					map.put("KEY_SVC_KEI_TV", caanMsgData);
					
				}
			}
			
		}
		
		List<CAANMsg> rtnList = new LinkedList<CAANMsg>();
		
		// 優先度の高い順で抽出結果がなかった場合は、1件目を格納
		if(map.size() == 0)
		{
			rtnList.add(list.get(0));
		}
		else
		{
			// 優先度の高いサービス契約を格納
			rtnList.add((CAANMsg)map.get("KEY_SVC_KEI_TV"));
		}
		
		return rtnList;
	}

	/**
	 * 半角カタカナの編集を行います。
	 * @param str
	 * @param huzn_kiyk_chek 法人契約チェック
	 * @return String
	 */
	private String editHankakuKana(String str, String huzn_kiyk_chek)
	{
		// 全角空白、半角空白の除去
		String rtnStr = removeSpace(str);
		
		// 法人契約チェックが「1：法人」の場合
		if("1".equals(huzn_kiyk_chek))
		{
			// 特殊文字列の除去
			rtnStr = removeSpecialHalfKana(rtnStr);
		}
		
		// 半角カタカナ → 全角カタカナに変換
		rtnStr = JPCUtilCommon.convHalfToFullByKata(rtnStr);
		
		return rtnStr;
	}
	
	/**
	 * カナ小文字を大文字に変換
	 * 
	 * @param str
	 * @return
	 */
	private String kanaUpperCase(String str)
	{
		StringBuilder strbuild = new StringBuilder();
		for (int i=0; i<str.length(); i++)
		{
			int idx = UPPER_CASE_KANA_LIST[0].indexOf(str.charAt(i));
			if (idx != -1)
			{
				strbuild.append(UPPER_CASE_KANA_LIST[1].get(idx));
			}
			else
			{
				strbuild.append(str.charAt(i));
			}
		}
		return strbuild.toString();
	}

	/**
	 * 全角空白、半角空白の除去を行う。
	 * @param str
	 * @return String
	 */
	private String removeSpace(String str)
	{
		if(str == null)
		{
			return null;
		}
		
		// 半角空白の除去
		String rtnStr = str.replace(HANKAKU_SPACE, BLANK);
		
		// 全角空白の除去
		rtnStr = rtnStr.replace(ZENKAKU_SPACE, BLANK);
		
		return rtnStr;
	}

	/**
	 * 特殊文字列( "(ｶ", "ｶ)", "(ﾕ", "ﾕ)", "(ｼﾔ", "ｼﾔ)", "(ｻﾞｲ", "ｻﾞｲ)" )の除去を行う。
	 * @param str
	 * @return String
	 */
	private String removeSpecialHalfKana(String str)
	{
		if(str == null)
		{
			return null;
		}
		
		String rtnStr = str;
		
		for(int i = 0; i < SPECIAL_HALF_KANA.length; i++)
		{
			
			// 全角空白の除去
			rtnStr = rtnStr.replace(SPECIAL_HALF_KANA[i], BLANK);
			
		}
		
		return rtnStr;
	}
	
	/**
	 * 法人格文字( "株式会社","有限会社","財団法人","社団法人","（株）","（有）","（財）","（社）" )の除去を行う。
	 * @param str
	 * @return String
	 */
	private String removeHojinkakuMoji(String str)
	{
		if(str == null)
		{
			return null;
		}
		
		String rtnStr = str;
		
		for(int i = 0; i < HOJINKAKU_MOJI.length; i++)
		{
			
			// 全角空白の除去
			rtnStr = rtnStr.replace(HOJINKAKU_MOJI[i], BLANK);
			
		}
		
		return rtnStr;
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData) throws Throwable
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		editErrorInfoCom(param, templates, (Integer)return_code, dataMapKey, mappingData);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", return_code.toString(), status);
		}
		return msg;
	}
	
	/**
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		String svcIf = (String)mappingData[0][1];
		
		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));
		
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if ("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (0 != returnCode)
		{
			templateStatus = 9000;
		}

		if (null == JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)))
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (null == obj)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap<String, String> inMap = null;
		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);
		
		Iterator<String> it = inMap.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			if (key.endsWith("_err"))
			{
				if (!template.isNull(key))
				{
					if (!inMap.containsKey(key))
					{
						inMap.put(key, template.getString(key));
					}
				}
			}
		}
		
		return param;
	}

	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey,
														Object[][] mappingData) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (0 != returnCode)
		{
			templateStatus = 9000;
		}

		if (null == JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)))
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (null == obj)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap<String, String> inMap = null;

		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if (((String)mappingData[i][0]).startsWith("key_"))
			{
				if (!template.isNull(mappingData[i][0] + "_err"))
				{
					if (!inMap.containsKey(mappingData[i][0] + "_err"))
					{
						inMap.put(mappingData[i][0] + "_err", template.getString(mappingData[i][0] + "_err"));
					}
				}
			}
		}
		return param;
	}

	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "";
		}
		return str;
	}
	
}
