/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKojiakNoChk
*	ソースファイル名	：JBSbatKKKojiakNoChk.java
*	作成者				：富士通　
*	作成日				：2011年08月02日
*＜機能概要＞
*　工事案件番号チェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/02	FJ）庭山	新規作成
*	v1.01.00	2011/11/26  FJ)倉上		IT1-2011-0000328障害対応
*	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.JBSbatKU_T_KJAK_TG_TKKIKI;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.application.JBSbatBusinessException;
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 JBSbatKKKojiakNoChk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(工事案件対象宅内機器)*/
	private static final String D_TBL_NAME_KU_T_KJAK_TG_TKKIKI = "KU_T_KJAK_TG_TKKIKI";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String KU_T_KJAK_TG_TKKIKI_KK_SELECT_002 = "KK_SELECT_002";

	/** テーブルアクセスクラス(工事案件対象宅内機器)*/
	private JBSbatSQLAccess db_KU_T_KJAK_TG_TKKIKI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 宅内機器種別コード（STB）
	 */
	private String stb_cd = "";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KU_T_KJAK_TG_TKKIKI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KJAK_TG_TKKIKI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// 共通領域のフリー項目から宅内機器種別コードを取得する。
		String[] item_list = commonItem.getFreeItem().split(";");

		// 宅内機器種別コードが取得出来ない場合、エラーとし処理中断する。
		if (item_list.length != 1)
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[]{"宅内機器種別コード"});
		}

		stb_cd = item_list[0];
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @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();
		JBSbatCommonDBInterface db_map = null;

		String stb_kojiank_no = "";		// 「工事案件番号_STB」
		String stb_ido_cd = "";			// 「実績宅内機器異動コード_STB」
		String bcas_kojiank_no = "";	// 「工事案件番号_B-CAS」
//		String bcas_ido_cd = "";		// 「実績宅内機器異動コード_B-CAS」
		String ccas_kojiank_no = "";	// 「工事案件番号_C-CAS」
//		String ccas_ido_cd = "";		// 「実績宅内機器異動コード_C-CAS」
		boolean chk_flg = false;
		String jseki_ido_cd = "";

		String stb_svc_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_S));
		String bcas_svc_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_B));
		String ccas_svc_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_C));

		// 機器提供サービス契約番号Ｓ <> ""の場合、以下の処理を行います。
		if (stb_svc_no != null && stb_svc_no.length() > 0)
		{
			// 工事案件対象宅内機器の検索を行います。
			db_map = serchKjak(stb_svc_no);
			
			// 検索結果がある場合、以下の処理を行います。
			if (db_map != null)
			{
				// 予定と実績が同じ機器のみを承認対象とする。
				if(!isYtEqualsJssk(db_map, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_S)), JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KIKI_SEIZO_NO_S))))
				{
					super.logPrint.printDebugLog("予定と実績に相違があるためスキップします。機器提供サービス契約番号：" + stb_svc_no);
					return null;
				}
				
				// 「工事案件番号_STB」に設定します。
				stb_kojiank_no = db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.KOJIAK_NO);

				// 「実績宅内機器異動コード_STB」に設定します。
				stb_ido_cd = db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_IDO_CD);
				jseki_ido_cd = stb_ido_cd;

				// 宅内機器種別コード = 「STB」の場合、出力情報に転記します。
				out_map = setKojiAnk(out_map, db_map);
			}
			// 検索結果がない場合、整合性が合っていないためエラーとし処理をスキップします。
			else
			{
//////////////////// 20140113_OM-2013-0005222_修正開始 /////////////////////////
//				String value = "機器提供サービス契約番号（" + stb_svc_no + "）の工事案件番号が存在しません。";
				String value = "機器提供サービス契約番号（" + stb_svc_no + "）の工事案件対象宅内機器情報（実績確定済）が存在しません。";
////////////////////20140113_OM-2013-0005222_修正終了 /////////////////////////
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{value});
				throw new JBSbatBusinessError();
			}
		}

		// 機器提供サービス契約番号Ｂ <> ""の場合、以下の処理を行います。
		if (bcas_svc_no != null && bcas_svc_no.length() > 0)
		{
			// 工事案件対象宅内機器の検索を行います。
			db_map = serchKjak(bcas_svc_no);
			
			// 検索結果がある場合、以下の処理を行います。
			if (db_map != null)
			{
				// 予定と実績が同じ機器のみを承認対象とする。
				if(!isYtEqualsJssk(db_map, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_B)), JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KIKI_SEIZO_NO_B))))
				{
					super.logPrint.printDebugLog("予定と実績に相違があるためスキップします。機器提供サービス契約番号：" + bcas_svc_no);
					return null;
				}
				
				// 「工事案件番号_B-CAS」に設定します。
				bcas_kojiank_no = db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.KOJIAK_NO);

				/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードは「STB」のみに設定されるため不要 ++++++++++ */
//				// 「実績宅内機器異動コード_B-CAS」に設定します。
//				bcas_ido_cd = db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_IDO_CD);
//				jseki_ido_cd = bcas_ido_cd;
				/* ++++++++++ v2.01.00 修正終了 ++++++++++ */

				// 宅内機器種別コード = 「STB」の場合、出力情報に転記します。
				out_map = setKojiAnk(out_map, db_map);
			}
			// 検索結果がない場合、整合性が合っていないためエラーとし処理をスキップします。
			else
			{
				String value = "機器提供サービス契約番号（" + bcas_svc_no + "）の工事案件番号が存在しません。";
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{value});
				throw new JBSbatBusinessError();
			}
		}

		// 機器提供サービス契約番号Ｃ <> ""の場合、以下の処理を行います。
		if (ccas_svc_no != null && ccas_svc_no.length() > 0)
		{
			// 工事案件対象宅内機器の検索を行います。
			db_map = serchKjak(ccas_svc_no);
			
			// 検索結果がある場合、以下の処理を行います。
			if (db_map != null)
			{
				// 予定と実績が同じ機器のみを承認対象とする。
				if(!isYtEqualsJssk(db_map, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_C)), JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.KIKI_SEIZO_NO_C))))
				{
					super.logPrint.printDebugLog("予定と実績に相違があるためスキップします。機器提供サービス契約番号：" + ccas_svc_no);
					return null;
				}
				
				// 「工事案件番号_C-CAS」に設定します。
				ccas_kojiank_no = db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.KOJIAK_NO);

				/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードは「STB」のみに設定されるため不要 ++++++++++ */
//				// 「実績宅内機器異動コード_C-CAS」に設定します。
//				ccas_ido_cd = db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_IDO_CD);
//				jseki_ido_cd = ccas_ido_cd;
				/* ++++++++++ v2.01.00 修正終了 ++++++++++ */

				// 宅内機器種別コード = 「STB」の場合、出力情報に転記します。
				out_map = setKojiAnk(out_map, db_map);
			}
			// 検索結果がない場合、整合性が合っていないためエラーとし処理をスキップします。
			else
			{
				String value = "機器提供サービス契約番号（" + ccas_svc_no + "）の工事案件番号が存在しません。";
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{value});
				throw new JBSbatBusinessError();
			}
		}

		// 「工事案件番号_STB」<> ""の場合、以下の処理を行います。
		if (stb_kojiank_no.length() > 0)
		{
			// 「工事案件番号_B-CAS」<> ""の場合、以下の処理を行います。
			if (bcas_kojiank_no.length() > 0)
			{
				// 「工事案件番号_C-CAS」<> ""の場合、以下の処理を行います。
				if (ccas_kojiank_no.length() > 0)
				{
					// 「工事案件番号_STB」=「工事案件番号_B-CAS」=「工事案件番号_C-CAS」の場合、以下の処理を行います。
					if (isKojiAnk(stb_kojiank_no, bcas_kojiank_no) && isKojiAnk(stb_kojiank_no, ccas_kojiank_no))
					{
						// 「工事案件チェックフラグ」をtrueに設定します。
						chk_flg = true;
					}
				}
				// 「工事案件番号_C-CAS」= ""の場合、以下の処理を行います。
				else
				{
					// 「工事案件番号_STB」「工事案件番号_B-CAS」で判定を行います。
					chk_flg = isKojiAnk(stb_kojiank_no, bcas_kojiank_no);
				}
			}
			// 「工事案件番号_B-CAS」= ""の場合、以下の処理を行います。
			else
			{
				// 「工事案件番号_STB」「工事案件番号_C-CAS」で判定を行います。
				chk_flg = isKojiAnk(stb_kojiank_no, ccas_kojiank_no);
			}
		}
		// 「工事案件番号_STB」= ""の場合、以下の処理を行います。
		else
		{
			// 「工事案件番号_B-CAS」「工事案件番号_C-CAS」で判定を行います。
			chk_flg = isKojiAnk(bcas_kojiank_no, ccas_kojiank_no);
		}

		// 「工事案件チェックフラグ」= trueの場合、ファイル出力します。
		if (chk_flg)
		{
			out_map.setString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_S, stb_svc_no);
			out_map.setString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_B, bcas_svc_no);
			out_map.setString(JBSbatKKIFM091.KKTK_SVC_KEI_NO_C, ccas_svc_no);
			out_map.setString(JBSbatKKIFM091.GENE_ADD_DTM_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.GENE_ADD_DTM_S)));
			out_map.setString(JBSbatKKIFM091.GENE_ADD_DTM_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.GENE_ADD_DTM_B)));
			out_map.setString(JBSbatKKIFM091.GENE_ADD_DTM_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.GENE_ADD_DTM_C)));
			// ▼▼▼▼▼ ST-2018-0000047 ADD START ▼▼▼▼▼
			out_map.setString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_S)));
			out_map.setString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_B)));
			out_map.setString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.TAKNKIKI_MODEL_CD_C)));
			// ▲▲▲▲▲ ST-2018-0000047 ADD END ▲▲▲▲▲
			out_map.setString(JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_S)));
			out_map.setString(JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_B)));
			out_map.setString(JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.RSV_TAKNKIKI_IDO_CD_C)));
			out_map.setString(JBSbatKKIFM091.JSEKI_TAKNKIKI_IDO_CD, jseki_ido_cd);
			out_map.setString(JBSbatKKIFM091.PCRS_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.PCRS_CD)));
			
			out_map.setString(JBSbatKKIFM091.SVC_KEI_NO_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.SVC_KEI_NO_S)));
			out_map.setString(JBSbatKKIFM091.SVC_KEI_NO_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.SVC_KEI_NO_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_S, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.LAST_UPD_DTM_S)));
			out_map.setString(JBSbatKKIFM091.LAST_UPD_DTM_B, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM091.LAST_UPD_DTM_B)));
			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);
		}
		// 「工事案件チェックフラグ」<> trueの場合、ログを出力し処理をスキップします。
		else
		{
			StringBuffer no_list = new StringBuffer();
			String kanma = "";

			if (stb_svc_no != null && stb_svc_no.length() > 0)
			{
				no_list.append(stb_svc_no);
				kanma = ",";
			}

			if (bcas_svc_no != null && bcas_svc_no.length() > 0)
			{
				no_list.append(kanma);
				no_list.append(bcas_svc_no);
				kanma = ",";
			}

			if (ccas_svc_no != null && ccas_svc_no.length() > 0)
			{
				no_list.append(kanma);
				no_list.append(ccas_svc_no);
			}

			String value = "機器提供サービス契約番号（" + no_list.toString() + "）の工事案件番号が異なっています。";
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{value});
			throw new JBSbatBusinessError();
		}

		super.logPrint.printDebugLog("execute_END");

		return out_bean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KU_T_KJAK_TG_TKKIKI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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 void executeKU_T_KJAK_TG_TKKIKI_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KU_T_KJAK_TG_TKKIKI.selectBySqlDefine(paramList, KU_T_KJAK_TG_TKKIKI_KK_SELECT_002);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 工事案件対象宅内機器の検索処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.バインド変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param svc_no　機器提供サービス契約番号。
	 * @return JBSbatCommonDBInterface　検索結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface serchKjak(String svc_no) throws Exception
	{
		String[] param = {svc_no};

		// 検索実行
		executeKU_T_KJAK_TG_TKKIKI_KK_SELECT_002(param);
		
		// 検索結果がある場合
		JBSbatCommonDBInterface result = db_KU_T_KJAK_TG_TKKIKI.selectNext();
		if(null != result)
		{
			// 宅内機器異動コード＝"02"(STB交換)かつ、設置撤去フラグ＝"9"(撤去)の場合
			String taknkiki_ido_cd = JBSbatStringUtil.Rtrim(result.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_IDO_CD));
			String stc_tekkyo_flg = JBSbatStringUtil.Rtrim(result.getString(JBSbatKU_T_KJAK_TG_TKKIKI.STC_TEKKYO_FLG));
			if("02".equals(taknkiki_ido_cd) && "9".equals(stc_tekkyo_flg))
			{
				// 宅内機器異動コード＝"02"(STB交換)の場合は設置撤去フラグ＝"1"(設置)、"9"(撤去)の
				// ２レコード存在するので"9"(撤去)は対象外とし次の"1"(設置)のレコードを返却する。
				return db_KU_T_KJAK_TG_TKKIKI.selectNext();
			}
		}
		return result;
	}

	/**
	 * 出力情報へ工事案件対象宅内機器検索結果を転記します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.宅内機器種別コード = 「STB」の判定をします。<br>
	 * 
	 * 3.実績ＳＴＢ−ＩＤ、実績ＳＴＢ契約ＴＶコースコードを設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param out_map　出力情報。
	 * @param db_map　工事案件対象宅内機器検索結果。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap setKojiAnk(JBSbatServiceInterfaceMap out_map, JBSbatCommonDBInterface db_map) throws Exception
	{
		// STBの場合
		if (stb_cd.equals(db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.TAKNKIKI_SBT_CD)))
		{
			out_map.setString(JBSbatKKIFM091.JSEKI_STB_ID, db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.JSEKI_STB_ID));
			out_map.setString(JBSbatKKIFM091.JSEKI_STB_KEI_TV_COURSE_CD, db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.JSEKI_STB_KEI_TV_COURSE_CD));
		}

		return out_map;
	}

	/**
	 * 工事案件番号と宅内機器異動コードの同値チェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.工事案件番号のチェックをします。<br>
	 *
	 * 2.宅内機器異動コードのチェックをします。
	 * 
	 * 3.同値又は値が片方のみの場合はtrue、それ以外はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param koji_no1　工事案件番号１。
	 * @param koji_no2　工事案件番号２。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isKojiAnk(String koji_no1, String koji_no2) throws Exception
	{
		// 工事案件番号１が空の場合
		if (koji_no1 == null || koji_no1.length() == 0)
		{
			// 工事案件番号２が空の場合
			if (koji_no2 == null || koji_no2.length() == 0)
			{
				return false;
			}
		}
		// 工事案件番号１が空でない場合
		else
		{
			// 工事案件番号２が空でない場合
			if (koji_no2 != null && koji_no2.length() > 0)
			{
				// 工事案件番号が等しくない場合
				if (!koji_no1.equals(koji_no2))
					/* ++++++++++ v2.01.00 修正開始　予定宅内機器異動コードは「STB」のみに設定されるため不要。 ++++++++++ */
//						|| !ido_cd1.equals(ido_cd2))
					/* ++++++++++ v2.01.00 修正終了 ++++++++++ */
				{
					return false;
				}
			}
		}

		return true;
	}
	
	/**
	 * 予定と実績が同じ機器かチェックをします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.実績宅内機器形式コード、宅内機器形式コードの同値チェック、
	 * 　実績機器製造番号、機器製造番号をします。<br>
	 *
	 * 2.同値の場合はtrue、それ以外はfalseを返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param db_map　工事案件対象宅内機器の検索結果
	 * @param taknkiki_model_cd　宅内機器形式コード
	 * @param kiki_seizo_no　機器製造番号
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isYtEqualsJssk(JBSbatCommonDBInterface db_map, String taknkiki_model_cd, String kiki_seizo_no) throws Exception
	{
		String jseki_taknkiki_model_cd = JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.JSEKI_TAKNKIKI_MODEL_CD));
		String jseki_kiki_seizo_no = JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKU_T_KJAK_TG_TKKIKI.JSEKI_KIKI_SEIZO_NO));
		
		// 取得した実績宅内機器形式コード≠機器提供サービス契約．宅内機器形式コード、
		// または取得した実績機器製造番号≠機器提供サービス契約．機器製造番号の場合対象外とする。
		if(!jseki_taknkiki_model_cd.equals(taknkiki_model_cd) || !jseki_kiki_seizo_no.equals(kiki_seizo_no))
		{
			super.logPrint.printDebugLog("実績宅内機器形式コード：" + jseki_taknkiki_model_cd + "　予定宅内機器形式コード：" + taknkiki_model_cd);
			super.logPrint.printDebugLog("実績機器製造番号：" + jseki_kiki_seizo_no + "　予定機器製造番号：" + kiki_seizo_no);
			return false;
		}
		
		return true;
	}
}
