/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSBatKKEoTvAutoShoninJdg
*	ソースファイル名	：JBSBatKKEoTvAutoShoninJdg.java
*	作成者				：富士通　
*	作成日				：2011年08月02日
*＜機能概要＞
*　ｅｏＴＶ機器設置自動承認判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/02	FJ）庭山	新規作成
*	v2.00.00	2012/04/12  FJ）藤本	【TAI-2012-0000027】排他制御対応
*	v2.01.00	2012/05/21  FJ）藤本	【ST2-2012-0000959】障害対応
*	v6.00.00	2014/01/13  FJ) 団		【OM-2013-0005222】障害対応
*	v39.00.00	2018/11/14  FJ) 吉田	【ST-2018-0000047】STB自動承認不備
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM091;
import eo.business.util.table.JBSbatZM_M_TAKNKIKI_MODEL;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.util.JKKStringUtil;
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;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKEoTvAutoShoninJdg extends JBSbatBusinessService
{
	/**
	 * 宅内機器異動コード（STB追加）
	 */
	private static final String STB_CD_ADD = "01";

	/**
	 * 宅内機器異動コード（STB交換）
	 */
	private static final String STB_CD_KOKAN = "02";

	/**
	 * 宅内機器異動コード（STB一部撤去）
	 */
	private static final String STB_CD_TEKKYO = "03";

	/**
	 * 宅内機器異動コード（STB移動）
	 */
	private static final String STB_CD_MV = "04";

	/**
	 * 宅内機器異動コード（STB移動キャンセル）
	 */
	private static final String STB_CD_MV_CNCL = "05";

	/**
	 * 宅内機器異動コード（STB異動なし）
	 */
	private static final String STB_CD_IDO = "09";

	// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
	/** テーブル(宅内機器型式)*/
	private static final String D_TBL_NAME_ZM_M_TAKNKIKI_MODEL = "ZM_M_TAKNKIKI_MODEL";

	/** SQL定義キー(KK_SELECT_008)*/
	private static final String ZM_M_TAKNKIKI_MODEL_KK_SELECT_008 = "KK_SELECT_008";

	/** テーブルアクセスクラス(宅内機器型式)*/
	private JBSbatSQLAccess db_ZM_M_TAKNKIKI_MODEL = null;
	
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** SQL定義キー(KK_SELECT_024)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_024 = "KK_SELECT_024";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	
	// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲
	
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
		db_ZM_M_TAKNKIKI_MODEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_TAKNKIKI_MODEL);
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");

		JBSbatOutputItem out_bean = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		boolean auto_flg = false;
		String jseki_ido_cd = inMap.getString(JBSbatKKIFM091.JSEKI_TAKNKIKI_IDO_CD);

		// 実績宅内機器異動コード = 「STB追加」の場合
		if (STB_CD_ADD.equals(jseki_ido_cd))
		{
			auto_flg = isAutoShoninAdd(inMap);
		}
		// 実績宅内機器異動コード = 「STB交換」の場合
		else if (STB_CD_KOKAN.equals(jseki_ido_cd))
		{
			auto_flg = isAutoShoninKokan(inMap);
		}
		// 実績宅内機器異動コード = 「STB一部撤去」の場合
		else if (STB_CD_TEKKYO.equals(jseki_ido_cd))
		{
			auto_flg = isAutoShoninTekkyo(inMap);
		}
		// 実績宅内機器異動コード = 「STB移動」の場合
		else if (STB_CD_MV.equals(jseki_ido_cd))
		{
			auto_flg = isAutoShoninMv(inMap);
		}
		// 実績宅内機器異動コード = 「STB移動キャンセル」
		else if (STB_CD_MV_CNCL.equals(jseki_ido_cd))
		{
			auto_flg = isAutoShoninCncl(inMap);
		}

		// 自動承認 = trueの場合、ファイル出力します。
		if (auto_flg)
		{
			out_map.setString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_S)));
			out_map.setString(JBSbatKKIFM091.GENE_ADD_DTM_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.GENE_ADD_DTM_S)));
			out_map.setString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_B)));
			out_map.setString(JBSbatKKIFM091.GENE_ADD_DTM_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.GENE_ADD_DTM_B)));
			out_map.setString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_C)));
			out_map.setString(JBSbatKKIFM091.GENE_ADD_DTM_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.GENE_ADD_DTM_C)));
			out_map.setString(JBSbatKKIFM091.SVC_KEI_NO_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.SVC_KEI_NO_S)));
			out_map.setString(JBSbatKKIFM091.LAST_UPD_DTM_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.LAST_UPD_DTM_S)));
			out_map.setString(JBSbatKKIFM091.SVC_KEI_NO_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.SVC_KEI_NO_B)));
			out_map.setString(JBSbatKKIFM091.LAST_UPD_DTM_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.LAST_UPD_DTM_B)));
			out_map.setString(JBSbatKKIFM091.SVC_KEI_NO_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.SVC_KEI_NO_C)));
			out_map.setString(JBSbatKKIFM091.LAST_UPD_DTM_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.LAST_UPD_DTM_C)));
			
			out_map.setOutFlg(true);
			out_bean.addOutMapList(out_map);
		}

		super.logPrint.printDebugLog("execute_END");

		return out_bean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
		db_ZM_M_TAKNKIKI_MODEL.close();
		db_ZM_M_WORK_PARAM_KNRI.close();
		// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 実績宅内機器異動コードが「STB追加」時、自動承認とするかチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.STBとB-CASとC-CASの機器が存在しているか判定します。<br>
	 *
	 * 2.予定宅内機器異動コードが「STB追加」か判定します。<br>
	 * 
	 * 3.実績STB-IDが存在し且つ 実績STB契約TVコースコード = 料金コースコードか判定します。<br>
	 * 
	 * 4.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isAutoShoninAdd(JBSbatServiceInterfaceMap in_map) throws Exception
	{
		// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
		// STBが4KSTBかどうかチェックする
		if (is4kStb(in_map)) {
			// 機器提供サービス契約番号Ｓ、機器提供サービス契約番号Ｃのチェック
			if (!isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_S)
					|| !isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_C))
				{
					return false;
				}
		}
		else
		{
		// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲
			// 機器提供サービス契約番号Ｓ、機器提供サービス契約番号Ｂ、機器提供サービス契約番号Ｃのチェック
			if (!isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_S)
				|| !isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_B)
				|| !isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_C))
			{
				return false;
			}
		// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
		}
		// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲

///////////////// 20140110 削除開始_OM-2013-0005222 ///////////////
//		// 予定宅内機器異動コードＳのチェック
//		if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_ADD))
//			/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードはSTBのみに設定されるため ++++++++++ */
////			|| !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_ADD)
////			|| !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_ADD))
//			/* ++++++++++ v2.01.00 修正終了 ++++++++++ */
//		{
//			return false;
//		}
///////////////// 20140110 削除終了_OM-2013-0005222 ///////////////
		
		// 実績STB-ID、実績STB契約TVコースコードのチェック
		if (!isJsekiStb(in_map))
		{
			return false;
		}

		return true;
	}

	/**
	 * 実績宅内機器異動コードが「STB交換」時、自動承認とするかチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.STBとC-CASの機器が存在しているか判定します。<br>
	 *
	 * 2.予定宅内機器異動コードが「STB交換」又は「STB一部撤去」又は「異動無し」か判定します。<br>
	 * 
	 * 3.実績STB-IDが存在し且つ 実績STB契約TVコースコード = 料金コースコードか判定します。<br>
	 * 
	 * 4.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isAutoShoninKokan(JBSbatServiceInterfaceMap in_map) throws Exception
	{
		// 機器提供サービス契約番号Ｓ、機器提供サービス契約番号Ｃのチェック
		if (!isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_S) || !isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_C))
		{
			return false;
		}

///////////////// 20140110 削除開始_OM-2013-0005222 ///////////////
//		// 予定宅内機器異動コードＳのチェック
//		if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_KOKAN)
//			&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_TEKKYO)
//			&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_IDO))
//		{
//			return false;
//		}
///////////////// 20140110 削除終了_OM-2013-0005222 ///////////////

		/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードは「STB」のみに設定されるため不要。 ++++++++++ */
//		// 予定宅内機器異動コードＣのチェック
//		if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_KOKAN)
//			&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_TEKKYO)
//			&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_IDO))
//		{
//			return false;
//		}
		/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードはSTBのみに設定されるため ++++++++++ */

		// 実績STB-ID、実績STB契約TVコースコードのチェック
		if (!isJsekiStb(in_map))
		{
			return false;
		}

		/* ++++++++++ v2.01.00 修正開始　「STB交換」時は「STB」「C-CAS」のみのため不要。 ++++++++++ */
//		// 機器提供サービス契約番号Ｂのチェック
//		if (isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_B))
//		{
//			// 予定宅内機器異動コードＢのチェック
//			if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_KOKAN)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_TEKKYO)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_IDO))
//			{
//				return false;
//			}
//		}
		/* ++++++++++ v2.01.00 修正終了 ++++++++++ */

		return true;
	}

	/**
	 * 実績宅内機器異動コードが「STB一部撤去」時、自動承認とするかチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.予定宅内機器異動コードが「STB交換」又は「STB一部撤去」又は「異動無し」か判定します。<br>
	 *
	 * 2.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isAutoShoninTekkyo(JBSbatServiceInterfaceMap in_map) throws Exception
	{

///////////////// 20140110 削除開始_OM-2013-0005222 ///////////////
//		// 機器提供サービス契約番号Ｓのチェック
//		if (isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_S))
//		{
//			
//			// 予定宅内機器異動コードＳのチェック
//			if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_KOKAN)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_TEKKYO)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_IDO))
//			{
//				return false;
//			}
//		}
///////////////// 20140110 削除終了_OM-2013-0005222 ///////////////

		/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードは「STB」のみに設定されるため不要。 ++++++++++ */
//		// 機器提供サービス契約番号Ｂのチェック
//		if (isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_B))
//		{
//			// 予定宅内機器異動コードＢのチェック
//			if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_KOKAN)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_TEKKYO)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_IDO))
//			{
//				return false;
//			}
//		}
//
//		// 機器提供サービス契約番号Ｃのチェック
//		if (isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_C))
//		{
//			// 予定宅内機器異動コードＣのチェック
//			if (!isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_KOKAN)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_TEKKYO)
//				&& !isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_IDO))
//			{
//				return false;
//			}
//		}
		/* ++++++++++ v2.01.00 修正終了 ++++++++++ */

		return true;
	}

	/**
	 * 実績宅内機器異動コードが「STB移動」時、自動承認とするかチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.予定宅内機器異動コードが「STB移動」か判定します。<br>
	 *
	 * 2.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isAutoShoninMv(JBSbatServiceInterfaceMap in_map) throws Exception
	{
		boolean rtn_value = true;

///////////////// 20140110 削除開始_OM-2013-0005222 ///////////////
//		// 機器提供サービス契約番号Ｓのチェック
//		if (isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_S))
//		{
//			// 予定宅内機器異動コードＳのチェック
//			rtn_value = isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, STB_CD_MV);
//		}
///////////////// 20140110 削除終了_OM-2013-0005222 ///////////////

		/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードは「STB」のみに設定されるため不要。 ++++++++++ */
//		// 機器提供サービス契約番号Ｂのチェック
//		if (rtn_value && isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_B))
//		{
//			// 予定宅内機器異動コードＢのチェック
//			rtn_value = isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, STB_CD_MV);
//		}
//
//		// 機器提供サービス契約番号Ｃのチェック
//		if (rtn_value && isKktkSvcKeiNo(in_map, JBSbatKKIFM091.KKTK_SVC_KEI_NO_C))
//		{
//			// 予定宅内機器異動コードＣのチェック
//			rtn_value = isIdoCd(in_map, JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, STB_CD_MV);
//		}
		/* ++++++++++ v2.01.00 修正終了 ++++++++++ */

		return rtn_value;
	}

	/**
	 * 実績宅内機器異動コードが「STB移動キャンセル」時、自動承認とするかチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.予定宅内機器異動コードが「STB移動」か判定します。<br>
	 *
	 * 2.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isAutoShoninCncl(JBSbatServiceInterfaceMap in_map) throws Exception
	{
		return isAutoShoninMv(in_map);
	}

	/**
	 * 機器提供サービス契約番号の有無チェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.機器提供サービス契約番号が存在するかチェックをします。<br>
	 *
	 * 2.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @param key　機器提供サービス契約番号のkey。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isKktkSvcKeiNo(JBSbatServiceInterfaceMap in_map, String key) throws Exception
	{
		String value = JBSbatStringUtil.Rtrim(in_map.getString(key));

		if (value == null || value.length() == 0)
		{
			return false;
		}

		return true;
	}

	/**
	 * 予定宅内機器異動コードのチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.予定宅内機器異動コード＝宅内機器異動コードかチェックをします。<br>
	 *
	 * 2.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @param key　予定宅内機器異動コードのkey。
	 * @param ido_cd　宅内機器異動コード。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isIdoCd(JBSbatServiceInterfaceMap in_map, String key, String ido_cd) throws Exception
	{
		String value = JBSbatStringUtil.Rtrim(in_map.getString(key));

		if (value == null || value.length() == 0)
		{
			return false;
		}

		if (!ido_cd.equals(value))
		{
			return false;
		}

		return true;
	}

	/**
	 * 実績STB-ID、実績STB契約TVコースコードのチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.実績STB-IDが存在するか判定します。<br>
	 *
	 * 2.条件を満たす場合はtrue、満たさない場合はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isJsekiStb(JBSbatServiceInterfaceMap in_map) throws Exception
	{
		String stb_id = JBSbatStringUtil.Rtrim(in_map.getString(JBSbatKKIFM091.JSEKI_STB_ID));

		if (stb_id == null || stb_id.length() == 0)
		{
			return false;
		}

		return true;
	}

	// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
	/**
	 * STBの型式コードから、4KSTBかどうかチェックします。
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.STBの型式コードから、宅内機器型式スキーマに照会をかけ、HDD容量コードを取得します。<br>
	 * 
	 * 2.業務パラメータスキーマに対して、キー項目に"KK_HDD_CAPA_BCASNONE"で照会し、設定値を取得します。<br>
	 *
	 * 3.1で取得したHDD容量コードが2で取得した設定値に含まれていればtrue、含まれていなければfalseを返します。<br>
	 *   1でデータ取得できなかった場合、falseを返します。
	 * 
	 * </pre>
	 * <p>
	 */
	private boolean is4kStb(JBSbatServiceInterfaceMap inmap) throws Exception
	{
		// 宅内機器型式照会用パラメータ
		String[] param_zm0411 = {inmap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_S)};
		// 業務パラメータ管理照会用パラメータ
		String[] param_zm0321 = {opeDate,opeDate};
		
		// 宅内機器型式_検索実行
		executeZM_M_TAKNKIKI_MODEL_KK_SELECT_008(param_zm0411);
		JBSbatCommonDBInterface result_zm0411 = db_ZM_M_TAKNKIKI_MODEL.selectNext();
		
		// 宅内機器型式：HDD容量コード
		String hdd_capa_cd= getResulDataCulumn(result_zm0411, JBSbatZM_M_TAKNKIKI_MODEL.HDD_CAPA_CD);
		
		// 宅内機器型式：HDD容量コードが空の場合はfalseを返す
		if ("".equals(hdd_capa_cd))
		{
			return false;
		}
		
		// 業務パラメータ管理_検索実行
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_024(param_zm0321);
		JBSbatCommonDBInterface result_zm0321 = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		
		// 業務パラメータ管理:業務パラメータ設定値
		String hdd_capa_cd_list= getResulDataCulumn(result_zm0321, JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
		// 業務パラメータ管理:業務パラメータ設定値を配列に変換
		String[] hdd_capa_cd_array = hdd_capa_cd_list.split(",");
		
		// 業務パラメータ管理:業務パラメータ設定値に、宅内機器型式：HDD容量コードが含まれていれば
		for (int i = 0; i < hdd_capa_cd_array.length; i++)
		{
			if (hdd_capa_cd.equals(hdd_capa_cd_array[i]))
			{
				return true;
			}
		}
		return false;
	}
	
	/**
	 * SQLKEY(KK_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	宅内機器型式コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_TAKNKIKI_MODEL_KK_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_ZM_M_TAKNKIKI_MODEL.selectBySqlDefine(paramList, ZM_M_TAKNKIKI_MODEL_KK_SELECT_008);
	}
	
	/**
	 * SQLKEY(KK_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	宅内機器型式コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_024(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_024);
	}
	
	/**
	 * 検索結果から指定カラムのデータを取得します。
	 * 検索結果がない場合、取得データがnullだった場合は空を返します。
	 * 
	 * @param result 実行結果
	 * @param param_name 取得対象カラム
	 * @return 取得データ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getResulDataCulumn(JBSbatCommonDBInterface result, String param_name) throws Exception
	{
		if (result != null)
		{
			return JKKStringUtil.nullToBlank(JBSbatStringUtil.Rtrim(result.getString(param_name)));
		}
		return "";
	}
	// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲
}
