/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCKSV900201CC
*   ソースファイル名：JCKSV900201CC.java
*   作成者          ：富士通
*   日付            ：2012年01月07日
*＜機能概要＞
*  指定された2つのSYSIDを名寄せします。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/01/07   FJ）眞方    新規作成
*   V8.00.00    2014/06/11   FJ) 窪田    ST-2014-0000111対応
*   v9.00.00    2014/07/02   FJ) 小島    ANK-2156-00-00
*   v9.00.01    2014/07/17   FJ) 窪田    ST-2014-0000131対応
*   v17.00.00   2015/07/30   FJ) 山岡    【ANK-2557-00-00_PMP再構築対応】eoID形式チェックを追加
*   v47.00.00   2019/11/07   FJ) 三原    【ANK-3706-00-00】ｅｏＩＤログインのセキュリティ強化対応
**********************************************************************/

package com.fujitsu.futurity.bp.custom.common;

import static eo.common.constant.JCKStrConst.*;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpCommonUtil.*;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.CKSV9002_CKSV9002OP_CKSV900201CC;
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.ICommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.ejb.cbs.cbsmsg.ECH0231B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0231B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B120CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011C080CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0111B002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0111B040CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0111B040CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0121B020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0121B020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0151D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9020001CBSMsg;
import eo.ejb.cbs.cbsmsg.ECN0131B006CBSMsg;
import eo.ejb.cbs.cbsmsg.ECN0131B006CBSMsgList;
import eo.ejb.cbs.cbsmsg.ECN0131C011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECN0131D011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECN0131E011CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B523CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B523CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011C020CBSMsg;

/**
 * 指定された2つのSYSIDを名寄せします。
 * <BR>
 * @ author 富士通
 */
public class JCKSV900201CC extends AbstractCommonComponent implements ICommonComponent
{
	/** 当CCの内部でしか使わないエラーコード */
	private static final String PMP_ERR_OTHER = "OTHER";

	/**
	 * お客様名寄せメイン処理。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeMain(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 入力パラメータ取得
		Map inMap = (Map)param.getData(fixedText);
		String gyomuKbn = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.GYOMU_KBN);
		String sysid = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.SYSID);
		String nayoseSakiSysid = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.NAYOSE_SAKI_SYSID);
		String eoid = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.EOID);
		String eoidPwd = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.EOID_PWD);
		String ispksSvcKeiNo = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.ISPKS_SVC_KEI_NO);
		String contCustNm = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_CUST_NM);
		String contCustKana = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_CUST_KANA);
		String contCustSexCd = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_CUST_SEX_CD);
		String contCustBirthd = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_CUST_BIRTHD);
		String contPcd = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_PCD);
		String contBnchigo = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_BNCHIGO);
		String contAdrttm = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_ADRTTM);
		String contAdBnktStaPst = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_AD_BNKT_STA_PST);
		String pwdReminderQsCd = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.PWD_REMINDER_QS_CD);
		String pwdReminderAns = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.PWD_REMINDER_ANS);
		String nkname = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.NKNAME);
		String telNo = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.TELNO);
		String rrksMlad = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.RRKS_MLAD);
		String henkoTetuzukityuMlad = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.HENKO_TETUZUKITYU_MLAD);
		String rcvSetSvcKeiNo = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.SVC_KEI_NO);
		String rcvSetTsyrnSvkeiCdSeq = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.TSYRN_SVKEI_CD_SEQ);
		List<Map> mailRcvSetteList = (List<Map>)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.MAIL_RCV_SETTE_LIST);
		String ckUpdDtm = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.CK_UPD_DTM);
		String kkUpdDtm = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.KK_UPD_DTM);
		String nayoseSakiCkUpdDtm = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.NAYOSE_SAKI_CK_UPD_DTM);
		String nayoseSakiKkUpdDtm = (String)inMap.get(CKSV9002_CKSV9002OP_CKSV900201CC.NAYOSE_SAKI_KK_UPD_DTM);

		// リターンコード初期化
		String returnCd = PMP_NORMAL_END;

		// 運用日付
		String opeDate = JCCBPCommon.getOpeDate(null);

		//***************************************************
		// 内部で使用する変数の初期化
		//***************************************************
		Map result = null;
		String ckUpdDtmRes = ckUpdDtm;
		String kkUpdDtmRes = kkUpdDtm;
		String nayoseSakiCkUpdDtmRes = nayoseSakiCkUpdDtm;
		String nayoseSakiKkUpdDtmRes = nayoseSakiKkUpdDtm;
		String bfSareMemberSbtCd = null;
		String bfSakiMemberSbtCd = null;
//		String bfKeishaTypeCd = null;
		String bfSareSvcKeiNo = null;
		String bfSakiNkname = null;
		String bfSakiNknmChgeYmd = null;
		String bfSakiEoid = null;
		String bfSakiEoidChgeYmd = null;
		String bfSakiContCustBirthd= null;
		String bfSakiRrksMlad = null;
		CAANMsg bfGrpInfo = null;
		CAANMsg[] bfGrpSetteList = null;
		CAANMsg bfPaywayInputShienInfo = null;
		String bfPaywayInputShienInfoUpdDtm = null;
		String bfPaywayInputShienInfoUpdOpacnt = null;
		String bfPaywayInputShienInfoMkFlg = null;
		String bfSakiEonetidMiIkoFlg = null;
		String bfSareEoid = null;
		String bfSareShokiEoid = null;
		String bfSareCustKana = null;
		String bfSareCustBirthd = null;

		String afNkname = null;
//		String afEoid = null;
		String afContBirthd = null;
		String afMemberSbtCd = null;
		String afKeishaTypeCd = null;
		String afContSexCd = null;
		String afContIspUseFailFlg = null;
		String afMmbIspksStatCd = null;
		String afContCustNm = null;
		// ANK-3706-00-00 ADD START
		String afKeishaTelno = null;
		// ANK-3706-00-00 ADD END

		CAANMsg afGrpInfo = null;
		CAANMsg[] afGrpSetteList = null;
		String afTokusokuStat = null;

		CAANMsg[] afSvcKeiList = null;

		// ST-2014-0000131 ADD START
		Map<String, Object> nowCustMap = new HashMap<String, Object>();
		CAANMsg custResultMsg = null;
		String grpLeaderSysid = null;
		// ST-2014-0000131 ADD END

		String afPaywayInputShienInfoPaywayNo = null;
		String afPaywayInputShienInfoTsyrnPaySeq = null;
		String afPaywayInputShienInfoAddDtm = null;
		String afPaywayInputShienInfoAddOpacnt = null;
		String afPaywayInputShienInfoUpdDtm = null;
		String afPaywayInputShienInfoUpdOpacnt = null;
		String afPaywayInputShienInfoMkFlg = null;

		// CCMG連携実行要否（デフォルト：否を設定）
		String ccmgRunYh = PMP_CCMG_RENKEI_RUN_HI;

		//***************************************************
		// 排他制御
		//***************************************************
		returnCd = exclusion(handle, param, result, returnCd, sysid, nayoseSakiSysid);

		//***************************************************
		// 最終更新日時チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd) || PMP_ERR_EXCLUSION.equals(returnCd)) {
			String[] sysidAry = new String[] { sysid, nayoseSakiSysid };
			String[] ckUpdDtmAry = new String[] { ckUpdDtm, nayoseSakiCkUpdDtm };
			String[] kkUpdDtmAry = new String[] { kkUpdDtm, nayoseSakiKkUpdDtm };
			returnCd = chkUpdDtm(handle, param, returnCd, sysidAry, ckUpdDtmAry, kkUpdDtmAry);
			ckUpdDtmRes = ckUpdDtmAry[0];
			kkUpdDtmRes = kkUpdDtmAry[0];
			nayoseSakiCkUpdDtmRes = ckUpdDtmAry[1];
			nayoseSakiKkUpdDtmRes = kkUpdDtmAry[1];
		}
		
		//***************************************************
		// サービス契約番号存在チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// 業務区分：0、1、2、3、かつパラメータのメール受信設定.サービス契約番号≠"ZZZZZZZZZZ"
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !SVC_KEI_NO_RRKS_MLAD.equals(rcvSetSvcKeiNo))
			{
				// サービス契約番号存在チェック
				boolean chkResult = checkSvcKeiNo(handle, param, sysid, rcvSetSvcKeiNo);
				if (!chkResult)
				{
					returnCd = PMP_ERR_NODATA_SVCKEINO;	// サービス契約番号なしエラー
				}
			}
		}

		//***************************************************
		// お客様情報の取得(名寄せされる側)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			result = callECK0011B050(handle, param, "1", sysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST);
				if ((dataList == null) || (dataList.length == 0))
				{
					returnCd = PMP_ERR_NODATA;   // データなし
				}
				else
				{
					String mapKeyPre = ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST + "[0].";
					bfSareMemberSbtCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MEMBER_SBT_CD);
					bfSareSvcKeiNo = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.SVC_KEI_NO);
					bfSareEoid = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EOID);
					bfSareShokiEoid = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.SHK_EOID);
					bfSareCustKana = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CUST_KANA);
					bfSareCustBirthd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CUST_BIRTHD);
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		//***************************************************
		// 会員種別チェック(名寄せされる側)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (!checkSareMemberSbtCd(handle, param, gyomuKbn, bfSareMemberSbtCd, bfSareSvcKeiNo))
			{
				returnCd = PMP_ERR_NAYOSE_SARERU_MMB_SBT;   // 名寄せされる会員種別チェックエラー
			}
		}

		//***************************************************
		// グループ情報の取得(名寄せされる側)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			result = callECK0111B040(handle, param, "1", sysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECK0111B040CBSMsg.ECK0111B040CBSMSG1LIST);
				if ((dataList == null) || (dataList.length == 0))
				{
					returnCd = PMP_ERR_NODATA;   // データなし
				}
				else
				{
					for (int i = 0; i < dataList.length; i++)
					{
						CAANMsg rec = dataList[i];
						if (GRP_SBT_CD_FAMILY.equals(rec.getString(ECK0111B040CBSMsg1List.GRP_SBT_CD)))
						{
							bfGrpInfo = rec;
							break;
						}
					}
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		//***************************************************
		// グループ設定情報の取得(名寄せされる側)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			result = callECK0121B020(handle, param, "2", sysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECK0121B020CBSMsg.ECK0121B020CBSMSG1LIST);
				if ((dataList != null) && (dataList.length > 0))
				{
					bfGrpSetteList = dataList;
				}
				else
				{
					returnCd = PMP_ERR_NODATA;   // データなし
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		//***************************************************
		// お客様情報の取得(名寄せ先)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			result = callECK0011B050(handle, param, "1", nayoseSakiSysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST);
				if ((dataList == null) || (dataList.length == 0))
				{
					returnCd = PMP_ERR_NODATA;   // データなし
				}
				else
				{
					// OM-2014-000XXXX ADD START
					// お客様情報照会(PMP連携用)結果を取得
					custResultMsg = getResultMsgList(result, ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST)[0];
					// お客様情報照会(PMP連携用)結果マップを取得
					nowCustMap = copyMsgToMap(custResultMsg, ECK0011B050CBSMsg1List.class, ECK0011B050CBSMsg1List.class);
					// OM-2014-000XXXX ADD END

					String mapKeyPre = ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST + "[0].";
					bfSakiMemberSbtCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MEMBER_SBT_CD);
					bfSakiNkname = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.NKNAME);
					bfSakiNknmChgeYmd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.NKNAME_CHGE_YMD);
					bfSakiEoid = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EOID);
					bfSakiEoidChgeYmd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EOID_CHGE_YMD);
					bfSakiEonetidMiIkoFlg = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EONETID_MI_IKO_FLG);
					bfSakiContCustBirthd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CONT_CUST_BIRTHD);
					bfSakiRrksMlad = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MLAD);
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		//***************************************************
		// 会員種別チェック(名寄せ先)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (!checkSakiMemberSbtCd(handle, param, gyomuKbn, bfSakiMemberSbtCd, bfSakiEonetidMiIkoFlg))
			{
				returnCd = PMP_ERR_NAYOSE_SAKI_MMB_SBT;   // 名寄せ先会員種別チェックエラー
			}
		}

		//***************************************************
		// eoID更新日チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !eoid.equals(bfSakiEoid))
			{
				// 変更不可期間チェック
				if (!checkUpdFailPrd(handle, param, opeDate, WORK_PARAM_ID_EOID_CHGFAIL_DAYS, bfSakiEoidChgeYmd))
				{
					returnCd = PMP_ERR_EOID_TERM;	// eoID規定の期間以内の更新エラー
				}
			}
		}

		//***************************************************
		// eoID重複チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !eoid.equals(bfSakiEoid))
			{
				// 変更不可期間チェック
				if (!checkDupEoId(handle, param, eoid))
				{
					returnCd = PMP_ERR_EOID_DUP;	// eoID重複チェック
				}
			}
		}

		//***************************************************
		// eoID禁則文字チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !eoid.equals(bfSakiEoid))
			{
				// eoID禁則文字チェック呼出
				if (!checkEoidErrMoji(handle, param, eoid))
				{
					returnCd = PMP_ERR_EOID_PROHIBITION;	// eoID禁則文字チェックエラー
				}
			}
		}
		/*---< ANK-2557-00-00 add start >---*/
		//***************************************************
		// eoID半角英数字11チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !eoid.equals(bfSakiEoid))
			{
				// eoID半角英数字11チェック呼出
				if (!enNumber11Check(handle, param, eoid))
				{
					returnCd = PMP_ERR_EOID_PROHIBITION;	// eoID半角英数字11チェックエラー
				}
			}
		}
		/*---< ANK-2557-00-00 add end >---*/

		//***************************************************
		// ニックネーム更新日チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !JCKBPCommon.isNullOrBlank(nkname) && !nkname.equals(bfSakiNkname))
			{
				// 変更不可期間チェック
				if (!checkUpdFailPrd(handle, param, opeDate, WORK_PARAM_ID_NKNM_CHGFAIL_DAYS, bfSakiNknmChgeYmd))
				{
					returnCd = PMP_ERR_NKNM_TERM;	// ニックネーム規定の期間以内の更新エラー
				}
			}
		}

		//***************************************************
		// ニックネーム重複チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !JCKBPCommon.isNullOrBlank(nkname) && !nkname.equals(bfSakiNkname))
			{
				// ニックネーム重複チェック
				if (!checkDupNkName(handle, param, nkname))
				{
					returnCd = PMP_ERR_NKNM_DUP;	// ニックネーム重複エラー
				}
			}
		}

		//***************************************************
		// 拒否メールドメインチェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "2", "3"))
			{
				String mailDomain = henkoTetuzukityuMlad.substring(henkoTetuzukityuMlad.indexOf("@") + 1);
				// 拒否メールドメインチェック
				if (!checkKyohiMailDomain(handle, param, opeDate, mailDomain))
				{
					returnCd = PMP_ERR_REJECT_DOMAIN;	// 拒否メールドメインチェックエラー
				}
			}
		}

		//ANK-2156-00-00 ADD START
		//***************************************************
		// mineo契約者チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "4"))
			{
				// mineo契約者チェック
				if (!checkMineoKei(handle, param, opeDate, sysid))
				{
					returnCd = "26"; // mineo契約者チェックエラー
				}
			}
		}
		//ANK-2156-00-00 ADD END

		//***************************************************
		// 同一人チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3"))
			{
				String chkKanaNm = "";
				String chkBirthd = "";
				String chkMlad = "";
				if (JCKBPCommon.inArray(gyomuKbn, "0", "2"))
				{
					chkKanaNm = bfSareCustKana;
					chkBirthd = bfSareCustBirthd;
				}
				else
				{
					chkKanaNm = contCustKana;
					chkBirthd = contCustBirthd;
				}
				if (JCKBPCommon.inArray(gyomuKbn, "0", "1"))
				{
					chkMlad = rrksMlad;
				}
				else
				{
					chkMlad = henkoTetuzukityuMlad;
				}
				// 同一人チェック
				if (!checkSameMmb(handle, param, chkKanaNm, chkBirthd, chkMlad, nayoseSakiSysid))
				{
					returnCd = PMP_ERR_MMB_DUP;	// フリガナ氏名、生年月日、連絡用アドレス重複エラー
				}
			}
		}

		//***************************************************
		// メールアドレス変更有無チェック
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (JCKBPCommon.inArray(gyomuKbn, "2", "3"))
			{
				if (!rrksMlad.equals(bfSakiRrksMlad))
				{
					returnCd = PMP_ERR_PARAM;   // 業務区分・連絡先メールアドレス妥当性エラー
				}
				else if (henkoTetuzukityuMlad.equals(bfSakiRrksMlad))
				{
					returnCd = PMP_ERR_PARAM;   // 業務区分・変更手続中メールアドレス妥当性エラー
				}
			}
		}

		//***************************************************
		// 支払い方法入力支援情報の取得(名寄せ先)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			result = callECN0131B006(handle, param, nayoseSakiSysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECN0131B006CBSMsg.ECN0131B006CBSMSGLIST);
				if ((dataList != null) && (dataList.length > 0))
				{
					for (int i = 0; i < dataList.length; i++)
					{
						CAANMsg rec = dataList[i];
						String paywayInputShienCd = rec.getString(ECN0131B006CBSMsgList.PAYWAY_INPUT_SHIEN_CD);
						if (PAYWAY_INPSUP_CD_ISPKS.equals(paywayInputShienCd))
						{
							bfPaywayInputShienInfo = rec;
							break;
						}
					}
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		// ST-2014-0000131 ADD START
		//***************************************************
		//グループ情報照会(グループリーダーSYSIDの取得
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			// グループ情報照会SC呼出
			result = callECK0111B002(handle, param, "1", sysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECK0111B002CBSMsg.ECK0111B002CBSMSG1LIST);
				// お客様情報照会(PMP連携用)結果マップを取得
				nowCustMap = copyMsgToMap(custResultMsg, ECK0111B002CBSMsg1List.class, ECK0111B002CBSMsg1List.class);

				
				String mapKeyPre = ECK0111B002CBSMsg.ECK0111B002CBSMSG1LIST + "[0].";
				grpLeaderSysid = getResultString(result, mapKeyPre + ECK0111B002CBSMsg1List.GRP_LEADER_SYSID);
			}
			printDebugLog("グループリーダーSYSID:[" + grpLeaderSysid + "]");
		}
		// ST-2014-0000131 ADD END

		//***************************************************
		// 名寄せ(顧客、契約Ｓ)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			Map nayoseMap = new HashMap();
			nayoseMap.put("gyomu_kbn", gyomuKbn);
			nayoseMap.put("sysid", sysid);
			nayoseMap.put("nayose_saki_sysid", nayoseSakiSysid);
			nayoseMap.put("eoid", eoid);
			nayoseMap.put("cont_cust_nm", contCustNm);
			nayoseMap.put("cont_cust_kana", contCustKana);
			nayoseMap.put("cont_cust_sex_cd", contCustSexCd);
			nayoseMap.put("cont_cust_birthd", contCustBirthd);
			nayoseMap.put("cont_pcd", contPcd);
			nayoseMap.put("cont_bnchigo", contBnchigo);
			nayoseMap.put("cont_adrttm", contAdrttm);
			nayoseMap.put("cont_ad_bnkt_sta_pst", contAdBnktStaPst);
			nayoseMap.put("pwd_reminder_qs_cd", pwdReminderQsCd);
			nayoseMap.put("pwd_reminder_ans", pwdReminderAns);
			nayoseMap.put("nkname", nkname);
			nayoseMap.put("telno", telNo);
			nayoseMap.put("rrsk_mlad", rrksMlad);
			nayoseMap.put("henko_tetuzukityu_mlad", henkoTetuzukityuMlad);

			if (!JCKBPCommon.isNullOrEmpty(mailRcvSetteList))
			{
				Map[] mailRcvSetteMaps = new HashMap[mailRcvSetteList.size()];
				for (int i = 0; i < mailRcvSetteList.size(); i++)
				{
					Map tempMap = mailRcvSetteList.get(i);

					Map mailRcvSetteMap = new HashMap();
					mailRcvSetteMap.put(ECK0011C080CBSMsg1List.OPTINM_NO, tempMap.get("kmk_number"));
					mailRcvSetteMap.put(ECK0011C080CBSMsg1List.RCV_DIV, tempMap.get("rcv_div"));
					mailRcvSetteMaps[i] = mailRcvSetteMap;
				}
				nayoseMap.put("ECK0011C080CBSMsg1List", mailRcvSetteMaps);
			}

			result = callECK0011C080Map(handle, param, nayoseMap);
			if (isError(result))
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}
		}

		// ST-2014-0000131 ADD START
		//***************************************************
		// サービス契約内訳<eoモバイル>変更
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if (!JCKBPCommon.isNullOrBlank(grpLeaderSysid))
			{
				result = callEKK0201C080(handle, param, sysid, grpLeaderSysid, opeDate);
			}
		}
		// ST-2014-0000131 ADD END

		//***************************************************
		// 名寄せ(工事Ｓ)
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			Map resultKoji = callEKU0011C020(handle, param, sysid, nayoseSakiSysid);
			if (isError(resultKoji))
			{
				// 関連チェック"EA"以外はエラー
				// （EAは、名寄せ対象データなし等、処理異常でなく処理が終了したときに返却される。）
				String scStatusCd = getStatus(resultKoji).toString();
				if ("1100".equals(scStatusCd))
				{
					String sysidBfErr = getResultString(resultKoji, EKU0011C020CBSMsg.SYSID_BF_ERR);
					if (!"EA".equals(sysidBfErr))
					{
						returnCd = PMP_ERR_OTHER;   // その他のエラー
						result = resultKoji;
					}
				}
				else
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
					result = resultKoji;
				}
			}
		}

		//***************************************************
		// 支払い方法入力支援情報の更新
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			//***************************************************
			// 名寄せ先の支払い方法入力支援情報を登録
			//***************************************************
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && (bfPaywayInputShienInfo == null))
			{
				result = callECN0131D011ForIspks(handle, param, nayoseSakiSysid, ispksSvcKeiNo);
				if (isSuccess(result))
				{
					afPaywayInputShienInfoPaywayNo = getResultString(result, ECN0131D011CBSMsg.PAYWAY_NO);
					afPaywayInputShienInfoTsyrnPaySeq = getResultString(result, ECN0131D011CBSMsg.TSYRN_PAY_SEQ);
					afPaywayInputShienInfoAddDtm = getResultString(result, ECN0131D011CBSMsg.ADD_DTM);
					afPaywayInputShienInfoAddOpacnt = getResultString(result, ECN0131D011CBSMsg.ADD_OPEACNT);
					afPaywayInputShienInfoUpdDtm = getResultString(result, ECN0131D011CBSMsg.UPD_DTM);
					afPaywayInputShienInfoUpdOpacnt = getResultString(result, ECN0131D011CBSMsg.UPD_OPEACNT);
					afPaywayInputShienInfoMkFlg = getResultString(result, ECN0131D011CBSMsg.MK_FLG);
				}
			}

			//***************************************************
			// 名寄せ先の支払い方法入力支援情報を更新
			//***************************************************
			if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && (bfPaywayInputShienInfo != null))
			{
				result = callECN0131C011(handle, param,
										bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.PAYWAY_NO),
										bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.UPD_DTM),
										bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.PAYWAY_INPUT_SHIEN_CD),
										ispksSvcKeiNo,
										bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.TSYRN_PAY_SEQ));
				if (isSuccess(result))
				{
					// 更新結果から取得
					afPaywayInputShienInfoPaywayNo = getResultString(result, ECN0131C011CBSMsg.KEY_PAYWAY_NO);
					afPaywayInputShienInfoTsyrnPaySeq = getResultString(result, ECN0131C011CBSMsg.TSYRN_PAY_SEQ);
					afPaywayInputShienInfoUpdDtm = getResultString(result, ECN0131C011CBSMsg.UPD_DTM);
					afPaywayInputShienInfoUpdOpacnt = getResultString(result, ECN0131C011CBSMsg.UPD_OPEACNT);
					afPaywayInputShienInfoMkFlg = getResultString(result, ECN0131C011CBSMsg.MK_FLG);

					// 登録年月日時分秒、登録オペレータアカウントは更新結果から取得できないため
					// 支払い方法入力支援情報の取得(名寄せ先)より取得
					afPaywayInputShienInfoAddDtm = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.ADD_DTM);
					afPaywayInputShienInfoAddOpacnt = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.ADD_OPEACNT);
				}
			}

			//***************************************************
			// 名寄せ先の旧ISP決済分の支払い方法入力支援情報を削除
			//***************************************************
			if ((isSuccess(result)) && ("4".equals(gyomuKbn)) && (bfPaywayInputShienInfo != null))
			{
				String paywayNo = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.PAYWAY_NO);
				String updDtm = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.UPD_DTM);
//				result = callECN0131E010(handle, param, paywayNo, updDtm, nayoseSakiSysid);
				result = callECN0131E011(handle, param, paywayNo, updDtm);
				if (isSuccess(result))
				{
					bfPaywayInputShienInfoUpdDtm = getResultString(result, ECN0131E011CBSMsg.UPD_DTM);
					bfPaywayInputShienInfoUpdOpacnt = getResultString(result, ECN0131E011CBSMsg.UPD_OPEACNT);
					bfPaywayInputShienInfoMkFlg = getResultString(result, ECN0131E011CBSMsg.MK_FLG);
				}
			}

			returnCd = (isSuccess(result)) ? returnCd : PMP_ERR_OTHER;   // その他のエラー
		}

		//***************************************************
		// エイジング更新
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if ((JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3")) && (!bfSakiEoid.equals(eoid)))
			{
				//***************************************************
				// 旧eoIDのエイジング使用終了（名寄せ先会員分）
				//***************************************************
				result = chgEoIdAgingStateEnd(handle, param, bfSakiEoid);

				//***************************************************
				// 新eoIDのエイジング登録
				//***************************************************
				if (isSuccess(result))
				{
					result = callEZM0111D010(handle, param, AGING_SBT_CD_EOID, eoid);
				}
			}

			if (isSuccess(result))
			{
				//***************************************************
				// 旧eoIDのエイジング使用終了（名寄せされる会員分）
				//***************************************************
				// 名寄せされる会員eoIDと初期eoIDが異なる場合に、名寄せされる会員eoIDを使用終了にする。
				if (isSuccess(result) && !bfSareShokiEoid.equals(bfSareEoid))
				{
					result = chgEoIdAgingStateEnd(handle, param, bfSareEoid);
				}
			}

			if ((isSuccess(result)) && (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3"))
					&& ((!JCKBPCommon.isNullOrBlank(nkname) && !nkname.equals(bfSakiNkname))
						|| (!JCKBPCommon.isNullOrBlank(bfSakiNkname) && !bfSakiNkname.equals(nkname))))
			{
				//***************************************************
				// 旧ニックネームのエイジング使用終了
				//***************************************************
				if (!JCKBPCommon.isNullOrBlank(bfSakiNkname) )
				{
					result = chgNkNameAgingStateEnd(handle, param, bfSakiNkname);
				}

				//***************************************************
				// 新ニックネームのエイジング登録
				//***************************************************
				if (isSuccess(result) && !JCKBPCommon.isNullOrBlank(nkname))
				{
					result = callEZM0111D010(handle, param, AGING_SBT_CD_NKNAME, nkname);
				}
			}

			returnCd = (isSuccess(result)) ? returnCd : PMP_ERR_OTHER;   // その他のエラー
		}

		//***************************************************
		// 電話番号予約名寄せ更新
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			Map resulttelnoRcv = telnoRcvNayoseUpd(handle, param, sysid, nayoseSakiSysid);
			if (isError(resulttelnoRcv))
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
				result = resulttelnoRcv;
			}
		}

		//***************************************************
		// 変更後お客様情報取得
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			//***************************************************
			// お客様情報の取得
			//***************************************************
			result = callECK0011B050(handle, param, "1", nayoseSakiSysid);
			if (isSuccess(result))
			{
				CAANMsg[] dataList = getResultMsgList(result, ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST);
				if ((dataList == null) || (dataList.length == 0))
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
				}
				else
				{
					String mapKeyPre = ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST + "[0].";
					afMemberSbtCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MEMBER_SBT_CD);
					afKeishaTypeCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.KEISHA_TYPE_CD);
					afNkname = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.NKNAME);
					//afEoid = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.EOID);
					afContBirthd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CONT_CUST_BIRTHD);
					afContSexCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CONT_CUST_SEX_CD);
					afContIspUseFailFlg = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CONT_ISP_USE_FAIL_FLG);
					afMmbIspksStatCd = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.MMB_ISP_KSSAI_STAT_CD);
					afContCustNm = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.CONT_CUST_NM);
					// ANK-3706-00-00 ADD START
					afKeishaTelno = getResultString(result, mapKeyPre + ECK0011B050CBSMsg1List.KEISHA_TELNO);
					// ANK-3706-00-00 ADD END
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;   // その他のエラー
			}

			//***************************************************
			// グループ情報の取得
			//***************************************************
			if (PMP_NORMAL_END.equals(returnCd))
			{
				result = callECK0111B040(handle, param, "1", nayoseSakiSysid);
				if (isSuccess(result))
				{
					CAANMsg[] dataList = getResultMsgList(result, ECK0111B040CBSMsg.ECK0111B040CBSMSG1LIST);
					if ((dataList == null) || (dataList.length == 0))
					{
//						returnCd = PMP_ERR_OTHER;   // その他のエラー
					}
					else
					{
						for (int i = 0; i < dataList.length; i++)
						{
							CAANMsg rec = dataList[i];
							String grpSbtCd = rec.getString(ECK0111B040CBSMsg1List.GRP_SBT_CD);
							if (GRP_SBT_CD_FAMILY.equals(grpSbtCd))
							{
								afGrpInfo = rec;
								break;
							}
						}
					}
				}
				else
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
				}
			}

			//***************************************************
			// お客様グループ設定情報の取得
			//***************************************************
			if (PMP_NORMAL_END.equals(returnCd))
			{
				result = callECK0121B020(handle, param, "1", nayoseSakiSysid);
				if (isSuccess(result))
				{
					CAANMsg[] dataList = getResultMsgList(result, ECK0121B020CBSMsg.ECK0121B020CBSMSG1LIST);
					if ((dataList != null) && (dataList.length > 0))
					{
						afGrpSetteList = dataList;
					}
					else
					{
//						returnCd = PMP_ERR_OTHER;   // その他のエラー
					}
				}
				else
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
				}
			}

			//***************************************************
			// 督促データの取得
			//***************************************************
			if ((PMP_NORMAL_END.equals(returnCd)) && (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3")))
			{
				result = callECH0231B010(handle, param, "1", nayoseSakiSysid);
				if (isSuccess(result))
				{
					String mapKeyPre = ECH0231B010CBSMsg.ECH0231B010CBSMSG1LIST + "[0].";
					afTokusokuStat = getResultString(result, mapKeyPre + ECH0231B010CBSMsg1List.TOKUSOKU_STAT);
				}
				else
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
				}
			}

			//***************************************************
			// サービス契約識別情報の取得
			//***************************************************
			if (PMP_NORMAL_END.equals(returnCd))
			{
				result = callEKK0081B523(handle, param, "2", nayoseSakiSysid);
				if (isSuccess(result))
				{
					CAANMsg[] dataList = getResultMsgList(result, EKK0081B523CBSMsg.EKK0081B523CBSMSG1LIST);
					if ((dataList != null) && (dataList.length > 0))
					{
						afSvcKeiList = dataList;
					}
				}
				else
				{
					returnCd = PMP_ERR_OTHER;   // その他のエラー
				}
			}
		}

		//***************************************************
		// 指示書登録
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			//***************************************************
			// 指示書登録(名寄せ先会員情報変更連携)	
			//***************************************************
			Map<String, Object> NayoseSakiUpdMap = createShijishoParamNayoseUpd(gyomuKbn, opeDate, nayoseSakiSysid, eoid, eoidPwd, rrksMlad, afNkname, afMemberSbtCd,
					// ANK-3706-00-00 MOD START
					//afKeishaTypeCd, afContBirthd, afContSexCd, afContIspUseFailFlg, afMmbIspksStatCd);
					afKeishaTypeCd, afContBirthd, afContSexCd, afContIspUseFailFlg, afMmbIspksStatCd, afKeishaTelno);
					// ANK-3706-00-00 MOD END
			result = callECK0151D010Map(handle, param, NayoseSakiUpdMap);

			//***************************************************
			// 指示書登録(名寄せ先会員情報クリア連携用)
			//***************************************************
			if (isSuccess(result))
			{
				if ((JCKBPCommon.isNullOrBlank(afNkname)) && (!JCKBPCommon.isNullOrBlank(bfSakiNkname)))
				{
					Map<String, Object> nknmAgeFlgClrMap = createShijishoParamClearNknm(nayoseSakiSysid, afNkname);
					result = callECK0151D010Map(handle, param, nknmAgeFlgClrMap);
				}
			}

			//***************************************************
			// 指示書登録(名寄せされる会員情報削除連携)
			//***************************************************
			if (isSuccess(result))
			{
				Map<String, Object> sysidDelMap = createShijishoParamSysidDel(sysid);
				result = callECK0151D010Map(handle, param, sysidDelMap);
			}

			//***************************************************
			// 指示書登録(名寄せ先会員本人分のグループ情報連携)
			//***************************************************
			if (isSuccess(result))
			{
				String addDtm = afGrpInfo.getString(ECK0111B040CBSMsg1List.ADD_DTM);
				String addOpeacnt = afGrpInfo.getString(ECK0111B040CBSMsg1List.ADD_OPEACNT);
				String updDtm = afGrpInfo.getString(ECK0111B040CBSMsg1List.UPD_DTM);
				String updOpeacnt = afGrpInfo.getString(ECK0111B040CBSMsg1List.UPD_OPEACNT);
				Map<String, Object> grpAddMap = createShijishoParamGrpAdd(nayoseSakiSysid, nayoseSakiSysid, addDtm, addOpeacnt, updDtm, updOpeacnt);
				result = callECK0151D010Map(handle, param, grpAddMap);
			}

			//***************************************************
			// 指示書登録(名寄せされる会員本人分のグループ情報(削除)連携)
			//***************************************************
			if (isSuccess(result))
			{
				String addDtm = bfGrpInfo.getString(ECK0111B040CBSMsg1List.ADD_DTM);
				String addOpeacnt = bfGrpInfo.getString(ECK0111B040CBSMsg1List.ADD_OPEACNT);
				String updDtm = afGrpInfo.getString(ECK0111B040CBSMsg1List.UPD_DTM);
				String updOpeacnt = afGrpInfo.getString(ECK0111B040CBSMsg1List.UPD_OPEACNT);
				Map<String, Object> grpAddMap = createShijishoParamGrpDel(sysid, sysid, addDtm, addOpeacnt, updDtm, updOpeacnt);
				result = callECK0151D010Map(handle, param, grpAddMap);
			}

			//***************************************************
			// 指示書登録(名寄せ先会員に紐づくグループ情報及び、名寄せされる会員に紐づいていたグループ情報削除連携)
			//***************************************************
			if (isSuccess(result))
			{
				for (CAANMsg grpSetteInfo : afGrpSetteList) {
					if (nayoseSakiSysid.equals(grpSetteInfo.getString(ECK0121B020CBSMsg1List.SYSID)))
					{
						continue;
					}
					String trgtSysid = grpSetteInfo.getString(ECK0121B020CBSMsg1List.SYSID);
					String addDtm = grpSetteInfo.getString(ECK0121B020CBSMsg1List.ADD_DTM);
					String addOpeacnt = grpSetteInfo.getString(ECK0121B020CBSMsg1List.ADD_OPEACNT);
					String updDtm = grpSetteInfo.getString(ECK0121B020CBSMsg1List.UPD_DTM);
					String updOpeacnt = grpSetteInfo.getString(ECK0121B020CBSMsg1List.UPD_OPEACNT);
					// 名寄せ先会員に紐づくグループ情報
					Map<String, Object> grpAddMap = createShijishoParamGrpAdd(nayoseSakiSysid, trgtSysid, addDtm, addOpeacnt, updDtm, updOpeacnt);
					result = callECK0151D010Map(handle, param, grpAddMap);
					// 名寄せされる会員に紐づいていたグループ情報削除連携
					Map<String, Object> grpAddMap2 = createShijishoParamGrpDel(sysid, trgtSysid, addDtm, addOpeacnt, updDtm, updOpeacnt);
					result = callECK0151D010Map(handle, param, grpAddMap2);
				}
			}
			

			//***************************************************
			// 指示書登録(名寄せ先会員に紐づく旧グループ情報削除連携)
			//***************************************************
			if (isSuccess(result))
			{
				for (CAANMsg grpSetteInfo : bfGrpSetteList) {
					String trgtSysid = grpSetteInfo.getString(ECK0121B020CBSMsg1List.GRP_LEADER_SYSID);
					String addDtm = grpSetteInfo.getString(ECK0121B020CBSMsg1List.ADD_DTM);
					String addOpeacnt = grpSetteInfo.getString(ECK0121B020CBSMsg1List.ADD_OPEACNT);
					String updDtm = grpSetteInfo.getString(ECK0121B020CBSMsg1List.UPD_DTM);
					String updOpeacnt = grpSetteInfo.getString(ECK0121B020CBSMsg1List.UPD_OPEACNT);
					// 名寄せ先会員に紐づくグループ情報
					Map<String, Object> grpAddMap2 = createShijishoParamGrpDel(nayoseSakiSysid, trgtSysid, addDtm, addOpeacnt, updDtm, updOpeacnt);
					result = callECK0151D010Map(handle, param, grpAddMap2);
				}
			}
			

			//***************************************************
			// 指示書登録(払方法入力支援情報(新ISP決済分)の登録連携)
			//***************************************************
			if (isSuccess(result) && JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3"))
			{
				Map<String, Object> paywayAddMap = createShijishoParamPaywayAdd(nayoseSakiSysid, ispksSvcKeiNo, PAYWAY_INPSUP_CD_ISPKS,
						afPaywayInputShienInfoPaywayNo, afPaywayInputShienInfoTsyrnPaySeq, afPaywayInputShienInfoAddDtm,
						afPaywayInputShienInfoAddOpacnt, afPaywayInputShienInfoUpdDtm, afPaywayInputShienInfoUpdOpacnt, afPaywayInputShienInfoMkFlg, afTokusokuStat);
				result = callECK0151D010Map(handle, param, paywayAddMap);
			}

			//***************************************************
			// 指示書登録(支払方法入力支援情報(旧ISP決済分)の無効連携)
			//***************************************************
			if (isSuccess(result))
			{
				if ((isSuccess(result)) && ("4".equals(gyomuKbn)) && (bfPaywayInputShienInfo != null))
				{
					String svcKeiNo = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.ISP_KSSAI_SVC_KEI_NO);
					String paywayNo = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.PAYWAY_NO);
					String paywayInputShienCd = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.PAYWAY_INPUT_SHIEN_CD);
					String tsyrnPaySeq = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.TSYRN_PAY_SEQ);
					String addDtm = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.ADD_DTM);
					String addOpeacnt = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.ADD_OPEACNT);
					Map<String, Object> paywayDelMap = createShijishoParamPaywayAdd(nayoseSakiSysid, svcKeiNo, paywayInputShienCd, paywayNo, tsyrnPaySeq, addDtm,
							addOpeacnt, bfPaywayInputShienInfoUpdDtm, bfPaywayInputShienInfoUpdOpacnt, bfPaywayInputShienInfoMkFlg, null);
					result = callECK0151D010Map(handle, param, paywayDelMap);
				}
			}

			//***************************************************
			// 指示書登録(名寄せ先会員に紐づくサービス情報及び、名寄せされる会員に紐づいていたサービス情報削除連携)
			//***************************************************
			if ((isSuccess(result)) && (afSvcKeiList != null) && (afSvcKeiList.length > 0))
			{
				for (CAANMsg svcKeiInfo : afSvcKeiList) {
					Map<String, Object> custIdAddMap = null;

					String svcKeiNo = svcKeiInfo.getString(EKK0081B523CBSMsg1List.SVC_KEI_NO);
					String tstaYmd = svcKeiInfo.getString(EKK0081B523CBSMsg1List.SHOSA_YMD);
					String tendYmd = "20991231";
					String keiTypeCd = svcKeiInfo.getString(EKK0081B523CBSMsg1List.SVC_CD_NEW);
					if (keiTypeCd.equals("51")){
						keiTypeCd = "04";
					}
					String svcCd = svcKeiInfo.getString(EKK0081B523CBSMsg1List.SVC_CD_OLD) + svcKeiInfo.getString(EKK0081B523CBSMsg1List.PPLAN_CD_OLD);
					String addDtm = svcKeiInfo.getString(EKK0081B523CBSMsg1List.ADD_DTM);
					String addOpeacnt = svcKeiInfo.getString(EKK0081B523CBSMsg1List.ADD_OPEACNT);
					String updDtm = svcKeiInfo.getString(EKK0081B523CBSMsg1List.UPD_DTM);
					String updOpeacnt = svcKeiInfo.getString(EKK0081B523CBSMsg1List.UPD_OPEACNT);

					// 顧客ID情報相関(名寄せされる会員)
					custIdAddMap = createShijishoParamCustIdAdd(sysid, svcKeiNo, tstaYmd, opeDate,
																	addDtm, addOpeacnt, updDtm, updOpeacnt, "0", "00", "00000");
					result = callECK0151D010Map(handle, param, custIdAddMap);
					// 各種サービス契約(名寄せされる会員)
					custIdAddMap = createShijishoParamCustIdAdd(sysid, svcKeiNo, tstaYmd, opeDate,
																	addDtm, addOpeacnt, updDtm, updOpeacnt, "0", keiTypeCd, svcCd);
					result = callECK0151D010Map(handle, param, custIdAddMap);
					// 顧客ID情報相関(名寄せ先会員)
					custIdAddMap = createShijishoParamCustIdAdd(nayoseSakiSysid, svcKeiNo, tstaYmd, tendYmd,
																	addDtm, addOpeacnt, updDtm, updOpeacnt, "0", "00", "00000");
					result = callECK0151D010Map(handle, param, custIdAddMap);
					// 各種サービス契約(名寄せ先会員)
					custIdAddMap = createShijishoParamCustIdAdd(nayoseSakiSysid, svcKeiNo, tstaYmd, tendYmd,
																	addDtm, addOpeacnt, updDtm, updOpeacnt, "0", keiTypeCd, svcCd);
					result = callECK0151D010Map(handle, param, custIdAddMap);
				}
			}

			returnCd = isError(result) ? PMP_ERR_SYSTEM : returnCd;
		}

		//***************************************************
		// CCMG連携
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			String bfIspKssaiSvcKeiNo = null;
			if (bfPaywayInputShienInfo != null)
			{
				bfIspKssaiSvcKeiNo = bfPaywayInputShienInfo.getString(ECN0131B006CBSMsgList.ISP_KSSAI_SVC_KEI_NO);
			}

			//***************************************************
			// CCMG連携(会員種別変更解約CCMG連携)
			//***************************************************
			boolean mmbSbtUpdApicalled = needCallApiMmbSbtUpd(bfSakiEonetidMiIkoFlg, bfSakiMemberSbtCd, afMemberSbtCd);
			if (mmbSbtUpdApicalled)
			{
				boolean res = requestCcmgApiChgMmbSbtDsl(handle, param, nayoseSakiSysid,bfSakiEonetidMiIkoFlg, bfSakiMemberSbtCd, afMemberSbtCd, nayoseSakiSysid,
						PMP_CCMG_RENKEI_UPD_NM);
				if (!res)
				{
					returnCd = PMP_ERR_SYSTEM;
				}

				// 「業務区分が"0" or "1" or "2" or "3" かつ ISP決済用のサービス契約番号が名寄せ前後で異なる」場合、当CC終了後にCCMG連携する。
				// ※いったんコミットする必要がある為
				if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3") && !ispksSvcKeiNo.equals(bfIspKssaiSvcKeiNo))
				{
					// CCMG連携実行要にする
					ccmgRunYh = PMP_CCMG_RENKEI_RUN_YO;
				}

			}
			//***************************************************
			// CCMG連携(ISP決済方法変更CCMG連携)
			//***************************************************
			else if (PMP_NORMAL_END.equals(returnCd))
			{
				// 「会員種別変更解約CCMG連携を行っていない時 かつ ISP決済用のサービス契約番号が名寄せ前後で異なる」
				if (!mmbSbtUpdApicalled && !ispksSvcKeiNo.equals(bfIspKssaiSvcKeiNo))
				{
					boolean res = requestCcmgApiIspksWayChg(handle, param, nayoseSakiSysid, ispksSvcKeiNo, nayoseSakiSysid, PMP_CCMG_RENKEI_UPD_NM);
					if (!res)
					{
						returnCd = PMP_ERR_SYSTEM;
					}
				}
			}
		}

		//***************************************************
		// 返却パラメータ設定
		//***************************************************

		// 最後に実行したSCの実行結果を取得
		result = getLastResult(param);

		// 下りコントロールマップのセット
		setResultCtrlData(param, result, fixedText);

		// SC実行エラーの場合は、結果に応じてリターンコードを設定
		if (PMP_ERR_OTHER.equals(returnCd))
		{
			String scReturnCd = getReturnCode(result).toString();
			String scStatusCd = getStatus(result).toString();
			returnCd = ("0".equals(scReturnCd) && "1000".equals(scStatusCd)) ? PMP_ERR_PARAM : PMP_ERR_SYSTEM;
		}

		// 下りユーザデータマップのセット
		Map<String, Object> resultMap = new HashMap();
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.RETURN_CD, returnCd);
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.CK_UPD_DTM_RES, ckUpdDtmRes);						// 最新更新日時(お客様)
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.KK_UPD_DTM_RES, kkUpdDtmRes);						// 最新更新日時(サービス契約)
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.NAYOSE_SAKI_CK_UPD_DTM_RES, nayoseSakiCkUpdDtmRes);	// 最新更新日時(サービス契約)
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.NAYOSE_SAKI_KK_UPD_DTM_RES, nayoseSakiKkUpdDtmRes);	// 最新更新日時(サービス契約)
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.CONT_CUST_NM_RES, afContCustNm);						// コンテンツお客様名
		resultMap.put(CKSV9002_CKSV9002OP_CKSV900201CC.CCMG_RUN_YH_RES, ccmgRunYh);							// CCMG連携実行要否
		setResultUserData(param, fixedText, resultMap);

		//*************************************************
		// 処理結果の判定
		//*************************************************
		if (isError(result))
		{
			String errMsg = "お客様名寄せCCでエラーが発生しました)";
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return param;
	}

	/**
	 * PMP連携用排他制御
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param returnCd リターンコード
	 * @param sysid 名寄せされるSYSID
	 * @param nayoseSakiSysid 名寄せ先SYSID
	 * @return リターンコード
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	@SuppressWarnings("unchecked")
	private String exclusion(SessionHandle handle, IRequestParameterReadWrite param, Map result, String returnCd, String sysid, String nayoseSakiSysid)
			throws RequestParameterException, SCException {

		String[] sysidAry = {sysid, nayoseSakiSysid};

		//***************************************************
		// PMP連携用排他制御
		//***************************************************
		for (String targetSysid : sysidAry) {
			result = callECKA9020001(handle, param, targetSysid, "2");
			if (isSuccess(result))
			{
				String errFlg = getResultString(result, ECKA9020001CBSMsg.LOCK_ERR_FLG);
				if (!"0".equals(errFlg))
				{
					returnCd = PMP_ERR_EXCLUSION;
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;
			}
			if (!PMP_NORMAL_END.equals(returnCd)) {
				break;
			}
		}
		return returnCd;
	}
	/**
	 * 最終更新日時チェック
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param returnCd リターンコード
	 * @param sysidAry SYSID
	 * @param ckUpdDtmAry 最終更新日時(お客様)
	 * @param kkUpdDtmAry 最終更新日時(サービス契約)
	 * @return リターンコード
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private String chkUpdDtm(SessionHandle handle, IRequestParameterReadWrite param, String returnCd, String[] sysidAry, String[] ckUpdDtmAry,
			String[] kkUpdDtmAry) throws RequestParameterException, SCException
	{
		for (int i = 0; i < sysidAry.length; i++) {
			String sysid = sysidAry[i];
			String ckUpdDtm = ckUpdDtmAry[i];
			String kkUpdDtm = kkUpdDtmAry[i];
			Map<?, ?> result = callECK0011B120(handle, param, sysid);
			if (isSuccess(result))
			{
				CAANMsg[] list = getResultMsgList(result, ECK0011B120CBSMsg.ECK0011B120CBSMSG1LIST);
				if ((list != null) && (list.length > 0))
				{
					String keyPre = ECK0011B120CBSMsg.ECK0011B120CBSMSG1LIST + "[0].";
					String chkCkUpdDtm = getResultString(result, keyPre + ECK0011B120CBSMsg1List.CK_UPD_DTM);
					String chkKkUpdDtm = getResultString(result, keyPre + ECK0011B120CBSMsg1List.KK_UPD_DTM);
					if (PMP_ERR_EXCLUSION.equals(returnCd))
					{
						ckUpdDtmAry[i] = chkCkUpdDtm;
						kkUpdDtmAry[i] = chkKkUpdDtm;
					}
					else if ((!ckUpdDtm.equals(chkCkUpdDtm)) || (!kkUpdDtm.equals(chkKkUpdDtm)))
					{
//						returnCd = PMP_ERR_EXCLUSION;
						if ((chkCkUpdDtm  != null) && (chkKkUpdDtm != null))
						{
							ckUpdDtmAry[i] = chkCkUpdDtm;
							kkUpdDtmAry[i] = chkKkUpdDtm;
							returnCd = PMP_ERR_EXCLUSION;   // 更新日時が異なる時は排他エラー
						}
						else
						{
							returnCd = PMP_ERR_NODATA;   // 該当データが存在しない場合はデータ無しエラー
						}
					}
				}
				else
				{
					returnCd = PMP_ERR_NODATA;
				}
			}
			else
			{
				returnCd = PMP_ERR_OTHER;
			}
			if (!PMP_NORMAL_END.equals(returnCd) && !PMP_ERR_EXCLUSION.equals(returnCd))
			{
				break;
			}
		}
		return returnCd;
	}

	/**
	 * 指示書パラメータマップ作成(名寄せ先会員情報変更連携用)
	 * @param gyomuKbn 業務区分
	 * @param opeDate 運用日付
	 * @param sysid SYSID
	 * @param eoid EOID
	 * @param eoidPwd EOIDパスワード
	 * @param rrskMlad 連絡先メールアドレス
	 * @param afNkname ニックネーム
	 * @param afMmbSbtCd 会員種別コード
	 * @param afKeishaTypeCd 契約者タイプコード
	 * @param afContBirthd コンテンツ生年月日
	 * @param afContSexCd コンテンツ性別コード
	 * @param afContIspFailFlg コンテンツISP利用不可フラグ
	 * @param afMmbIspksStatCd 	会員ISP決済状態コード
	 * @param afKeishaTelno 契約者電話番号
	 * @return
	 */
	private Map<String, Object> createShijishoParamNayoseUpd(String gyomuKbn, String opeDate, String sysid, String eoid, String eoidPwd, String rrskMlad,
			String afNkname, String afMmbSbtCd, String afKeishaTypeCd, String afContBirthd, String afContSexCd, String afContIspFailFlg,
			// ANK-3706-00-00 MOD START
			//String afMmbIspksStatCd)
			String afMmbIspksStatCd, String afKeishaTelno)
			// ANK-3706-00-00 MOD END
	{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_ADMIN_API);
		map.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		map.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		map.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		// ANK-3706-00-00 MOD START
		//map.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "19");
		map.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "22");
		// ANK-3706-00-00 MOD END
		map.put(ECK0151D010CBSMsg.PARAMETER_1, ADMIN_SJISHO_PARAM1_UPD_PART);
		map.put(ECK0151D010CBSMsg.PARAMETER_3, sysid);
		map.put(ECK0151D010CBSMsg.PARAMETER_6, afMmbSbtCd);
		map.put(ECK0151D010CBSMsg.PARAMETER_8, getAgeFlg(afContBirthd, opeDate));
		map.put(ECK0151D010CBSMsg.PARAMETER_9, afContSexCd);
		map.put(ECK0151D010CBSMsg.PARAMETER_10, ADMIN_SJISHO_PARAM10_HON);   // 本登録
		map.put(ECK0151D010CBSMsg.PARAMETER_11, afContIspFailFlg);
		map.put(ECK0151D010CBSMsg.PARAMETER_12, ADMIN_SJISHO_PARAM12_DOI);   // 同意済み
		map.put(ECK0151D010CBSMsg.PARAMETER_17, afMmbIspksStatCd);
		map.put(ECK0151D010CBSMsg.PARAMETER_19, JCCBPCommon.getSysDateTime());
		// ANK-3706-00-00 ADD START
		map.put(ECK0151D010CBSMsg.PARAMETER_20, afKeishaTelno);
		map.put(ECK0151D010CBSMsg.PARAMETER_21, "");
		map.put(ECK0151D010CBSMsg.PARAMETER_22, "");
		// ANK-3706-00-00 ADD END

		if (JCKBPCommon.inArray(gyomuKbn, "0", "1", "2", "3"))
		{
			map.put(ECK0151D010CBSMsg.PARAMETER_2, eoid);
			map.put(ECK0151D010CBSMsg.PARAMETER_4, eoidPwd);
			map.put(ECK0151D010CBSMsg.PARAMETER_5, afNkname);
			map.put(ECK0151D010CBSMsg.PARAMETER_7, rrskMlad);
			map.put(ECK0151D010CBSMsg.PARAMETER_18, MMB_SBT_TOKUT_FLG_TOKUTZUMI);
		}
		else
		{
			
		}

		if (KEISHA_TYPE_CD_MNT.equals(afKeishaTypeCd))
		{
			// 契約者タイプコード＝保守用の場合、"1"(テスト用ID)を設定，上記以外の場合、"0"(通常ID)を設定
			map.put(ECK0151D010CBSMsg.PARAMETER_13, "1");   // テスト用ID TODO:定数化
		}
		else
		{
			map.put(ECK0151D010CBSMsg.PARAMETER_13, "0");   // 通常ID TODO:定数化
		}

//		map.put(ECK0151D010CBSMsg.PARAMETER_14, param14);
//		map.put(ECK0151D010CBSMsg.PARAMETER_15, param15);
//		map.put(ECK0151D010CBSMsg.PARAMETER_16, param16);

		return map;
	}

	/**
	 * ニックネームクリア用の指示書パラメータ作成。<br />
	 * @param sysid
	 * @param nknm
	 * @param afContBirthd
	 * @return 指示書登録用パラメータ
	 */
	private Map<String, Object> createShijishoParamClearNknm(String sysid, String nknm)
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_ADMIN_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		// ANK-3706-00-00 MOD START
		//inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "19");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "22");
		// ANK-3706-00-00 MOD END
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, ADMIN_SJISHO_PARAM1_CLEAR);
		if ((nknm == null) || ("".equals(nknm))) {
			inMap.put(ECK0151D010CBSMsg.PARAMETER_5, SJISHO_PARAM_CLEAR_FIELD);
		}
		return inMap;
	}

	/**
	 * 名寄せされる会員情報削除用の指示書パラメータ作成。<br />
	 * @param sysid SYSID
	 * @return 指示書登録用パラメータ
	 */
	private Map<String, Object> createShijishoParamSysidDel(String sysid)
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_ADMIN_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		// ANK-3706-00-00 MOD START
		//inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "19");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "22");
		// ANK-3706-00-00 MOD END
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, ADMIN_SJISHO_PARAM1_DEL);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_19, JCCBPCommon.getSysDateTime());
		return inMap;
	}

	/**
	 * グループ登録用の指示書パラメータ作成。<br />
	 * @param sysid SYSID
	 * @param trgtSysid 処理対象SYSID
	 * @param addDtm 登録年月日時分秒
	 * @param addOpeacnt 登録オペレータアカウント
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeacnt 更新オペレータアカウント
	 * @return 指示書登録用パラメータ
	 */
	private Map<String, Object> createShijishoParamGrpAdd(String sysid, String trgtSysid, String addDtm, String addOpeacnt, String updDtm, String updOpeacnt)
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_REPLICA_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRGT_TABLE_ID, "TNM00030");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "10");
//		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, GRP_SBT_CD_FAMILY);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, "001");//TODO:指示書に登録するグループ種別コードの検討が必要
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, sysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, trgtSysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_4, "0");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_5, addDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_6, addOpeacnt);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_8, updDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_9, updOpeacnt);
		return inMap;
	}

	/**
	 * グループ削除用の指示書パラメータ作成。<br />
	 * @param sysid SYSID
	 * @param trgtSysid 処理対象SYSID
	 * @param addDtm 登録年月日時分秒
	 * @param addOpeacnt 登録オペレータアカウント
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeacnt 更新オペレータアカウント
	 * @return 指示書登録用パラメータ
	 */
	private Map<String, Object> createShijishoParamGrpDel(String sysid, String trgtSysid, String addDtm, String addOpeacnt, String updDtm, String updOpeacnt)
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_REPLICA_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRGT_TABLE_ID, "TNM00030");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "10");
//		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, GRP_SBT_CD_FAMILY);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, "001");//TODO:指示書に登録するグループ種別コードの検討が必要
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, sysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, trgtSysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_4, "1"); // 無効フラグ
		inMap.put(ECK0151D010CBSMsg.PARAMETER_5, addDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_6, addOpeacnt);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_8, updDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_9, updOpeacnt);
		return inMap;
	}

	/**
	 * 支払い方法入力支援の指示書パラメータ作成。<br />
	 * @param sysid SYSID
	 * @param svcKeiNo サービス契約番号
	 * @param paywayInpsupCd 支払い方法入力支援コード
	 * @param paywayNo 支払い方法番号
	 * @param tsyrnPaySeq 他システム連携支払い通番
	 * @param addDtm 登録年月日時分秒
	 * @param addOpeacnt 登録オペレータアカウント
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeacnt 更新オペレータアカウント
	 * @param mkFlg 無効フラグ
	 * @param tokusokuStat 督促ステータス
	 * @return 指示書登録用パラメータ
	 */
	private Map<String, Object> createShijishoParamPaywayAdd(String sysid, String svcKeiNo, String paywayInpsupCd, String paywayNo,
			String tsyrnPaySeq, String addDtm, String addOpeacnt, String updDtm, String updOpeacnt, String mkFlg, String tokusokuStat)
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_REPLICA_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRGT_TABLE_ID, "TNM00060");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "13");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, sysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, paywayInpsupCd);   // 支払方法入力支援コード
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, tsyrnPaySeq);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_4, svcKeiNo);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_5, null);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_6, mkFlg);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_7, addDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_8, addOpeacnt);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_9, null);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_10, updDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_11, updOpeacnt);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_12, null);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_13, tokusokuStat);
		return inMap;
	}

	/**
	 * 顧客ID情報の指示書パラメータ作成。<br />
	 * @param sysid SYSID
	 * @param svcKeiNo サービス契約番号
	 * @param tstaYmd 適用開始日
	 * @param tendYmd 適用終了日
	 * @param addDtm 登録年月日時分秒
	 * @param addOpeacnt 登録オペレータアカウント
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeacnt 更新オペレータアカウント
	 * @param mkFlg 無効フラグ
	 * @param keiTypeCd 契約種別コード
	 * @param svcCd サービスコード
	 * @return 指示書登録用パラメータ
	 */
	private Map<String, Object> createShijishoParamCustIdAdd(String sysid, String svcKeiNo, String tstaYmd, String tendYmd,
			String addDtm, String addOpeacnt, String updDtm, String updOpeacnt, String mkFlg, String keiTypeCd, String svcCd)
	{
		Map<String, Object> inMap = new HashMap<String, Object>();
		inMap.put(ECK0151D010CBSMsg.TRN_CD, SJISHO_TRN_CD_REPLICA_API);
		inMap.put(ECK0151D010CBSMsg.ERR_CNT, "0");
		inMap.put(ECK0151D010CBSMsg.TRGT_TABLE_ID, "TNM00040");
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, sysid);
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, "0");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, "13");
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, sysid);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, svcKeiNo);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, tstaYmd);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_4, tendYmd);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_5, mkFlg);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_6, addDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_7, addOpeacnt);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_8, null);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_9, updDtm);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_10, updOpeacnt);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_11, null);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_12, keiTypeCd);
		inMap.put(ECK0151D010CBSMsg.PARAMETER_13, svcCd);
		return inMap;
	}

	/**
	 * BPチェック用パラメータ作成。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return BPチェック用パラメータ
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	{
		// BPチェックはスキップする
		return JCKPmpScParamHenshu.createBpNotCheckParam();
	}

	/**
	 * ＢＰチェック結果を編集する。<br />
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) throws Throwable
	{
		return JCKPmpScParamHenshu.editErrorInfo(param, caanMsgs, returnCode);
	}
}
