/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCHGetCustSkkeiInfoCC
*	ソースファイル名：JCHGetCustSkkeiInfoCC.java
*	作成者			：FJ)クウン
*	日付			：2017年06月23日
*＜機能概要＞
*	お客様請求契約一覧情報を取得する
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v33.00.00	2017/6/23	FJ)クウン	新規作成
*	v33.00.00	2017/7/07	FJ)クウン	「IT1-2017-0000093」対応
*   v33.00.01	2017/08/08  FJ)舘山     【ANK-3179-00-00】解約後請求書参照可否＝可の場合、契約ステータスを解約済みで返す
*   v44.00.00   2019/05/31  FJ)澤田		【ANK-3561-00-00】一部契約解約時の過去分請求明細表示
*   v53.00.00   2021/03/17  GDC)ニール     【ANK-4009-00-00】CX戦略WG方針対応
*   v55.00.00   2021/11/19  FJ)謝		【ANK-4207-00-00】請求契約一覧照会への支払方法変更日追加
*	v63.00.00   2022/11/20  FJ)渋谷		【ANK-4329-00-00】クレジットカード認証時の3Dセキュア対応
*	v63.00.01   2022/12/07  FJ)渋谷		【ANK-4329-05-00】クレジットカード認証時の3Dセキュア対応
*	v63.00.02   2022/12/22  FJ)渋谷		【IT1-2022-0000081】請求方法コードが"窓口"の返却値不正
*	v63.00.03   2022/01/20  FJ)西窪		【ANK-4329-06-00】クレジットカード認証時の3Dセキュア対応正
*   v67.00.00   2023/07/21  FJ)吉川		【ANK-4462-00-00】マイページでのクレジットカード情報表示改善

**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
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.ErrorLevel;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.bpm.parameter.StatusArea;
import com.fujitsu.futurity.bp.x21.bpm.parameter.StatusInfo;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.bp.x21.values.OUTBREAK_AREA;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.ErrorInfoMapKeys;
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.JCKStrConst;
import eo.common.constant.JFUStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.ECH0891B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0891B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491B008CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B008CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3401A020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3401A020CBSMsg1List;

/**
 * お客様請求契約一覧情報取得。<p>
 * <BR>
 * @author 富士通
 */
public class JCHGetCustSkkeiInfoCC extends AbstractCommonComponent
{
	/** お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	
	/** 月別請求契約_お客様一覧照会 */
	private static final String TEMPLATE_ID_ECH0891B010 = "ECH0891B010";
	
	/** 請求契約一覧照会(CMP) */
	private static final String TEMPLATE_ID_EKK0491B008 = "EKK0491B008";
	
	// ANK-4329-00-00 ADD START
	/** 支払方法変更受付情報(クレジットカード) */
	private static final String TEMPLATE_ID_EKK3401A020 = "EKK3401A020";
	// ANK-4329-00-00 ADD END
	
	/** 識別コード */
	private static final String MAP_CC_ID = "KKSV081701SC";
	
	/** 数値_0 */
	private static final Integer NUM_0 = 0;

	/** 数値_5 */
	private static final Integer NUM_6 = 6;
	
	/** 数値_24 */
	private static final Integer NUM_24 = 24;	
	
	/** String_1 */
	private static final String STRING_1 = "1";

	/** String_2 */
	private static final String STRING_2 = "2";
	
	// ANK-4329-05-00 ADD START
	/** チェックマップキー	 */
	private static final String CHECK_MAP_KEY = "CHECKCC";
	// ANK-4329-06-00 ADD START
	/** チェックマップキー	 */
	private static final String CHECK_MAP_KEY2 = "CHECKCC2";
	// ANK-4329-06-00 ADD END
	
	/** 関連チェックエラーコード	 */
	private static final int RELATION_ERR = 1100;
	
	/** リターンコード(正常)  */
	protected static final int RETURN_CODE_NORMAL = 0;
	
	/** チェックエラー区分 */
	private static String check_err_kbn = "";
	
	/** チェック結果区分：0(チェックOK) */
	private static final String CKRLT_KBN_0 = "0";
	
	/** チェック結果区分：1(共通関連チェックNG) */
	private static final String CKRLT_KBN_1 = "1";
	
	/** チェック結果区分：2(設備卸チェックNG) */
	private static final String CKRLT_KBN_2 = "2";
	
	/** チェック結果区分：3(契約状態チェックNG)	 */
	private static final String CKRLT_KBN_3 = "3";
	
	/** チェック結果区分：4(契約変更手続きチェックNG)*/
	private static final String CKRLT_KBN_4 = "4";
	
	/** チェック結果区分：5(支払方法未来予約チェックNG)	 */
	private static final String CKRLT_KBN_5 = "5";
	
	/** 契約状態チェックエラー１ */
	private static final String KEI＿STAT_CHK_ERR_NAME_1 = "seikyu_yokusi_cd_err";
	
	/**  契約状態チェックエラー２ */
	private static final String KEI＿STAT_CHK_ERR_NAME_2 = "cust_name_err";
	
	/** 契約手続きチェックエラー１ */
	private static final String KEI_TTDK_CHK_ERR_NAME_1 = "diff_seikyno_rsv_err";
	
	/** 契約手続きチェックエラー２	 */
	private static final String KEI_TTDK_CHK_ERR_NAME_2 = "kktk_svc_cd_014_err";
	
	/** 契約手続きチェックエラー３*/
	private static final String KEI_TTDK_CHK_ERR_NAME_3 = "kktk_svc_cd_015_err";
	
	/** 支払方法未来予約エラー１	 */
	private static final String PAY_WAY_FT_RV_CHK_ERR_NAME_1 = "same_seikyno_rsv_err";
	
	/** 請求方法コード:"1"(窓口) */
	private static final String SEIKY_WAY_CD_1 = "1";
	
	// ANK-4329-06-00 ADD START	
	private static final String[][] STAT_YUSENJUN = new String[][] {
		{"100","1"},
		{"220","2"},
		{"030","3"},
		{"020","4"},
		{"210","5"}
	};
	// ANK-4329-06-00 ADD END

	// ANK-4329-05-00 ADD END
	/**
	 * 月別請求契約_お客様一覧照会を取得する。
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getCustSkkeiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// SYSIDを取得する。
		String sysid = (String)ccMsg.get("sysid");
		
		//運用年月日を取得する。
		String unyoYMD = JPCBPCommon.getOpeDate(null);
		// 過去2年運用年月日を取得
		String unyoLastYMD  = JPCDateUtil.addMonth(unyoYMD, -NUM_24);
		// 運用年月Fromを取得する。
		String unyoLastYmFrom = unyoLastYMD.substring(NUM_0, NUM_6);
		// 運用年月Toを取得する。
		String unyoYmTo = unyoYMD.substring(NUM_0, NUM_6);
		
		// ***** ECK0011A010（お客様一意照会）情報取得*****
		Object[][] eck0011a010In = editInMsgECK0011A010(sysid, unyoYMD);
		CAANMsg[] eck0011a010Out = callSC(handle, scCall, param, fixedText, eck0011a010In).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		
		if (eck0011a010Out != null && eck0011a010Out.length > 0)
		{
			//解約後請求書参照可否取得
			String sanshoKahi = eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.DSL_AF_SKSSNS_KH);
			//お客様入退会コード
			String taikaiRs = eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.CUST_NTAIKAI_CD);
			//会員種別コード
			String kaiSbtCd = eck0011a010Out[0].getString(ECK0011A010CBSMsg1List.MEMBER_SBT_CD);
			
			//お客様入退会コード = "0"（退会）
			//かつ　会員種別が"10"(マスター会員（個人）) 又は"20"（マスター会員（法人））
			if (JCKStrConst.CD00260_JOIN.equals(taikaiRs) 
					&& (JCKStrConst.CD00039_MASTER_KOJIN.equals(kaiSbtCd) || JCKStrConst.CD00039_MASTER_HOJIN.equals(kaiSbtCd))){
				// ***** EKK0491B008（請求契約一覧照会(CMP)）情報取得*****
				//---------v33.00.00 IT1-2017-0000093_ADD START---------//
				// 機能コードを取得する。
				String funcCd  = (String)ccMsg.get("func_code");
				Object[][] ekk0491b008In = editInMsgEKK0491B008(sysid, funcCd);
				//---------v33.00.00 IT1-2017-0000093_ADD END-----------//
				//---------v33.00.00 IT1-2017-0000093_DEL START---------//
				//Object[][] ekk0491b008In = editInMsgEKK0491B008(sysid);
				//---------v33.00.00 IT1-2017-0000093_DEL END-----------//
				CAANMsg[] ekk0491b008Out = callSC(handle, scCall, param, fixedText, ekk0491b008In).getCAANMsgList(EKK0491B008CBSMsg.EKK0491B008CBSMSG1LIST);
				// ANK-4329-00-00 MOD START
//				editResult(ekk0491b008Out, param);
				editResult(ekk0491b008Out, param, handle, scCall,fixedText);
				// ANK-4329-00-00 MOD END
				// ANK-3561-00-00 ADD START
				List<String> seikyCmpList = new ArrayList<String>();
				// 機能コードが1の場合
				if (JPCModelConstant.FUNC_CD_1.equals(funcCd))
				{
					// 請求リストの格納する。
					for (CAANMsg msg : ekk0491b008Out)
					{
						seikyCmpList.add(msg.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
					}
					// ***** ECH0891B010（月別請求契約_お客様一覧照会）情報取得*****
					Object[][] ech0891b010In = editInMsgECH0891B010(sysid, unyoLastYmFrom, unyoYmTo);
					CAANMsg[] ech0891b010Out = callSC(handle, scCall, param, fixedText, ech0891b010In).getCAANMsgList(ECH0891B010CBSMsg.ECH0891B010CBSMSG1LIST);
					
					for (CAANMsg msg : ech0891b010Out)
					{
						//取得したレコードの請求契約番号が「 3.1.2.4 サービスI/F２（請求契約一覧照会（CMP））」の取得結果に存在しない場合は、取得したレコードを返却値に追加する
						if (!seikyCmpList.contains(msg.getString(ECH0891B010CBSMsg1List.SEIKY_KEI_NO)))
						{
							// ANK-4329-00-00 MOD START
							//レコードリストに追加する。
//							editMap(msg, param);
							editMap(msg, param, handle, scCall,fixedText);
							// ANK-4329-00-00 MOD END
						}
					}
				}
				// ANK-3561-00-00 ADD END
			} else{
				// 解約後請求書参照可否：１（可）の場合
				 if(STRING_1.equals(sanshoKahi)){
					// ***** ECH0891B010（月別請求契約_お客様一覧照会）情報取得*****
					Object[][] ech0891b010In = editInMsgECH0891B010(sysid, unyoLastYmFrom, unyoYmTo);
					CAANMsg[] ech0891b010Out = callSC(handle, scCall, param, fixedText, ech0891b010In).getCAANMsgList(ECH0891B010CBSMsg.ECH0891B010CBSMSG1LIST);
// ▼▼▼ ANK-3179-00-00 2017/08/08 Modify START
					// ANK-4329-00-00 MOD START
//					editResultAfUnsubscribe(ech0891b010Out, param);
					editResultAfUnsubscribe(ech0891b010Out, param, handle, scCall,fixedText);
					// ANK-4329-00-00 MOD END
// ▲▲▲ ANK-3179-00-00 2017/08/08 Modify END
				}
				 else {
					 // ANK-4009-00-00 DEL START
					 // CAANMsg[] cAANMsg = new CAANMsg[0];
					 // editResult(cAANMsg, param);
					 // ANK-4009-00-00 DEL END
					 
					// ANK-4009-00-00 ADD START
					 String funcCd  = (String)ccMsg.get("func_code");
					 
					 if (JPCModelConstant.FUNC_CD_2.equals(funcCd) && JCKStrConst.CD00039_OPEN.equals(kaiSbtCd)) {
						 Object[][] ekk0491b008In = editInMsgEKK0491B008(sysid, funcCd);
						 CAANMsg[] ekk0491b008Out = callSC(handle, scCall, param, fixedText, ekk0491b008In).getCAANMsgList(EKK0491B008CBSMsg.EKK0491B008CBSMSG1LIST);
						 ArrayList<CAANMsg> templateList = new ArrayList<CAANMsg>();
						 for (CAANMsg msg : ekk0491b008Out)
						 {
							 // サービス契約ステータスが受付済の場合
							 if ("010".equals(msg.getString(EKK0491B008CBSMsg1List.SVC_KEI_STAT)))
							 {
								 templateList.add(msg);
							 }
						 }
						 CAANMsg[] templates = templateList.toArray(new CAANMsg[templateList.size()]);
						// ANK-4329-00-00 MOD START
//						 editResult(templates, param);
						 editResult(templates, param, handle, scCall,fixedText);
						// ANK-4329-00-00 MOD END
						}
					 	else {
						 CAANMsg[] cAANMsg = new CAANMsg[0];
						// ANK-4329-00-00 MOD START
//						 editResult(cAANMsg, param);
						 editResult(cAANMsg, param, handle, scCall,fixedText);
						// ANK-4329-00-00 MOD END
					 }
					// ANK-4009-00-00 ADD END
				 }
			}
		}
		else {
			// ANK-4329-00-00 MOD START
//			editResult(eck0011a010Out, param);
			editResult(eck0011a010Out, param, handle, scCall,fixedText);
			// ANK-4329-00-00 MOD END
		}
		//ANK-4329-05-00 ADD START
		 kanrenchk(ccMsg,param,handle,fixedText);
		//ANK-4329-05-00 ADD END
		return param;
	}

	/**お客様一意照会情報を取得
	 * @param sysid SYSID
	 * @param unyoYMD 運用適用日
	 * 
	 * @return Object[][]
	 */
	private Object[][] editInMsgECK0011A010(String sysid, String unyoYMD)
	{
		Object[][] eck0011a010In = {
				{ECK0011A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_ECK0011A010},
				{ECK0011A010CBSMsg.FUNC_CODE,        STRING_2},
				{ECK0011A010CBSMsg.KEY_SYSID,        sysid},
				{ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, unyoYMD},
			};
		return eck0011a010In;
	}	

	/**月別請求契約_お客様一覧照会情報を取得
	 * @param sysid SYSID
	 * @param unyoLastYmFrom 運用年月From
	 * @param unyoYmTo 運用年月To
	 * 
	 * @return Object[][]
	 */
	private Object[][] editInMsgECH0891B010(String sysid, String unyoLastYmFrom, String unyoYmTo)
	{
		Object[][] ech0891b010In = {
				{ECH0891B010CBSMsg.TEMPLATEID,          TEMPLATE_ID_ECH0891B010},
				{ECH0891B010CBSMsg.FUNC_CODE,           STRING_1},
				{ECH0891B010CBSMsg.KEY_SYSID,           sysid},
				{ECH0891B010CBSMsg.KEY_SEIKYU_YM_FROM,  unyoLastYmFrom},
				{ECH0891B010CBSMsg.KEY_SEIKYU_YM_TO,    unyoYmTo}
		};
		return ech0891b010In;
	}		

	/**請求契約一覧照会(CMP)情報を取得
	 * @param sysid SYSID
	 * @param func_code 機能コード
	 * @return Object[][]
	 */
	private Object[][] editInMsgEKK0491B008(String sysid, String func_code)
	{
		Object[][] ech0891b010In = {
				{ECH0891B010CBSMsg.TEMPLATEID,          TEMPLATE_ID_EKK0491B008},
				//---------v33.00.00 IT1-2017-0000093_DEL START---------//
				//{ECH0891B010CBSMsg.FUNC_CODE,           STRING_1},
				//---------v33.00.00 IT1-2017-0000093_DEL START---------//
				//---------v33.00.00 IT1-2017-0000093_ADD START---------//
				{ECH0891B010CBSMsg.FUNC_CODE,           func_code},
				//---------v33.00.00 IT1-2017-0000093_ADD END-----------//
				{ECH0891B010CBSMsg.KEY_SYSID,           sysid}
		};
		return ech0891b010In;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.07.16
	 */
	// ANK-4329-00-00 MOD START
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite Result(CAANMsg[] templates,
//			IRequestParameterReadWrite param) throws Throwable {
		@SuppressWarnings("unchecked")
		private IRequestParameterReadWrite editResult(CAANMsg[] templates,
				IRequestParameterReadWrite param,
				SessionHandle handle,
				ServiceComponentRequestInvoker scCall,
				String dataMapKey
				) throws Throwable {
	// ANK-4329-00-00 MOD END

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = new ArrayList();

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(MAP_CC_ID);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(MAP_CC_ID, dataMap);
		}

		for (int i = 0; i < templates.length; i++) {
			CAANMsg childTemplate = templates[i];
			if ( i >= dataList.size()) {
				dataList.add(new HashMap());
			}
			HashMap childMap = (HashMap)dataList.get(i);

			// ANK-4329-00-00 ADD START
			String crecard_shosa_stat = "";
			// 請求契約番号があれば支払方法変更受付情報の一意照会を行う
			if(!JKKStringUtil.isNullBlank(childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO)))
			{
				// ***** EKK3281A010（支払方法変更受付情報（クレジットカード）一意照会）情報取得*****
				Object[][] EKK3401A020In = InMsgEKK3401A020(childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
				CAANMsg[] EKK3401A020Out = callSC(handle, scCall, param, dataMapKey, EKK3401A020In).getCAANMsgList(EKK3401A020CBSMsg.EKK3401A020CBSMSG1LIST);
				// クレジットカード照査ステータス
				if(EKK3401A020Out!= null && EKK3401A020Out.length > 0)
				{
					crecard_shosa_stat = EKK3401A020Out[0].getString(EKK3401A020CBSMsg1List.CRECARD_SHOSA_STAT);
				}
			}
			// ANK-4329-00-00 ADD END
			// ANK-4329-05-00 ADD START
			//	請求方法コード
			String seiky_way_cd = "";
			// ANK-4329-05-00 ADD END
			
			// 請求契約一覧照会マップ.レコード.サービス契約番号 ← 請求契約一覧明細リスト.サービス契約番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_KEI_NO)) {
				childMap.put("svc_kei_no", new String());
			} else {
				childMap.put("svc_kei_no", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_KEI_NO));
			}
			
			// 請求契約一覧照会マップ.レコード.サービス契約ステータス ← 請求契約一覧明細リスト.サービス契約ステータス
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_KEI_STAT)) {
				childMap.put("svc_kei_stat", new String());
			} else {
				childMap.put("svc_kei_stat", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_KEI_STAT));
			}
			
			// 請求契約一覧照会マップ.レコード.サービス終了年月日 ← 請求契約一覧明細リスト.サービス終了年月日
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_ENDYMD)) {
				childMap.put("svc_endymd", new String());
			} else {
				childMap.put("svc_endymd", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_ENDYMD));
			}
			
			// 請求契約一覧照会マップ.レコード.請求契約番号 ← 請求契約一覧明細リスト.請求契約番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_KEI_NO)) {
				childMap.put("seiky_kei_no", new String());
			} else {
				childMap.put("seiky_kei_no", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
			}
			
			// 請求契約一覧照会マップ.レコード.請求方法コード ← 請求契約一覧明細リスト.請求方法コード
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_WAY_CD)) {
				childMap.put("seiky_way_cd", new String());
			} else {
				// ANK-4329-05-00 ADD START
				seiky_way_cd = childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_WAY_CD);
				// ANK-4329-05-00 ADD END
				childMap.put("seiky_way_cd", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_WAY_CD));
			}
			
			// 請求契約一覧照会マップ.レコード.督促ステータス ← 請求契約一覧明細リスト.督促ステータス
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.TOKUSOKU_STAT)) {
				childMap.put("tokusoku_stat", new String());
			} else {
				childMap.put("tokusoku_stat", childTemplate.getString(EKK0491B008CBSMsg1List.TOKUSOKU_STAT));
			}
			
			// 請求契約一覧照会マップ.レコード.請求契約異動予約有無 ← 請求契約一覧明細リスト.請求契約異動予約有無
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_KEI_IDO_RSV_UM)) {
				childMap.put("seiky_kei_ido_rsv_um", new String());
			} else {
				childMap.put("seiky_kei_ido_rsv_um", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_IDO_RSV_UM));
			}
			
			// 請求契約一覧照会マップ.レコード.クレジットカード会社名 ← 請求契約一覧明細リスト.クレジットカード会社名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_COMP_NM)) {
				childMap.put("crecard_comp_nm", new String());
			} else {
				childMap.put("crecard_comp_nm", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_COMP_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.クレジットカード番号 ← 請求契約一覧明細リスト.クレジットカード番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_NO)) {
				childMap.put("crecard_no", new String());
			} else {
				childMap.put("crecard_no", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_NO));
			}
			
// ANK-4462-00-00 ADD START
			// 請求契約一覧照会マップ.レコード.クレジットカード有効期限 ← 請求契約一覧明細リスト.クレジットカード有効期限
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_YK_KIGEN)) {
				childMap.put("crecard_yk_kigen", new String());
			} else {
				childMap.put("crecard_yk_kigen", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_YK_KIGEN));
			}
// ANK-4462-00-00 ADD END
			
			// 請求契約一覧照会マップ.レコード.金融機関名 ← 請求契約一覧明細リスト.金融機関名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.BANK_NM)) {
				childMap.put("bank_nm", new String());
			} else {
				childMap.put("bank_nm", childTemplate.getString(EKK0491B008CBSMsg1List.BANK_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.金融機関支店名 ← 請求契約一覧明細リスト.金融機関支店名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.BANK_SHITEN_NM)) {
				childMap.put("bank_shiten_nm", new String());
			} else {
				childMap.put("bank_shiten_nm", childTemplate.getString(EKK0491B008CBSMsg1List.BANK_SHITEN_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.預金種目名 ← 請求契約一覧明細リスト.預金種目名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.YOKIN_SHUMOKU_NM)) {
				childMap.put("yokin_shumoku_nm", new String());
			} else {
				childMap.put("yokin_shumoku_nm", childTemplate.getString(EKK0491B008CBSMsg1List.YOKIN_SHUMOKU_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.口座番号 ← 請求契約一覧明細リスト.口座番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.KOZA_NO)) {
				childMap.put("koza_no", new String());
			} else {
				childMap.put("koza_no", childTemplate.getString(EKK0491B008CBSMsg1List.KOZA_NO));
			}
			
			// 請求契約一覧照会マップ.レコード.請求書発行要否 ← 請求契約一覧明細リスト.請求書発行要否
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKYUS_HAKKO_YH)) {
				childMap.put("seikyus_hakko_yh", new String());
			} else {
				childMap.put("seikyus_hakko_yh", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKYUS_HAKKO_YH));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先カナ名 ← 請求契約一覧明細リスト.送付先カナ名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SHS_KANA)) {
				childMap.put("shs_kana", new String());
			} else {
				childMap.put("shs_kana", childTemplate.getString(EKK0491B008CBSMsg1List.SHS_KANA));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先名 ← 請求契約一覧明細リスト.送付先名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_NM)) {
				childMap.put("sohus_nm", new String());
			} else {
				childMap.put("sohus_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先部課名 ← 請求契約一覧明細リスト.送付先部課名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_BKM)) {
				childMap.put("sohus_bkm", new String());
			} else {
				childMap.put("sohus_bkm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_BKM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先担当者名 ← 請求契約一覧明細リスト.送付先担当者名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_TNTSHA_NM)) {
				childMap.put("sohus_tntsha_nm", new String());
			} else {
				childMap.put("sohus_tntsha_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_TNTSHA_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先住所コード ← 請求契約一覧明細リスト.送付先住所コード
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_AD_CD)) {
				childMap.put("sohus_ad_cd", new String());
			} else {
				childMap.put("sohus_ad_cd", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_AD_CD));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先郵便番号 ← 請求契約一覧明細リスト.送付先郵便番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_PCD)) {
				childMap.put("sohus_pcd", new String());
			} else {
				childMap.put("sohus_pcd", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_PCD));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先都道府県名 ← 請求契約一覧明細リスト.送付先都道府県名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_STATE_NM)) {
				childMap.put("sohus_state_nm", new String());
			} else {
				childMap.put("sohus_state_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_STATE_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先市区町村名 ← 請求契約一覧明細リスト.送付先市区町村名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_CITY_NM)) {
				childMap.put("sohus_city_nm", new String());
			} else {
				childMap.put("sohus_city_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_CITY_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先大字通称名 ← 請求契約一覧明細リスト.送付先大字通称名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_OAZTSU_NM)) {
				childMap.put("sohus_oaztsu_nm", new String());
			} else {
				childMap.put("sohus_oaztsu_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_OAZTSU_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先字丁目名 ← 請求契約一覧明細リスト.送付先字丁目名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_AZCHO_NM)) {
				childMap.put("sohus_azcho_nm", new String());
			} else {
				childMap.put("sohus_azcho_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_AZCHO_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先番地号 ← 請求契約一覧明細リスト.送付先番地号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_BNCHIGO)) {
				childMap.put("sohus_bnchigo", new String());
			} else {
				childMap.put("sohus_bnchigo", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_BNCHIGO));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先住所補記・建物名 ← 請求契約一覧明細リスト.送付先住所補記・建物名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_ADRTTM)) {
				childMap.put("sohus_adrttm", new String());
			} else {
				childMap.put("sohus_adrttm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_ADRTTM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先住所補記・部屋番号 ← 請求契約一覧明細リスト.送付先住所補記・部屋番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_ADRRM)) {
				childMap.put("sohus_adrrm", new String());
			} else {
				childMap.put("sohus_adrrm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_ADRRM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先電話番号 ← 請求契約一覧明細リスト.送付先電話番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_TELNO)) {
				childMap.put("sohus_telno", new String());
			} else {
				childMap.put("sohus_telno", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_TELNO));
			}
			
			// 請求契約一覧照会マップ.レコード.口座番号表示抑制 ← 請求契約一覧明細リスト.口座番号表示抑制
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.KUZ_BNGU_HYJ_YKS)) {
				childMap.put("kuz_bngu_hyj_yks", new String());
			} else {
				childMap.put("kuz_bngu_hyj_yks", childTemplate.getString(EKK0491B008CBSMsg1List.KUZ_BNGU_HYJ_YKS));
			}
			
			// 請求契約一覧照会マップ.レコード.ISP決済再設定優先順位 ← 請求契約一覧明細リスト.ISP決済再設定優先順位
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.ISPKS_RESET_YUSEN_JUN)) {
				childMap.put("ispks_reset_yusen_jun", new String());
			} else {
				childMap.put("ispks_reset_yusen_jun", childTemplate.getString(EKK0491B008CBSMsg1List.ISPKS_RESET_YUSEN_JUN));
			}
// ANK-4207-00-00 ADD START
			// 請求契約一覧照会マップ.レコード.支払方法変更日 ← 請求契約一覧明細リスト.支払方法変更日
			// ANK-4329-05-00 ADD START
			// 請求方法コードが窓口の場合
			if(SEIKY_WAY_CD_1.equals(seiky_way_cd))
			{
				// クレジットカード照査ステータスが照査待ち又は、保留の場合
				if("002".equalsIgnoreCase(crecard_shosa_stat) || "004".equalsIgnoreCase(crecard_shosa_stat)){
					
					childMap.put("payway_chg_ymd", JCCBPCommon.getOpeDate(null));
				}
				else{
					childMap.put("payway_chg_ymd", new String());
				}
			}
			// ANK-4329-05-00 ADD END
			// IT1-2022-0000081 ADD START
			else {
			// IT1-2022-0000081 ADD END
				if (childTemplate.isNull(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD)) {
					childMap.put("payway_chg_ymd", new String());
				} else {
					//ANK-4329-00-00 MOD START
//				childMap.put("payway_chg_ymd", childTemplate.getString(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD));
					// クレジットカード照査ステータスが照査待ち又は、保留の場合
					if("002".equalsIgnoreCase(crecard_shosa_stat) || "004".equalsIgnoreCase(crecard_shosa_stat))
					{
						childMap.put("payway_chg_ymd", JCCBPCommon.getOpeDate(null));
					}
					else
					{	
						childMap.put("payway_chg_ymd", childTemplate.getString(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD));
						
					}
					//ANK-4329-00-00 MOD END
				}
			// IT1-2022-0000081 ADD START
			}
			// IT1-2022-0000081 ADD END
// ANK-4207-00-00 ADD END
		}

		dataMap.put("record", dataList);

		return param;
	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle,
							ServiceComponentRequestInvoker scCall,
							IRequestParameterReadWrite param,
							String dataMapKey,
							Object[][] mappingData) throws Exception
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		int returnCode = (Integer)result.get(JCMConstants.RET_CD_INT_KEY);
		
		int templateStatus = msg.getInt(ECK0011A010CBSMsg.STATUS);
		
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		setErrorInf(msg, (HashMap<String, Object>)param.getData(dataMapKey));
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
		return msg;
	}	

	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		String svcIf = (String)mappingData[0][1];
		
		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));
		
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if ("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		return paramMap;
	}

	/**
	 * エラー情報を設定します。
	 * 
	 * @param msg
	 * @param map
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void setErrorInf(CAANMsg msg, HashMap<String, Object> map)
	{
		Iterator<String> msgKey = msg.getSchema().getSchemaKeySet().iterator();
		
		while (msgKey.hasNext())
		{
			String key = msgKey.next();
			
			if (key.endsWith("_err"))
			{
				if (!msg.isNull(key))
				{
					if (!map.containsKey(key))
					{
						map.put(key, msg.getString(key));
					}
				}
			}
		}
	}
// ▼▼▼ ANK-3179-00-00 2017/08/08 ADD START
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DD>（退会後）
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.07.16
	 */
	// ANK-4329-00-00 MOD START
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite editResultAfUnsubscribe(CAANMsg[] templates,
//			IRequestParameterReadWrite param) throws Throwable {
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editResultAfUnsubscribe(CAANMsg[] templates,
			IRequestParameterReadWrite param,
			SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			String dataMapKey
			) throws Throwable {
		// ANK-4329-00-00 MOD END

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = new ArrayList();

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(MAP_CC_ID);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(MAP_CC_ID, dataMap);
		}

		for (int i = 0; i < templates.length; i++) {
			CAANMsg childTemplate = templates[i];
			if ( i >= dataList.size()) {
				dataList.add(new HashMap());
			}
			HashMap childMap = (HashMap)dataList.get(i);

			// ANK-4329-00-00 ADD START
			String crecard_shosa_stat = "";
			// 請求契約番号があれば支払方法変更受付情報の一意照会を行う
			if(!JKKStringUtil.isNullBlank(childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO)))
			{
				// ***** EKK3281A010（支払方法変更受付情報（クレジットカード）一意照会）情報取得*****
				Object[][] EKK3401A020In = InMsgEKK3401A020(childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
				CAANMsg[] EKK3401A020Out = callSC(handle, scCall, param, dataMapKey, EKK3401A020In).getCAANMsgList(EKK3401A020CBSMsg.EKK3401A020CBSMSG1LIST);
				// クレジットカード照査ステータス
				if(EKK3401A020Out!= null && EKK3401A020Out.length > 0)
				{
					crecard_shosa_stat = EKK3401A020Out[0].getString(EKK3401A020CBSMsg1List.CRECARD_SHOSA_STAT);
				}
			}
			// ANK-4329-00-00 ADD END
			// ANK-4329-05-00 ADD START
			String seiky_way_cd = "";
			// ANK-4329-05-00 END END
			// 請求契約一覧照会マップ.レコード.サービス契約番号 ← 請求契約一覧明細リスト.サービス契約番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_KEI_NO)) {
				childMap.put("svc_kei_no", new String());
			} else {
				childMap.put("svc_kei_no", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_KEI_NO));
			}
			
			// 請求契約一覧照会マップ.レコード.サービス契約ステータス ← 請求契約一覧明細リスト.サービス契約ステータス
			// サービス契約ステータスが取れない場合は"910"(解約済)を設定する。
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_KEI_STAT)) {
				childMap.put("svc_kei_stat", "910");
			} else {
				childMap.put("svc_kei_stat", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_KEI_STAT));
			}
			
			// 請求契約一覧照会マップ.レコード.サービス終了年月日 ← 請求契約一覧明細リスト.サービス終了年月日
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_ENDYMD)) {
				childMap.put("svc_endymd", new String());
			} else {
				childMap.put("svc_endymd", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_ENDYMD));
			}
			
			// 請求契約一覧照会マップ.レコード.請求契約番号 ← 請求契約一覧明細リスト.請求契約番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_KEI_NO)) {
				childMap.put("seiky_kei_no", new String());
			} else {
				childMap.put("seiky_kei_no", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
			}
			
			// 請求契約一覧照会マップ.レコード.請求方法コード ← 請求契約一覧明細リスト.請求方法コード
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_WAY_CD)) {
				childMap.put("seiky_way_cd", new String());
			} else {
				// ANK-4329-05-00 ADD START
				seiky_way_cd = childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_WAY_CD);
				// ANK-4329-05-00 ADD END
				childMap.put("seiky_way_cd", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_WAY_CD));
			}
			
			// 請求契約一覧照会マップ.レコード.督促ステータス ← 請求契約一覧明細リスト.督促ステータス
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.TOKUSOKU_STAT)) {
				childMap.put("tokusoku_stat", new String());
			} else {
				childMap.put("tokusoku_stat", childTemplate.getString(EKK0491B008CBSMsg1List.TOKUSOKU_STAT));
			}
			
			// 請求契約一覧照会マップ.レコード.請求契約異動予約有無 ← 請求契約一覧明細リスト.請求契約異動予約有無
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_KEI_IDO_RSV_UM)) {
				childMap.put("seiky_kei_ido_rsv_um", new String());
			} else {
				childMap.put("seiky_kei_ido_rsv_um", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_IDO_RSV_UM));
			}
			
			// 請求契約一覧照会マップ.レコード.クレジットカード会社名 ← 請求契約一覧明細リスト.クレジットカード会社名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_COMP_NM)) {
				childMap.put("crecard_comp_nm", new String());
			} else {
				childMap.put("crecard_comp_nm", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_COMP_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.クレジットカード番号 ← 請求契約一覧明細リスト.クレジットカード番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_NO)) {
				childMap.put("crecard_no", new String());
			} else {
				childMap.put("crecard_no", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_NO));
			}
			
// ANK-4462-00-00 ADD START
			// 請求契約一覧照会マップ.レコード.クレジットカード有効期限 ← 請求契約一覧明細リスト.クレジットカード有効期限
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_YK_KIGEN)) {
				childMap.put("crecard_yk_kigen", new String());
			} else {
				childMap.put("crecard_yk_kigen", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_YK_KIGEN));
			}
// ANK-4462-00-00 ADD END
			
			// 請求契約一覧照会マップ.レコード.金融機関名 ← 請求契約一覧明細リスト.金融機関名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.BANK_NM)) {
				childMap.put("bank_nm", new String());
			} else {
				childMap.put("bank_nm", childTemplate.getString(EKK0491B008CBSMsg1List.BANK_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.金融機関支店名 ← 請求契約一覧明細リスト.金融機関支店名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.BANK_SHITEN_NM)) {
				childMap.put("bank_shiten_nm", new String());
			} else {
				childMap.put("bank_shiten_nm", childTemplate.getString(EKK0491B008CBSMsg1List.BANK_SHITEN_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.預金種目名 ← 請求契約一覧明細リスト.預金種目名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.YOKIN_SHUMOKU_NM)) {
				childMap.put("yokin_shumoku_nm", new String());
			} else {
				childMap.put("yokin_shumoku_nm", childTemplate.getString(EKK0491B008CBSMsg1List.YOKIN_SHUMOKU_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.口座番号 ← 請求契約一覧明細リスト.口座番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.KOZA_NO)) {
				childMap.put("koza_no", new String());
			} else {
				childMap.put("koza_no", childTemplate.getString(EKK0491B008CBSMsg1List.KOZA_NO));
			}
			
			// 請求契約一覧照会マップ.レコード.請求書発行要否 ← 請求契約一覧明細リスト.請求書発行要否
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKYUS_HAKKO_YH)) {
				childMap.put("seikyus_hakko_yh", new String());
			} else {
				childMap.put("seikyus_hakko_yh", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKYUS_HAKKO_YH));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先カナ名 ← 請求契約一覧明細リスト.送付先カナ名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SHS_KANA)) {
				childMap.put("shs_kana", new String());
			} else {
				childMap.put("shs_kana", childTemplate.getString(EKK0491B008CBSMsg1List.SHS_KANA));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先名 ← 請求契約一覧明細リスト.送付先名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_NM)) {
				childMap.put("sohus_nm", new String());
			} else {
				childMap.put("sohus_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先部課名 ← 請求契約一覧明細リスト.送付先部課名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_BKM)) {
				childMap.put("sohus_bkm", new String());
			} else {
				childMap.put("sohus_bkm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_BKM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先担当者名 ← 請求契約一覧明細リスト.送付先担当者名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_TNTSHA_NM)) {
				childMap.put("sohus_tntsha_nm", new String());
			} else {
				childMap.put("sohus_tntsha_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_TNTSHA_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先住所コード ← 請求契約一覧明細リスト.送付先住所コード
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_AD_CD)) {
				childMap.put("sohus_ad_cd", new String());
			} else {
				childMap.put("sohus_ad_cd", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_AD_CD));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先郵便番号 ← 請求契約一覧明細リスト.送付先郵便番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_PCD)) {
				childMap.put("sohus_pcd", new String());
			} else {
				childMap.put("sohus_pcd", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_PCD));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先都道府県名 ← 請求契約一覧明細リスト.送付先都道府県名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_STATE_NM)) {
				childMap.put("sohus_state_nm", new String());
			} else {
				childMap.put("sohus_state_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_STATE_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先市区町村名 ← 請求契約一覧明細リスト.送付先市区町村名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_CITY_NM)) {
				childMap.put("sohus_city_nm", new String());
			} else {
				childMap.put("sohus_city_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_CITY_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先大字通称名 ← 請求契約一覧明細リスト.送付先大字通称名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_OAZTSU_NM)) {
				childMap.put("sohus_oaztsu_nm", new String());
			} else {
				childMap.put("sohus_oaztsu_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_OAZTSU_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先字丁目名 ← 請求契約一覧明細リスト.送付先字丁目名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_AZCHO_NM)) {
				childMap.put("sohus_azcho_nm", new String());
			} else {
				childMap.put("sohus_azcho_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_AZCHO_NM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先番地号 ← 請求契約一覧明細リスト.送付先番地号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_BNCHIGO)) {
				childMap.put("sohus_bnchigo", new String());
			} else {
				childMap.put("sohus_bnchigo", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_BNCHIGO));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先住所補記・建物名 ← 請求契約一覧明細リスト.送付先住所補記・建物名
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_ADRTTM)) {
				childMap.put("sohus_adrttm", new String());
			} else {
				childMap.put("sohus_adrttm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_ADRTTM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先住所補記・部屋番号 ← 請求契約一覧明細リスト.送付先住所補記・部屋番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_ADRRM)) {
				childMap.put("sohus_adrrm", new String());
			} else {
				childMap.put("sohus_adrrm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_ADRRM));
			}
			
			// 請求契約一覧照会マップ.レコード.送付先電話番号 ← 請求契約一覧明細リスト.送付先電話番号
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_TELNO)) {
				childMap.put("sohus_telno", new String());
			} else {
				childMap.put("sohus_telno", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_TELNO));
			}
			
			// 請求契約一覧照会マップ.レコード.口座番号表示抑制 ← 請求契約一覧明細リスト.口座番号表示抑制
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.KUZ_BNGU_HYJ_YKS)) {
				childMap.put("kuz_bngu_hyj_yks", new String());
			} else {
				childMap.put("kuz_bngu_hyj_yks", childTemplate.getString(EKK0491B008CBSMsg1List.KUZ_BNGU_HYJ_YKS));
			}
			
			// 請求契約一覧照会マップ.レコード.ISP決済再設定優先順位 ← 請求契約一覧明細リスト.ISP決済再設定優先順位
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.ISPKS_RESET_YUSEN_JUN)) {
				childMap.put("ispks_reset_yusen_jun", new String());
			} else {
				childMap.put("ispks_reset_yusen_jun", childTemplate.getString(EKK0491B008CBSMsg1List.ISPKS_RESET_YUSEN_JUN));
			}
// ANK-4207-00-00 ADD START
			// 請求契約一覧照会マップ.レコード.支払方法変更日 ← 請求契約一覧明細リスト.支払方法変更日
			// ANK-4329-05-00 ADD START
			// 請求方法コードが窓口の場合
			if(SEIKY_WAY_CD_1.equals(seiky_way_cd))
			{
				// クレジットカード照査ステータスが照査待ち又は、保留の場合
				if("002".equalsIgnoreCase(crecard_shosa_stat) || "004".equalsIgnoreCase(crecard_shosa_stat)){
					
					childMap.put("payway_chg_ymd", JCCBPCommon.getOpeDate(null));
				}
				else{
					childMap.put("payway_chg_ymd", new String());
				}
			}
			// ANK-4329-05-00 ADD END
			// IT1-2022-0000081 ADD START
			else {
			// IT1-2022-0000081 ADD END
				if (childTemplate.isNull(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD)) {
					childMap.put("payway_chg_ymd", new String());
				} else {
					//ANK-4329-00-00 MOD START
	//				childMap.put("payway_chg_ymd", childTemplate.getString(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD));
					// クレジットカード照査ステータスが照査待ち又は、保留の場合
					if("002".equalsIgnoreCase(crecard_shosa_stat) || "004".equalsIgnoreCase(crecard_shosa_stat))
					{
						childMap.put("payway_chg_ymd", JCCBPCommon.getOpeDate(null));
					}
					else
					{
						childMap.put("payway_chg_ymd", childTemplate.getString(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD));
					}
				}	//ANK-4329-00-00 MOD END
			// IT1-2022-0000081 ADD START
			}
			// IT1-2022-0000081 ADD END
// ANK-4207-00-00 ADD END
		}

		dataMap.put("record", dataList);

		return param;
	}	
// ▲▲▲ ANK-3179-00-00 2017/08/08 ADD END
	// ANK-3561-00-00 ADD START
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.07.16
	 */
	// ANK-4329-00-00 MOD START
//	@SuppressWarnings("unchecked")
//	private IRequestParameterReadWrite Map(CAANMsg childTemplate,
//			IRequestParameterReadWrite param) throws Throwable {
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editMap(CAANMsg childTemplate,
			IRequestParameterReadWrite param,
			SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			String dataMapKey
			) throws Throwable {
		// ANK-4329-00-00 MOD END
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = new ArrayList();

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(MAP_CC_ID);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(MAP_CC_ID, dataMap);
		}
		
		//レコードリスト
		dataList = (ArrayList)dataMap.get("record");
		
		if (dataList == null) 
		{
			 dataList = new ArrayList();
		}
		
		//マップ
		HashMap childMap = new HashMap();
		
		// ANK-4329-00-00 ADD START
		String crecard_shosa_stat = "";
		// 請求契約番号があれば支払方法変更受付情報の一意照会を行う
		if(!JKKStringUtil.isNullBlank(childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO)))
		{
			// ***** EKK3281A010（支払方法変更受付情報（クレジットカード）一意照会）情報取得*****
			Object[][] EKK3401A020In = InMsgEKK3401A020(childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
			CAANMsg[] EKK3401A020Out = callSC(handle, scCall, param, dataMapKey, EKK3401A020In).getCAANMsgList(EKK3401A020CBSMsg.EKK3401A020CBSMSG1LIST);
			// クレジットカード照査ステータス
			if(EKK3401A020Out!= null && EKK3401A020Out.length > 0)
			{
				crecard_shosa_stat = EKK3401A020Out[0].getString(EKK3401A020CBSMsg1List.CRECARD_SHOSA_STAT);		
			}
		}
		// ANK-4329-00-00 ADD END
		// ANK-4329-05-00 ADD START
		String seiky_way_cd = "";
		// ANK-4329-05-00 ADD END
		// 請求契約一覧照会マップ.レコード.サービス契約番号 ← 請求契約一覧明細リスト.サービス契約番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_KEI_NO)) {
			childMap.put("svc_kei_no", new String());
		} else {
			childMap.put("svc_kei_no", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_KEI_NO));
		}
		
		// 請求契約一覧照会マップ.レコード.サービス契約ステータス ← 請求契約一覧明細リスト.サービス契約ステータス
		// サービス契約ステータスが取れない場合は"910"(解約済)を設定する。
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_KEI_STAT)) {
			childMap.put("svc_kei_stat", "910");
		} else {
			childMap.put("svc_kei_stat", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_KEI_STAT));
		}
		
		// 請求契約一覧照会マップ.レコード.サービス終了年月日 ← 請求契約一覧明細リスト.サービス終了年月日
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SVC_ENDYMD)) {
			childMap.put("svc_endymd", new String());
		} else {
			childMap.put("svc_endymd", childTemplate.getString(EKK0491B008CBSMsg1List.SVC_ENDYMD));
		}
		
		// 請求契約一覧照会マップ.レコード.請求契約番号 ← 請求契約一覧明細リスト.請求契約番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_KEI_NO)) {
			childMap.put("seiky_kei_no", new String());
		} else {
			childMap.put("seiky_kei_no", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_NO));
		}
		
		// 請求契約一覧照会マップ.レコード.請求方法コード ← 請求契約一覧明細リスト.請求方法コード
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_WAY_CD)) {
			childMap.put("seiky_way_cd", new String());
		} else {
			// ANK-4329-05-00 ADD START
			seiky_way_cd = childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_WAY_CD);
			// ANK-4329-05-00 ADD END
			childMap.put("seiky_way_cd", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_WAY_CD));
		}
		
		// 請求契約一覧照会マップ.レコード.督促ステータス ← 請求契約一覧明細リスト.督促ステータス
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.TOKUSOKU_STAT)) {
			childMap.put("tokusoku_stat", new String());
		} else {
			childMap.put("tokusoku_stat", childTemplate.getString(EKK0491B008CBSMsg1List.TOKUSOKU_STAT));
		}
		
		// 請求契約一覧照会マップ.レコード.請求契約異動予約有無 ← 請求契約一覧明細リスト.請求契約異動予約有無
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKY_KEI_IDO_RSV_UM)) {
			childMap.put("seiky_kei_ido_rsv_um", new String());
		} else {
			childMap.put("seiky_kei_ido_rsv_um", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKY_KEI_IDO_RSV_UM));
		}
		
		// 請求契約一覧照会マップ.レコード.クレジットカード会社名 ← 請求契約一覧明細リスト.クレジットカード会社名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_COMP_NM)) {
			childMap.put("crecard_comp_nm", new String());
		} else {
			childMap.put("crecard_comp_nm", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_COMP_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.クレジットカード番号 ← 請求契約一覧明細リスト.クレジットカード番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_NO)) {
			childMap.put("crecard_no", new String());
		} else {
			childMap.put("crecard_no", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_NO));
		}
		
// ANK-4462-00-00 ADD START
		// 請求契約一覧照会マップ.レコード.クレジットカード有効期限 ← 請求契約一覧明細リスト.クレジットカード有効期限
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.CRECARD_YK_KIGEN)) {
			childMap.put("crecard_yk_kigen", new String());
		} else {
			childMap.put("crecard_yk_kigen", childTemplate.getString(EKK0491B008CBSMsg1List.CRECARD_YK_KIGEN));
		}
//ANK-4462-00-00 ADD END
		
		// 請求契約一覧照会マップ.レコード.金融機関名 ← 請求契約一覧明細リスト.金融機関名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.BANK_NM)) {
			childMap.put("bank_nm", new String());
		} else {
			childMap.put("bank_nm", childTemplate.getString(EKK0491B008CBSMsg1List.BANK_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.金融機関支店名 ← 請求契約一覧明細リスト.金融機関支店名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.BANK_SHITEN_NM)) {
			childMap.put("bank_shiten_nm", new String());
		} else {
			childMap.put("bank_shiten_nm", childTemplate.getString(EKK0491B008CBSMsg1List.BANK_SHITEN_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.預金種目名 ← 請求契約一覧明細リスト.預金種目名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.YOKIN_SHUMOKU_NM)) {
			childMap.put("yokin_shumoku_nm", new String());
		} else {
			childMap.put("yokin_shumoku_nm", childTemplate.getString(EKK0491B008CBSMsg1List.YOKIN_SHUMOKU_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.口座番号 ← 請求契約一覧明細リスト.口座番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.KOZA_NO)) {
			childMap.put("koza_no", new String());
		} else {
			childMap.put("koza_no", childTemplate.getString(EKK0491B008CBSMsg1List.KOZA_NO));
		}
		
		// 請求契約一覧照会マップ.レコード.請求書発行要否 ← 請求契約一覧明細リスト.請求書発行要否
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SEIKYUS_HAKKO_YH)) {
			childMap.put("seikyus_hakko_yh", new String());
		} else {
			childMap.put("seikyus_hakko_yh", childTemplate.getString(EKK0491B008CBSMsg1List.SEIKYUS_HAKKO_YH));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先カナ名 ← 請求契約一覧明細リスト.送付先カナ名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SHS_KANA)) {
			childMap.put("shs_kana", new String());
		} else {
			childMap.put("shs_kana", childTemplate.getString(EKK0491B008CBSMsg1List.SHS_KANA));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先名 ← 請求契約一覧明細リスト.送付先名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_NM)) {
			childMap.put("sohus_nm", new String());
		} else {
			childMap.put("sohus_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先部課名 ← 請求契約一覧明細リスト.送付先部課名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_BKM)) {
			childMap.put("sohus_bkm", new String());
		} else {
			childMap.put("sohus_bkm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_BKM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先担当者名 ← 請求契約一覧明細リスト.送付先担当者名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_TNTSHA_NM)) {
			childMap.put("sohus_tntsha_nm", new String());
		} else {
			childMap.put("sohus_tntsha_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_TNTSHA_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先住所コード ← 請求契約一覧明細リスト.送付先住所コード
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_AD_CD)) {
			childMap.put("sohus_ad_cd", new String());
		} else {
			childMap.put("sohus_ad_cd", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_AD_CD));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先郵便番号 ← 請求契約一覧明細リスト.送付先郵便番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_PCD)) {
			childMap.put("sohus_pcd", new String());
		} else {
			childMap.put("sohus_pcd", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_PCD));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先都道府県名 ← 請求契約一覧明細リスト.送付先都道府県名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_STATE_NM)) {
			childMap.put("sohus_state_nm", new String());
		} else {
			childMap.put("sohus_state_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_STATE_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先市区町村名 ← 請求契約一覧明細リスト.送付先市区町村名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_CITY_NM)) {
			childMap.put("sohus_city_nm", new String());
		} else {
			childMap.put("sohus_city_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_CITY_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先大字通称名 ← 請求契約一覧明細リスト.送付先大字通称名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_OAZTSU_NM)) {
			childMap.put("sohus_oaztsu_nm", new String());
		} else {
			childMap.put("sohus_oaztsu_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_OAZTSU_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先字丁目名 ← 請求契約一覧明細リスト.送付先字丁目名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_AZCHO_NM)) {
			childMap.put("sohus_azcho_nm", new String());
		} else {
			childMap.put("sohus_azcho_nm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_AZCHO_NM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先番地号 ← 請求契約一覧明細リスト.送付先番地号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_BNCHIGO)) {
			childMap.put("sohus_bnchigo", new String());
		} else {
			childMap.put("sohus_bnchigo", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_BNCHIGO));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先住所補記・建物名 ← 請求契約一覧明細リスト.送付先住所補記・建物名
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_ADRTTM)) {
			childMap.put("sohus_adrttm", new String());
		} else {
			childMap.put("sohus_adrttm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_ADRTTM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先住所補記・部屋番号 ← 請求契約一覧明細リスト.送付先住所補記・部屋番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_ADRRM)) {
			childMap.put("sohus_adrrm", new String());
		} else {
			childMap.put("sohus_adrrm", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_ADRRM));
		}
		
		// 請求契約一覧照会マップ.レコード.送付先電話番号 ← 請求契約一覧明細リスト.送付先電話番号
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.SOHUS_TELNO)) {
			childMap.put("sohus_telno", new String());
		} else {
			childMap.put("sohus_telno", childTemplate.getString(EKK0491B008CBSMsg1List.SOHUS_TELNO));
		}
		
		// 請求契約一覧照会マップ.レコード.口座番号表示抑制 ← 請求契約一覧明細リスト.口座番号表示抑制
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.KUZ_BNGU_HYJ_YKS)) {
			childMap.put("kuz_bngu_hyj_yks", new String());
		} else {
			childMap.put("kuz_bngu_hyj_yks", childTemplate.getString(EKK0491B008CBSMsg1List.KUZ_BNGU_HYJ_YKS));
		}
		
		// 請求契約一覧照会マップ.レコード.ISP決済再設定優先順位 ← 請求契約一覧明細リスト.ISP決済再設定優先順位
		if (childTemplate.isNull(EKK0491B008CBSMsg1List.ISPKS_RESET_YUSEN_JUN)) {
			childMap.put("ispks_reset_yusen_jun", new String());
		} else {
			childMap.put("ispks_reset_yusen_jun", childTemplate.getString(EKK0491B008CBSMsg1List.ISPKS_RESET_YUSEN_JUN));
		}
// ANK-4207-00-00 ADD START
		// 請求契約一覧照会マップ.レコード.支払方法変更日 ← 請求契約一覧明細リスト.支払方法変更日
		// ANK-4329-05-00 ADD START
		// 請求方法コードが窓口の場合
		if(SEIKY_WAY_CD_1.equals(seiky_way_cd))
		{
			// クレジットカード照査ステータスが照査待ち又は、保留の場合
			if("002".equalsIgnoreCase(crecard_shosa_stat) || "004".equalsIgnoreCase(crecard_shosa_stat)){
				
				childMap.put("payway_chg_ymd", JCCBPCommon.getOpeDate(null));
			}
			else{
				childMap.put("payway_chg_ymd", new String());
			}
		}
		// ANK-4329-05-00 ADD END
		// IT1-2022-0000081 ADD START
		else {
		// IT1-2022-0000081 ADD END
			if (childTemplate.isNull(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD)) {
				childMap.put("payway_chg_ymd", new String());
			} else {
				//ANK-4329-00-00 MOD START
//				childMap.put("payway_chg_ymd", childTemplate.getString(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD));
				// クレジットカード照査ステータスが照査待ち又は、保留の場合
				if("002".equalsIgnoreCase(crecard_shosa_stat) || "004".equalsIgnoreCase(crecard_shosa_stat))
				{
					childMap.put("payway_chg_ymd", JCCBPCommon.getOpeDate(null));
				}
				else
				{
					childMap.put("payway_chg_ymd", childTemplate.getString(EKK0491B008CBSMsg1List.PAYWAY_CHG_YMD));
				}
				//ANK-4329-00-00 MOD END
			}
		// IT1-2022-0000081 ADD START
		}
		// IT1-2022-0000081 ADD END
// ANK-4207-00-00 ADD END

		//マップをレコードリストに追加
		dataList.add(childMap);

		return param;
	}
	// ANK-3561-00-00 ADD END
	// ANK-4329-00-00 ADD START
	/**支払方法変更受付情報（クレジットカード）一意照会を取得
	 * @param seiky_kei_nm 請求契約番号
	 * @return Object[][]
	 */	
	private Object[][] InMsgEKK3401A020(String seiky_kei_nm)
	{
		Object[][] EKK3401A020In = {
				{EKK3401A020CBSMsg.TEMPLATEID,TEMPLATE_ID_EKK3401A020},
				{EKK3401A020CBSMsg.FUNC_CODE,STRING_1},
				{EKK3401A020CBSMsg.KEY_SEIKY_KEI_NO,seiky_kei_nm}
		};
		return EKK3401A020In;
	}	
	// ANK-4329-00-00 ADD END
	
	// ANK-4329-05-00 ADD START
	/**
	 * 契約状態チェック/契約変更手続き/設備卸チェック/支払方法未来予約存在チェックを行う
	 * @param handle
	 * @param param
	 * @param mapkey
	 * @return true:OK
	 * 			false:NG
	 * @throws RequestParameterException
	 * @throws SCCallException
	 */
	@SuppressWarnings("unchecked")
	private boolean CmnKanrenChk(SessionHandle handle,IRequestParameterReadWrite param,String mapkey,Map<String, Object> ccMsg) throws RequestParameterException, SCCallException
	{
	
		JFUChgSvcPaywayRelCheckCC JfuChgSvcPaywayRelCheck = new JFUChgSvcPaywayRelCheckCC();
		
		try
		{
			// 契約状態チェック/契約変更手続きチェック/支払方法未来予約存在チェックを行う
			JfuChgSvcPaywayRelCheck.executeCheck(handle,param,CHECK_MAP_KEY);
			JfuChgSvcPaywayRelCheck.executeCheckMskm(handle,param,CHECK_MAP_KEY);

		}
		catch(Exception e)
		{
			//エラー内容を取得し、ステータスが"1100"の場合チェック結果NGを返却する
			ArrayList<Object> ErrInfo = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
			
			//エラー内容がない場合、システムエラー
			if(ErrInfo == null || ErrInfo.size() <= 0)
			{
				SCCallException scCallEx = new SCCallException("戻り値不正", JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR, 9000);
				//チェックのエラー情報を見ない。
				ccMsg.remove("ERROR_INFO");
				throw scCallEx;
			}
			HashMap<String, Object> errorMap = (HashMap<String, Object>)ErrInfo.get(0);
			Integer states = (Integer) errorMap.get(ErrorInfoMapKeys.STATUS);
			
			//関連チェックでNGの場合、チェック結果区分に結果を格納する。
			if(RELATION_ERR == states)
			{
				HashMap<String, String> errorMapChild = (HashMap<String, String>) errorMap.get(ErrorInfoMapKeys.ITEM_CHECK_ERRORS);
				for(String errname : errorMapChild.keySet())
				{
					// 契約状態チェックでNGの場合
					if (KEI＿STAT_CHK_ERR_NAME_1.equals(errname) || KEI＿STAT_CHK_ERR_NAME_2.equals(errname))
					{
						check_err_kbn = CKRLT_KBN_3;
					}
					// 契約変更手続きチェックでNGの場合
					if (KEI_TTDK_CHK_ERR_NAME_1.equals(errname)||KEI_TTDK_CHK_ERR_NAME_2.equals(errname)
							|| KEI_TTDK_CHK_ERR_NAME_3.equals(errname))
					{
						check_err_kbn = CKRLT_KBN_4;
					}
					// 支払方法未来予約存在チェックでNGの場合
					if(PAY_WAY_FT_RV_CHK_ERR_NAME_1.equals(errname))
					{
						check_err_kbn = CKRLT_KBN_5;
					}
				}
				return false;
			}
			//関連チェック以外はシステムエラー
			else
			{
				//チェックのエラー情報を見ない
				ccMsg.remove("ERROR_INFO");
				SCCallException scCallEx = new SCCallException("戻り値不正", JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR,states);
				throw scCallEx;
			}
		}
		return true;
	
	}
	/**
	 * 共通関連チェックを行う
	 * @param handle
	 * @param param
	 * @param mapkey
	 * @return true:OK
	 * 			false:NG
	 * @throws RequestParameterException
	 * @throws SCCallException
	 */
	@SuppressWarnings("unchecked")
	private boolean RelationChk(SessionHandle handle,IRequestParameterReadWrite param,String mapkey,Map<String, Object> ccMsg) throws RequestParameterException, SCCallException
	{

		JFURelationalCheckCC JfuRelationalCheckCC = new JFURelationalCheckCC();
		
		try
		{
			// 	共通関連チェックを行う
			JfuRelationalCheckCC.executeCheck(handle,param,CHECK_MAP_KEY);
			
		}
		catch(Exception e)
		{
			//エラー内容を取得し、ステータスが"1100"の場合チェック結果NGを返却する
			ArrayList<Object> ErrInfo = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
			//エラー内容がない場合、システムエラー
			if(ErrInfo == null || ErrInfo.size() <= 0)
			{
				//共通関連チェックのエラー情報を見ない
				ccMsg.remove("ERROR_INFO");
				SCCallException scCallEx = new SCCallException("戻り値不正", JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR, 9000);
				throw scCallEx;
			}
			HashMap<String, Object> errorMap = (HashMap<String, Object>)ErrInfo.get(0);
			Integer states = (Integer) errorMap.get(ErrorInfoMapKeys.STATUS);
			//関連チェックでNGの場合、チェック結果区分に結果を格納する。
			if(RELATION_ERR == states)
			{
				check_err_kbn = CKRLT_KBN_1;
				return false;
			}
			//関連チェック以外のエラーはシステムエラー
			else
			{	
				//共通関連チェックのエラー情報を見ない
				ccMsg.remove("ERROR_INFO");
				SCCallException scCallEx = new SCCallException("戻り値不正", JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR,states);
				throw scCallEx;
			}
		}
		return true;
	}
	
	/**
	 * 設備卸チェックを行う
	 * @param handle
	 * @param param
	 * @param mapkey
	 * @return true:OK
	 * 			false:NG
	 * @throws RequestParameterException
	 * @throws SCCallException
	 */
	@SuppressWarnings("unchecked")
	private boolean EquitOrsChk(SessionHandle handle,IRequestParameterReadWrite param,String mapkey,Map<String, Object> ccMsg) throws RequestParameterException, SCCallException
	{
		JFUOrosiCheckCC JfuOrosiCheckCC = new JFUOrosiCheckCC();
		
		try
		{
			// 	設備卸チェックを行う
			JfuOrosiCheckCC.executeCheck(handle,param,CHECK_MAP_KEY);
		}
		catch(Exception e)
		{
			//エラー内容を取得し、ステータスが"1100"の場合チェック結果NGを返却する
			ArrayList<Object> ErrInfo = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
			//エラー内容がない場合、システムエラー
			if(ErrInfo == null || ErrInfo.size() <= 0)
			{
				//設備卸チェックのエラー情報を見ない。
				ccMsg.remove("ERROR_INFO");
				SCCallException scCallEx = new SCCallException("戻り値不正", JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR, 9000);
				throw scCallEx;
			}
			HashMap<String, Object> errorMap = (HashMap<String, Object>)ErrInfo.get(0);
			Integer states = (Integer) errorMap.get(ErrorInfoMapKeys.STATUS);
			//関連チェックNGの場合
			if(RELATION_ERR == states)
			{
				check_err_kbn = CKRLT_KBN_2;
				return false;
			}
			//関連チェック以外のエラーはシステムエラー
			else
			{
				SCCallException scCallEx = new SCCallException("戻り値不正", JKKStrConst.RETURN_MESSAGE_SYSTEM_ERROR,states);
				//設備卸チェックのエラー情報を見ない。。
				ccMsg.remove("ERROR_INFO");
				throw scCallEx;
			}
		}
			return true;
	}
	
	/**
	 * 関連チェックを行う
	 * @param ccMsg
	 * @param param
	 * @param ekk0491b008Out
	 * @param handle
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void kanrenchk(Map<String, Object> ccMsg, 
			IRequestParameterReadWrite param,
			SessionHandle handle,String fixedText) throws Throwable
	{
		//チェックエラー区分
		check_err_kbn = "";
		//リクエスト.請求契約番号
		String seikykeino = (String)ccMsg.get("seiky_kei_no");
		//リクエスト.SYSID
		String sysid = (String)ccMsg.get("sysid");
		
		// 請求契約番号がNULLまたは空以外の場合、共通関連チェック、設備卸チェック、契約状態チェック、契約手続きチェック、支払方法未来予約存在チェックを行う
		if(!JKKStringUtil.isNullBlank(seikykeino))
		{
			boolean checkum = false;
			ArrayList dataList = new ArrayList();

			// CC呼び出しマッピング
			HashMap<String, Object> checkCCMap = new HashMap<String, Object>();
			
			//レコードリスト
			dataList = (ArrayList) ccMsg.get("record");

			if (dataList != null && dataList.size() > 0)
			{
				// ANK-4329-06-00 MOD START
//				for(int i = 0; i < dataList.size(); i++)
//				{
//					HashMap childMap = (HashMap)dataList.get(i);
//					
//					param.setData(CHECK_MAP_KEY, checkCCMap);
//					// サービスID
//					checkCCMap.put(JFUStrConst.RELATION_CHECK_SERVICE_ID_KEY, "FUSV0118");
//					
//					String svc_kei_no = (String) childMap.get(EKK0491B008CBSMsg1List.SVC_KEI_NO);
//					
//					if (JKKStringUtil.isNullBlank(svc_kei_no)) 
//					{
//						continue;
//					}
//					// 1つでもサービス契約番号が取得出来たら関連チェックを行う。
//					checkum = true;
//					// サービス契約番号
//					checkCCMap.put("key_svc_kei_no", svc_kei_no);
//
//					/* 共通関連チェック */
//					if (check_err_kbn.isEmpty() &&!RelationChk(handle,param,CHECK_MAP_KEY,ccMsg))
//					{
//						//チェック結果区分："1"
//						ccMsg.put("ckrlt_kbn", check_err_kbn);
//					}
//				}
				
				param.setData(CHECK_MAP_KEY, checkCCMap);
				
				// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
				ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
				
				Object[][] ekk0491b008In = editInMsgEKK0491B008(sysid, "2");
				CAANMsg[] ekk0491b008Out = callSC(handle, scCall, param, fixedText, ekk0491b008In).getCAANMsgList(EKK0491B008CBSMsg.EKK0491B008CBSMSG1LIST);
				
				if(ekk0491b008Out!= null && ekk0491b008Out.length > 0)
				{
					
					HashMap<String, Object> checkCCMap2 = new HashMap<String, Object>();
					param.setData(CHECK_MAP_KEY2, checkCCMap2);
					
					JCKSV901601CC JCKSV901601CC = new JCKSV901601CC();
					
					// 契約種別取得
					checkCCMap2.put("key_sysid", sysid);
					
					// 	JCKSV901601CC実行
					JCKSV901601CC.executeMain(handle,param,CHECK_MAP_KEY2);
					
					HashMap map = (HashMap) param.getData(CHECK_MAP_KEY2);
					ArrayList<HashMap<String, Object>> dataList2 = (ArrayList<HashMap<String, Object>>)map.get("dataList1");
					ArrayList mergeList =  new ArrayList();
					
					//JCKSV901601CCのマップを削除し返却されないようする
					param.removeData(CHECK_MAP_KEY2);
					param.removeData("LCS_LAST_RESULT");
					
					 for (CAANMsg msg : ekk0491b008Out)
					 {
						 // サービス契約番号
						String svcKeiNo = msg.getString("svc_kei_no");
						for (HashMap<String, Object> Map : dataList2)
						{
							if(svcKeiNo.equals(Map.get("svc_kei_no")))
							{
								HashMap mergeMap = new HashMap<String, Object>();
								
								mergeMap.put("svc_kei_no", msg.getString("svc_kei_no"));
								if("0".equals(msg.getString("ispks_reset_yusen_jun")))
								{
									msg.set("ispks_reset_yusen_jun", "99");
								}
								mergeMap.put("ispks_reset_yusen_jun", msg.getString("ispks_reset_yusen_jun"));
								
								 
								for (String[] work : STAT_YUSENJUN)
								{
									if(work[0].equals(msg.getString("svc_kei_stat")))
									{
										mergeMap.put("svc_kei_stat_yusen_jun",work[1]);
										break;
									}
									else
									{
										mergeMap.put("svc_kei_stat_yusen_jun","6");
									}
								}
								
								mergeList.add(mergeMap);
							}
							
						}

					 }
					 
					 
						// ○ISP決済再設定優先順位の昇順、サービス契約ステータスの優先順の昇順で並び替える。
						Collections.sort(mergeList, new Comparator<Map<String, String>>()
						{
							/**
							 * リストの並び替え
							 * 
							 * <br>
							 * リストを表示順(料金プランサービス契約)(昇順)、サービス契約番号(昇順)で並び替えます。
							 * @param map1 リストの明細が格納されているMap
							 * @param map2 リストの明細が格納されているMap
							 * @return 比較結果
							 */
							@Override
							public int compare(Map<String, String> map1, Map<String, String> map2)
							{
								// ISP決済再設定優先順位で並び替える(昇順)
								Integer map1Int = Integer.parseInt(map1.get("ispks_reset_yusen_jun"));
								Integer map2Int = Integer.parseInt(map2.get("ispks_reset_yusen_jun"));
								int result = map1Int.compareTo(map2Int);
								if (result != 0)
								{
									// 同一でない場合は、並び替える
									return result;
								}
								// サービス契約ステータスの優先順で並び替える(昇順)
								Integer map1Int2 = Integer.parseInt(map1.get("svc_kei_stat_yusen_jun"));
								Integer map2Int2 = Integer.parseInt(map2.get("svc_kei_stat_yusen_jun"));
								result = map1Int2.compareTo(map2Int2);
								if (result != 0)
								{
									// 同一でない場合は、並び替える
									return result;
								}
								// サービス契約番号の優先順で並び替える(昇順)
								result = map1.get("svc_kei_no").compareTo(map2.get("svc_kei_no"));
								if (result != 0)
								{
									// 同一でない場合は、並び替える
									return result;
								}

								return 0;
							}

						});
					
					if(mergeList!= null && mergeList.size() > 0)
					{
						HashMap svcMap = (HashMap) mergeList.get(0);
						
						// 1つでもサービス契約番号が取得出来たら関連チェックを行う。
						checkum = true;
						// サービス契約番号
						checkCCMap.put("key_svc_kei_no",svcMap.get("svc_kei_no"));
						// サービスID
						checkCCMap.put(JFUStrConst.RELATION_CHECK_SERVICE_ID_KEY, "FUSV0118");
	
						/* 共通関連チェック */
						if (check_err_kbn.isEmpty() &&!RelationChk(handle,param,CHECK_MAP_KEY,ccMsg))
						{
							//チェック結果区分："1"
							ccMsg.put("ckrlt_kbn", check_err_kbn);
						}
					}
					
				}
				// ANK-4329-06-00 MOD END
				// サービス契約番号が1件でも取得出来たらチェックを行う
				if(checkum)
				{
					// SYSID
					checkCCMap.put("key_sysid", sysid);
					// 請求契約番号
					checkCCMap.put("key_seiky_kei_no",seikykeino);
					// 機能コード
					checkCCMap.put("func_code", STRING_1);
					
					/* 設備卸チェック */
					if (check_err_kbn.isEmpty() && !EquitOrsChk(handle,param,CHECK_MAP_KEY,ccMsg))
					{
						//チェック結果区分："2"
						ccMsg.put("ckrlt_kbn", check_err_kbn);
					
					}
					/* 契約状態チェック/契約変更手続き/支払方法未来予約存在チェック */
					if (check_err_kbn.isEmpty() && !CmnKanrenChk(handle,param,CHECK_MAP_KEY,ccMsg))
					{
						//チェック結果区分："3"
						ccMsg.put("ckrlt_kbn", check_err_kbn);
				
					}
					//チェック結果OKの場合チェック結果区分に"0"(チェックOK)を格納
					if(check_err_kbn.isEmpty())
					{
						//チェック結果区分："0"
						ccMsg.put("ckrlt_kbn", CKRLT_KBN_0);
						
					}
					else
					{
						// ANK-4329-05-01 DEL START
//						//チェックに使用したマップ、エラーを削除し返却されないようする
//						param.removeData(CHECK_MAP_KEY);
						// ANK-4329-05-01 DEL END
						// ステータスエリア編集
						StatusArea sa = param.getStatusArea();
						StatusInfo si = new StatusInfo(ErrorLevel.EL000, OUTBREAK_AREA.CC);
						sa.setCurrent(si);
						param.setControlMapData("returnMessage","");
					}
					ccMsg.remove("ERROR_INFO");
					ArrayList<Object> errList = new ArrayList<Object>();
					// コントロールマップに設定
					param.setControlMapData(SCControlMapKeys.ERROR_INFO, errList);
				}
				// サービス契約番号が取得できなかった場合空で返却する。
				else
				{
					//請求契約番号が設定されているがチェックに必要なデータが存在しない場合
					ccMsg.put("ckrlt_kbn", "1");
				}
			// ANK-4329-05-01 ADD START
			//チェックに使用したマップ、エラーを削除し返却されないようする
			param.removeData(CHECK_MAP_KEY);
			// ANK-4329-05-01 ADD END
			}
			else
			{
				//請求契約番号が設定されているがチェックに必要なデータが存在しない場合
				ccMsg.put("ckrlt_kbn", "1");
			}
		}
	}
	// ANK-4329-05-00 ADD END
}
