/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKBandWidthOverLmtDtTst
*	ソースファイル名	：JBSbatKKBandWidthOverLmtDtTst.java
*	作成者				：富士通　
*	作成日				：2012年06月11日
*＜機能概要＞
*　帯域制限上限通信量超過通知データ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/11   富士通		新規作成
*	v5.00.00	2013/08/06   FJ)井熊	【KT1-2013-0000794】前月帯域制限されている場合に連続して帯域制限するように修正
* 	v13.00.00	2015/04/22   FJ)藤田	【OM-2015-0000836】月初日は帯域制限を実施しない
*	v71.00.00	2024/02/06   GDC)F.Domingo 【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
* 	v70.00.00	2024/02/16   FJ)上島	【ANK-4552-00-00】特定利用者への帯域制限抑止対応
*   v71.00.01   2024/07/29   FJ)張      【ANK-4468-00-01】eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatWorkParamKanriUtil;
import eo.business.common.JZMBatConst;
import eo.business.util.file.JBSbatKKIFM206;
import eo.business.util.file.JBSbatKKIFM207;
import eo.business.util.table.JBSbatAC_M_TSRYO_CKTCSETE;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_T_FTTH_TSRCK_JSK;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_SEIKY_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKBandWidthOverLmtDtTst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";

	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(通信量超過通知設定)*/
	private static final String D_TBL_NAME_AC_M_TSRYO_CKTCSETE = "AC_M_TSRYO_CKTCSETE";

	/** テーブル(ＦＴＴＨ通信量超過実績)*/
	private static final String D_TBL_NAME_KK_T_FTTH_TSRCK_JSK = "KK_T_FTTH_TSRCK_JSK";
	
	//ANK-4552-00-00 ADD START
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	//ANK-4552-00-00 ADD END
	// ANK-4468-00-00 ADD START
	/**連絡先のテーブルアクセスクラス) */
	private static final String D_TBL_NAME_CK_T_RRKS = "CK_T_RRKS";
	// ANK-4468-00-00 ADD END
	
	/** SQL定義キー(KK_SELECT_062)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_062 = "KK_SELECT_062";

	/** SQL定義キー(KK_SELECT_024)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_024 = "KK_SELECT_024";

	/** SQL定義キー(KK_SELECT_023)*/
	private static final String KK_T_SEIKY_KEI_KK_SELECT_023 = "KK_SELECT_023";

	/** SQL定義キー(KK_SELECT_027)*/
	private static final String CK_T_CUST_KK_SELECT_027 = "KK_SELECT_027";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String AC_M_TSRYO_CKTCSETE_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KK_T_FTTH_TSRCK_JSK_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_005)*/
	private static final String KK_T_FTTH_TSRCK_JSK_KK_SELECT_005 = "KK_SELECT_005";
	
	// ANK-4468-00-00 ADD START
	/** SQL定義キー(KK_SELECT_012)*/
	private static final String CK_T_RRKS_KK_SELECT_012 = "KK_SELECT_012";
	// ANK-4468-00-00 ADD END

	//ANK-4552-00-00 ADD START
	/** SQL定義キー(KK_SELECT_002)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_019 = "KK_SELECT_019";

	//ANK-4552-00-00 ADD END
	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(通信量超過通知設定)*/
	private JBSbatSQLAccess db_AC_M_TSRYO_CKTCSETE = null;

	/** テーブルアクセスクラス(ＦＴＴＨ通信量超過実績)*/
	private JBSbatSQLAccess db_KK_T_FTTH_TSRCK_JSK = null;
	//ANK-4552-00-00 ADD START

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	//ANK-4552-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	// ANK-4468-00-00 ADD START
	/** Mail (Contact) のテーブルアクセスクラス*/
	private JBSbatSQLAccess db_CK_T_RRKS = null;
	// ANK-4468-00-00 ADD END
	
	/** 送信区分 予告通知 */
	private static final String SEND_KBN_YOKOKU = "1";
	
	/** 送信区分 通知日のみ引継 */
	private static final String SEND_KBN_HIKITSUGI = "0";
	
	/** 送信区分 実施通知 */
	private static final String SEND_KBN_JISHI = "2";
	
	/** 業務パラメータ管理コード 予告通知 */
	private static final String GYM_KNR_PRM_CD_YKK = "KK_TIK_LMT_YKK_TCH";
	
	/** 業務パラメータ管理コード 実施通知 */
	private static final String GYM_KNR_PRM_CD_JSSI = "KK_TIK_LMT_JSSI_TCH";
	
	/** 上限超過通知種別コード 2 */
	private static final String UPPL_CHOK_TCH_SBT_CD_2 = "2"; 
	
	//ANK-4552-00-00 ADD START
	/** 帯域制御抑止実施フラグ 抑止実施 */
	private static final String TIK_CTL_YOKSI_JSSI_FLG_1 = "1"; 

	//ANK-4552-00-00 ADD END
	/** 運用日 日 */
	private String opeDateDay = null;

	//ANK-4552-00-00 ADD START
	/** 帯域制御抑止対象のお客様スキーム事業者コード */
	private final String T_C_Y_SCM_JGS_CD = "T_C_Y_SCM_JGS_CD";

	//ANK-4552-00-00 ADD END
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_AC_M_TSRYO_CKTCSETE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_M_TSRYO_CKTCSETE);
		db_KK_T_FTTH_TSRCK_JSK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_FTTH_TSRCK_JSK);
		//ANK-4552-00-00 ADD START
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		//ANK-4552-00-00 ADD END
		// ANK-4468-00-00 ADD START
		db_CK_T_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_RRKS);
		// ANK-4468-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 運用日の日付のみを設定する
		opeDateDay = super.opeDate.substring(6, 8);
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// 入力電文からサービス契約番号、SYSIDを取得する
		String svcKeiNo = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
		String sysId = inMap.getString(JBSbatKK_T_SVC_KEI.SYSID);
		//ANK-4552-00-00 ADD START
		String pcrsCd = inMap.getString(JBSbatKK_T_FTTH_TSRCK_JSK.PCRS_CD);
		String pplanCd = inMap.getString(JBSbatKK_T_FTTH_TSRCK_JSK.PPLAN_CD);
		String nengetsu = inMap.getString(JBSbatKK_T_FTTH_TSRCK_JSK.FTTH_TUSHIN_USE_YM);
		//ANK-4552-00-00 ADD END
		
		// 直近で超過が存在するため、送信区分に予告通知を設定する
		String sendKbn = SEND_KBN_YOKOKU;
		
		// 2ヶ月連続で超過しているサービス契約番号を検索する
		// 検索結果が存在すれば、送信区分に通知のみ引継ぎを設定する
		Object[] setParamFtth2nd = {super.opeDate, "-1", svcKeiNo};
		List<JBSbatCommonDBInterface> result2ndList = executeKK_T_FTTH_TSRCK_JSK_KK_SELECT_002(setParamFtth2nd);
		
		if (null != result2ndList && !result2ndList.isEmpty())
		{
			sendKbn = SEND_KBN_HIKITSUGI;
		}
		
		// 運用日が月初でなければ
		// 3ヶ月連続で超過しているサービス契約番号を検索する
		// OM-2015-0000836 月初日は帯域制限を実施しない 2015/04/22 藤田 MOD START
//		if (!"01".equals(opeDateDay) && SEND_KBN_HIKITSUGI.equals(sendKbn))
		if (SEND_KBN_HIKITSUGI.equals(sendKbn))
		// OM-2015-0000836 月初日は帯域制限を実施しない 2015/04/22 藤田 MOD END
		{
			Object[] setParamFtth3rd = {super.opeDate, "-2", svcKeiNo};
			List<JBSbatCommonDBInterface> result3rdList = executeKK_T_FTTH_TSRCK_JSK_KK_SELECT_002(setParamFtth3rd);
			
			// 検索結果が存在すれば、送信区分に実施通知を設定する
			if(null != result3rdList && !result3rdList.isEmpty())
			{
				sendKbn = SEND_KBN_JISHI;
			}
		}
		
		// ◆ KT1-2013-0000794 add ◆
		// 前月帯域制限が実施されているか検索する
		// 検索結果が存在すれば、送信区分に実施通知を設定する
		JBSbatCommonDBInterface setParamFtth4th = new JBSbatCommonDBInterface();
		setParamFtth4th.setValue(super.opeDate);
		setParamFtth4th.setValue(svcKeiNo);
		this.db_KK_T_FTTH_TSRCK_JSK.selectBySqlDefine(setParamFtth4th, KK_T_FTTH_TSRCK_JSK_KK_SELECT_005);
		JBSbatCommonDBInterface result = this.db_KK_T_FTTH_TSRCK_JSK.selectNext();
		if(result != null)
		{
			// 先月帯域制限実施されているので今月も実施する
			sendKbn = SEND_KBN_JISHI;
		}
		// ◆ KT1-2013-0000794 end ◆
		
		// オプションサービス契約<ISP>を検索し、メールアドレスを取得する
		Object[] setParamOpSvcKeiIsp = {svcKeiNo, super.opeDate};
		List<JBSbatCommonDBInterface> mlList = executeKK_T_OP_SVC_KEI_KK_SELECT_062(setParamOpSvcKeiIsp);
		
		// ANK-4468-00-00 ADD START
		//連絡先を検索し、メールアドレスを取得する。
		// ANK-4468-00-01 MOD START
		//Object[] setParamListContact = {super.opeDate, svcKeiNo};
		Object[] setParamListContact = {super.opeDate, svcKeiNo, super.opeDate};
		// ANK-4468-00-01 MOD END
		List<JBSbatCommonDBInterface> mlListContact = executeCK_T_RRKS_KK_SELECT_012(setParamListContact);
		// ANK-4468-00-00 ADD END
		// 契約者情報を取得する
		Object[] setParamCust = {sysId, super.opeDate};
		executeCK_T_CUST_KK_SELECT_027(setParamCust);
		JBSbatCommonDBInterface custInfo = db_CK_T_CUST.selectNext();
		if (null == custInfo)
		{
			throw new JBSbatBusinessError();
		}
		//ANK-4552-00-00 ADD START
		//お客様のスキーム事業者コードを業務パラメータ管理の値と比較
		String scmJgsCd = custInfo.getString(JBSbatCK_T_CUST.SCM_JGS_CD);
		
		//業務パラメータの取得
		List<String> worktTikLitYksScmList = getTikLitYksScmList();
		
		//取得した業務パラメータのリストにお客様のスキーム事業者コードが含まれている場合は抑制対象とする
		if(worktTikLitYksScmList != null 
				&& isTikLitYks(scmJgsCd, worktTikLitYksScmList)) {
			
			//抑制対象のＦＴＴＨ通信量超過実績に帯域制御抑止実施フラグをたてる
			// 設定値のマップを作成します
			JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
			setMap.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.TIK_CTL_YOKSI_JSSI_FLG, TIK_CTL_YOKSI_JSSI_FLG_1);
			// 条件のマップを作成します
			JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
			// サービス契約番号
			whereMap.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.SVC_KEI_NO, svcKeiNo);
			// 料金コースコード
			whereMap.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.PCRS_CD, pcrsCd);
			// 料金プランコード
			whereMap.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.PPLAN_CD, pplanCd);
			// FTTH通信利用年月
			whereMap.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.FTTH_TUSHIN_USE_YM, nengetsu);
			
			// --------------------------------------------------------------------------------
			// FTTH通信量超過実績スキーマをロックする
			// --------------------------------------------------------------------------------
			lockFtthTsrckJsk(svcKeiNo, pcrsCd, pplanCd, nengetsu);
			
			// --------------------------------------------------------------------------------
			// FTTH通信量超過実績スキーマを更新する
			// --------------------------------------------------------------------------------
			int cnt = executeKK_T_FTTH_TSRCK_JSK_PKUPDATE(setMap, whereMap);
			
			if (1 > cnt)
			{
				throw new JBSbatBusinessError();
			}
			
			//制限抑止対象のため後続処理へ渡すファイルへ出力しない(空の電文を返す)
			return new JBSbatOutputItem();
			
		}
		//ANK-4552-00-00 ADD END
		
		// サービス契約回線内訳情報を取得する
		Object[] setParamSvcKeiKsUw = {svcKeiNo};
		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_024(setParamSvcKeiKsUw);
		JBSbatCommonDBInterface svcKeiKsUwInfo = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		if (null == svcKeiKsUwInfo)
		{
			throw new JBSbatBusinessError();
		}
		
		// 帯域制限通知通信量を取得する
		Object[] setParamTsryo = {svcKeiNo, super.opeDate, "1", super.opeDate, super.opeDate, super.opeDate, UPPL_CHOK_TCH_SBT_CD_2};
		executeAC_M_TSRYO_CKTCSETE_KK_SELECT_001(setParamTsryo);
		JBSbatCommonDBInterface tsryoInfo = db_AC_M_TSRYO_CKTCSETE.selectNext();
		if (null == tsryoInfo)
		{
			throw new JBSbatBusinessError();
		}
		BigDecimal tsryo = null;
		tsryo = tsryoInfo.getBigDecimal(JBSbatAC_M_TSRYO_CKTCSETE.TCHI_TG_TSRYO).divide(
				new BigDecimal("1000000"), BigDecimal.ROUND_HALF_DOWN);
		if (null == tsryo)
		{
			throw new JBSbatBusinessError();
		}
		
		String mlad = null;
		JBSbatCommonDBInterface opSvcKeiIspInfo = null;
		//ANK-4468-00-00 ADD START
		JBSbatCommonDBInterface opSvcKeiIspInfoFromContact = null;
		//ANK-4468-00-00 ADD END
		
		// メールアドレスが取得できた場合、メール情報を作成する
		//ANK-4468-00-00 MOD START
		//if (!mlList.isEmpty())
		if (!mlList.isEmpty() || !mlListContact.isEmpty())
		{//ANK-4468-00-00 MOD END
			// ANK-4468-00-00 ADD START
			// データ追加済メールアドレスハッシュマップ初期化
			HashSet<String> addedMail = new HashSet<String>();
			// ANK-4468-00-00 ADD END
			for (int i = 0; i < mlList.size(); i++)
			{
				opSvcKeiIspInfo = mlList.get(i);
				mlad = opSvcKeiIspInfo.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD);
				
				// メール情報を作成する
				JBSbatServiceInterfaceMap kkifm207Map = new JBSbatServiceInterfaceMap();
				
				// サービス契約番号
				kkifm207Map.setString(JBSbatKKIFM207.SVC_KEI_NO, svcKeiNo);
				// SYSID
				kkifm207Map.setString(JBSbatKKIFM207.SYSID, sysId);
				// 契約者氏名
				kkifm207Map.setString(JBSbatKKIFM207.KEISHA_NM, custInfo.getString(JBSbatCK_T_CUST.CUST_NM));
				// メール宛先
				kkifm207Map.setString(JBSbatKKIFM207.MLAD, mlad);
				// 帯域制限通知通信量
				kkifm207Map.setString(JBSbatKKIFM207.TIKI_SGN_TCHI_TSHIRYO, tsryo.toString());
				// 送信区分
				kkifm207Map.setString(JBSbatKKIFM207.SEND_KBN, sendKbn);
				
				// 出力フラグを設定
				kkifm207Map.setOutFlg(true);
				
				// 出力共通電文入出力インターフェイスを設定する
				outputBean.addOutMapList_2(kkifm207Map);
				// ANK-4468-00-00 ADD START
				// ハッシュセットにデータ追加済メールアドレスを追加
				addedMail.add(mlad);
				// ANK-4468-00-00 ADD END
			}
			// ANK-4468-00-00 ADD START
			for (int i = 0; i < mlListContact.size(); i++)
			{
				opSvcKeiIspInfoFromContact = mlListContact.get(i);
				mlad = opSvcKeiIspInfoFromContact.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD);
				// 連絡先.メールアドレスが@で取得したオプションサービス契約_ISP.メールアドレスと同一の場合、支払変更登録完了お知らせメール向けリストに出力しない
				if (!addedMail.contains(mlad)  && !"".equals(mlad) && mlad != null)
				{
					// メール情報を作成する
					JBSbatServiceInterfaceMap kkifm207Map = new JBSbatServiceInterfaceMap();
					
					// サービス契約番号
					kkifm207Map.setString(JBSbatKKIFM207.SVC_KEI_NO, svcKeiNo);
					// SYSID
					kkifm207Map.setString(JBSbatKKIFM207.SYSID, sysId);
					// 契約者氏名
					kkifm207Map.setString(JBSbatKKIFM207.KEISHA_NM, custInfo.getString(JBSbatCK_T_CUST.CUST_NM));
					// メール宛先
					kkifm207Map.setString(JBSbatKKIFM207.MLAD, mlad);
					// 帯域制限通知通信量
					kkifm207Map.setString(JBSbatKKIFM207.TIKI_SGN_TCHI_TSHIRYO, tsryo.toString());
					// 送信区分
					kkifm207Map.setString(JBSbatKKIFM207.SEND_KBN, sendKbn);
					
					// 出力フラグを設定
					kkifm207Map.setOutFlg(true);
					
					// 出力共通電文入出力インターフェイスを設定する
					outputBean.addOutMapList_2(kkifm207Map);
				}
			}
			// ANK-4468-00-00 ADD END
		}
		// メールアドレスが取得できない場合、ハガキ情報を作成する
		else
		{
			// 送信区分が予告通知もしくは実施通知の場合
			// 業務パラメータ管理から通信量上限超過通知メッセージを取得する
			
			String gymPrmCd = null;
			String msg = null;
			String tsryoMsg = null;
			if (SEND_KBN_YOKOKU.equals(sendKbn) || SEND_KBN_JISHI.equals(sendKbn))
			{
				if (SEND_KBN_YOKOKU.equals(sendKbn))
				{
					gymPrmCd = GYM_KNR_PRM_CD_YKK;
				}
				else if (SEND_KBN_JISHI.equals(sendKbn))
				{
					gymPrmCd = GYM_KNR_PRM_CD_JSSI;
				}
				
				if (null != tsryoInfo.getBigDecimal(JBSbatAC_M_TSRYO_CKTCSETE.TCHI_TG_TSRYO))
				{
					tsryoMsg = new StringBuilder().append(tsryo.toString()).toString();
				}
				else
				{
					tsryoMsg = "";
				}
				
				msg = JKKBatWorkParamKanriUtil.getWorkParamSetteValue(commonItem, gymPrmCd);
				// メッセージを置換する
				// 契約者氏名
				msg = msg.replaceAll("%1%", custInfo.getString(JBSbatCK_T_CUST.CUST_NM));
				// 運用日 年
				msg = msg.replaceAll("%2%", super.opeDate.substring(0, 4));
				// 運用日 月
				msg = msg.replaceAll("%3%", super.opeDate.substring(4, 6));
				// 運用日 日
				msg = msg.replaceAll("%4%", super.opeDate.substring(6, 8));
				// 帯域制限通知通信量
				msg = msg.replaceAll("%5%", tsryoMsg);
				
			}
			
			// 請求契約情報を取得する
			String[] paramSetSeikyKei = {svcKeiNo, super.opeDate};
			executeKK_T_SEIKY_KEI_KK_SELECT_023(paramSetSeikyKei);
			JBSbatCommonDBInterface seikyKeiInfo = db_KK_T_SEIKY_KEI.selectNext();
			if (null == seikyKeiInfo)
			{
				throw new JBSbatBusinessError();
			}
			
			// ハガキ情報を作成する
			JBSbatServiceInterfaceMap kkifm206Map = new JBSbatServiceInterfaceMap();
			
			// サービス契約番号
			kkifm206Map.setString(JBSbatKKIFM206.SVC_KEI_NO, svcKeiNo);
			// SYSID
			kkifm206Map.setString(JBSbatKKIFM206.SYSID, sysId);
			// 請求契約番号
			kkifm206Map.setString(JBSbatKKIFM206.SEIKY_KEI_NO, seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO));
			// 契約者氏名
			kkifm206Map.setString(JBSbatKKIFM206.KEISHA_NM, custInfo.getString(JBSbatCK_T_CUST.CUST_NM));
			// 契約者郵便番号
			kkifm206Map.setString(JBSbatKKIFM206.KEISHA_PCD, custInfo.getString(JBSbatCK_T_CUST.KEISHA_PCD));
			// 契約者住所
			String keiShaAdd = uniteAddress(
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM), 
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM), 
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM), 
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM), 
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM), 
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_ADRRM), 
					custInfo.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO));
			kkifm206Map.setString(JBSbatKKIFM206.KEISHA_ADD, keiShaAdd);
			
			// 請求書送付先氏名
			kkifm206Map.setString(JBSbatKKIFM206.SEIKY_SOHUS_NM, seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_NM));
			// 請求書送付先郵便番号
			kkifm206Map.setString(JBSbatKKIFM206.SEIKY_SOHUS_PCD, seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_PCD));
			// 請求書送付先住所
			String sohusAdd = uniteAddress(
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_STATE_NM), 
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_CITY_NM), 
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_OAZTSU_NM),
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_AZCHO_NM),
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRTTM),
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRRM),
					seikyKeiInfo.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_BNCHIGO));
			kkifm206Map.setString(JBSbatKKIFM206.SEIKY_SOHUS_ADD, sohusAdd);
			
			// 利用場所郵便番号
			kkifm206Map.setString(JBSbatKKIFM206.RIYO_BSH_PCD, svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD));
			// 利用場所住所
			String riyoAdd = uniteAddress(
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM),
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM),
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM),
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM),
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM),
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM),
					svcKeiKsUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO));
			kkifm206Map.setString(JBSbatKKIFM206.RIYO_BSH_ADD, riyoAdd);
			
			// 通信量上限超過通知メッセージ
			kkifm206Map.setString(JBSbatKKIFM206.TCHI_MSG, msg);
			
			// 出力フラグを設定
			kkifm206Map.setOutFlg(true);
			
			// 出力共通電文入出力インターフェイスを設定する
			outputBean.addOutMapList(kkifm206Map);

		}
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_KK_T_SEIKY_KEI.close();
		db_CK_T_CUST.close();
		db_AC_M_TSRYO_CKTCSETE.close();
		db_KK_T_FTTH_TSRCK_JSK.close();
		//ANK-4552-00-00 ADD START
		db_ZM_M_WORK_PARAM_KNRI.close();
		//ANK-4552-00-00 ADD END
		// ANK-4468-00-00 ADD START
		db_CK_T_RRKS.close();
		// ANK-4468-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_062)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return オプションサービス契約情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private List<JBSbatCommonDBInterface> executeKK_T_OP_SVC_KEI_KK_SELECT_062(Object[] param) throws Exception
	{
		List<JBSbatCommonDBInterface> list = new ArrayList<JBSbatCommonDBInterface>(2);
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_062);
		
		JBSbatCommonDBInterface resultMap = db_KK_T_OP_SVC_KEI.selectNext();
		
		while (null != resultMap) 
		{
			list.add(resultMap);
			resultMap = db_KK_T_OP_SVC_KEI.selectNext();
		}
		
		return list;
	}

	// ANK-4468-00-00 ADD START
	/**
	 * SQLKEY(KK_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return オプションサービス契約情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private List<JBSbatCommonDBInterface> executeCK_T_RRKS_KK_SELECT_012(Object[] param) throws Exception
	{
		List<JBSbatCommonDBInterface> list = new ArrayList<JBSbatCommonDBInterface>(2);
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// ANK-4468-00-01 ADD START
		paramList.setValue(param[2].toString());
		// ANK-4468-00-01 ADD END
		
		// DBアクセスを実行します
		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_KK_SELECT_012);
		
		JBSbatCommonDBInterface resultMap = db_CK_T_RRKS.selectNext();
		
		while (null != resultMap) 
		{
			list.add(resultMap);
			resultMap = db_CK_T_RRKS.selectNext();
		}
		
		return list;
	}
	// ANK-4468-00-00 ADD END

	/**
	 * SQLKEY(KK_SELECT_024)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_024(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_024);
	}

	/**
	 * SQLKEY(KK_SELECT_023)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_KEI_KK_SELECT_023(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_023);
	}

	/**
	 * SQLKEY(KK_SELECT_027)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ＳＹＳＩＤ
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_027(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_027);
	}

	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 *		 	通信量超過通知設定番号
	 *		 	予約適用年月日
	 *		 	通信量超過通知設定適用開始年月日
	 *		 	通信量超過通知設定適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_M_TSRYO_CKTCSETE_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());

		// DBアクセスを実行します
		db_AC_M_TSRYO_CKTCSETE.selectBySqlDefine(paramList, AC_M_TSRYO_CKTCSETE_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	運用日
	 *		 	除算する月数
	 *		 	サービス契約番号
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private List<JBSbatCommonDBInterface> executeKK_T_FTTH_TSRCK_JSK_KK_SELECT_002(Object[] param) throws Exception
	{
		List<JBSbatCommonDBInterface> list = new ArrayList<JBSbatCommonDBInterface>(4);
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_FTTH_TSRCK_JSK.selectBySqlDefine(paramList, KK_T_FTTH_TSRCK_JSK_KK_SELECT_002);
		
		JBSbatCommonDBInterface resultMap = db_KK_T_FTTH_TSRCK_JSK.selectNext();
		
		while(null != resultMap) 
		{
			list.add(resultMap);
			resultMap = db_KK_T_FTTH_TSRCK_JSK.selectNext();
		}
		
		return list;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 渡された文字列が空か判定し返却します
	 * 
	 * @param value 文字列
	 * @return 空判定された文字列
	 */
	private String checkBlank(String value)
	{
		String returnValue = "";
		
		if (null != value && !"".equals(value))
		{
			returnValue = value;
		}
		
		return returnValue;
	}
	
	/**
	 * 分割された住所を連結し返却します
	 * 
	 * @param stateNm 都道府県名
	 * @param cityNm 市町村名
	 * @param oaztsu 大字通称名
	 * @param azchoNm 字丁目名
	 * @param adrTtm 住所補記・建物名
	 * @param adrRm 住所補記・部屋番号
	 * @param bnchigo 番地号
	 * @return 連結された住所
	 */
	private String uniteAddress(
			String stateNm, String cityNm, String oaztsu, String azchoNm, 
			String adrTtm, String adrRm, String bnchigo)
	{
		
		StringBuilder str = new StringBuilder();
		str.append(checkBlank(stateNm));
		str.append(checkBlank(cityNm));
		str.append(checkBlank(oaztsu));
		str.append(checkBlank(azchoNm));
		str.append(checkBlank(bnchigo));
		str.append(checkBlank(adrTtm));
		str.append(checkBlank(adrRm));
		
		return str.toString();
		
	}
	//ANK-4552-00-00 ADD START
	
	/**
	 * 業務パラメータ管理より帯域制御抑止対象の
	 * お客様スキーム事業者コードを取得します。
	 * <br>
	 * @return 取得したコードリスト　
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private  List<String> getTikLitYksScmList() throws Exception
	{
		
		String workScmJgsCd = null;
		JBSbatCommonDBInterface result = null;
		List<String> resultList = null;
		
		// バインド変数設定
		String[] param = new String[3];
		param[0] = T_C_Y_SCM_JGS_CD;
		param[1] = super.opeDate;
		param[2] = super.opeDate;
		// 帯域制御抑止対象のお客様スキーム事業者コードを検索実行
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_019(param);
		result = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		if (result != null)
		{
			if( null != result.getValue(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE)){
				workScmJgsCd = result.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
				resultList = Arrays.asList(workScmJgsCd.split(JZMBatConst.CONMA));
			}else{
				return null;
			}
		}
		result = null;
		
		return resultList;
	}
	
	/**
	 * SQLKEY(KK_SELECT_019)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータID
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_019(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_019);
	}
	
	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_FTTH_TSRCK_JSK_PKUPDATE(
			JBSbatCommonDBInterface setMap, JBSbatCommonDBInterface whereMap) throws Exception
	{
		// DBアクセスを実行します
		return db_KK_T_FTTH_TSRCK_JSK.updateByPrimaryKeys(whereMap, setMap);
		
	}
	
	/**
	 * FTTH通信量実績をロックします
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param nengetsu FTTH通信利用年月
	 * @throws Exception
	 */
	private void lockFtthTsrckJsk(String svcKeiNo, String pcrsCd, String pplanCd, String nengetsu) throws Exception
	{
		JBSbatCommonDBInterface lockParam = new JBSbatCommonDBInterface();
		// サービス契約番号
		lockParam.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.SVC_KEI_NO, svcKeiNo);
		// 料金コースコード
		lockParam.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.PCRS_CD, pcrsCd);
		// 料金プランコード
		lockParam.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.PPLAN_CD, pplanCd);
		// FTTH通信利用年月
		lockParam.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.PPLAN_CD, pplanCd);
		lockParam.setValue(JBSbatKK_T_FTTH_TSRCK_JSK.FTTH_TUSHIN_USE_YM, nengetsu);
		
		executeKK_T_FTTH_TSRCK_JSK_PKSELECT_FORUPDATE(lockParam);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_FTTH_TSRCK_JSK_PKSELECT_FORUPDATE(JBSbatCommonDBInterface whereParam) throws Exception
	{
		// DBアクセスを実行します
		return db_KK_T_FTTH_TSRCK_JSK.selectByPrimaryKeysForUpdate(whereParam);
	}

	/**
	 * 業務パラメータで指定された帯域制限の抑制対象かを判定します。<br>
	 * @param custScmParam お客様のスキームコード(スキーム事業者コード)
	 * @param workParam 業務パラメータで指定されたスキームコード(スキーム事業者コード)
	 * @return true/false 結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isTikLitYks(String custScmParam, List<String> workParam) throws Exception
	{
		boolean ret = workParam.contains(custScmParam);
		return ret;
	}
	//ANK-4552-00-00 ADD END
}
