/*********************************************************************
*   All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JEKK0081C250ETDA
*   ソースファイル名：JEKK0081C250ETDA.java
*   作成者          ：富士通
*   日付            ：2011年10月07日
*＜機能概要＞
*   サービス契約お客様変更DBアクセス処理部品です。
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/10/07  富士通      新規作成
*   v7.00.00    2014/03/05  FJ)小島     OM-2014-0000723
*   v8.00.00    2014/06/18  FJ)小島     OM-2014-0001861
*   v9.00.00    2014/07/10  FJ)小島     OM-2014-0002300
*   v10.00.00   2014/09/03  FJ)中野     OM-2014-0002770
*   v10.00.01	2014/09/17	FJ)宇野		OM-2014-0002909
*   v10.00.02	2014/10/04	FJ)星野		OM-2014-0003146
*	v11.00.00	2014/11/03	FJ)大山		【IT1-2014-0000356】対応
*	v25.00.00	2016/06/02	FJ）森脇	【OM-2016-0001197】対応
*	v33.00.00	2017/09/09	FJ)星野		OM-2017-0000920
**********************************************************************/

package eo.ejb.common.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANException;
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.JPCUtilCommon;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.KK0161ETMsg;
import eo.ejb.cbm.entity.KK0201ETMsg;
import eo.ejb.cbm.entity.KK0241ETMsg;
import eo.ejb.cbm.entity.KK0441ETMsg;
import eo.ejb.cbm.entity.KK1261ETMsg;
import eo.ejb.cbm.entity.KK1261LE;
import eo.ejb.cbm.entity.KK1391ETMsg;
import eo.ejb.cbm.entity.KK1391LE;
import eo.ejb.cbm.entity.KK1681ETMsg;
import eo.ejb.cbm.entity.KK1931ETMsg;
import eo.ejb.cbm.entity.KK1931LE;
import eo.ejb.cbm.entity.KK1941ETMsg;
import eo.ejb.cbm.entity.KK1941LE;
import eo.ejb.cbm.entity.KK1951ETMsg;
import eo.ejb.cbm.entity.KK1951LE;
import eo.ejb.cbm.entity.KK1961ETMsg;
import eo.ejb.cbm.entity.KK1961LE;
import eo.ejb.cbm.entity.KK2011ETMsg;
import eo.ejb.cbm.entity.KK2011LE;
import eo.ejb.cbm.entity.KK2021ETMsg;
import eo.ejb.cbm.entity.KK2021LE;
import eo.ejb.cbm.entity.KK2031ETMsg;
import eo.ejb.cbm.entity.KK2031LE;
import eo.ejb.cbm.entity.KK2881ETMsg;
import eo.ejb.cbm.entity.KK2881LE;
import eo.ejb.cbs.cbsmsg.EKK0081C250CBSMsg;
import eo.ejb.cbs.mainproc.JKKejbIdoRsvUtil;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.rule.JKKejbRule0083001;
import eo.ejb.cbm.entity.KK0441LE;

/**
 * <p>
 * サービス契約お客様変更DBアクセス処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JEKK0081C250ETDA
{
	
	/** 予約適用コード_予約確定 */
	private static final String RSV_DECIDE = "2";

	/** 無効フラグ_有効 */
	private static final String MK_FLG_VALID = "0";

	/** 異動区分_お客様併合 */
	private static final String IDO_KBN_CUST_MIX = "00013";

	/** 異動区分_お客様分割 */
	private static final String IDO_KBN_CUST_SPLIT = "00014";

	/** サービス契約ID */
	private static final String SVC_KEI_ID = "KK0081";

	// IT1-2014-0000356 ADD START
	/** 請求オプションサービス契約 料金コースコード：NHK団体一括契約 */
	private static final String SEIOP_SVC_KEI_PCRS_CD_NHK = "E02";

	/** 請求オプションサービス契約 料金プランコード：NHK団体一括契約 */
	private static final String SEIOP_SVC_KEI_PPLAN_CD_NHK = "PE0201";

	/** 異動区分：お客様併合 */
	private static final String IDO_DIV_HEI = "00013";

	/** 異動区分：お客様分割 */
	private static final String IDO_DIV_BUN = "00014";
	// IT1-2014-0000356 ADD END

	/**
	 * コンストラクタです。
	 */
	public JEKK0081C250ETDA()
	{

	}

	/**
	 * <p>
	 * サービス契約お客様変更DBアクセス処理
	 * @param svcKeiNo   サービス契約番号
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * </p>
	 */
	public void execDBAccess(String svcKeiNo, CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// サービス契約カレントレコードを取得
		CAANMsg retCurrent = getCurrentSvcKei(inCBSMsg, inContext, svcKeiNo);

		String currentSysid = retCurrent.getString(KK0081ETMsg.SYSID); // サービス契約カレントレコードのSYSID
		String inputSysid = inCBSMsg.getString(EKK0081C250CBSMsg.SYSID); //入力値のSYSID
		String rsvYmd = inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD); //入力値の予約適用年月日

		// OM-2014-0002909 DEL START
		// お客様_お客様予約取消処理の呼出し
//		callCancelCustRsv(inCBSMsg, inContext, currentSysid, inputSysid, rsvYmd);

		// 異動予約_お客様予約取消の呼出し
//		callCancelIdoRsvCust(inCBSMsg, inContext, currentSysid, inputSysid, rsvYmd);
		// OM-2014-0002909 DEL END

		// 相関ルールにて振舞うスキーマを判定
		JKKejbRule0083001 rule0083 = new JKKejbRule0083001(inCBSMsg);
		rule0083.setSvc_if_id(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)); // サービスIFIDを設定	
		rule0083.setBase_date(inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD)); // 基準日を設定	
		rule0083.setOpe_date(JKKModelCommon.getOpeDate(inCBSMsg)); // 運用日時を設定	

		List<HashMap<String, Object>> ruleList = rule0083.referRuleEngine();

		if (null == ruleList)
		{
			// 相関ルールチェックの結果が0件の場合はエラーとする
			inCBSMsg.set(EKK0081C250CBSMsg.IDO_DIV_ERR, "EA");
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.TEMPLATE_CORRELATION_ERR);
			return;
		}
		
		// 相関ルールチェック結果を格納
		new JKKejbIdoRsvUtil().setOnlyIdoRsvFlg(inCBSMsg, inContext, ruleList);
		
		HashMap<String, Object> map = ruleList.get(0);

		if (SVC_KEI_ID.equals((String)map.get(JKKejbRule0083001.TRGT_SCHEMA_ID)))
		{
			// サービス契約の登録処理の呼び出し
			createSvcKei(svcKeiNo, inCBSMsg, inContext);
			
// v10.00.02 OM-2014-0003146対応 20141004 DEL START
//			// OM-2014-0002909 ADD START
//			if (JKKModelConst.IDO_DIV_CUST_HEIGO.equals(inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV)) || 
//					JKKModelConst.IDO_DIV_CUST_BNKT.equals(inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV)))
//			{
//				String opeDate = JCKModelCommon.getOpeDate(inCBSMsg);
//				HashMap<String, String[]> searchJknMap = new HashMap<String, String[]>();
//				JKKejbKK0081DBABase kk0081Dba = new JKKejbKK0081DBABase();
//				CAANMsg[] kk0081RetMsgList = kk0081Dba.getKK0081by_Sysid(currentSysid, searchJknMap, opeDate);
//				if (kk0081RetMsgList ==  null || kk0081RetMsgList.length == 0)
//				{
//					// お客様_お客様予約取消処理の呼出し
//					callCancelCustRsv(inCBSMsg, inContext, currentSysid, inputSysid, rsvYmd);
//					
//					// 異動予約_お客様予約取消の呼出し
//					callCancelIdoRsvCust(inCBSMsg, inContext, currentSysid, inputSysid, rsvYmd);
//				}
//			}
//			// OM-2014-0002909 ADD END
// v10.00.02 OM-2014-0003146対応 20141004 DEL END
			
		}
		else
		{
			// 異動予約の登録処理の呼び出し
			updateIdoRsv(svcKeiNo, inCBSMsg, inContext, map);
		}
		
		// 入力値「スポットログインSYSID」が設定されている場合
		if (inCBSMsg.getString(EKK0081C250CBSMsg.SPOT_LOGIN_SYSID) != null)
		{
			JKKejbKK0201DBABase kk0201 = new JKKejbKK0201DBABase();
			// サービス契約番号に紐づくサービス契約内訳を検索
			CAANMsg[] ret0161MsgList = new JKKejbKK0161DBABase().getKK0161bySvcKei(svcKeiNo, new HashMap<String, String[]>(), JCKModelCommon.getOpeDate(inCBSMsg));
			
			for (CAANMsg ret0161Msg: ret0161MsgList)
			{
				// サービス契約内訳番号に紐づくサービス契約内訳<eoモバイル>を取得
				CAANMsg inETMsgKK0201 = new CAANMsg(KK0201ETMsg.class.getName());
				inETMsgKK0201.set(KK0201ETMsg.SVC_KEI_UCWK_NO, ret0161Msg.getString(KK0161ETMsg.SVC_KEI_UCWK_NO));
				inETMsgKK0201.set(KK0201ETMsg.GENE_ADD_DTM, ret0161Msg.getString(KK0161ETMsg.GENE_ADD_DTM));
				CAANMsg ret0201Msg = kk0201.findByPrimaryKey(inETMsgKK0201);
				
				// サービス契約内訳<eoモバイル>を更新
				if (ret0201Msg != null)
				{
					inETMsgKK0201.set(KK0201ETMsg.SPOT_LOGIN_SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SPOT_LOGIN_SYSID));
					inETMsgKK0201.set(KK0201ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					inETMsgKK0201.set(KK0201ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					
					JKKejbDBAUtil dba = new JKKejbDBAUtil(inCBSMsg);
					dba.update(inETMsgKK0201);
				}
				
			}
		}
	}

	/**
	 * <p>
	 * サービス契約のDBアクセスを行います。
	 * @param svcKeiNo   サービス契約番号
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * </p>
	 */
	private void createSvcKei(String svcKeiNo, CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		// サービス契約のカレントレコード取得
		CAANMsg inETMsgCurrent = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsgCurrent.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsgCurrent.set(KK0081ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
		CAANMsg retCurrent = new JKKejbKK0081DBABase().findByCurrent(inETMsgCurrent);

		// 世代登録年月日時分秒の取得
		String geneAddDtm = (String)JKKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext);

		// サービス契約の登録を行う
		CAANMsg inETMsgSvcKei = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsgSvcKei.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsgSvcKei.set(KK0081ETMsg.GENE_ADD_DTM, geneAddDtm); 
		inETMsgSvcKei.set(KK0081ETMsg.SVC_KEI_STAT, retCurrent.getString(KK0081ETMsg.SVC_KEI_STAT));
		inETMsgSvcKei.set(KK0081ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_CD, retCurrent.getString(KK0081ETMsg.SVC_CD));
		inETMsgSvcKei.set(KK0081ETMsg.MSKM_DTL_NO, inCBSMsg.getString(EKK0081C250CBSMsg.MSKM_DTL_NO));
		inETMsgSvcKei.set(KK0081ETMsg.SEIRI_NO, retCurrent.getString(KK0081ETMsg.SEIRI_NO));
		inETMsgSvcKei.set(KK0081ETMsg.MENKAIHAT_ANKEN_NO, retCurrent.getString(KK0081ETMsg.MENKAIHAT_ANKEN_NO));
		inETMsgSvcKei.set(KK0081ETMsg.PRC_GRP_CD, retCurrent.getString(KK0081ETMsg.PRC_GRP_CD));
		inETMsgSvcKei.set(KK0081ETMsg.PCRS_CD, retCurrent.getString(KK0081ETMsg.PCRS_CD));
		inETMsgSvcKei.set(KK0081ETMsg.PPLAN_CD, retCurrent.getString(KK0081ETMsg.PPLAN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.TK_HOSHIKI_KEI_NO, retCurrent.getString(KK0081ETMsg.TK_HOSHIKI_KEI_NO));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_USE_STA_KIBO_YMD, retCurrent.getString(KK0081ETMsg.SVC_USE_STA_KIBO_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.RSV_TSTA_KIBO_YMD, retCurrent.getString(KK0081ETMsg.RSV_TSTA_KIBO_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.ID_SOKHOSHO_OUTPUT_YH, retCurrent.getString(KK0081ETMsg.ID_SOKHOSHO_OUTPUT_YH));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_KEI_KZKWRK_REQYMD, retCurrent.getString(KK0081ETMsg.SVC_KEI_KZKWRK_REQYMD));
		inETMsgSvcKei.set(KK0081ETMsg.SHOSA_YMD, retCurrent.getString(KK0081ETMsg.SHOSA_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SHOSA_CL_YMD, retCurrent.getString(KK0081ETMsg.SHOSA_CL_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SKEKKA_CD, retCurrent.getString(KK0081ETMsg.SKEKKA_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SKEKKA_DTL_CD, retCurrent.getString(KK0081ETMsg.SKEKKA_DTL_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SKEKKA_HOKI_CD, retCurrent.getString(KK0081ETMsg.SKEKKA_HOKI_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SKEKKA_SEND_CD, retCurrent.getString(KK0081ETMsg.SKEKKA_SEND_CD));
		inETMsgSvcKei.set(KK0081ETMsg.PAYWAY_KEIZOKU_FLG, retCurrent.getString(KK0081ETMsg.PAYWAY_KEIZOKU_FLG));
		inETMsgSvcKei.set(KK0081ETMsg.FTRIAL_KANYU_YMD, retCurrent.getString(KK0081ETMsg.FTRIAL_KANYU_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.FTRIAL_PRD_ENDYMD, retCurrent.getString(KK0081ETMsg.FTRIAL_PRD_ENDYMD));
		inETMsgSvcKei.set(KK0081ETMsg.HONKANYU_YMD, retCurrent.getString(KK0081ETMsg.HONKANYU_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.HONKANYU_IKO_KIGEN_YMD, retCurrent.getString(KK0081ETMsg.HONKANYU_IKO_KIGEN_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.KEI_CNC_YMD, retCurrent.getString(KK0081ETMsg.KEI_CNC_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.PLAN_STAYMD, retCurrent.getString(KK0081ETMsg.PLAN_STAYMD));
		inETMsgSvcKei.set(KK0081ETMsg.PLAN_ENDYMD, retCurrent.getString(KK0081ETMsg.PLAN_ENDYMD));
		inETMsgSvcKei.set(KK0081ETMsg.PLAN_CHRG_STAYMD, retCurrent.getString(KK0081ETMsg.PLAN_CHRG_STAYMD));
		inETMsgSvcKei.set(KK0081ETMsg.PLAN_CHRG_ENDYMD, retCurrent.getString(KK0081ETMsg.PLAN_CHRG_ENDYMD));
		inETMsgSvcKei.set(KK0081ETMsg.PLAN_END_SBT_CD, retCurrent.getString(KK0081ETMsg.PLAN_END_SBT_CD));
		
		// 設定用予約適用年月日
		String insRsvAplyYmd = null;

		// 入力値「予約適用年月日」＜ 運用日付の場合、運用日付で更新する
		if (JPCUtilCommon.isPastDate(inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD), JKKModelCommon.getOpeDate(inCBSMsg), "0"))
		{
			insRsvAplyYmd = JKKModelCommon.getOpeDate(inCBSMsg);
		}
		// 上記以外の場合、入力値「予約適用年月日」で更新する
		else
		{
			insRsvAplyYmd = inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD);
		}
		// OM-2016-0001197 ADD START
		if("100".compareTo(retCurrent.getString(KK0081ETMsg.SVC_KEI_STAT)) > 0)
		{
			insRsvAplyYmd = retCurrent.getString(KK0081ETMsg.RSV_APLY_YMD);
		}
		// OM-2016-0001197 ADD END
	
		inETMsgSvcKei.set(KK0081ETMsg.RSV_APLY_YMD, insRsvAplyYmd);
		inETMsgSvcKei.set(KK0081ETMsg.RSV_CL_YMD, retCurrent.getString(KK0081ETMsg.RSV_CL_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.RSV_APLY_CD, RSV_DECIDE);
		inETMsgSvcKei.set(KK0081ETMsg.SVC_CANCEL_YMD, retCurrent.getString(KK0081ETMsg.SVC_CANCEL_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_CANCEL_RSN_CD, retCurrent.getString(KK0081ETMsg.SVC_CANCEL_RSN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_STA_YMD, retCurrent.getString(KK0081ETMsg.SVC_STA_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_CHRG_STAYMD, retCurrent.getString(KK0081ETMsg.SVC_CHRG_STAYMD));
		inETMsgSvcKei.set(KK0081ETMsg.KEIZK_SVC_STAYMD, retCurrent.getString(KK0081ETMsg.KEIZK_SVC_STAYMD));
		inETMsgSvcKei.set(KK0081ETMsg.KEIZK_SVC_CHRG_STAYMD, retCurrent.getString(KK0081ETMsg.KEIZK_SVC_CHRG_STAYMD));	
		inETMsgSvcKei.set(KK0081ETMsg.LETTER_HASSO_SHIWAKE_DIV, retCurrent.getString(KK0081ETMsg.LETTER_HASSO_SHIWAKE_DIV));
		inETMsgSvcKei.set(KK0081ETMsg.THNX_LETTER_SHS_CD, retCurrent.getString(KK0081ETMsg.THNX_LETTER_SHS_CD));
		inETMsgSvcKei.set(KK0081ETMsg.WEB_OP_ADD_FAIL_FLG, retCurrent.getString(KK0081ETMsg.WEB_OP_ADD_FAIL_FLG));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_STP_YMD, retCurrent.getString(KK0081ETMsg.SVC_STP_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_STP_RSN_CD, retCurrent.getString(KK0081ETMsg.SVC_STP_RSN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_STP_RLS_YMD, retCurrent.getString(KK0081ETMsg.SVC_STP_RLS_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_STP_RLS_RSN_CD, retCurrent.getString(KK0081ETMsg.SVC_STP_RLS_RSN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.PAUSE_STP_CD, retCurrent.getString(KK0081ETMsg.PAUSE_STP_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_YMD, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_RSN_CD, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_RSN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_RSN_MEMO, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_RSN_MEMO));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_RLS_YMD, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_RLS_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_RLS_RSN_CD, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_RLS_RSN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_RLS_RSN_MEMO, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_RLS_RSN_MEMO));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_ENDYMD, retCurrent.getString(KK0081ETMsg.SVC_ENDYMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_CHRG_ENDYMD, retCurrent.getString(KK0081ETMsg.SVC_CHRG_ENDYMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_DSL_KISAN_YMD, retCurrent.getString(KK0081ETMsg.SVC_DSL_KISAN_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_DSL_YMD, retCurrent.getString(KK0081ETMsg.SVC_DSL_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_DLRE_CD, retCurrent.getString(KK0081ETMsg.SVC_DLRE_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_DLRE_MEMO, retCurrent.getString(KK0081ETMsg.SVC_DLRE_MEMO));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_DSL_TTDKI_FIN_FLG, retCurrent.getString(KK0081ETMsg.SVC_DSL_TTDKI_FIN_FLG));
		inETMsgSvcKei.set(KK0081ETMsg.KAIHK_YMD, retCurrent.getString(KK0081ETMsg.KAIHK_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_CANCEL_CL_YMD, retCurrent.getString(KK0081ETMsg.SVC_CANCEL_CL_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_DSL_CL_YMD, retCurrent.getString(KK0081ETMsg.SVC_DSL_CL_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.CHGE_MT_HOJINSVKEI_UK_NO, retCurrent.getString(KK0081ETMsg.CHGE_MT_HOJINSVKEI_UK_NO));
		inETMsgSvcKei.set(KK0081ETMsg.CHGE_MT_HOJINSVKEI_UK_NOPT, retCurrent.getString(KK0081ETMsg.CHGE_MT_HOJINSVKEI_UK_NOPT));
		inETMsgSvcKei.set(KK0081ETMsg.CHGE_SK_HOJINSVKEI_UK_NO, retCurrent.getString(KK0081ETMsg.CHGE_SK_HOJINSVKEI_UK_NO));
		inETMsgSvcKei.set(KK0081ETMsg.CHGE_SK_HOJINSVKEI_UK_NOPT, retCurrent.getString(KK0081ETMsg.CHGE_SK_HOJINSVKEI_UK_NOPT));
		inETMsgSvcKei.set(KK0081ETMsg.CHMT_HJIN_EO_YKAE_SVKEI_NO, retCurrent.getString(KK0081ETMsg.CHMT_HJIN_EO_YKAE_SVKEI_NO));
		inETMsgSvcKei.set(KK0081ETMsg.CHSK_HJIN_EO_YKAE_SVKEI_NO, retCurrent.getString(KK0081ETMsg.CHSK_HJIN_EO_YKAE_SVKEI_NO));
		inETMsgSvcKei.set(KK0081ETMsg.HOJINSVKEI_HKTGI_SBT_CD, retCurrent.getString(KK0081ETMsg.HOJINSVKEI_HKTGI_SBT_CD));
		inETMsgSvcKei.set(KK0081ETMsg.PNLTY_HASSEI_CD, retCurrent.getString(KK0081ETMsg.PNLTY_HASSEI_CD));
		inETMsgSvcKei.set(KK0081ETMsg.PNLTY_CHGE_RSN_CD, retCurrent.getString(KK0081ETMsg.PNLTY_CHGE_RSN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.IDO_DIV, inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV));
		inETMsgSvcKei.set(KK0081ETMsg.SHK_DFLT_PWD, retCurrent.getString(KK0081ETMsg.SHK_DFLT_PWD));
		inETMsgSvcKei.set(KK0081ETMsg.CUST_ID_PWD, retCurrent.getString(KK0081ETMsg.CUST_ID_PWD));
		inETMsgSvcKei.set(KK0081ETMsg.MENKAIHAT_ANKEN_KR_ADD_FLG, retCurrent.getString(KK0081ETMsg.MENKAIHAT_ANKEN_KR_ADD_FLG));
		inETMsgSvcKei.set(KK0081ETMsg.INTR_CD, retCurrent.getString(KK0081ETMsg.INTR_CD));
		inETMsgSvcKei.set(KK0081ETMsg.SHOSA_DSL_FIN_CD, retCurrent.getString(KK0081ETMsg.SHOSA_DSL_FIN_CD));
		inETMsgSvcKei.set(KK0081ETMsg.IDO_NG_STAT_CD, retCurrent.getString(KK0081ETMsg.IDO_NG_STAT_CD));
		inETMsgSvcKei.set(KK0081ETMsg.CHRG_STA_YMD_HOSEI_UM, retCurrent.getString(KK0081ETMsg.CHRG_STA_YMD_HOSEI_UM));
		inETMsgSvcKei.set(KK0081ETMsg.SVC_PAUSE_CHRG_STA_YMD, retCurrent.getString(KK0081ETMsg.SVC_PAUSE_CHRG_STA_YMD));
		inETMsgSvcKei.set(KK0081ETMsg.WORK_RRK_BIKO, retCurrent.getString(KK0081ETMsg.WORK_RRK_BIKO));
		inETMsgSvcKei.set(KK0081ETMsg.AUTO_SHOSA_TRAN_STAT_CD, retCurrent.getString(KK0081ETMsg.AUTO_SHOSA_TRAN_STAT_CD));
		inETMsgSvcKei.set(KK0081ETMsg.KIKI_MIADD_LIST_OPUTZM_FLG, retCurrent.getString(KK0081ETMsg.KIKI_MIADD_LIST_OPUTZM_FLG));
		inETMsgSvcKei.set(KK0081ETMsg.KAIHK_FAIL_KEI_CST_ZM_FLG, retCurrent.getString(KK0081ETMsg.KAIHK_FAIL_KEI_CST_ZM_FLG));
		inETMsgSvcKei.set(KK0081ETMsg.SVCTK_BUT_DEL_TRN_JSSI_DTM, retCurrent.getString(KK0081ETMsg.SVCTK_BUT_DEL_TRN_JSSI_DTM));
		inETMsgSvcKei.set(KK0081ETMsg.JURYO_CHOK_TCHI_YH, retCurrent.getString(KK0081ETMsg.JURYO_CHOK_TCHI_YH));
		inETMsgSvcKei.set(KK0081ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inETMsgSvcKei.set(KK0081ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		inETMsgSvcKei.set(KK0081ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inETMsgSvcKei.set(KK0081ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		inETMsgSvcKei.set(KK0081ETMsg.MK_FLG, MK_FLG_VALID);

		JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
		dbaUtil.create(inETMsgSvcKei);

		// O項目のセット
		inCBSMsg.set(EKK0081C250CBSMsg.GENE_ADD_DTM, geneAddDtm);
		inCBSMsg.set(EKK0081C250CBSMsg.ADD_DTM, inETMsgSvcKei.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.ADD_OPEACNT, inETMsgSvcKei.getString(JCMConstants.OPERATOR_ID_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.UPD_DTM, inETMsgSvcKei.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.UPD_OPEACNT, inETMsgSvcKei.getString(JCMConstants.OPERATOR_ID_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.MK_FLG, MK_FLG_VALID);

	}

	/**
	 * <p>
	 * 異動予約のDBアクセスを行います。
	 * @param svcKeiNo   サービス契約番号
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param map 相関ルール戻り値のHashMap
	 * </p>
	 */
	private void updateIdoRsv(String svcKeiNo, CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> map)
	{

		// 異動予約番号の採番
		String idoRsvNo = JKKModelCommon.getIdoRsvNoKK1681(inCBSMsg, inContext);

		String idoRsvDtlCd = (String)map.get(JKKejbRule0083001.IDO_RSV_DTL_CD); // 異動予約詳細コード
		String idoRsvStatCd = (String)map.get(JKKejbRule0083001.IDO_RSV_STAT_CD); // 異動予約状態コード

		// 異動区分の取得
		String idoDiv = inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV);

		CAANMsg inETMsgIdoRsv = new CAANMsg(KK1681ETMsg.class.getName());
		inETMsgIdoRsv.set(KK1681ETMsg.IDO_RSV_NO, idoRsvNo);
		inETMsgIdoRsv.set(KK1681ETMsg.IDO_DIV, inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV));
		inETMsgIdoRsv.set(KK1681ETMsg.IDO_RSV_DTL_CD, idoRsvDtlCd);
		inETMsgIdoRsv.set(KK1681ETMsg.RSV_APLY_YMD, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));
		inETMsgIdoRsv.set(KK1681ETMsg.IDO_RSV_STAT_CD, idoRsvStatCd);
		inETMsgIdoRsv.set(KK1681ETMsg.MSKM_DTL_NO, inCBSMsg.getString(EKK0081C250CBSMsg.MSKM_DTL_NO));
		inETMsgIdoRsv.set(KK1681ETMsg.SYSID, getSysid(inCBSMsg, inContext, svcKeiNo));
		inETMsgIdoRsv.set(KK1681ETMsg.SVC_KEI_NO, svcKeiNo);
		if (IDO_KBN_CUST_MIX.equals(idoDiv))
		{
			// 異動区分が"お客様併合"の場合
			inETMsgIdoRsv.set(KK1681ETMsg.HEIGO_SK_SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
		}
		if (IDO_KBN_CUST_SPLIT.equals(idoDiv))
		{
			// 異動区分が"お客様分割"の場合
			inETMsgIdoRsv.set(KK1681ETMsg.BUNKATSU_SK_SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
		}
		inETMsgIdoRsv.set(KK1681ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inETMsgIdoRsv.set(KK1681ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		inETMsgIdoRsv.set(KK1681ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inETMsgIdoRsv.set(KK1681ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		inETMsgIdoRsv.set(KK1681ETMsg.MK_FLG, MK_FLG_VALID);

		JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
		dbaUtil.create(inETMsgIdoRsv);

		// O項目のセット
		inCBSMsg.set(EKK0081C250CBSMsg.ADD_DTM, inETMsgIdoRsv.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.ADD_OPEACNT, inETMsgIdoRsv.getString(JCMConstants.OPERATOR_ID_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.UPD_DTM, inETMsgIdoRsv.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.UPD_OPEACNT, inETMsgIdoRsv.getString(JCMConstants.OPERATOR_ID_KEY));
		inCBSMsg.set(EKK0081C250CBSMsg.MK_FLG, MK_FLG_VALID);

	}

// v10.00.02 OM-2014-0003146対応 20141004 DEL START
//	/**
//	 * <p>
//	 * お客様のお客様予約取消を行います。
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param currentSysid カレントレコードのSYSID
//	 * @param inputSysid 入力値のSYSID
//	 * @param rsvYmd 入力値の予約適用年月日
//	 * </p>
//	 */
//	private void callCancelCustRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext, String currentSysid, String inputSysid, String rsvYmd)
//	{
//		JCKejbCK0011SecProc instance = new JCKejbCK0011SecProc();
//
//		// カレントレコードのSYSIDでお客様_お客様予約取消
//		instance.cancelCustRsv(inCBSMsg, inContext, currentSysid, rsvYmd);
//
//		// 入力値のSYSIDでお客様_お客様予約取消
//		instance.cancelCustRsv(inCBSMsg, inContext, inputSysid, rsvYmd);
//	}
//
//	/**
//	 * <p>
//	 * 異動予約のお客様予約取消を行います。
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param currentSysid カレントレコードのSYSID
//	 * @param inputSysid 入力値のSYSID
//	 * @param rsvYmd 入力値の予約適用年月日
//	 * </p>
//	 */
//	private void callCancelIdoRsvCust(CAANMsg inCBSMsg, AgentDispatchContext inContext, String currentSysid, String inputSysid, String rsvYmd)
//	{
//		JKKejbIdoRsvDBAUtil instance = new JKKejbIdoRsvDBAUtil();
//
//		// カレントレコードのSYSIDで異動予約_お客様予約取消
//		CAANMsg[] targetMsgsOfCur = instance.getCustRsvInIdoRsv(inCBSMsg, inContext, currentSysid, rsvYmd);
//
//		// 対象レコードの更新
//		for (CAANMsg targetMsgOfCur : targetMsgsOfCur)
//		{
//			instance.cancelCustRsvInIdoRsv(inCBSMsg, inContext, targetMsgOfCur);
//
//			// 自動予約取消ワークに登録します
//			this.createKK2791IdoRsv(targetMsgOfCur, JKKModelConst.AUTO_RSV_CL_STAT_CD_CL_ZM, inCBSMsg);
//		}
//
//		// 入力値のSYSIDで異動予約_お客様予約取消
//		CAANMsg[] targetMsgsOfIn = instance.getCustRsvInIdoRsv(inCBSMsg, inContext, inputSysid, rsvYmd);
//
//		// 対象レコードの更新
//		for (CAANMsg targetMsgOfIn : targetMsgsOfIn)
//		{
//			instance.cancelCustRsvInIdoRsv(inCBSMsg, inContext, targetMsgOfIn);
//
//			// 自動予約取消ワークに登録します
//			this.createKK2791IdoRsv(targetMsgOfIn, JKKModelConst.AUTO_RSV_CL_STAT_CD_CL_ZM, inCBSMsg);
//		}
//	}
//	
//	/**
//	 * <p>
//	 * 自動予約取消ワークに異動予約の予約情報を登録します
//	 * </p>
//	 * @param kk1681EtMsg ETメッセージ
//	 * @param autoRsvClStatCd 自動予約取消状態コード
//	 * @param inCBSMsg 入力情報
//	 */
//	private void createKK2791IdoRsv(CAANMsg kk1681EtMsg, String autoRsvClStatCd, CAANMsg inCBSMsg)
//	{
//		// 自動予約取消ワークＤＢ操作部品のインスタンス化
//		JKKejbKK2791ETDA kk2791etda = new JKKejbKK2791ETDA();
//		
//		// 取消契機異動区分
//		kk2791etda.setCl_opty_ido_div(inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV));
//		// 登録年月日時分秒
//		kk2791etda.setAdd_dtm(inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
//		// 登録オペレータアカウント
//		kk2791etda.setAdd_opeacnt(inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
//		// 更新年月日時分秒
//		kk2791etda.setUpd_dtm(inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));		
//		// 更新オペレータアカウント
//		kk2791etda.setUpd_opeacnt(inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
//
//		// 自動予約取消ワークの登録
//		kk2791etda.createKK2791(kk1681EtMsg, "KK1681", autoRsvClStatCd);
//	}
// v10.00.02 OM-2014-0003146対応 20141004 DEL END

	/**
	 * <p>
	 * 有効なSYSIDを返却します。
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo サービス契約番号
	 * @return 検索されたSYSID
	 * </p>
	 */
	private String getSysid(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo)
	{
		String sysid = null;

		// 異動予約テーブルから有効なSYSIDを取得
		sysid = getSysidOfIdoRsv(inCBSMsg, inContext);

		// 異動予約テーブルに有効なSYSIDが存在しない場合
		if (null == sysid)
		{
			// サービス契約カレントレコードのSYSIDを取得
			sysid = getSysidOfSvcKei(inCBSMsg, inContext, svcKeiNo);
		}

		return sysid;
	}

	/**
	 * <p>
	 * 異動予約テーブルから有効なSYSIDを取得して返却します。
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 異動予約テーブルの有効なSYSID
	 * </p>
	 */
	private String getSysidOfIdoRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 異動予約テーブルの中で有効なSYSIDを取得する条件に当てはまるレコードを取得します
		CAANMsg[] conRetMsg = getValidMsgIdoRsv(inCBSMsg, inContext);
		if (null == conRetMsg)
		{
			// 異動予約テーブルに有効なレコードが存在しない場合
			return null;
		}

		for (CAANMsg retMsg : conRetMsg)
		{
			if (null != retMsg.getString(KK1681ETMsg.HEIGO_SK_SYSID))
			{
				// 併合先SYSIDが設定されている場合
				return retMsg.getString(KK1681ETMsg.HEIGO_SK_SYSID);
			}
			if (null != retMsg.getString(KK1681ETMsg.BUNKATSU_SK_SYSID))
			{
				// 分割先SYSIDが設定されている場合
				return retMsg.getString(KK1681ETMsg.BUNKATSU_SK_SYSID);
			}
		}

		// 有効なレコード全てにおいて"併合先SYSID"、または"分割先SYSID"が設定されていない場合
		return null;
	}

	/**
	 * <p>
	 * サービス契約カレントレコードのSYSIDを取得して返却します。
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo サービス契約番号
	 * @return サービス契約カレントレコードのSYSID
	 * </p>
	 */
	private String getSysidOfSvcKei(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo)
	{
		// サービス契約カレントレコードのSYSIDを返却
		CAANMsg retCurrent = getCurrentSvcKei(inCBSMsg, inContext, svcKeiNo);
		return retCurrent.getString(KK0081ETMsg.SYSID);
	}

	/**
	 * <p>
	 * サービス契約のカレントレコードを取得します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo サービス契約番号
	 * @return サービス契約のカレントレコード
	*/
	private CAANMsg getCurrentSvcKei(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo)
	{
		// カレント検索
		CAANMsg curInMsg = new CAANMsg(KK0081ETMsg.class.getName());
		curInMsg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		curInMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
		CAANMsg curRetMsg = new JKKejbKK0081DBABase().findByCurrent(curInMsg);

		return curRetMsg;
	}

	/**
	 * <p>
	 * 異動予約から有効なSYSID(入力値のサービス契約番号に紐付く、「異動予約詳細コード」が"お客様情報変更／併合／分割"、
	 * 異動予約状態コードが"未反映"、異動予約の予約適用年月日が入力値の予約適用年月日より過去日(同日を含む)
	 * の直近の予約に設定されている「併合先SYSID」または「分割先SYSID」)を返却します。
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 条件に一致したレコード
	 * </p>
	 */
	private CAANMsg[] getValidMsgIdoRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK1681ETMsg.getTableName());

			// SQL文
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append("SELECT ")
					.append("   KK1681.HEIGO_SK_SYSID AS HEIGO_SK_SYSID, ")
					.append("   KK1681.BUNKATSU_SK_SYSID AS BUNKATSU_SK_SYSID ")
					.append("FROM ")
					.append("   KK_T_IDO_RSV KK1681 ")
					.append("WHERE   KK1681.SVC_KEI_NO = ? ")
					.append("AND     KK1681.IDO_RSV_DTL_CD = '001' ")
					.append("AND     KK1681.IDO_RSV_STAT_CD = '00' ")
					.append("AND     KK1681.RSV_APLY_YMD <= ? ")
					.append("AND     KK1681.MK_FLG = '0' ")
					.append("ORDER BY  KK1681.RSV_APLY_YMD DESC ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定(サービス契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, 1, inCBSMsg.getString(EKK0081C250CBSMsg.SVC_KEI_NO));

			// パラメータの設定(予約適用年月日を指定)
			CAANJDBCUtil.setParam(pstmt, 2, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 取得データをマッピングする
			ArrayList<CAANMsg> alMsg = new ArrayList<CAANMsg>();
			while (rsltQuery.next())
			{
				CAANMsg inMsgList = new CAANMsg(KK1681ETMsg.class.getName());

				String heigoSysid = rsltQuery.getString("HEIGO_SK_SYSID");
				String bunkatuSysid = rsltQuery.getString("BUNKATSU_SK_SYSID");

				// 併合先SYSIDを設定
				inMsgList.set(KK1681ETMsg.HEIGO_SK_SYSID, heigoSysid);
				
				// 分割先SYSIDを設定
				inMsgList.set(KK1681ETMsg.BUNKATSU_SK_SYSID, bunkatuSysid);

				alMsg.add(inMsgList);
			}

			if (0 < alMsg.size())
			{
				return alMsg.toArray(new CAANMsg[0]);
			}

			// 検索結果0件の場合
			return null;
		}
		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>
	 * 契約のSYSID更新処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk0241MsgList 回線対象サービス契約
	*/
	// OM-2014-0002770 MOD START
	// public void sysidUpdate(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	public void sysidUpdate(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg[] kk0241MsgList)
	// OM-2014-0002770 MOD END
	{
		// 変更前のSYSIDを取得する
		JKKejbKK0081DBABase kk0081dba = new JKKejbKK0081DBABase();
		CAANMsg inMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inMsg.set(KK0081ETMsg.SVC_KEI_NO, inCBSMsg.getString(EKK0081C250CBSMsg.SVC_KEI_NO));
		inMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
		CAANMsg[] kk0081List = kk0081dba.findByCurrentSecond(inMsg);

		String oldSysid = null;
		
		for (CAANMsg kk0081Msg: kk0081List)
		{
			String sysid = kk0081Msg.getString(KK0081ETMsg.SYSID);
			if (!inCBSMsg.getString(EKK0081C250CBSMsg.SYSID).equals(sysid))
			{
				oldSysid = sysid;
				break;
			}
		}
		
		// PMPお客様情報変更依頼のDBアクセス
		dbAccessPmpCsifChgreq(inCBSMsg, inContext);

		// OM-2014-0002300 DEL START
		// データ抽出項目設定のDBアクセス
		//dbAccessDchskmst(inCBSMsg, inContext, oldSysid);
		// OM-2014-0002300 DEL END

		// OM-2014-0002770 ADD START
		if ( kk0241MsgList != null && kk0241MsgList.length > 0)
		{
// OM-2017-0000920対応 20170909 星野 ADD START
			for(CAANMsg kk0241Msg : kk0241MsgList){
// OM-2017-0000920対応 20170909 星野 ADD END

// OM-2017-0000920対応 20170909 星野 MOD START
//				String adchmMTppvNo = getAdchmTppv(kk0241MsgList[0], oldSysid);
				String adchmMTppvNo = getAdchmTppv(kk0241Msg, oldSysid);
// OM-2017-0000920対応 20170909 星野 MOD END
				
// OM-2017-0000920対応 20170909 星野 ADD START
				if(adchmMTppvNo!=null){
// OM-2017-0000920対応 20170909 星野 ADD END
					// 住所変更申込一時保存のDBアクセス
					dbAccessAdchmTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
		
					// 住所変更申込STB一時保存のDBアクセス
					dbAccessAdStbTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
		
					// 住所変更申込VA一時保存のDBアクセス
					dbAccessAdVaTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
		
					// 住所変更申込電話番号一時保存のDBアクセス
					dbAccessAdTlnTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
		
					// 住所変更申込送付先一時保存のDBアクセス
					dbAccessAdShsTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
		
					// 住所変更申込利用機器一時保存のDBアクセス
					dbAccessAdKkTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
		
					// 住所変更申込オプション一時保存のDBアクセス
					dbAccessAdOpTp(inCBSMsg, inContext, oldSysid, adchmMTppvNo);
					
					// 住所変更申込機器オプション一時保存のDBアクセス
					dbAccessAdKkopSvcKei(inCBSMsg, inContext, oldSysid, adchmMTppvNo);

// OM-2017-0000920対応 20170909 星野 ADD START
				}
			}
// OM-2017-0000920対応 20170909 星野 ADD END
		}
		// OM-2014-0002770 ADD END
		// OM-2014-0002770 DEL START
		// 住所変更申込一時保存のDBアクセス
		// dbAccessAdchmTp(inCBSMsg, inContext, oldSysid);

		// 住所変更申込STB一時保存のDBアクセス
		// dbAccessAdStbTp(inCBSMsg, inContext, oldSysid);

		// 住所変更申込VA一時保存のDBアクセス
		// dbAccessAdVaTp(inCBSMsg, inContext, oldSysid);

		// 住所変更申込電話番号一時保存のDBアクセス
		// dbAccessAdTlnTp(inCBSMsg, inContext, oldSysid);

		// 住所変更申込送付先一時保存のDBアクセス
		// dbAccessAdShsTp(inCBSMsg, inContext, oldSysid);

		// 住所変更申込利用機器一時保存のDBアクセス
		// dbAccessAdKkTp(inCBSMsg, inContext, oldSysid);

		// 住所変更申込オプション一時保存のDBアクセス
		// dbAccessAdOpTp(inCBSMsg, inContext, oldSysid);
		
		// 住所変更申込機器オプション一時保存のDBアクセス
		// dbAccessAdKkopSvcKei(inCBSMsg, inContext, oldSysid);
		// OM-2014-0002770 DEL END
		
		// IT1-2014-0000356 ADD START
		// 請求オプションサービス契約を取得
		dbAccessSeikyOptionSvKei(inCBSMsg, inContext, oldSysid);
		// IT1-2014-0000356 ADD END
	}
	
	/**
	 * <p>
	 * PMPお客様情報変更依頼のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	*/
	private void dbAccessPmpCsifChgreq(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK1261 = new CAANMsg(KK1261ETMsg.class.getName());
		condMsgKK1261.set(KK1261ETMsg.SVC_KEI_NO, inCBSMsg.getString(EKK0081C250CBSMsg.SVC_KEI_NO));
		condMsgKK1261.set(KK1261ETMsg.DATA_HANEI_TRN_ZM_FLG, "0");
		CAANMsg[] retConMsg = null;
		try
		{
			retConMsg = new KK1261LE().findByCondition(condMsgKK1261);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		for (int i = 0; i < retConMsg.length; i++)
		{
			retConMsg[i].set(KK1261ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			retConMsg[i].set(KK1261ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			retConMsg[i].set(KK1261ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));

			// 更新
			update(inCBSMsg, retConMsg[i]);
		}
	}
	
	/**
	 * <p>
	 * データ抽出項目設定のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	*/
	private void dbAccessDchskmst(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK1391 = new CAANMsg(KK1391ETMsg.class.getName());
		condMsgKK1391.set(KK1391ETMsg.SYSID, oldSysid);
		CAANMsg[] retConMsg = null;
		try
		{
			retConMsg = new KK1391LE().findByCondition(condMsgKK1391);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		String primaryKey = null;
		HashMap<String, String> escapeMap = new HashMap<String, String>();

		for (int i = 0; i < retConMsg.length; i++)
		{
			// プライマリキーを取得
			primaryKey = retConMsg[i].getString(KK1391ETMsg.DCHSKMST_NO);

			if (!escapeMap.containsKey(primaryKey))
			{
				// 初検索の場合
				escapeMap.put(primaryKey, null);

				CAANMsg curMsgKK1391 = new CAANMsg(KK1391ETMsg.class.getName());
				curMsgKK1391.set(KK1391ETMsg.DCHSKMST_NO, primaryKey);
				CAANMsg retCurMsg = new JKKejbKK1391DBABase().findByCurrent(curMsgKK1391);
				if (null != retCurMsg && oldSysid.equals(retCurMsg.getString(KK1391ETMsg.SYSID)))
				{
					retCurMsg.set(KK1391ETMsg.GENE_ADD_DTM, JKKModelCommon.getSysDateTimeStamp());
					retCurMsg.set(KK1391ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
					retCurMsg.set(KK1391ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					retCurMsg.set(KK1391ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					retCurMsg.set(KK1391ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					retCurMsg.set(KK1391ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					retCurMsg.setNull(KK1391ETMsg.DEL_DTM);
					retCurMsg.setNull(KK1391ETMsg.DEL_OPEACNT);
					retCurMsg.set(KK1391ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

					// カレント情報を元に登録
					create(inCBSMsg, retCurMsg);
				}
			}

			retConMsg[i].set(KK1391ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			retConMsg[i].set(KK1391ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			retConMsg[i].set(KK1391ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));

			// 更新
			update(inCBSMsg, retConMsg[i]);
		}
	}
	
	/**
	 * <p>
	 * 住所変更申込STB一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdStbTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdStbTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK1931 = new CAANMsg(KK1931ETMsg.class.getName());
		condMsgKK1931.set(KK1931ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK1931.set(KK1931ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK1931.set(KK1931ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK1931LE().findByCondition(condMsgKK1931);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK1931ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK1931ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK1931ETMsg.ADCHM_TPPV_NO));
			// 住所変更申込STB一時保存番号
			retConMsg[i].set(KK1931ETMsg.ADCHM_STB_TPPV_NO, retConMsg[i].getString(KK1931ETMsg.ADCHM_STB_TPPV_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK1931ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK1931ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK1931ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK1931ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK1931ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK1931ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK1931ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK1931ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK1931ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK1931ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK1931ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK1931ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK1931ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込VA一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdVaTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdVaTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK1941 = new CAANMsg(KK1941ETMsg.class.getName());
		condMsgKK1941.set(KK1941ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK1941.set(KK1941ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK1941.set(KK1941ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK1941LE().findByCondition(condMsgKK1941);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK1941ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK1941ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK1941ETMsg.ADCHM_TPPV_NO));
			// 機器提供サービス契約番号
			retConMsg[i].set(KK1941ETMsg.KKTK_SVC_KEI_NO, retConMsg[i].getString(KK1941ETMsg.KKTK_SVC_KEI_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK1941ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK1941ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK1941ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK1941ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK1941ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK1941ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK1941ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK1941ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK1941ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK1941ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK1941ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK1941ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK1941ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込電話番号一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdTlnTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdTlnTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK1951 = new CAANMsg(KK1951ETMsg.class.getName());
		condMsgKK1951.set(KK1951ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK1951.set(KK1951ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK1951.set(KK1951ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK1951LE().findByCondition(condMsgKK1951);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK1951ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK1951ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK1951ETMsg.ADCHM_TPPV_NO));
			// 住所変更申込電話番号一時保存番号
			retConMsg[i].set(KK1951ETMsg.ADCHM_TLN_TPPV_NO, retConMsg[i].getString(KK1951ETMsg.ADCHM_TLN_TPPV_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK1951ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK1951ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK1951ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK1951ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK1951ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK1951ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK1951ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK1951ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK1951ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK1951ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK1951ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK1951ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK1951ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込送付先一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdShsTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdShsTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK1961 = new CAANMsg(KK1961ETMsg.class.getName());
		condMsgKK1961.set(KK1961ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK1961.set(KK1961ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK1961.set(KK1961ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK1961LE().findByCondition(condMsgKK1961);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK1961ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK1961ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK1961ETMsg.ADCHM_TPPV_NO));
			// 住所変更申込送付先一時保存番号
			retConMsg[i].set(KK1961ETMsg.ADCHM_SHS_TPPV_NO, retConMsg[i].getString(KK1961ETMsg.ADCHM_SHS_TPPV_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK1961ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK1961ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK1961ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK1961ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK1961ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK1961ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK1961ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK1961ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK1961ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK1961ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK1961ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK1961ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK1961ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdchmTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdchmTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK2011 = new CAANMsg(KK2011ETMsg.class.getName());
		condMsgKK2011.set(KK2011ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK2011.set(KK2011ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK2011.set(KK2011ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK2011LE().findByCondition(condMsgKK2011);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK2011ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK2011ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK2011ETMsg.ADCHM_TPPV_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK2011ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK2011ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK2011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK2011ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK2011ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK2011ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK2011ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK2011ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK2011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK2011ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK2011ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK2011ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK2011ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込利用機器一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdKkTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdKkTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK2021 = new CAANMsg(KK2021ETMsg.class.getName());
		condMsgKK2021.set(KK2021ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK2021.set(KK2021ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK2021.set(KK2021ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK2021LE().findByCondition(condMsgKK2021);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK2021ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK2021ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK2021ETMsg.ADCHM_TPPV_NO));
			// 機器提供サービス契約番号
			retConMsg[i].set(KK2021ETMsg.KKTK_SVC_KEI_NO, retConMsg[i].getString(KK2021ETMsg.KKTK_SVC_KEI_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK2021ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK2021ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK2021ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK2021ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK2021ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK2021ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK2021ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK2021ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK2021ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK2021ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK2021ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK2021ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK2021ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込オプション一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdOpTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdOpTp(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK2031 = new CAANMsg(KK2031ETMsg.class.getName());
		condMsgKK2031.set(KK2031ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK2031.set(KK2031ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK2031.set(KK2031ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK2031LE().findByCondition(condMsgKK2031);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK2031ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK2031ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK2031ETMsg.ADCHM_TPPV_NO));
			// 住所変更申込サービスタブ種別コード
			retConMsg[i].set(KK2031ETMsg.ADCHM_SVC_TAB_SBT_CD, retConMsg[i].getString(KK2031ETMsg.ADCHM_SVC_TAB_SBT_CD));
			// 住所変更申込オプション一時保存番号
			retConMsg[i].set(KK2031ETMsg.ADCHM_OP_TPPV_NO, retConMsg[i].getString(KK2031ETMsg.ADCHM_OP_TPPV_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK2031ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK2031ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK2031ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK2031ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK2031ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK2031ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK2031ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK2031ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK2031ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK2031ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK2031ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK2031ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK2031ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}

	/**
	 * <p>
	 * 住所変更申込機器オプション一時保存のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	 * @param adchmMTppvNo 住所変更申込一時保存番号
	*/
	// OM-2014-0002770 MOD START
	// private void dbAccessAdKkopSvcKei(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid)
	private void dbAccessAdKkopSvcKei(CAANMsg inCBSMsg, AgentDispatchContext inContext, String oldSysid, String adchmMTppvNo)
	// OM-2014-0002770 MOD END
	{
		// SYSIDに紐付くレコードを取得
		CAANMsg condMsgKK2881 = new CAANMsg(KK2881ETMsg.class.getName());
		condMsgKK2881.set(KK2881ETMsg.SYSID, oldSysid);
		// OM-2014-0002770 ADD START
		condMsgKK2881.set(KK2881ETMsg.ADCHM_TPPV_NO, adchmMTppvNo);
		// OM-2014-0002770 ADD END
		condMsgKK2881.set(KK2881ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 登録用メッセージクラス
		CAANMsg[] retConMsg = null;
		// 更新用メッセージクラス
		CAANMsg[] updMsg = null;

		try
		{
			retConMsg = new KK2881LE().findByCondition(condMsgKK2881);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

		// 検索結果を更新用メッセージクラスに格納
		updMsg = retConMsg;

		// 旧SYSID分、処理を行う
		for (int i = 0; i < retConMsg.length; i++)
		{
			// 旧SYSIDのレコードを入力のSYSIDに変更し、登録する
			// SYSID
			retConMsg[i].set(KK2881ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
			// 住所変更申込一時保存番号
			retConMsg[i].set(KK2881ETMsg.ADCHM_TPPV_NO, retConMsg[i].getString(KK2881ETMsg.ADCHM_TPPV_NO));
			// 登録年月日時分秒
			retConMsg[i].set(KK2881ETMsg.ADD_DTM,  inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 登録オペレータアカウント
			retConMsg[i].set(KK2881ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 更新年月日時分秒
			retConMsg[i].set(KK2881ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			retConMsg[i].set(KK2881ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			retConMsg[i].setNull(KK2881ETMsg.DEL_DTM);
			// 削除オペレータアカウント
			retConMsg[i].setNull(KK2881ETMsg.DEL_OPEACNT);
			// 無効フラグ
			retConMsg[i].set(KK2881ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// 登録
			create(inCBSMsg, retConMsg[i]);

			// 旧SYSIDのレコードを無効にする
			// SYSID
			updMsg[i].set(KK2881ETMsg.SYSID, oldSysid);
			// 更新年月日時分秒
			updMsg[i].set(KK2881ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 更新オペレータアカウント
			updMsg[i].set(KK2881ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 削除年月日時分秒
			updMsg[i].set(KK2881ETMsg.DEL_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
			// 削除オペレータアカウント
			updMsg[i].set(KK2881ETMsg.DEL_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
			// 無効フラグ
			updMsg[i].set(KK2881ETMsg.MK_FLG, JKKModelConst.MK_FLG_MK);

			// 更新
			update(inCBSMsg, updMsg[i]);
		}
	}
	
	/**
	 * <p>
	 * 登録処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inETMsg 登録用のETMsg
	*/
	private void create(CAANMsg inCBSMsg, CAANMsg inETMsg)
	{
		JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
		dbaUtil.create(inETMsg);
	}

	/**
	 * <p>
	 * 更新処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inETMsg 登録用のETMsg
	*/
	private void update(CAANMsg inCBSMsg, CAANMsg inETMsg)
	{
		JKKejbDBAUtil dbaUtil = new JKKejbDBAUtil(inCBSMsg);
		dbaUtil.update(inETMsg);
	}
	// OM-2014-0002770 ADD START 
	/**
	 * <p>
	 * 住所変更申込一時保存番号を取得します。
	 * </p>
	 * @param  kk0241MsgList 回線対象サービス契約
	 * @param  oldSysid 更新対象のSYSID
	 * @return 住所変更申込一時保存番号
	*/
	private String getAdchmTppv(CAANMsg kk0241MsgList, String oldSysid)
	{
		// 住所変更申込一時保存番号
		String adchmMTppvNo = null;
		// 出力内容格納エリア
		CAANMsg[] otETMsg   = null;
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = kk0241MsgList.getString(KK0241ETMsg.SVC_KEI_KAISEN_UCWK_NO);
		// SYSIDとサービス契約回線内訳番号に紐付く住所変更申込一時保存（KK2011）のレコードを取得
		CAANMsg condMsgKK2011 = new CAANMsg(KK2011ETMsg.class.getName());
		condMsgKK2011.set(KK2011ETMsg.SYSID, oldSysid);
		condMsgKK2011.set(KK2011ETMsg.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		condMsgKK2011.set(KK2011ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		
		try
		{
			otETMsg = new KK2011LE().findByCondition(condMsgKK2011);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		// 住所変更申込一時保存番号
		if ( otETMsg != null && otETMsg.length > 0)
		{
			adchmMTppvNo = otETMsg[0].getString(KK2011ETMsg.ADCHM_TPPV_NO);	
		}
		return adchmMTppvNo;  
	}
	// OM-2014-0002770 ADD END
	
	// IT1-2014-0000356 ADD START
	/**
	 * <p>
	 * 請求オプションサービス契約のDBアクセス処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	*/
	private void dbAccessSeikyOptionSvKei(CAANMsg inCBSMsg, AgentDispatchContext inContext ,String oldSysid)
	{
		// 更新した請求契約の項目をキーに請求契約オプションサービス契約の全件検索を行う
		CAANMsg kk0441Cond = new CAANMsg(KK0441ETMsg.class.getName());
		kk0441Cond.set(KK0441ETMsg.SYSID, oldSysid);
		kk0441Cond.set(KK0441ETMsg.SEIOPSVC_KEI_STAT, JKKModelConst.SVC_KEI_STAT_SVCTK_CHU);
		kk0441Cond.set(KK0441ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

		CAANMsg[] kk0441List = null;

		// 全件検索を行い、検索項目に紐づくレコードを抽出
		KK0441LE le = new KK0441LE();
		try
		{
			kk0441List = le.findByCondition(kk0441Cond);

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}
		// 取得したレコードが運用日より未来日のレコードのみ更新を行う。
		for(int i = 0; i < kk0441List.length; i++)
		{
			String seiopsvcKeiPcrs = kk0441List[i].getString(KK0441ETMsg.PCRS_CD);
			String seiopsvcKeiPplan = kk0441List[i].getString(KK0441ETMsg.PPLAN_CD);
			String seikyuKeiNo = kk0441List[i].getString(KK0441ETMsg.SEIKY_KEI_NO);

			// 料金コースコードと料金プランコードがNHK団体一括契約はSYSIDのみ変更
			if(SEIOP_SVC_KEI_PCRS_CD_NHK.equals(seiopsvcKeiPcrs) && SEIOP_SVC_KEI_PPLAN_CD_NHK.equals(seiopsvcKeiPplan)) {
				if(!isSeikyuOptionNHKChange(inCBSMsg, inContext ,seikyuKeiNo)) {
					// 更新用ETMsgの作成
					CAANMsg kk0441Info = new CAANMsg(KK0441ETMsg.class.getName());
					kk0441Info.set(KK0441ETMsg.SEIOPSVC_KEI_NO, kk0441List[i].getString(KK0441ETMsg.SEIOPSVC_KEI_NO));
					
					kk0441Info.set(KK0441ETMsg.SYSID, inCBSMsg.getString(EKK0081C250CBSMsg.SYSID));
					// 世代登録年月日時分秒	GENE_ADD_DTM
					kk0441Info.set(KK0441ETMsg.GENE_ADD_DTM, kk0441List[i].getString(KK0441ETMsg.GENE_ADD_DTM));
					// 更新年月日時分秒	UPD_DTM
					kk0441Info.set(KK0441ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
					// 更新オペレータアカウント	UPD_OPEACNT
					kk0441Info.set(KK0441ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
					// IT1-2014-0000356 MOD END
		
					// 更新処理
					JKKejbDBAUtil dba = new JKKejbDBAUtil(inCBSMsg);
					dba.update(kk0441Info);
					
				}
			}
		}
	}

	/**
	 * <p>
	 * 請求サービス契約配下に有効なＮＨＫ団体一括が設定可能な契約が存在するか確認する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param oldSysid 修正対象のSYSID
	*/
	private boolean isSeikyuOptionNHKChange(CAANMsg inCBSMsg, AgentDispatchContext inContext, String seikyuKeiNo)
	{
		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK1681ETMsg.getTableName());

			// SQL文
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append("SELECT ")
					.append("   COUNT(*) AS CNT ")
					.append("FROM ")
					.append("   KK_T_KAKINS KK0321 ")
					.append("INNER JOIN KK_T_SVC_KEI KK0081 ")
					.append("ON KK0081.SVC_KEI_NO = KK0321.SVC_KEI_NO ")
					.append("INNER JOIN KK_M_PRC_GRP KK0781 ")
					.append("ON KK0781.PRC_GRP_CD = KK0081.PRC_GRP_CD ")
					.append("WHERE   KK0321.SEIKY_KEI_NO = ? ")
					.append("AND     KK0321.KAKINS_TSTAYMD <= ? ")
					.append("AND     KK0321.KAKINS_TENDYMD >= ? ")
					.append("AND     KK0321.MK_FLG = '0' ")
					.append("AND   (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ")
					.append("   (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("   FROM   KK_T_SVC_KEI KK0081_GENE ")
					.append("   WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("   AND    KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("   AND    KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("   AND    KK0081_GENE.MK_FLG = '0'  ")
					.append("   GROUP BY KK0081_GENE.SVC_KEI_NO) ")
					.append("AND KK0781.PRC_GRP_TSTAYMD <= ? ")
					.append("AND KK0781.PRC_GRP_TENDYMD >= ? ")
					.append("AND KK0781.NHK_DNTIKTKEI_TG_FLG = '1' ")
					.append("AND KK0081.SVC_KEI_STAT < '900' ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定(サービス契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, 1, seikyuKeiNo);

			// パラメータの設定(予約適用年月日を指定)
			CAANJDBCUtil.setParam(pstmt, 2, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));
			CAANJDBCUtil.setParam(pstmt, 3, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));
			CAANJDBCUtil.setParam(pstmt, 4, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));
			CAANJDBCUtil.setParam(pstmt, 5, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));
			CAANJDBCUtil.setParam(pstmt, 6, inCBSMsg.getString(EKK0081C250CBSMsg.RSV_APLY_YMD));

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			int cnt = 0;

			while (rsltQuery.next())
			{

				cnt = rsltQuery.getInt("CNT");
			}

			if (0 < cnt)
			{
				return true;
			}

			// 検索結果0件の場合
//			return null;
		}
		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);
			}
		}

		return false;
	}
	
	// IT1-2014-0000356 ADD END

}
