/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKejbKK3081SecProc
 *	ソースファイル名：JKKejbKK3081SecProc.java
 *	作成者			：富士通
 *	日付			：2017年03月24日
 *＜機能概要＞
 *	他事業者契約異動通知スキーマに対する副次処理を行う部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v32.00.00	2017/03/24	FJ)二村		ANK-3149-00-00_新規作成
 *	v50.00.00	2020/06/01	FJ)中原		【ANK-3754-00-00】トビラフォン対応
 *	v50.00.01	2020/08/19	FJ)中原		【IT1-2020-0000044】あんしん発着信OPで番ポ番号への番号変更時トビラフォンIDが未設定
 *
 ********************************************************************************/

package eo.ejb.common.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANFinderException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.util.JKKStringUtil;
import eo.ejb.cbm.entity.KK0161ETMsg;
import eo.ejb.cbm.entity.KK0191ETMsg;
import eo.ejb.cbm.entity.KK0351ETMsg;
import eo.ejb.cbm.entity.KK0361ETMsg;
import eo.ejb.cbm.entity.KK0371ETMsg;
import eo.ejb.cbm.entity.KK3081ETMsg;
import eo.ejb.common.JKKModelCommon;


/**
* <p>
* 他事業者契約異動通知に対する副次処理を行う部品です。
* </p>
* @author 富士通
*/
public class JKKejbKK3081SecProc extends JKKejbKK3081DBABase
{
	/** オプションサービス契約番号 **/
	private static final String OP_SVC_KEI_NO = "op_svc_kei_no";
	
	/** オプションサービス契約番号エラー **/
	private static final String OP_SVC_KEI_NO_ERR = "op_svc_kei_no_err";
	
	/** 他事業者契約異動通知状態コード (未通知)*/
	private static final String TAJGS_KEI_IDT_STAT_CD_MITUTI = "0";

	/** 他事業者契約異動通知状態コード (通知不要) */ 
	private static final String TAJGS_KEI_IDT_STAT_CD_TUTIHUYOU = "2";

	/** 他事業者契約異動通知状態コード (通知処理中) */ 
	private static final String TAJGS_KEI_IDT_STAT_CD_SYORITYU = "3";

	/** 他事業者契約異動種別コード (インターネットサギウォールライセンス解約依頼)*/
	private static final String TAJGS_KEI_IDO_SBT_CD_0202 = "0202";

	/** サービス解約理由コード (強制解約) */
	private static final String SVC_DLRE_CD_KYOUSEI = "02";

	/** 他事業者契約異動詳細コード (強制解約) */
	private static final String TAJGS_KEI_IDO_DTL_CD_KYOUSEI = "01";

	/** 照査解約完了コード (照査NG) */
	private static final String SHOSA_DSL_FIN_CD_NG = "2";

	// ANK-3754-00-00 ADD START
	/** 電話番号 **/
	private static final String TEL_NO = "tel_no";
	/** 継続後契約変更手続中フラグ 手続き中*/
	private static final String KEIZK_AF_KEI_CHGECHU_FLG_ON = "1";
	/** 他事業者契約異動通知先識別コード マカフィー社*/
	private static final String TAJGS_KEI_IDT_SK_SKCD_MCAFEE = "01";
	/** 他事業者契約異動通知先識別コード BBSS社*/
	private static final String TAJGS_KEI_IDT_SK_SKCD_BBSS = "02";
	/** 他事業者契約異動種別コード (あんしん発着信サービス提供開始依頼)*/
	private static final String TAJGS_KEI_IDO_SBT_CD_0301 = "0301";
	/** 他事業者契約異動種別コード (あんしん発着信サービス解約依頼)*/
	private static final String TAJGS_KEI_IDO_SBT_CD_0302 = "0302";
	// ANK-3754-00-00 ADD END
	/**
	 * 他事業者契約異動通知先識別コード、他事業者契約異動種別コードの変換用Map
	 */
	private static final String[][] CD_CONTENTS = {
		// オプションサービスコード,他事業者契約異動通知先識別コード,(登録時)他事業者契約異動種別コード,(解約時)他事業者契約異動種別コード
		{"B130", "01", "0101", "0102"},  
		{"B131", "02", "0201", "0202"},  
		{"B132", "02", "0211", "0212"},  
// ANK-3754-00-00 ADD START
		{"B135", "03", "0301", "0302"},  
// ANK-3754-00-00 ADD END
	};


	/**
	 * <p>
	 * 他事業者契約異動通知の登録を行います。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext ディスパッチコンテキスト
	 */
	public void tajgsKeiIdtAdd(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 新規レコード作成用のデータ
		CAANMsg kk3081RecData_add = new CAANMsg(KK3081ETMsg.class.getName());

		// オプションサービス契約スキーマのカレントレコードを取得
		String opeDate = JKKModelCommon.getOpeDate(inCBSMsg);
		String opSvcKeiNo = inCBSMsg.getString(OP_SVC_KEI_NO);

		JKKejbKK0351DBABase kk0351DB = new JKKejbKK0351DBABase();
		CAANMsg kk0351CurDate = kk0351DB.getKK0351Current(opSvcKeiNo, opeDate);
		
		// 初期化
		String tajgyKeiIdtSkSkcd = null;
		String tajgyKeiIdoSbtCd_Add = null;
		String tajgyKeiIdoSbtCd_Dsl = null;
		// ANK-3754-00-00 ADD START
		String svcKeino = "";
		String keiskAfKeiChgechuFlg = "";
		String telNo = "";
		String tobilaphId = "";
		CAANMsg kk3081RecMsg = null;
		CAANMsg kk0361CurDate = null;
		HashMap<String, String> kk0371CurData = new HashMap<String, String>();
		// ANK-3754-00-00 ADD END

		// 照査解約完了コードをチェック
		if (!JKKStringUtil.isNullBlank(kk0351CurDate.getString(KK0351ETMsg.SHOSA_DSL_FIN_CD)))
		{
			if (SHOSA_DSL_FIN_CD_NG.equals(kk0351CurDate.getString(KK0351ETMsg.SHOSA_DSL_FIN_CD)))
			{
				// 照査NGの場合、処理終了
				return;
			}
		}

		// カレントレコードのオプションサービスコードの値により、2コードを設定
		for (int i = 0; i < CD_CONTENTS.length; i++)
		{
			if (CD_CONTENTS[i][0].equals(kk0351CurDate.getString(KK0351ETMsg.OP_SVC_CD)))
			{
				tajgyKeiIdtSkSkcd = CD_CONTENTS[i][1];//他事業者契約異動通知先識別コード
				tajgyKeiIdoSbtCd_Add = CD_CONTENTS[i][2];//(登録時)他事業者契約異動種別コード
				tajgyKeiIdoSbtCd_Dsl = CD_CONTENTS[i][3];//(解約時)他事業者契約異動種別コード
				
				break;
			}
		}
		
		if (JKKStringUtil.isNullBlank(tajgyKeiIdtSkSkcd))
		{
			// 他事業者契約異動通知の対象外のオプションサービスの場合、処理終了
			return;
		}

		// ANK-3754-00-00 MOD START
		// 他事業者契約異動通知先識別コード：01(マカフィー社)、02(BBSS社)
		if ( TAJGS_KEI_IDT_SK_SKCD_MCAFEE.equals(tajgyKeiIdtSkSkcd) || TAJGS_KEI_IDT_SK_SKCD_BBSS.equals(tajgyKeiIdtSkSkcd) )
		{
			//オプションサービス契約<ISP>スキーマのカレントレコードを取得
			JKKejbKK0361DBABase kk0361DB = new JKKejbKK0361DBABase();
			//CAANMsg kk0361CurDate = kk0361DB.getKK0361Primary(opSvcKeiNo, kk0351CurDate.getString(KK0351ETMsg.GENE_ADD_DTM));
			kk0361CurDate = kk0361DB.getKK0361Primary(opSvcKeiNo, kk0351CurDate.getString(KK0351ETMsg.GENE_ADD_DTM));
		}
		else
		{
			//オプションサービス契約＜電話>、サービス契約内訳に紐づくサービス契約のカレントレコードを取得
			kk0371CurData = getKK0371byopSvcKeiNo(inCBSMsg, opSvcKeiNo);
			svcKeino = kk0371CurData.get(KK0161ETMsg.SVC_KEI_NO);
			keiskAfKeiChgechuFlg = kk0371CurData.get(KK0161ETMsg.KEIZK_AF_KEI_CHGECHU_FLG);
			
			// IT1-2020-0000044 DEL START
			//// サービス契約内訳.継続後契約変更手続中フラグが「１」の場合、処理を終了する。（番ポの電話番号変更中状態のため）
			//if ( KEIZK_AF_KEI_CHGECHU_FLG_ON.equals(keiskAfKeiChgechuFlg))
			//{
			//	return;
			//}
			// IT1-2020-0000044 DEL END
			// CBSメッセージに電話番号が存在する場合
			if ( !inCBSMsg.isNull(TEL_NO) &&  inCBSMsg.getString(TEL_NO).length() > 0 )
			{
				telNo = inCBSMsg.getString(TEL_NO);
			}
			// CBSメッセージに電話番号が存在しない場合
			else
			{
				telNo = kk0371CurData.get(KK0191ETMsg.TELNO);
			}

		}
		// ANK-3754-00-00 MOD END

		// 他事業者契約異動通知スキーマの検索条件を設定
		boolean isAddPattern = true;

		// 未通知の他事業者契約異動通知(解約)の検索実行
		// ANK-3754-00-00 MOD START
		//CAANMsg kk3081RecMsg = getCntKK3081byMemberId(inCBSMsg, kk0361CurDate, isAddPattern, tajgyKeiIdoSbtCd_Dsl);
		// オプションサービス契約<ISP>スキーマのデータが存在する場合
		if ( kk0361CurDate != null )
		{
			kk3081RecMsg = getCntKK3081byMemberId(inCBSMsg, kk0361CurDate, isAddPattern, tajgyKeiIdoSbtCd_Dsl, kk0371CurData);
		}
		// ANK-3754-00-00 MOD END

		// ANK-3754-00-00 ADD START
		// トビラフォンID利用開始処理
		if ( TAJGS_KEI_IDO_SBT_CD_0301.equals(tajgyKeiIdoSbtCd_Add) )
		{
			tobilaphId = new JKKejbKK3241SecProc().startTobilaphId(inCBSMsg, inContext);
			// トビラフォンIDが取得できなかった場合
			if (tobilaphId == null )
			{
				inCBSMsg.set(OP_SVC_KEI_NO_ERR, "EW");
				inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
				return;
			}
			// 取得したトビラフォンIDをオプションサービス契約<電話>に更新
			else
			{
				updOpsvcKeiTel(inCBSMsg, inContext, opSvcKeiNo, tobilaphId);
			}
		}
		// ANK-3754-00-00 ADD END

		// 未通知の他事業者契約異動通知(解約)が存在しない場合
		if (null == kk3081RecMsg)
		{
			//新規レコード登録処理
			// ANK-3754-00-00 MOD START
			//kk3081RecData_add.set(KK3081ETMsg.TAJGS_KEI_IDT_SK_SKCD, tajgyKeiIdtSkSkcd);
			//kk3081RecData_add.set(KK3081ETMsg.TAJGS_KEI_IDO_SBT_CD, tajgyKeiIdoSbtCd_Add);
			//kk3081RecData_add.set(KK3081ETMsg.SVC_KEI_NO, kk0351CurDate.getString(KK0351ETMsg.SVC_KEI_NO));
			//kk3081RecData_add.set(KK3081ETMsg.OP_SVC_KEI_NO, opSvcKeiNo);
			//kk3081RecData_add.set(KK3081ETMsg.MCAFEE_MEMBER_ID, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_MEMBER_ID));
			//kk3081RecData_add.set(KK3081ETMsg.MCAFEE_NINSHO_MLAD, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_MLAD));
			//kk3081RecData_add.set(KK3081ETMsg.MCAFEE_NINSHO_PWD, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_PWD));
			//kk3081RecData_add.set(KK3081ETMsg.BBSS_MEMBER_ID, kk0361CurDate.getString(KK0361ETMsg.BBSS_MEMBER_ID));
			//kk3081RecData_add.setNull(KK3081ETMsg.TAJGS_KEI_IDO_DTL_CD);
			//kk3081RecData_add.setNull(KK3081ETMsg.MCAFEE_BUY_ID);
			//kk3081RecData_add.setNull(KK3081ETMsg.USER_SBSCPT_PIN);
			//kk3081RecData_add.setNull(KK3081ETMsg.SBSCPT_ID);
			//kk3081RecData_add.set(KK3081ETMsg.TAJGS_KEI_IDT_RSV_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
			kk3081RecData_add.set(KK3081ETMsg.TAJGS_KEI_IDT_SK_SKCD, tajgyKeiIdtSkSkcd);
			kk3081RecData_add.set(KK3081ETMsg.TAJGS_KEI_IDO_SBT_CD, tajgyKeiIdoSbtCd_Add);
			// オプションサービス契約<ISP>スキーマのデータが存在しない場合
			if ( kk0361CurDate == null )
			{
				kk3081RecData_add.set(KK3081ETMsg.SVC_KEI_NO, svcKeino);
				kk3081RecData_add.setNull(KK3081ETMsg.MCAFEE_MEMBER_ID);
				kk3081RecData_add.setNull(KK3081ETMsg.MCAFEE_NINSHO_MLAD);
				kk3081RecData_add.setNull(KK3081ETMsg.MCAFEE_NINSHO_PWD);
				kk3081RecData_add.setNull(KK3081ETMsg.BBSS_MEMBER_ID);
			}
			else
			{
				kk3081RecData_add.set(KK3081ETMsg.SVC_KEI_NO, kk0351CurDate.getString(KK0351ETMsg.SVC_KEI_NO));
				kk3081RecData_add.set(KK3081ETMsg.MCAFEE_MEMBER_ID, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_MEMBER_ID)));
				kk3081RecData_add.set(KK3081ETMsg.MCAFEE_NINSHO_MLAD, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_MLAD)));
				kk3081RecData_add.set(KK3081ETMsg.MCAFEE_NINSHO_PWD, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_PWD)));
				kk3081RecData_add.set(KK3081ETMsg.BBSS_MEMBER_ID, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.BBSS_MEMBER_ID)));
			}
			kk3081RecData_add.set(KK3081ETMsg.OP_SVC_KEI_NO, opSvcKeiNo);
			kk3081RecData_add.setNull(KK3081ETMsg.TAJGS_KEI_IDO_DTL_CD);
			kk3081RecData_add.setNull(KK3081ETMsg.MCAFEE_BUY_ID);
			kk3081RecData_add.setNull(KK3081ETMsg.USER_SBSCPT_PIN);
			kk3081RecData_add.setNull(KK3081ETMsg.SBSCPT_ID);
			kk3081RecData_add.set(KK3081ETMsg.TAJGS_KEI_IDT_RSV_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
			kk3081RecData_add.set(KK3081ETMsg.TOBILAPH_ID, JKKStringUtil.nullToBlank(tobilaphId));
			kk3081RecData_add.set(KK3081ETMsg.TELNO, JKKStringUtil.nullToBlank(telNo));
			// ANK-3754-00-00 MOD END

			insTajgsKeiIdt(inCBSMsg, inContext, kk3081RecData_add);
		}
		else
		{
			//既存レコードの更新処理
			updTajgsKeiIdt(inCBSMsg, inContext, kk3081RecMsg);
		}
	}
	
	
	/**
	 * <p>
	 * 他事業者契約異動通知の解約を行います。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext ディスパッチコンテキスト
	 */
	public void tajgsKeiIdtDsl(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 新規レコード作成用のデータ
		CAANMsg kk3081RecData_dsl = new CAANMsg(KK3081ETMsg.class.getName());

		// オプションサービス契約スキーマのカレントレコードを取得
		String opeDate = JKKModelCommon.getOpeDate(inCBSMsg);
		String opSvcKeiNo = inCBSMsg.getString(OP_SVC_KEI_NO);

		JKKejbKK0351DBABase kk0351DB = new JKKejbKK0351DBABase();
		CAANMsg kk0351CurDate = kk0351DB.getKK0351Current(opSvcKeiNo, opeDate);

		// 初期化
		String tajgyKeiIdtSkSkcd = null;
		String tajgyKeiIdoSbtCd_Add = null;
		String tajgyKeiIdoSbtCd_Dsl = null;
		// ANK-3754-00-00 ADD START
		String svcKeino = "";
		String keiskAfKeiChgechuFlg = "";
		String telNo = "";
		String tobilaphId = "";
		CAANMsg kk0361CurDate = null;
		HashMap<String, String> kk0371CurData = new HashMap<String, String>();
		// ANK-3754-00-00 ADD END
		
		// 照査解約完了コードをチェック
		if (!JKKStringUtil.isNullBlank(kk0351CurDate.getString(KK0351ETMsg.SHOSA_DSL_FIN_CD)))
		{
			if (SHOSA_DSL_FIN_CD_NG.equals(kk0351CurDate.getString(KK0351ETMsg.SHOSA_DSL_FIN_CD)))
			{
				// 照査NGの場合、処理終了
				return;
			}
		}
		
		// カレントレコードのオプションサービスコードの値により、2コードを設定
		for (int i = 0; i < CD_CONTENTS.length; i++)
		{
			if (CD_CONTENTS[i][0].equals(kk0351CurDate.getString(KK0351ETMsg.OP_SVC_CD)))
			{
				tajgyKeiIdtSkSkcd = CD_CONTENTS[i][1];//他事業者契約異動通知先識別コード
				tajgyKeiIdoSbtCd_Add = CD_CONTENTS[i][2];//(登録時)他事業者契約異動種別コード
				tajgyKeiIdoSbtCd_Dsl = CD_CONTENTS[i][3];//(解約時)他事業者契約異動種別コード
				
				break;
			}
		}
		
		if (JKKStringUtil.isNullBlank(tajgyKeiIdtSkSkcd))
		{
			// 他事業者契約異動通知の対象外のオプションサービスの場合
			return;
		}

		// ANK-3754-00-00 MOD START
		// 他事業者契約異動通知先識別コード：01(マカフィー社)、02(BBSS社)
		if ( TAJGS_KEI_IDT_SK_SKCD_MCAFEE.equals(tajgyKeiIdtSkSkcd) || TAJGS_KEI_IDT_SK_SKCD_BBSS.equals(tajgyKeiIdtSkSkcd) )
		{
			//オプションサービス契約<ISP>スキーマのカレントレコードを取得
			JKKejbKK0361DBABase kk0361DB = new JKKejbKK0361DBABase();
			//CAANMsg kk0361CurDate = kk0361DB.getKK0361Primary(opSvcKeiNo, kk0351CurDate.getString(KK0351ETMsg.GENE_ADD_DTM));
			kk0361CurDate = kk0361DB.getKK0361Primary(opSvcKeiNo, kk0351CurDate.getString(KK0351ETMsg.GENE_ADD_DTM));
		}
		else
		{
			//オプションサービス契約＜電話>、サービス契約内訳に紐づくサービス契約のカレントレコードを取得
			kk0371CurData = getKK0371byopSvcKeiNo(inCBSMsg, opSvcKeiNo);
			svcKeino = kk0371CurData.get(KK0161ETMsg.SVC_KEI_NO);
			keiskAfKeiChgechuFlg = kk0371CurData.get(KK0161ETMsg.KEIZK_AF_KEI_CHGECHU_FLG);
			tobilaphId = kk0371CurData.get(KK0371ETMsg.TOBILAPH_ID);
			
			// IT1-2020-0000044 DEL START
			//// サービス契約内訳.継続後契約変更手続中フラグが「１」の場合、処理を終了する。（番ポの電話番号変更中状態のため）
			//if ( KEIZK_AF_KEI_CHGECHU_FLG_ON.equals(keiskAfKeiChgechuFlg))
			//{
			//	return;
			//}
			// IT1-2020-0000044 DEL END
			// CBSメッセージに電話番号が存在する場合
			if ( !inCBSMsg.isNull(TEL_NO) &&  inCBSMsg.getString(TEL_NO).length() > 0 )
			{
				telNo = inCBSMsg.getString(TEL_NO);
			}
			// CBSメッセージに電話番号が存在しない場合
			else
			{
				telNo = kk0371CurData.get(KK0191ETMsg.TELNO);
			}

		}
		// ANK-3754-00-00 MOD END

		// 他事業者契約異動通知スキーマの検索条件を設定
		boolean isAddPattern = false;

		// 未通知の他事業者契約異動通知(登録)の検索実行
		// ANK-3754-00-00 MOD START
		//CAANMsg kk3081RecMsg = getCntKK3081byMemberId(inCBSMsg, kk0361CurDate, isAddPattern, tajgyKeiIdoSbtCd_Add);
		CAANMsg kk3081RecMsg = getCntKK3081byMemberId(inCBSMsg, kk0361CurDate, isAddPattern, tajgyKeiIdoSbtCd_Add, kk0371CurData);
		// ANK-3754-00-00 MOD END

		// 未通知の他事業者契約異動通知(登録)が存在しない場合
		if (null == kk3081RecMsg)
		{
			try
			{
				// 他事業者契約異動種別コードとサービス解約理由コードによる分岐
				if (TAJGS_KEI_IDO_SBT_CD_0202.equals(tajgyKeiIdoSbtCd_Dsl)
						&& SVC_DLRE_CD_KYOUSEI.equals(kk0351CurDate.getString(KK0351ETMsg.SVC_DLRE_CD)))
				{
					//他事業者契約異動通知予定年月日に当日から60日後の翌月1日を設定
					kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDT_RSV_YMD, editTajgsKeiIdtRsvYmd_60days(opeDate));

					//他事業者契約異動詳細コードを設定
					kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDO_DTL_CD, TAJGS_KEI_IDO_DTL_CD_KYOUSEI);
				}
				// ANK-3754-00-00 ADD START
				else if (TAJGS_KEI_IDO_SBT_CD_0302.equals(tajgyKeiIdoSbtCd_Dsl) )
				{
					//他事業者契約異動通知予定年月日に当日運用日を設定
					kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDT_RSV_YMD, opeDate);

					//他事業者契約異動詳細コードを設定
					kk3081RecData_dsl.setNull(KK3081ETMsg.TAJGS_KEI_IDO_DTL_CD);
				}
				// ANK-3754-00-00 ADD END
				else
				{
					//他事業者契約異動通知予定年月日に翌月1日を設定
					kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDT_RSV_YMD, editTajgsKeiIdtRsvYmd_1month(opeDate));

					//他事業者契約異動詳細コードを設定
					kk3081RecData_dsl.setNull(KK3081ETMsg.TAJGS_KEI_IDO_DTL_CD);
				}
			}
			catch(ParseException pe)
			{
				throw new CAANRuntimeException(pe);
			}
			// ANK-3754-00-00 ADD START
			// トビラフォンID利用終了処理
			if ( TAJGS_KEI_IDO_SBT_CD_0302.equals(tajgyKeiIdoSbtCd_Dsl) )
			{
				new JKKejbKK3241SecProc().endTobilaphId(inCBSMsg, inContext, tobilaphId);
			}
			// ANK-3754-00-00 ADD END
			
			
			//新規レコード登録処理 
			// ANK-3754-00-00 MOD START
			//kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDT_SK_SKCD, tajgyKeiIdtSkSkcd);
			//kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDO_SBT_CD, tajgyKeiIdoSbtCd_Dsl);
			//kk3081RecData_dsl.set(KK3081ETMsg.SVC_KEI_NO, kk0351CurDate.getString(KK0351ETMsg.SVC_KEI_NO));
			//kk3081RecData_dsl.set(KK3081ETMsg.OP_SVC_KEI_NO, opSvcKeiNo);
			//kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_MEMBER_ID, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_MEMBER_ID));
			//kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_NINSHO_MLAD, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_MLAD));
			//kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_NINSHO_PWD, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_PWD));
			//kk3081RecData_dsl.set(KK3081ETMsg.BBSS_MEMBER_ID, kk0361CurDate.getString(KK0361ETMsg.BBSS_MEMBER_ID));
			//kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_BUY_ID, kk0361CurDate.getString(KK0361ETMsg.MCAFEE_BUY_ID));
			//kk3081RecData_dsl.set(KK3081ETMsg.USER_SBSCPT_PIN, kk0361CurDate.getString(KK0361ETMsg.USER_SBSCPT_PIN));
			//kk3081RecData_dsl.set(KK3081ETMsg.SBSCPT_ID, kk0361CurDate.getString(KK0361ETMsg.SBSCPT_ID));
			kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDT_SK_SKCD, tajgyKeiIdtSkSkcd);
			kk3081RecData_dsl.set(KK3081ETMsg.TAJGS_KEI_IDO_SBT_CD, tajgyKeiIdoSbtCd_Dsl);
			if ( kk0351CurDate.isNull(KK0351ETMsg.SVC_KEI_NO))
			{
				kk3081RecData_dsl.set(KK3081ETMsg.SVC_KEI_NO, svcKeino);
				kk3081RecData_dsl.setNull(KK3081ETMsg.MCAFEE_MEMBER_ID);
				kk3081RecData_dsl.setNull(KK3081ETMsg.MCAFEE_NINSHO_MLAD);
				kk3081RecData_dsl.setNull(KK3081ETMsg.MCAFEE_NINSHO_PWD);
				kk3081RecData_dsl.setNull(KK3081ETMsg.BBSS_MEMBER_ID);
				kk3081RecData_dsl.setNull(KK3081ETMsg.MCAFEE_BUY_ID);
				kk3081RecData_dsl.setNull(KK3081ETMsg.USER_SBSCPT_PIN);
				kk3081RecData_dsl.setNull(KK3081ETMsg.SBSCPT_ID);
			}
			else
			{
				kk3081RecData_dsl.set(KK3081ETMsg.SVC_KEI_NO, kk0351CurDate.getString(KK0351ETMsg.SVC_KEI_NO));
				kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_MEMBER_ID, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_MEMBER_ID)));
				kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_NINSHO_MLAD, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_MLAD)));
				kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_NINSHO_PWD, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_NINSHO_PWD)));
				kk3081RecData_dsl.set(KK3081ETMsg.BBSS_MEMBER_ID, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.BBSS_MEMBER_ID)));
				kk3081RecData_dsl.set(KK3081ETMsg.MCAFEE_BUY_ID, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_BUY_ID)));
				kk3081RecData_dsl.set(KK3081ETMsg.USER_SBSCPT_PIN, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.USER_SBSCPT_PIN)));
				kk3081RecData_dsl.set(KK3081ETMsg.SBSCPT_ID, JKKStringUtil.nullToBlank(kk0361CurDate.getString(KK0361ETMsg.SBSCPT_ID)));
			}
			kk3081RecData_dsl.set(KK3081ETMsg.OP_SVC_KEI_NO, opSvcKeiNo);
			kk3081RecData_dsl.set(KK3081ETMsg.TOBILAPH_ID, JKKStringUtil.nullToBlank(tobilaphId));
			kk3081RecData_dsl.set(KK3081ETMsg.TELNO, JKKStringUtil.nullToBlank(telNo));
			// ANK-3754-00-00 MOD END


			insTajgsKeiIdt(inCBSMsg, inContext, kk3081RecData_dsl);
		}
		else
		{
			//既存レコードの更新処理
			updTajgsKeiIdt(inCBSMsg, inContext, kk3081RecMsg);
			// ANK-3754-00-00 ADD START
			// トビラフォンID利用終了処理(キャンセル処理)
			if ( TAJGS_KEI_IDO_SBT_CD_0301.equals(kk3081RecMsg.getString(KK3081ETMsg.TAJGS_KEI_IDO_SBT_CD)) )
			{
				new JKKejbKK3241SecProc().endTobilaphId(inCBSMsg, inContext, kk3081RecMsg.getString(KK3081ETMsg.TOBILAPH_ID));
			}
			// ANK-3754-00-00 ADD END
		}
	}

	/**
	 * <p>
	 * 会員ID(マカフィー会員ID or BBSS会員ID or トビラフォンID)に紐付くレコードを返却します。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param kk0361CurDate オプションサービス契約<ISP>カレントレコード
	 * @param isAddPattern true：呼出元が登録処理　false：呼出元が解約処理
	 * @param whereTajgyKeiIdoSbtCd 条件となる他事業者契約異動種別コード
	 * @param  hm 他事業者契約異動通知に対して検索する条件値
	 * @return 会員IDに紐付くレコード
	 */
	// ANK-3754-00-00 ADD START
	//private CAANMsg getCntKK3081byMemberId(CAANMsg inCBSMsg, CAANMsg kk0361CurDate, boolean isAddPattern, String whereTajgyKeiIdoSbtCd)
	private CAANMsg getCntKK3081byMemberId(CAANMsg inCBSMsg, CAANMsg kk0361CurDate, boolean isAddPattern, String whereTajgyKeiIdoSbtCd, HashMap<String, String> kk0371CurDate)
	// ANK-3754-00-00 ADD START
	{
		// コネクション
		Connection con = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		// バインド変数設定値保持用領域
		ArrayList<Object> arraylist = new ArrayList<Object>();
		// PreparedStatementのパラメータカウント
		int iPCnt = 0;

		// SQL文
		StringBuffer sbSql = new StringBuffer();
		// カラム名取得
		String[][] selList = getSelectColumnList();

		sbSql.append(" select ").append(getSelectColumnListString(selList[1]))
		.append("   FROM KK_T_TAJGS_KEI_IDT KK3081 ");

		// ANK-3754-00-00 MOD START
		// オプションISPのデータが存在する場合
		if ( kk0361CurDate != null )
		{
			// カレントレコードにマカフィー会員が存在する場合
			if (!JKKStringUtil.isNullBlank(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_MEMBER_ID)))
			{
				sbSql.append(" WHERE KK3081.MCAFEE_MEMBER_ID = ?");
				arraylist.add(kk0361CurDate.getString(KK0361ETMsg.MCAFEE_MEMBER_ID));
			}
			// カレントレコードにBBSS会員IDが存在する場合
			else if (!JKKStringUtil.isNullBlank(kk0361CurDate.getString(KK0361ETMsg.BBSS_MEMBER_ID)))
			{
				sbSql.append(" WHERE KK3081.BBSS_MEMBER_ID = ?");
				arraylist.add(kk0361CurDate.getString(KK0361ETMsg.BBSS_MEMBER_ID));
			}
			else
			{
				throw new CAANRuntimeException("オプションサービス契約<ISP>のデータが異常です");
			}
		}
		else
		{
			// カレントレコードにトビラフォンIDが存在する場合
			if (!JKKStringUtil.isNullBlank(kk0371CurDate.get(KK0371ETMsg.TOBILAPH_ID)))
			{
				sbSql.append(" WHERE KK3081.TOBILAPH_ID = ?");
				arraylist.add(kk0371CurDate.get(KK0371ETMsg.TOBILAPH_ID));
			}
			else
			{
				throw new CAANRuntimeException("オプションサービス契約<電話>のデータが異常です");
			}
		}
		// ANK-3754-00-00 MOD END

		sbSql.append("   AND KK3081.TAJGS_KEI_IDO_SBT_CD = ?");
		arraylist.add(whereTajgyKeiIdoSbtCd);

		sbSql.append("   AND KK3081.TAJGS_KEI_IDT_STAT_CD IN('")
		.append(TAJGS_KEI_IDT_STAT_CD_MITUTI + "', '")	//未通知か
		.append(TAJGS_KEI_IDT_STAT_CD_SYORITYU + "')")	//処理中か
		.append("   AND KK3081.MK_FLG = '0' ");

		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(KK3081ETMsg.getTableName());

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sbSql.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), sbSql);

			// バインド変数設定
			for (int iCnt = 0; iCnt < arraylist.size(); iCnt++)
			{ 
				// バインド変数に設定
				CAANJDBCUtil.setParam(pstmt, ++iPCnt, arraylist.get(iCnt));
			}

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 取得結果返却用のメッセージを用意
			CAANMsg rtnMsg = null;
			int recCntMituti = 0;

			CAANMsg[] outMsg1 = mapMessageList(rsltQuery, getSelectMsgColumnList(), 0);

			for (int i = 0; i < outMsg1.length; i++)
			{	
				if (!isAddPattern)
				{
					// 解約処理において、処理中の登録レコードが存在する場合、関連制約エラーを設定し返却
					if (TAJGS_KEI_IDT_STAT_CD_SYORITYU.equals(outMsg1[i].getString(KK3081ETMsg.TAJGS_KEI_IDT_STAT_CD)))
					{
						inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						inCBSMsg.set(OP_SVC_KEI_NO_ERR, "EV");

						return null;
					}
				}

				// 未通知のレコードが存在する場合
				if (TAJGS_KEI_IDT_STAT_CD_MITUTI.equals(outMsg1[i].getString(KK3081ETMsg.TAJGS_KEI_IDT_STAT_CD)))
				{
					rtnMsg = outMsg1[i];
					recCntMituti++;
				}
			}

			//未通知のレコードが1件異常の場合、システムエラー
			if (1 < recCntMituti)
			{	
				throw new CAANRuntimeException("他事業者契約異動通知のデータが異常です");
			}
			return rtnMsg;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch (SQLException e)
			{
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	
	/**
	* <p>
	* 他事業者契約異動通知の新規レコードを作成します。
	* </p>
	* @param inCBSMsg CBSメッセージ
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param kk3081RecData 新規レコード用データ
	*/
	private void insTajgsKeiIdt(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk3081RecData)
	{
		//共通項目を設定
		kk3081RecData.set(KK3081ETMsg.TAJGS_KEI_IDT_NO, JKKModelCommon.getTajgsKeiIdtNoKK3081(inCBSMsg, inContext));
		kk3081RecData.set(KK3081ETMsg.TAJGS_KEI_IDT_STAT_CD, TAJGS_KEI_IDT_STAT_CD_MITUTI); //未通知
		kk3081RecData.set(KK3081ETMsg.TAJGS_KEI_IDO_HSI_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
		kk3081RecData.set(KK3081ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk3081RecData.set(KK3081ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk3081RecData.set(KK3081ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		kk3081RecData.set(KK3081ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		kk3081RecData.set(KK3081ETMsg.MK_FLG, "0");

		try
		{
			// 登録処理の実行
			create(kk3081RecData);
		}
		catch (CAANCreateException cce)
		{
			throw new CAANRuntimeException(cce);
		}
	}
	
	
	/**
	* <p>
	* 他事業者契約異動通知の更新処理をします。
	* </p>
	* @param inCBSMsg CBSメッセージ
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param kk3081RecMsg 他事業者契約異動通知のレコード
	*/
	private void updTajgsKeiIdt(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk3081RecMsg)
	{
		// 他事業者契約異動通知 更新用CAANMsg生成
		CAANMsg updMsg = new CAANMsg(KK3081ETMsg.class.getName());

		// 更新用の項目設定
		updMsg.set(KK3081ETMsg.TAJGS_KEI_IDT_NO, kk3081RecMsg.getString(KK3081ETMsg.TAJGS_KEI_IDT_NO));
		updMsg.set(KK3081ETMsg.TAJGS_KEI_IDT_STAT_CD, TAJGS_KEI_IDT_STAT_CD_TUTIHUYOU); //通知不要
		updMsg.set(KK3081ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		updMsg.set(KK3081ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));

		// 更新処理の実行
		try
		{
			update(updMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}


	/**
	 * <p>
	 * 他事業者契約異動通知予定年月日を60日後の翌月1日に設定します。
	 * </p>
	 * @param opeDate  他事業者契約異動発生年月日（オンライン運用日）
	 * @return 他事業者契約異動通知予定年月日
	 * @throws ParseException 
	 */
	private String editTajgsKeiIdtRsvYmd_60days(String opeDate) throws ParseException
	{
		String date_after60 = JKKModelCommon.addDay(opeDate, 60);

		return editTajgsKeiIdtRsvYmd_1month(date_after60);
	}

	/**
	 * <p>
	 * 他事業者契約異動通知予定年月日を翌月1日に設定します。
	 * </p>
	 * @param opeDate 他事業者契約異動発生年月日（オンライン運用日）
	 * @return 他事業者契約異動通知予定年月日
	 * @throws ParseException 
	 */
	private String editTajgsKeiIdtRsvYmd_1month(String opeDate) throws ParseException
	{
			return JKKModelCommon.addMonth(opeDate, 1).substring(0, 6).concat("01");
	}

	// ANK-3754-00-00 ADD START
	/**
	 * <p>
	 * オプションサービス契約＜電話>、サービス契約内訳に紐づく
	 * サービス契約のカレントレコードを取得。
	 * </p>
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @return 
	 * @return オプションサービス契約＜電話＞、サービス契約内訳、サービス契約スキーマの検索結果
	 */
	private  HashMap<String, String> getKK0371byopSvcKeiNo(CAANMsg inCBSMsg, String opSvcKeiNo)
	{
		// コネクション
		Connection con1 = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0371ETMsg.getTableName());
			StringBuffer sb = new StringBuffer();
			
			// 運用日付を取得
			String opeDate = JKKModelCommon.getOpeDate(inCBSMsg);

			// SELECT句は生成する
			sb.append(" SELECT  ")
				.append("  KK0161.SVC_KEI_NO  ")
				.append("  , KK0161.KEIZK_AF_KEI_CHGECHU_FLG  ")
				.append("  , KK0191.TELNO  ")
				.append("  , KK0371.TOBILAPH_ID   ")
				.append("FROM  ")
				.append("  KK_T_OP_SVC_KEI KK0351   ")
				.append("  INNER JOIN KK_T_OPSVKEI_TEL KK0371   ")
				.append("    ON KK0371.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO   ")
				.append("    AND KK0371.GENE_ADD_DTM = KK0351.GENE_ADD_DTM   ")
				.append("    AND KK0371.MK_FLG = '0'  ")
				.append("  INNER JOIN KK_T_SVC_KEI_UCWK KK0161   ")
				.append("    ON KK0161.SVC_KEI_UCWK_NO = KK0351.SVC_KEI_UCWK_NO   ")
				.append("    AND KK0161.RSV_APLY_YMD || KK0161.GENE_ADD_DTM = (   ")
				.append("      SELECT  ")
				.append("        MAX(   ")
				.append("          KK0161_GENE.RSV_APLY_YMD || KK0161_GENE.GENE_ADD_DTM  ")
				.append("        ) AS KK0161_MAX   ")
				.append("      FROM  ")
				.append("        KK_T_SVC_KEI_UCWK KK0161_GENE   ")
				.append("      WHERE  ")
				.append("        KK0161_GENE.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO   ")
				.append("        AND KK0161_GENE.RSV_APLY_YMD <= '").append(opeDate).append("'")
				.append("        AND KK0161_GENE.RSV_APLY_CD = '2'   ")
				.append("        AND KK0161_GENE.MK_FLG = '0'  ")
				.append("    )   ")
				.append("      INNER JOIN KK_T_SVKEIUW_EOH_TEL KK0191   ")
				.append("        ON KK0191.SVC_KEI_UCWK_NO = KK0161.SVC_KEI_UCWK_NO   ")
				.append("        AND KK0191.GENE_ADD_DTM = KK0161.GENE_ADD_DTM  ")
				.append("        AND KK0191.MK_FLG = '0'  ")
				.append("WHERE  ")
				.append("  KK0351.OP_SVC_KEI_NO = '").append(opSvcKeiNo).append("'")
				.append("  AND KK0351.RSV_APLY_YMD || KK0351.GENE_ADD_DTM = (   ")
				.append("    SELECT  ")
				.append("      MAX(   ")
				.append("        KK0351_GENE.RSV_APLY_YMD || KK0351_GENE.GENE_ADD_DTM  ")
				.append("      ) AS KK0351_MAX   ")
				.append("    FROM  ")
				.append("      KK_T_OP_SVC_KEI KK0351_GENE   ")
				.append("    WHERE  ")
				.append("      KK0351_GENE.OP_SVC_KEI_NO = KK0351.OP_SVC_KEI_NO   ")
				.append("      AND KK0351_GENE.RSV_APLY_YMD <= '").append(opeDate).append("'")
				.append("      AND KK0351_GENE.RSV_APLY_CD = '2'   ")
				.append("      AND KK0351_GENE.MK_FLG = '0'  ")
				.append("  )   ")
				.append("  AND KK0351.MK_FLG = '0'  ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sb.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.println(JSYejbLog.DBACCESS, this.getClass(), sb);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			HashMap<String, String> hm = new HashMap<String, String>();

			// 検索結果の分繰り返し
			while (rsltQuery.next())
			{
				hm.put(KK0161ETMsg.SVC_KEI_NO, rsltQuery.getString(KK0161ETMsg.SVC_KEI_NO));
				hm.put(KK0161ETMsg.KEIZK_AF_KEI_CHGECHU_FLG, rsltQuery.getString(KK0161ETMsg.KEIZK_AF_KEI_CHGECHU_FLG));
				hm.put(KK0191ETMsg.TELNO, rsltQuery.getString(KK0191ETMsg.TELNO));
				hm.put(KK0371ETMsg.TOBILAPH_ID, rsltQuery.getString(KK0371ETMsg.TOBILAPH_ID));
			}
			return hm;
		}
		catch (SQLException se)
		{
			throw new CAANRuntimeException(se);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException se)
			{
				throw new CAANRuntimeException(se);
			}
		}
	}
	/**
	* <p>
	* オプションサービス契約<電話>のトビラフォンIDを更新をします。
	* </p>
	* @param inCBSMsg CBSメッセージ
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param opSvcKeiNo オプションサービス契約番号
	* @param tobilaphId トビラフォンID
	*/
	private void updOpsvcKeiTel(CAANMsg inCBSMsg, AgentDispatchContext inContext, String opSvcKeiNo, String tobilaphId)
	{
		// オプションサービス契約<電話> 更新用CAANMsg生成
		CAANMsg updMsg = new CAANMsg(KK0371ETMsg.class.getName());
		// オプションサービス契約のカレントレコード
		String currentGene = (String)JKKModelCommon.getCurrentGeneAddDtmKK0351(inCBSMsg, inContext, opSvcKeiNo);
		
		// 更新用の項目設定
		updMsg.set(KK0371ETMsg.OP_SVC_KEI_NO, opSvcKeiNo);
		updMsg.set(KK0371ETMsg.GENE_ADD_DTM, currentGene);
		updMsg.set(KK0371ETMsg.TOBILAPH_ID, tobilaphId);
		updMsg.set(KK0371ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		updMsg.set(KK0371ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));

		// 更新処理の実行
		JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
		dbaUtil.update(updMsg);	
	}

	// ANK-3754-00-00 ADD END
}