/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKejbKK0081Edit
*	ソースファイル名：JKKejbKK0081Edit.java
*	作成者			：富士通
*	日付			：2011年06月15日
*＜機能概要＞
*	サービス契約のカレントレコードの世代登録年月日時分秒を取得する部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/15	富士通		新規作成
*	v5.00.00	2013/02/26	FJ）藤本	ANK-1470-00-00
*	v5.00.01	2013/03/07	FJ）竹内	ST2-2013-0001310
*   v5.00.02    2013/04/09  FJ）寺園    IT2-2013-0000251
*   v5.00.03    2013/10/31  FJ）寺園    OM-2013-0003686
 *  v5.00.04    2013/11/29  FJ）寺園    OM-2013-0004448
*   v6.00.00    2013/12/04  FJ）宇野    OM-2013-0004529
*   v8.00.00    2013/12/10  FJ）沖田    ANK-1584-00-00
*   v8.00.00	2014/03/24	FJ）松枝	OM-2014-0000286   
*   v16.00.00	2015/06/08	FJ）中原	ANK-2480-00-00
*   v37.00.00   2018/04/06  FJ)澤田     ANK-3366-00-00 eo光設備卸対応
**********************************************************************/

package eo.ejb.common.edit;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;

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.fw.AgentDispatchContext;

import eo.common.util.JKKHiChrgJdgUtil;
import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.KK0881ETMsg;
import eo.ejb.cbm.entity.KK0881LE;
import eo.ejb.cbm.entity.KK0891ETMsg;
import eo.ejb.cbm.entity.KK0891LE;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.db.JCKejbCK0011DBABase;
import eo.ejb.common.db.JKKejbKK0081DBABase;

/**
 * <p>
 * サービス契約内訳のカレントレコードの世代登録年月日時分秒を取得する部品クラスです。
 * </p>
 * @author 富士通
 */
public class JKKejbKK0081Edit extends JKKejbKK0081DBABase
{

	/** マンション100M料金コース・料金プラン変換定義体 */
	// [0]:変換前料金コース, [1]:変換前料金プラン, [2]:変換後料金コース, [3]:変換後料金プラン
	private static final String[][] MANS_100M_PCRS_PPLAN_CHG = new String[][]{
		{"A47", "PA4702", "A67", "PA6701"},
		{"A48", "PA4801", "A67", "PA6701"},
		{"A49", "PA4901", "A68", "PA6801"},
		{"A50", "PA5001", "A69", "PA6901"},
		{"A51", "PA5101", "A69", "PA6901"},
		{"A52", "PA5201", "A69", "PA6901"},
		{"A53", "PA5301", "A69", "PA6901"},
		{"A54", "PA5401", "A70", "PA7001"},
		{"A56", "PA5601", "A71", "PA7101"},
	};

	/** 無効フラグ（有効） */
	private static final String MK_FLG_YUKO = "0";
	
	/** ＫＥＹ＿提供方式契約番号 */
	private static final String KEY_TK_HOSHIKI_KEI_NO = "tk_hoshiki_kei_no";
	
	/** ＫＥＹ＿料金コースコード */
	private static final String KEY_PCRS_CD = "pcrs_cd";
	
	/** ＫＥＹ＿料金プランコード */
	private static final String KEY_PPLAN_CD = "pplan_cd";
	
	/** 解約種別フラグ(サービス契約解約)               */
	private static final String DSL_SBT_FLG_SVC_KEI_DSL      = "1";
	
	/**
	 * コンストラクタです。
	 */
	public JKKejbKK0081Edit()
	{
	}

	/**
	 * <p>
	 * サービス契約のカレントレコードの世代登録年月日時分秒を取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo 検索対象のサービス契約番号
	 * @return 指定されたサービス契約番号に紐付くカレントレコードの世代登録年月日時分秒
	 */
	public Object getCurrentGeneAddDtm(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo)
	{

		// カレント検索用のメッセージを作成
		CAANMsg inETMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inMsg));

		// サービス契約のカレント検索を行う
		CAANMsg outETMsg = super.findByCurrent(inETMsg);

		// 検索結果が0件の場合
		if (null == outETMsg)
		{
			return null;
		}

		Object value = outETMsg.getObject(KK0081ETMsg.GENE_ADD_DTM);

		return value;
	}
	
	/**
	 * <p>
	 * マンション100M変換(料金コース、料金プラン)処理
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @return 変換後料金コースコード、変換後料金プランコード
	 */
	public HashMap<String, String> getMans100MPcrsCdPplanCd(CAANMsg inMsg)
	{
		// マンション100M料金コース・料金プラン変換処理結果マップ
		HashMap<String, String> retMap = new HashMap<String, String>();

		// 入力値の料金コース・料金プラン
		String pcrsCd = inMsg.getString(KEY_PCRS_CD);
		String pplanCd = inMsg.getString(KEY_PPLAN_CD);

		// ペアIDが設定されている場合
		if (!pairidNullChk(inMsg))
		{

			// マンション100M料金コース・料金プラン変換定義を取得する
			for (String[] mans100mPcrsPplanChg : MANS_100M_PCRS_PPLAN_CHG)
			{
				// 入力値の料金コース≠マンション100M変換前料金コース の場合、変換対象外
				if (!mans100mPcrsPplanChg[0].equals(pcrsCd))
				{
					continue;
				}

				// 入力値の料金プラン≠マンション100M変換前料金プラン の場合、変換対象外
				if (!mans100mPcrsPplanChg[1].equals(pplanCd))
				{
					continue;
				}

				// マンション100M変換後の料金コース・料金プランを返却する
				retMap.put(KK0081ETMsg.PCRS_CD, mans100mPcrsPplanChg[2]);
				retMap.put(KK0081ETMsg.PPLAN_CD, mans100mPcrsPplanChg[3]);

				return retMap;
			}
		}

		// 変換対象外の場合、入力値の料金コース・料金プランを返却する
		retMap.put(KK0081ETMsg.PCRS_CD, pcrsCd);
		retMap.put(KK0081ETMsg.PPLAN_CD, pplanCd);

		return retMap;
	}

	/**
	 * <p>
	 * マンション100M変換(料金コース)処理
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @return 変換後料金コースコード
	 */
	public String getMans100MPcrsCd(CAANMsg inMsg)
	{
		// マンション100M変換(料金コース、料金プラン)処理
		HashMap<String, String> retMap = getMans100MPcrsCdPplanCd(inMsg);

		return retMap.get(KK0081ETMsg.PCRS_CD);
	}

	/**
	 * <p>
	 * マンション100M変換(料金プラン)処理
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @return 変換後料金プランコード
	 */
	public String getMans100MPplanCd(CAANMsg inMsg)
	{
		// マンション100M変換(料金コース、料金プラン)処理
		HashMap<String, String> retMap = getMans100MPcrsCdPplanCd(inMsg);

		return retMap.get(KK0081ETMsg.PPLAN_CD);
	}

	/**
	 * <p>
	 * ペアIDのNULL判定処理
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @return ペアIDが設定されていない場合、true
	 */
	private boolean pairidNullChk(CAANMsg inMsg)
	{
		String tkHoshikiKeiNo = inMsg.getString(KEY_TK_HOSHIKI_KEI_NO);
		// 提供方式契約番号が設定されていない場合
		if (null == tkHoshikiKeiNo || "".equals(tkHoshikiKeiNo))
		{
			return true;
		}

		CAANMsg kk0881Msg = getKaisenUseKeiTkHoshikiKeiNo(inMsg, tkHoshikiKeiNo);
		if (null == kk0881Msg || null == kk0881Msg.getString(KK0881ETMsg.PAIRID) || "".equals(kk0881Msg.getString(KK0881ETMsg.PAIRID)))
		{
			return true;
		}

		return false;
	}

	/**
	 * <p>
	 * 回線使用契約取得処理(提供方式契約番号)
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param tkHoshikiKeiNo 提供方式契約番号
	 * @return 提供方式契約番号に紐付く回線使用契約
	 */
	private CAANMsg getKaisenUseKeiTkHoshikiKeiNo(CAANMsg inMsg, String tkHoshikiKeiNo)
	{

		try
		{
			// 提供方式契約取得処理
			CAANMsg in0891Msg = new CAANMsg(KK0891ETMsg.class.getName());
			in0891Msg.set(KK0891ETMsg.TK_HOSHIKI_KEI_NO, tkHoshikiKeiNo);
			in0891Msg.set(KK0891ETMsg.MK_FLG, MK_FLG_YUKO);

			KK0891LE leKK0891 = new KK0891LE();
			CAANMsg[] ret0891List = leKK0891.findByCondition(in0891Msg);

			// 取得できない場合
			if (null == ret0891List || 0 == ret0891List.length)
			{
				throw new CAANRuntimeException("該当の提供方式契約が存在しません。");
			}

			// 回線使用契約取得処理
			CAANMsg in0881Msg = new CAANMsg(KK0881ETMsg.class.getName());
			in0881Msg.set(KK0881ETMsg.KAISEN_USE_KEI_NO, ret0891List[0].getString(KK0891ETMsg.KAISEN_USE_KEI_NO));
			in0881Msg.set(KK0881ETMsg.MK_FLG, MK_FLG_YUKO);

			KK0881LE leKK0881 = new KK0881LE();
			CAANMsg[] ret0881List = leKK0881.findByCondition(in0881Msg);

			if (null == ret0881List || 0 == ret0881List.length)
			{
				throw new CAANRuntimeException("該当の回線使用契約が存在しません。");
			}

			return ret0881List[0];

		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}
	}

	/**
	 * <p>
	 * サービス提供中（解約前／休止中前）の違約金発生コードを取得します。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo サービス契約番号 
	 * @param svcKeiStat サービス契約ステータス 
	 * @return 違約金発生コード
	 * @throws SQLException 
	 */
	public String getPnltyHasseiCdMae(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo, Object svcKeiStat) 
	{
		// コネクション
		Connection con1 = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		// 返却用変数
		String pnltyHasseiCd = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			// SQL文
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT KK0081.PNLTY_HASSEI_CD ");
			sql_Buff.append(" FROM   KK_T_SVC_KEI KK0081 ");
			sql_Buff.append(" WHERE  KK0081.SVC_KEI_NO = ? ");
			sql_Buff.append(" AND    (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ");
			sql_Buff.append("        (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ");
			sql_Buff.append("         FROM   KK_T_SVC_KEI KK0081_GENE ");
			sql_Buff.append("         WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
			sql_Buff.append(" AND    KK0081_GENE.SVC_KEI_STAT = ? ");
			sql_Buff.append(" AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
			sql_Buff.append(" AND    KK0081_GENE.RSV_APLY_CD = '2' ");
			sql_Buff.append(" AND    KK0081_GENE.MK_FLG = '0' ");
			sql_Buff.append(" GROUP BY KK0081_GENE.SVC_KEI_NO) ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定(サービス契約番号)
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			// パラメータの設定(サービス契約ステータス)
			CAANJDBCUtil.setParam(pstmt, 2, svcKeiStat);
			// パラメータの設定(運用日付を指定)
			CAANJDBCUtil.setParam(pstmt, 3, JKKModelCommon.getOpeDate(inMsg));

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 違約金発生コードを取得する
			if (rsltQuery.next())
			{
				pnltyHasseiCd = rsltQuery.getString("PNLTY_HASSEI_CD");
			}

		}
		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 pnltyHasseiCd;
	}

	/**
	 * <p>
	 * サービス停止解除年月日の編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo 検索対象のサービス契約番号
	 * @param kaihkYmd 回復年月日
	 * @return サービス停止解除年月日
	 */
	public String getSvcStpRlsYmd(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo, Object kaihkYmd)
	{
		String value = null;
		
		// カレント検索用のメッセージを作成
		CAANMsg inETMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inMsg));

		// サービス契約のカレント検索を行う
		CAANMsg outETMsg = super.findByCurrent(inETMsg);

		// 検索結果が0件の場合
		if (null == outETMsg)
		{
			return null;
		}

		// 利用停止中（カレント．サービス停止年月日≠NULLかつカレント．サービス停止解除年月日＝NULL）の場合
		if (!outETMsg.isNull(KK0081ETMsg.SVC_STP_YMD) && outETMsg.isNull(KK0081ETMsg.SVC_STP_RLS_YMD))
		{
			value = kaihkYmd.toString();
		}
		else
		{
			value = outETMsg.getString(KK0081ETMsg.SVC_STP_RLS_YMD);
		}
		return value;
	}

	/**
	 * <p>
	 * サービス停止解除理由コードの編集を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo 検索対象のサービス契約番号
	 * @return サービス停止解除理由コード
	 */
	public String getSvcStpRlsRsnCd(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo)
	{
		String value = null;
		
		// カレント検索用のメッセージを作成
		CAANMsg inETMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inMsg));

		// サービス契約のカレント検索を行う
		CAANMsg outETMsg = super.findByCurrent(inETMsg);

		// 検索結果が0件の場合
		if (null == outETMsg)
		{
			return null;
		}

		// 利用停止中（カレント．サービス停止年月日≠NULLかつカレント．サービス停止解除年月日＝NULL）の場合
		if (!outETMsg.isNull(KK0081ETMsg.SVC_STP_YMD) && outETMsg.isNull(KK0081ETMsg.SVC_STP_RLS_YMD))
		{
			value = JKKModelConst.SVC_STP_RLS_RSN_CD_SKK;
		}
		else
		{
			value = outETMsg.getString(KK0081ETMsg.SVC_STP_RLS_RSN_CD);
		}
		return value;
	}

	/**
	 * <p>
	 * サービス契約ステータスに応じてカレント引継を行うか判定します。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 * @param svcKeiNo 検索対象のサービス契約番号
	 * @return 受付済、照査済、締結済であればfalse、それ以外の場合true
	 */
	public boolean isStatCurrent(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo)
	{
		
		// カレント検索用のメッセージを作成
		CAANMsg inETMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inMsg));

		// サービス契約のカレント検索を行う
		CAANMsg outETMsg = super.findByCurrent(inETMsg);
		
		if(outETMsg == null){
			return false;
		}

		String stat = outETMsg.getString(KK0081ETMsg.SVC_KEI_STAT);
		
		if (JKKModelConst.SVC_KEI_STAT_UK_ZM.equals(stat) || 
				JKKModelConst.SVC_KEI_STAT_SHOSA_ZM.equals(stat) || 
				JKKModelConst.SVC_KEI_STAT_CNC_ZM.equals(stat))
		{
			return false;
		}
		return true;
	}
	
	/**
	 * <p>
	 * 指定したステータスの最新のサービス契約のカラムを取得します。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo サービス契約番号 
	 * @param svcKeiStat サービス契約ステータス 
	 * @param columnName 取得するカラム名
	 * @return 返却値
	 * @throws SQLException 
	 */
	public String getColumnByStat(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo, Object svcKeiStat, String columnName) 
	{
		// コネクション
		Connection con1 = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		// 返却用変数
		String value = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0081ETMsg.getTableName());

			// SQL文
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ").append(columnName).append(" ");
			sql_Buff.append(" FROM   KK_T_SVC_KEI KK0081 ");
			sql_Buff.append(" WHERE  KK0081.SVC_KEI_NO = ? ");
			sql_Buff.append(" AND    (KK0081.SVC_KEI_NO, KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM) = ");
			sql_Buff.append("        (SELECT KK0081_GENE.SVC_KEI_NO, MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ");
			sql_Buff.append("         FROM   KK_T_SVC_KEI KK0081_GENE ");
			sql_Buff.append("         WHERE  KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ");
			sql_Buff.append(" AND    KK0081_GENE.SVC_KEI_STAT = ? ");
			sql_Buff.append(" AND    KK0081_GENE.RSV_APLY_YMD <= ? ");
			sql_Buff.append(" AND    KK0081_GENE.RSV_APLY_CD = '2' ");
			sql_Buff.append(" AND    KK0081_GENE.MK_FLG = '0' ");
			sql_Buff.append(" GROUP BY KK0081_GENE.SVC_KEI_NO) ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定(機器提供サービス契約番号)
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			// パラメータの設定(機器提供サービス契約ステータス)
			CAANJDBCUtil.setParam(pstmt, 2, svcKeiStat);
			// パラメータの設定(運用日付を指定)
			CAANJDBCUtil.setParam(pstmt, 3, JKKModelCommon.getOpeDate(inMsg));

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 指定したカラムを取得する
			if (rsltQuery.next())
			{
				value = rsltQuery.getString(columnName);
			}

		}
		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 value;
	}

	/**
	 * <p>
	 * サービス契約のサービス判定を行います。
	 * サービス契約番号を元にサービス契約のカレントレコードを取得し、取得したレコードのサービスコードが第2引数のサービスコードと
	 * 一致する場合、trueを返却する。それ以外はfalseを返却する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo 対象のサービス契約番号
	 * @param svcCd 対象のサービスコード
	 * @return サービス判定結果 指定されたサービスコードと一致する場合：true、それ以外の場合：false
	 */
	public boolean isEqualsSvc(CAANMsg inMsg, AgentDispatchContext inContext, Object svcKeiNo, Object svcCd)
	{
		// カレント検索用のメッセージを作成
		CAANMsg inETMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsg.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsg.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inMsg));

		// サービス契約のカレント検索を行う
		CAANMsg outETMsg = super.findByCurrent(inETMsg);

		// 検索結果が0件の場合
		if (null == outETMsg)
		{
			return false;
		}
		
		// サービスコードが一致する場合、同一サービスと判定
		if (svcCd.equals(outETMsg.getString(KK0081ETMsg.SVC_CD)))
		{
			return true;
		}
		
		//2015-06-08 中原 ANK-2480-00-00 新電力対応 MOD START
//		// サービスコードが一致する場合、同一サービスと判定
//		if (svcCd.equals(outETMsg.getString(KK0081ETMsg.SVC_CD)))
//		{
//			return true;
//		}
		//サービスコードを配列に分割する
		if(((String)svcCd).indexOf(",") > 0)
		{
			String[] svcCdList;
			//引数が複数だった場合
			svcCdList = ((String)svcCd).split(",");
			for(int count = 0; count < svcCdList.length; count++)
			{
				String checkSvcCd = svcCdList[count];
				// サービスコードが一致する場合、同一サービスと判定
				if (checkSvcCd.equals(outETMsg.getString(KK0081ETMsg.SVC_CD)))
				{
					return true;
				}
			}
		}
		else
		{
			//引数がひとつだった場合
			if (svcCd.equals(outETMsg.getString(KK0081ETMsg.SVC_CD)))
			{
				return true;
			}
			
		}
		//2015-06-08 中原 ANK-2480-00-00 新電力対応 MOD END
		// 上記以外の場合、他のサービスと判定
		return false;
	}
	//ANK-3366-00-00 ADD START
	/**
	 * <p>
	 * 課金開始日設定を算出する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 課金開始日
	 */
	public String getChrgStaYmd(CAANMsg inCBSMsg, CAANMsg retCurrent, AgentDispatchContext inContext)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "call:JKKejbKK0081Edit#getChrgStaYmd");
		
		String chrgStaYmd = "";

		// お客様のカレント検索を行う
		CAANMsg outETMsg = new JCKejbCK0011DBABase().getCK0011Current((String)retCurrent.getObject(CK0011ETMsg.SYSID), JKKModelCommon.getOpeDate(inCBSMsg));

		// 検索結果が0件の場合
		if (null == outETMsg || (null == outETMsg.getString(CK0011ETMsg.ORSJGS_CD) || "".equals(outETMsg.getString(CK0011ETMsg.ORSJGS_CD))))
		{
			return chrgStaYmd;
		}

		HashMap<String, Object> hiChrgJdgMap = new HashMap<String, Object>();
		// 解約種別フラグ
		hiChrgJdgMap.put("dslSbtFlg", "1");		// サービス契約解約
		// サービス契約サービス利用開始日
		hiChrgJdgMap.put("svcKeiUseStaYmd", retCurrent.getString(KK0081ETMsg.SVC_STA_YMD));
		// サービス契約サービス利用終了日
		hiChrgJdgMap.put("svcKeiUseEndYmd", JKKModelCommon.getOpeDate(inCBSMsg));
		// サービス契約サービス課金開始日
		hiChrgJdgMap.put("svcKeiChrgStaYmd", retCurrent.getString(KK0081ETMsg.SVC_CHRG_STAYMD));
		// 非課金判定処理(eo光卸用)実行
		JKKHiChrgJdgUtil.jdgHiChrgOrs(hiChrgJdgMap);

		chrgStaYmd = (String)hiChrgJdgMap.get("svcChrgStaYmd");

		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "end:JKKejbKK0081Edit#getChrgStaYmd");

		return chrgStaYmd;
	}
	//ANK-3366-00-00 ADD END
}
