/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSendTgDataSearch
*	ソースファイル名	：JBSbatKKSendTgDataSearch.java
*	作成者				：富士通　
*	作成日				：2011年08月17日
*＜機能概要＞
*　送信対象データ検索部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/17  FJ)倉上		新規作成
*	v3.00.00	2012/05/02	FJ)岡田		【巻@登録テーブル項目同期】対応
*	v4.00.00	2013/03/15	FJ)柳		【IT1-2013-0000498】対応
*	v5.00.00	2013/08/09	FJ)中作		【IT2-2013-0000719】対応
*	v5.00.01	2013/08/23	FJ)古内		【OM-2013-0000514】性能障害対応（アンロード化）
*	v5.00.02	2013/12/09  FJ)古内		【OM-2013-0004106】障害対応
*	v5.00.03	2013/12/20  FJ)古内		【OM-2013-0005227】障害対応
*	v5.00.04	2014/01/21  FJ)古内		【OM-2014-0000197】障害対応
*	v5.00.05	2014/06/05  FJ)古内		【TAI-2014-0000014】性能改善
*	v9.00.00	2014/09/18  FJ)柿坂		【ST4-2014-0000056】性能改善
*	v14.00.00	2015/05/27  FJ)張本		【OM-2015-0000104】障害対応
*	v14.00.01	2015/06/11  FJ)張本		【OM-2015-0000104】障害対応
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatKKIFM078;
import eo.business.util.file.JBSbatKKIFM517;
import eo.business.util.table.JBSbatKK_T_IDO_RSV;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.common.constant.JPCBatchMessageConstant;
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.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKSendTgDataSearch extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(工程進捗メール送信実績)*/
	private static final String D_TBL_NAME_KK_T_STPPRML_SND_JSK = "KK_T_STPPRML_SND_JSK";

	/** テーブルアクセスクラス(工程進捗メール送信実績)*/
	private JBSbatSQLAccess db_KK_T_STPPRML_SND_JSK = null;
	
// ++++++++++++++++++ v5.00.05 追加開始 ++++++++++++++++++
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	
	/** テーブル(異動予約)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";
	
	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";
	
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/** テーブルアクセスクラス(異動予約)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;
	
	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;
	
	/** SQL定義キー(KK_SELECT_299)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_299 = "KK_SELECT_299";
	
	/** SQL定義キー(KK_SELECT_300)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_300 = "KK_SELECT_300";
	
	/** SQL定義キー(KK_SELECT_112)*/
	private static final String KK_T_SVC_KEI_UCWK_KK_SELECT_112 = "KK_SELECT_112";
	
	/** SQL定義キー(KK_SELECT_113)*/
	private static final String KK_T_SVC_KEI_UCWK_KK_SELECT_113 = "KK_SELECT_113";
	
	/** SQL定義キー(KK_SELECT_078)*/
	private static final String KK_T_IDO_RSV_KK_SELECT_078 = "KK_SELECT_078";
// ++++++++++++++++++ v5.00.05 追加終了 ++++++++++++++++++
	
// ++++++++++++++++++++++++++ v9.00.00 追加開始 +++++++++++++++++++++++++++++
	/** テーブル(申込明細) */
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";
	
	/** テーブルアクセスクラス(申込明細) */
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;
	
	/** SQL定義キー(KK_SELECT_036) */
	private static final String KK_T_MSKM_DTL_KK_SELECT_036 = "KK_SELECT_036";
// ++++++++++++++++++++++++++ v9.00.00 追加終了 +++++++++++++++++++++++++++++
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 宅内調査実施フラグ(宅内調査無) */
	private static final String TAKCHO_JSSI_FLG_NON = "0";

	/** 宅内調査実施フラグ(宅内調査有) */
	private static final String TAKCHO_JSSI_FLG_ARI = "1";
	
	/** 空白*/
	private static final String SPACE = "";

	/** シーケンス定義名(工程進捗メール送信実績番号)*/
	private static final String SEQ_STPPRML_SND_JSK_NO = "SEQ_STPPRML_SND_JSK_NO";
	
	/** コード（作業待ち）*/
	private static final String CODE_WORK_STAY = "0";
	
	/** 無効フラグ(有効)*/
	private static final String MK_FLG_YK = "0";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_STPPRML_SND_JSK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_STPPRML_SND_JSK);
		
// ++++++++++++++++++ v5.00.05 追加開始 ++++++++++++++++++
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSV);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
// ++++++++++++++++++ v5.00.05 追加開始 ++++++++++++++++++
		
// ++++++++++++++++++++++++++ v9.00.00 追加開始 +++++++++++++++++++++++++++++
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
// ++++++++++++++++++++++++++ v9.00.00 追加終了 +++++++++++++++++++++++++++++
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		boolean result = false;
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
// ++++++++++++++++++++++++++ v9.00.00 追加開始 +++++++++++++++++++++++++++++
		JBSbatCommonDBInterface mskmDtlMap = null;
		String mskmDtlNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKM_DTL_NO));
		// 申込明細の検索
		//   指定した申込明細番号のカレントを抽出するため最大で1レコードの取得となる(主キー検索と同等）
		executeKK_T_MSKM_DTL_KK_SELECT_036(new Object[]{mskmDtlNo});
		mskmDtlMap = db_KK_T_MSKM_DTL.selectNext();
		if (null == mskmDtlMap) {
			return outputBean;
		}
// ++++++++++++++++++++++++++ v9.00.00 追加終了 +++++++++++++++++++++++++++++
		
// ++++++++++++++++++++++++++ v9.00.00 変更開始 +++++++++++++++++++++++++++++
		// 申込書番号取得
//		String mskmshoNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKMSHO_NO));
		// 申込書番号が空白の場合、処理対象外
//		if("".equals(mskmshoNo))
// ++++++++++++++++++++++++++ v14.00.00 変更開始 +++++++++++++++++++++++++++++
//		if("".equals(JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_DTL_NO))))
// ++++++++++++++++++++++++++ v14.00.01 変更開始 +++++++++++++++++++++++++++++
//		if("".equals(JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_NO))))
		if ("".equals(JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_NO)))
				&& "".equals(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KOJIAK_NO))))
// ++++++++++++++++++++++++++ v14.01.01 変更終了 +++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++ v14.00.00 変更終了 +++++++++++++++++++++++++++++
		{
// ++++++++++++++++++++++++++ v14.00.01 追加開始 +++++++++++++++++++++++++++++
			// EKKB0010CW:エラーが発生しましたが、処理を継続します。エラー内容(%1%)
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[] { "【申込明細番号】" + mskmDtlNo
					+ "　申込書番号，工事案件番号に空白が設定されています" });
// ++++++++++++++++++++++++++ v14.00.01 追加終了 +++++++++++++++++++++++++++++
			return outputBean;
		}
// ++++++++++++++++++++++++++ v9.00.00 変更終了 +++++++++++++++++++++++++++++
		
// ++++++++++++++++++++++++++ v5.00.05 追加開始 +++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++ v9.00.00 削除開始 +++++++++++++++++++++++++++++
//		String mskmDtlNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKM_DTL_NO));
// ++++++++++++++++++++++++++ v9.00.00 削除終了 +++++++++++++++++++++++++++++
		Set<String> svcKeiNoList = getSvcKeiNoList(mskmDtlNo);
		if (svcKeiNoList.size() == 0)
		{
			return outputBean;
		}
		
		Iterator<String> it = svcKeiNoList.iterator();
		while (it.hasNext())
		{
			// 入出力インターフェースオブジェクトを生成(結果ファイル用)
			JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
			
			String svcKeiNo = it.next();
			JBSbatCommonDBInterface svcKeiInfo = getSvcKeiCurrentInfo(svcKeiNo);
			if (svcKeiInfo == null)
			{
				continue;
			}
			
			// 宅内調査実施フラグの取得
			String takcho_jssi_flg = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.TAKCHO_JSSI_FLG));
			
			super.logPrint.printDebugLog("宅内調査実績フラグ：：：：：" + takcho_jssi_flg);
			
			// 宅内調査実施フラグのチェック
			// 宅内調査実施フラグが"宅内調査無"(0)の場合
			if (TAKCHO_JSSI_FLG_NON.equals(takcho_jssi_flg))
			{
				// 取得した項目内での差異確認を実施。
				result = isSaiKakunin(inMap, svcKeiInfo, true);
			}
			else if (TAKCHO_JSSI_FLG_ARI.equals(takcho_jssi_flg))
			{
				// 取得した項目内での差異確認を実施。
				result = isSaiKakunin(inMap, svcKeiInfo, false);
			}
			
			super.logPrint.printDebugLog("差異確認結果：：：：：" + result);
			
			// 差異がある場合(true)
			if (!result)
			{
				super.logPrint.printDebugLog("工事進捗メール送信実績(サービス契約ステータス)：：：：：" + JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_SVC_KEI_STAT)));
				// 工事案件に紐づく工程進捗メール送信実績のレコードが存在する(メール送信実績がある)場合
				if (inMap.getString(JBSbatKKIFM517.KK1461_SVC_KEI_STAT) != null)
				{
					// 差異がある項目を送信対象データに設定します。
					setSendTgData(inMap, svcKeiInfo, outmap, mskmDtlMap);
					outmap.setString(JBSbatKKIFM078.MAIL_SEND_FLG, "1");
				}
				else
				{
					// 差異がある項目を送信対象データに設定します。
					setSendTgData(inMap, svcKeiInfo, outmap, mskmDtlMap);
					outmap.setString(JBSbatKKIFM078.MAIL_SEND_FLG, "1");
					
					// 工程進捗メール送信実績の初回登録の実施。
					createStpprmlSndJskdata(inMap, svcKeiInfo, mskmDtlMap);
				}
			}
			else
			{
				// 差異がある項目を送信対象データに設定します。
				setSendTgData(inMap, svcKeiInfo, outmap, mskmDtlMap);
				outmap.setString(JBSbatKKIFM078.MAIL_SEND_FLG, "0");
			}
			
			//出力フラグを設定
			outmap.setOutFlg(true);
			
			//出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList(outmap);
		}
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_STPPRML_SND_JSK.close();
// ++++++++++++++++++ v5.00.05 追加開始 ++++++++++++++++++
		db_KK_T_SVC_KEI.close();
		db_KK_T_IDO_RSV.close();
		db_KK_T_SVC_KEI_UCWK.close();
// ++++++++++++++++++ v5.00.05 追加開始 ++++++++++++++++++
		
// ++++++++++++++++++++++++++ v9.00.00 追加開始 +++++++++++++++++++++++++++++
		db_KK_T_MSKM_DTL.close();
// ++++++++++++++++++++++++++ v9.00.00 追加終了 +++++++++++++++++++++++++++++

		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	工程進捗メール送信実績番号				STPPRML_SND_JSK_NO
	 *		 	工事案件番号				KOJIAK_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	申込書番号				MSKMSHO_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約ステータス				SVC_KEI_STAT
	 *		 	審査結果コード				SKEKKA_CD
	 *		 	工程光ルート調査設計コード				STEP_HROUTE_CHOSA_DSGN_CD
	 *		 	工程お客様宅内調査日程調整コード				STEP_CUST_TAKCHO_NTADJ_CD
	 *		 	工程お客様宅内調査コード				STEP_CUST_TAKCHO_CD
	 *		 	工程各種許可申請コード				STEP_VARI_KYOKA_SHINSEI_CD
	 *		 	工程宅内調査承諾書受領コード				STEP_TAKCHO_SDAKS_RCP_CD
	 *		 	工程光ケーブル線路工事コード				STEP_HCABLE_LINE_KOJI_CD
	 *		 	工程お客様宅内工事コード				STEP_CUST_TAKNI_KOJI_CD
	 *		 	工程ご利用開始コード				STEP_USE_STA_CD
	 *		 	メール送信番号（携帯）				MAIL_SEND_NO_KTAI
	 *		 	メール送信番号（ＰＣ）				MAIL_SEND_NO_PC
	 *		 	メール送信ステータス（携帯）				MAIL_SEND_STAT_KTAI
	 *		 	メール送信ステータス（ＰＣ）				MAIL_SEND_STAT_PC
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_STPPRML_SND_JSK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("STPPRML_SND_JSK_NO", setParam[0]);
		setMap.setValue("KOJIAK_NO", setParam[1]);
		setMap.setValue("MSKM_DTL_NO", setParam[2]);
		setMap.setValue("MSKMSHO_NO", setParam[3]);
		setMap.setValue("SVC_KEI_NO", setParam[4]);
		setMap.setValue("SVC_KEI_STAT", setParam[5]);
		setMap.setValue("SKEKKA_CD", setParam[6]);
		setMap.setValue("STEP_HROUTE_CHOSA_DSGN_CD", setParam[7]);
		setMap.setValue("STEP_CUST_TAKCHO_NTADJ_CD", setParam[8]);
		setMap.setValue("STEP_CUST_TAKCHO_CD", setParam[9]);
		setMap.setValue("STEP_VARI_KYOKA_SHINSEI_CD", setParam[10]);
		setMap.setValue("STEP_TAKCHO_SDAKS_RCP_CD", setParam[11]);
		setMap.setValue("STEP_HCABLE_LINE_KOJI_CD", setParam[12]);
		setMap.setValue("STEP_CUST_TAKNI_KOJI_CD", setParam[13]);
		setMap.setValue("STEP_USE_STA_CD", setParam[14]);
		setMap.setValue("MAIL_SEND_NO_KTAI", setParam[15]);
		setMap.setValue("MAIL_SEND_NO_PC", setParam[16]);
		setMap.setValue("MAIL_SEND_STAT_KTAI", setParam[17]);
		setMap.setValue("MAIL_SEND_STAT_PC", setParam[18]);
		setMap.setValue("ADD_DTM", setParam[19]);
		setMap.setValue("ADD_OPEACNT", setParam[20]);
		setMap.setValue("UPD_DTM", setParam[21]);
		setMap.setValue("UPD_OPEACNT", setParam[22]);
		setMap.setValue("DEL_DTM", setParam[23]);
		setMap.setValue("DEL_OPEACNT", setParam[24]);
		setMap.setValue("MK_FLG", setParam[25]);
		setMap.setValue("ADD_UNYO_YMD", setParam[26]);
		setMap.setValue("ADD_TRN_ID", setParam[27]);
		setMap.setValue("UPD_UNYO_YMD", setParam[28]);
		setMap.setValue("UPD_TRN_ID", setParam[29]);
		setMap.setValue("DEL_UNYO_YMD", setParam[30]);
		setMap.setValue("DEL_TRN_ID", setParam[31]);
	
		// DBアクセスを実行します
		db_KK_T_STPPRML_SND_JSK.insertByPrimaryKeys(setMap);
	}
// ++++++++++++++++++++++++ v5.00.05 追加開始 ++++++++++++++++++++++++
	/**
	 * SQLKEY(KK_SELECT_299)で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_SVC_KEI_KK_SELECT_299(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_299);
	}
	/**
	 * SQLKEY(KK_SELECT_300)で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_SVC_KEI_KK_SELECT_300(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_300);
	}
	/**
	 * SQLKEY(KK_SELECT_112)で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_SVC_KEI_UCWK_KK_SELECT_112(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KK_SELECT_112);
	}
	/**
	 * SQLKEY(KK_SELECT_113)で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_SVC_KEI_UCWK_KK_SELECT_113(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KK_SELECT_113);
	}
	/**
	 * SQLKEY(KK_SELECT_078)で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_IDO_RSV_KK_SELECT_078(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_IDO_RSV.selectBySqlDefine(paramList, KK_T_IDO_RSV_KK_SELECT_078);
	}
// ++++++++++++++++++++++++ v5.00.05 追加終了 ++++++++++++++++++++++++
	
// ++++++++++++++++++++++++++ v9.00.00 追加開始 +++++++++++++++++++++++++++++
	/**
	 * KK_T_MSKM_DTLに対し、SQLKEY(KK_SELECT_036)で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_MSKM_DTL_KK_SELECT_036(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KK_SELECT_036);
	}
// ++++++++++++++++++++++++++ v9.00.00 追加終了 +++++++++++++++++++++++++++++

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 初期検索で取得した情報の差異確認を実施<br>
	 * <p>
	 * @param inMap 初期検索情報
	 * @param flag true ：宅内調査実施フラグが"宅内調査無"(0)の場合
	 *              false：宅内調査実施フラグが"宅内調査無"(0)の場合
	 * @return チェック結果　true：差異なし、false：差異あり
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private boolean isSaiKakunin(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface svcKeiInfo, boolean flag) throws Exception
	{
// +++++++++++++++++++++ v5.00.05 変更開始 +++++++++++++++++++++++++++++
		// サービス契約.サービス契約ステータスの取得
//		String svc_kei_stat = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.SVC_KEI_STAT));
		String svc_kei_stat = JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT));
// +++++++++++++++++++++ v5.00.05 変更終了 +++++++++++++++++++++++++++++
		
		// 工事工程進捗.工程光ルート調査設計コードの取得
		String step_hroute_chosa_dsgn_cd =
			JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_HROUTE_CHOSA_DSGN_CD));
		
		// 工事工程進捗.工程各種許可申請コードの取得
		String step_vari_kyoka_shinsei_cd =
			JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_VARI_KYOKA_SHINSEI_CD));
		
		// 工事工程進捗.工程光ケーブル線路工事コードの取得
		String step_hcabel_line_koji_cd =
			JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_HCABLE_LINE_KOJI_CD));
		
		// 工事工程進捗.工程お客様宅内工事コードの取得
		String step_cust_takni_koji_cd =
			JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKNI_KOJI_CD));
		
		// 工事工程進捗.工程ご利用開始コードの取得
		String step_use_sta_cd =
			JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_USE_STA_CD));
		
		// 工事進捗メール送信実績.サービス契約ステータスの取得
		String svc_kei_stat1 =
			JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_SVC_KEI_STAT));
		
		// 工事進捗メール送信実績.工程光ルート調査設計コードの取得
		String step_hroute_chosa_dsgn_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_HROUTE_CHOSA_DSGN_CD));
		
		// 工事進捗メール送信実績.工程各種許可申請コードの取得
		String step_vari_kyoka_shinsei_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_VARI_KYOKA_SHINSEI_CD));
		
		// 工事進捗メール送信実績.工程光ケーブル線路工事コードの取得
		String step_hcabel_line_koji_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_HCABLE_LINE_KOJI_CD));
		
		// 工事進捗メール送信実績.工程お客様宅内工事コードの取得
		String step_cust_takni_koji_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_CUST_TAKNI_KOJI_CD));
		
		// 工事進捗メール送信実績.工程ご利用開始コードの取得
		String step_use_sta_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_USE_STA_CD));
		
		super.logPrint.printDebugLog("svc_kei_stat：：：：：" + svc_kei_stat);
		super.logPrint.printDebugLog("svc_kei_stat1：：：：：" + svc_kei_stat1);
		// サービス契約ステータスの差異をチェック
		if (!svc_kei_stat.equals(svc_kei_stat1))
		{
			return false;
		}
		
		super.logPrint.printDebugLog("step_hroute_chosa_dsgn_cd：：：：：" + step_hroute_chosa_dsgn_cd);
		super.logPrint.printDebugLog("step_hroute_chosa_dsgn_cd1：：：：：" + step_hroute_chosa_dsgn_cd1);
		// 工事工程進捗.工程光ルート調査設計コードが設定されている場合
		if (inMap.getString(JBSbatKKIFM517.STEP_HROUTE_CHOSA_DSGN_CD) != null)
		{
			// 工程光ルート調査設計コードの差異をチェック
			if (!step_hroute_chosa_dsgn_cd.equals(step_hroute_chosa_dsgn_cd1))
			{
				return false;
			}
		}
		
		super.logPrint.printDebugLog("step_vari_kyoka_shinsei_cd：：：：：" + step_vari_kyoka_shinsei_cd);
		super.logPrint.printDebugLog("step_vari_kyoka_shinsei_cd1：：：：：" + step_vari_kyoka_shinsei_cd1);
		// 工事工程進捗.工程各種許可申請コードが設定されている場合
		if (inMap.getString(JBSbatKKIFM517.STEP_VARI_KYOKA_SHINSEI_CD) != null)
		{
			// 工程各種許可申請コードの差異をチェック
			if (!step_vari_kyoka_shinsei_cd.equals(step_vari_kyoka_shinsei_cd1))
			{
				return false;
			}
		}
		
		super.logPrint.printDebugLog("step_hcabel_line_koji_cd：：：：：" + step_hcabel_line_koji_cd);
		super.logPrint.printDebugLog("step_hcabel_line_koji_cd1：：：：：" + step_hcabel_line_koji_cd1);
		// 工事工程進捗.工程光ケーブル線路工事コードが設定されている場合
		if (inMap.getString(JBSbatKKIFM517.STEP_HCABLE_LINE_KOJI_CD) != null)
		{
			// 工程光ケーブル線路工事コードの差異をチェック
			if (!step_hcabel_line_koji_cd.equals(step_hcabel_line_koji_cd1))
			{
				return false;
			}
		}
		
		super.logPrint.printDebugLog("step_cust_takni_koji_cd：：：：：" + step_cust_takni_koji_cd);
		super.logPrint.printDebugLog("step_cust_takni_koji_cd1：：：：：" + step_cust_takni_koji_cd1);
		// 工事工程進捗.工程お客様宅内工事コードが設定されている場合
		if (inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKNI_KOJI_CD) != null)
		{
			// 工程お客様宅内工事コードの差異をチェック
			if (!step_cust_takni_koji_cd.equals(step_cust_takni_koji_cd1))
			{
				return false;
			}
		}
		
		super.logPrint.printDebugLog("step_use_sta_cd：：：：：" + step_use_sta_cd);
		super.logPrint.printDebugLog("step_use_sta_cd1：：：：：" + step_use_sta_cd1);
		// 工事工程進捗.工程ご利用開始コードが設定されている場合
		if (inMap.getString(JBSbatKKIFM517.STEP_USE_STA_CD) != null)
		{
			// 工程ご利用開始コードの差異をチェック
			if (!step_use_sta_cd.equals(step_use_sta_cd1))
			{
				return false;
			}
		}
		
		if (!flag)
		{
			// 工事工程進捗.工程お客様宅内調査日程調整コードの取得
			String step_cust_takcho_ntadj_cd = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKCHO_NTADJ_CD));
			
			// 工事工程進捗.工程お客様宅内調査コードの取得
			String step_cust_takcho_cd = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKCHO_CD));
			
			// 工事工程進捗.工程宅内調査承諾書受領コードの取得
			String step_takcho_sdaks_rcp_cd = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_TAKCHO_SDAKS_RCP_CD));
			
			// 工事進捗メール送信実績.工程お客様宅内調査日程調整コードの取得
			String step_cust_takcho_ntadj_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_CUST_TAKCHO_NTADJ_CD));
			
			// 工事進捗メール送信実績.工程お客様宅内調査コードの取得
			String step_cust_takcho_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_CUST_TAKCHO_CD));
			
			// 工事進捗メール送信実績.工程宅内調査承諾書受領コードの取得
			String step_takcho_sdaks_rcp_cd1 = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KK1461_STEP_TAKCHO_SDAKS_RCP_CD));
			
			// 工事工程進捗.工程お客様宅内調査日程調整コードが設定されている場合
			if (inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKCHO_NTADJ_CD) != null)
			{
				// 工程お客様宅内調査日程調整コードの差異をチェック
				if (!step_cust_takcho_ntadj_cd.equals(step_cust_takcho_ntadj_cd1))
				{
					return false;
				}
			}
			
			// 工事工程進捗.工程お客様宅内調査コードが設定されている場合
			if (inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKCHO_CD) != null)
			{
				// 工程お客様宅内調査コードの差異をチェック
				if (!step_cust_takcho_cd.equals(step_cust_takcho_cd1))
				{
					return false;
				}
			}
			
			// 工程宅内調査承諾書受領コードが設定されている場合
			if (inMap.getString(JBSbatKKIFM517.STEP_TAKCHO_SDAKS_RCP_CD) != null)
			{
				// 工程宅内調査承諾書受領コードの差異をチェック
				if (!step_takcho_sdaks_rcp_cd.equals(step_takcho_sdaks_rcp_cd1))
				{
					return false;
				}
			}
		}
		return true;
	}
	
	/**
	 * 送信対象データを中間ファイルに設定します。<br>
	 * <p>
	 * @param inMap 初期検索情報
	 * @param svcKeiInfo サービス契約情報
	 * @param outmap 中間ファイルオブジェクト（送信対象データ）
	 * @param mskmDtlMap 申込明細情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setSendTgData(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface svcKeiInfo, JBSbatServiceInterfaceMap outmap, JBSbatCommonDBInterface mskmDtlMap) throws Exception
	{
		
		// 申込明細番号 ← 申込明細．申込明細番号
		outmap.set(JBSbatKKIFM078.MSKM_DTL_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKM_DTL_NO)));
		
// ++++++++++++++++++++++++++ v9.00.00 変更開始 +++++++++++++++++++++++++++++
		// 申込番号 ← 申込明細．申込番号
//		outmap.set(JBSbatKKIFM078.MSKM_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKM_NO)));
		outmap.set(JBSbatKKIFM078.MSKM_NO, JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_NO)));
		
		// 申込書番号 ← 申込明細．申込書番号
//		outmap.set(JBSbatKKIFM078.MSKMSHO_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKMSHO_NO)));
		outmap.set(JBSbatKKIFM078.MSKMSHO_NO, JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_NO)));
		
		// 工事進捗通知メールアドレス ← 申込明細．工事進捗通知メールアドレス
//		outmap.set(JBSbatKKIFM078.KOJI_PRG_TCHI_MLAD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KOJI_PRG_TCHI_MLAD)));
		outmap.set(JBSbatKKIFM078.KOJI_PRG_TCHI_MLAD, JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.KOJI_PRG_TCHI_MLAD)));
		
		// 工事進捗通知携帯メールアドレス ← 申込明細．工事進捗通知携帯メールアドレス
//		outmap.set(JBSbatKKIFM078.KJSC_TCH_KTAI_MLAD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KJSC_TCH_KTAI_MLAD)));
		outmap.set(JBSbatKKIFM078.KJSC_TCH_KTAI_MLAD, JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.KJSC_TCH_KTAI_MLAD)));
// ++++++++++++++++++++++++++ v9.00.00 変更終了 +++++++++++++++++++++++++++++

// +++++++++++++++++++++++ v5.00.05 変更開始 +++++++++++++++++++++++++
//		// サービス契約番号 ← サービス契約．サービス契約番号
//		outmap.set(JBSbatKKIFM078.SVC_KEI_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.SVC_KEI_NO)));
//		
//		// サービス契約ステータス ← サービス契約．サービス契約ステータス
//		outmap.set(JBSbatKKIFM078.SVC_KEI_STAT, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.SVC_KEI_STAT)));
//		
//		// サービスコード ← サービス契約．サービスコード
//		outmap.set(JBSbatKKIFM078.SVC_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.SVC_CD)));
//		
//		// 審査結果コード ← サービス契約．審査結果コード
//		outmap.set(JBSbatKKIFM078.SKEKKA_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.SKEKKA_CD)));
		// ソート優先フラグ
		outmap.set(JBSbatKKIFM078.PRIORITY_FLG, "0");
		String svcKeiNo = JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
		if (svcKeiNo.equals(inMap.getString(JBSbatKKIFM517.KK1461_SVC_KEI_NO)))
		{
			outmap.set(JBSbatKKIFM078.PRIORITY_FLG, "1");
		}
		// サービス契約番号 ← サービス契約．サービス契約番号
		outmap.set(JBSbatKKIFM078.SVC_KEI_NO, JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		
		// サービス契約ステータス ← サービス契約．サービス契約ステータス
		outmap.set(JBSbatKKIFM078.SVC_KEI_STAT, JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT)));
		
		// サービスコード ← サービス契約．サービスコード
		outmap.set(JBSbatKKIFM078.SVC_CD, JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_CD)));
		
		// 審査結果コード ← サービス契約．審査結果コード
		outmap.set(JBSbatKKIFM078.SKEKKA_CD, JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SKEKKA_CD)));
// +++++++++++++++++++++++ v5.00.05 変更終了 +++++++++++++++++++++++++
		
		// 工事案件番号 ← 工事工程進捗．工事案件番号
		outmap.set(JBSbatKKIFM078.KOJIAK_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KOJIAK_NO)));
		
		// 工程光ルート調査設計コード ← 工事工程進捗．工程光ルート調査設計コード
		outmap.set(JBSbatKKIFM078.STEP_HROUTE_CHOSA_DSGN_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_HROUTE_CHOSA_DSGN_CD)));
		
		// 工程お客様宅内調査日程調整コード ← 工事工程進捗．工程お客様宅内調査日程調整コード
		outmap.set(JBSbatKKIFM078.STEP_CUST_TAKCHO_NTADJ_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKCHO_NTADJ_CD)));
		
		// 工程お客様宅内調査コード ← 工事工程進捗．工程お客様宅内調査コード
		outmap.set(JBSbatKKIFM078.STEP_CUST_TAKCHO_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKCHO_CD)));
		
		// 工程各種許可申請コード ← 工事工程進捗．工程各種許可申請コード
		outmap.set(JBSbatKKIFM078.STEP_VARI_KYOKA_SHINSEI_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_VARI_KYOKA_SHINSEI_CD)));
		
		// 工程宅内調査承諾書受領コード ← 工事工程進捗．工程宅内調査承諾書受領コード
		outmap.set(JBSbatKKIFM078.STEP_TAKCHO_SDAKS_RCP_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_TAKCHO_SDAKS_RCP_CD)));
		
		// 工程光ケーブル線路工事コード ← 工事工程進捗．工程光ケーブル線路工事コード
		outmap.set(JBSbatKKIFM078.STEP_HCABLE_LINE_KOJI_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_HCABLE_LINE_KOJI_CD)));
		
		// 工程お客様宅内工事コード ← 工事工程進捗．工程お客様宅内工事コード
		outmap.set(JBSbatKKIFM078.STEP_CUST_TAKNI_KOJI_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_CUST_TAKNI_KOJI_CD)));
		
		// 工程ご利用開始コード ← 工事工程進捗．工程ご利用開始コード
		outmap.set(JBSbatKKIFM078.STEP_USE_STA_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.STEP_USE_STA_CD)));
		
		// 宅内調査実施フラグ ← 工事工程進捗．宅内調査実施フラグ
		outmap.set(JBSbatKKIFM078.TAKCHO_JSSI_FLG, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.TAKCHO_JSSI_FLG)));
		
		// メール送信番号_PC ← 空白
		outmap.set(JBSbatKKIFM078.MAIL_SEND_NO_PC, SPACE);
		
		// メール送信番号_携帯 ← 空白
		outmap.set(JBSbatKKIFM078.MAIL_SEND_NO_KEITAI, SPACE);
		
		// サービス名 ← 空白
		outmap.set(JBSbatKKIFM078.SVC_NAME, SPACE);
		
// +++++++++++++++++++++++++ v5.00.03 追加開始 ++++++++++++++++++++++++++++++++
		// 工事案件種別コード ← 工事案件．工事案件種別コード
		outmap.set(JBSbatKKIFM078.KOJIAK_SBT_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.KOJIAK_SBT_CD)));
// +++++++++++++++++++++++++ v5.00.03 追加終了 ++++++++++++++++++++++++++++++++
		
// +++++++++++++++++++++++++ v5.00.04 追加開始 ++++++++++++++++++++++++++++++++
		// 申込書明細番号 ← 申込明細．申込書明細番号コード
// ++++++++++++++++++++++++++ v9.00.00 変更開始 +++++++++++++++++++++++++++++
//		outmap.set(JBSbatKKIFM078.MSKMSHO_DTL_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM517.MSKMSHO_DTL_NO)));
		outmap.set(JBSbatKKIFM078.MSKMSHO_DTL_NO, JBSbatStringUtil.Rtrim(mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_DTL_NO)));
// ++++++++++++++++++++++++++ v9.00.00 変更終了 +++++++++++++++++++++++++++++
// +++++++++++++++++++++++++ v5.00.04 追加終了 ++++++++++++++++++++++++++++++++
		
	}
	
	/**
	 * 工程進捗メール送信実績登録。<br>
	 * <p>
	 * @param inMap 初期検索情報
	 * @param svcKeiInfo サービス契約情報
	 * @param mskmDtlMap 申込明細情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void createStpprmlSndJskdata(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface svcKeiInfo, JBSbatCommonDBInterface mskmDtlMap) throws Exception
	{
		
		// システム日付を取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		
		Object[] setParam = new Object[32];
		
		// 工程進捗メール送信実績番号 ← 連番を採番
		setParam[0] = JBSbatStringUtil.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(commonItem.getConnection(), SEQ_STPPRML_SND_JSK_NO), 10);
		
		// 工事案件番号 ← 申込明細．工事案件番号
		setParam[1] = inMap.getString(JBSbatKKIFM517.KOJIAK_NO);
		
		// 申込明細番号 ← 申込明細．申込明細番号
		setParam[2] = inMap.getString(JBSbatKKIFM517.MSKM_DTL_NO);
		
		// 申込書番号 ← 申込明細．申込書番号
// ++++++++++++++++++++++++++ v9.00.00 変更開始 +++++++++++++++++++++++++++++
//		setParam[3] = inMap.getString(JBSbatKKIFM517.MSKMSHO_NO);
		setParam[3] = mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_NO);
// ++++++++++++++++++++++++++ v9.00.00 変更終了 +++++++++++++++++++++++++++++
		
// +++++++++++++++++++++++ v5.00.05 変更開始 +++++++++++++++++++++++++
//		// サービス契約番号 ← 申込明細．サービス契約番号
//		setParam[4] = inMap.getString(JBSbatKKIFM517.SVC_KEI_NO);
//		
//		// サービス契約ステータス ← 申込明細．サービス契約ステータスを設定
//		setParam[5] = inMap.getString(JBSbatKKIFM517.SVC_KEI_STAT);
//		
//		// 審査結果コード ← 申込明細．審査結果コード
//		setParam[6] = inMap.getString(JBSbatKKIFM517.SKEKKA_CD);
		// サービス契約番号 ← 申込明細．サービス契約番号
		setParam[4] = JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
		
		// サービス契約ステータス ← 申込明細．サービス契約ステータスを設定
		setParam[5] = JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT));
		
		// 審査結果コード ← 申込明細．審査結果コード
		setParam[6] = JBSbatStringUtil.Rtrim(svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SKEKKA_CD));
// +++++++++++++++++++++++ v5.00.05 変更終了 +++++++++++++++++++++++++
		
		// 工程光ルート調査設計コード ← ’作業待ち’(0)を設定
		setParam[7] = CODE_WORK_STAY;
		
		// 工程お客様宅内調査日程調整コード ← ’作業待ち’(0)を設定
		setParam[8] = CODE_WORK_STAY;
		
		// 工程お客様宅内調査コード ← ’作業待ち’(0)を設定
		setParam[9] = CODE_WORK_STAY;
		
		// 工程各種許可申請コード ← ’作業待ち’(0)を設定
		setParam[10] = CODE_WORK_STAY;
		
		// 工程宅内調査承諾書受領コード ← ’作業待ち’(0)を設定
		setParam[11] = CODE_WORK_STAY;
		
		// 工程光ケーブル線路工事コード ← ’作業待ち’(0)を設定
		setParam[12] = CODE_WORK_STAY;
		
		// 工程お客様宅内工事コード ← ’作業待ち’(0)を設定
		setParam[13] = CODE_WORK_STAY;
		
		// 工程ご利用開始コード ← ’作業待ち’(0)を設定
		setParam[14] = CODE_WORK_STAY;
		
		// メール送信番号（携帯） ← 設定なし
		setParam[15] = SPACE;
		
		// メール送信番号（ＰＣ） ← 設定なし
		setParam[16] = SPACE;
		
		// メール送信ステータス（携帯） ← 設定なし
		setParam[17] = SPACE;
		
		// メール送信ステータス（ＰＣ） ← 設定なし
		setParam[18] = SPACE;
		
		// 登録年月日時分秒システム日時
		setParam[19] = sysDate;
		
		// 登録オペレータアカウントバッチID
		setParam[20] = super.batchUserId;;
		
		// 更新年月日時分秒システム日時
		setParam[21] = sysDate;
		
		// 更新オペレータアカウントバッチID
		setParam[22] = super.batchUserId;;
		
		// 削除年月日時分秒設定なし
		setParam[23] = SPACE;
		
		// 削除オペレータアカウント設定なし
		setParam[24] = SPACE;
		
		// 無効フラグ0:有効
		setParam[25] = MK_FLG_YK;
		
		// 登録運用年月日
		setParam[26] = SPACE;
		
		// 登録処理ＩＤ
		setParam[27] = SPACE;
		
		// 更新運用年月日
		setParam[28] = SPACE;
		
		// 更新処理ＩＤ
		setParam[29] = SPACE;
		
		// 削除運用年月日
		setParam[30] = SPACE;
		
		// 削除処理ＩＤ
		setParam[31] = SPACE;
		
		// 登録処理の実行
		executeKK_T_STPPRML_SND_JSK_PKINSERT(setParam);
	}
	
// +++++++++++++++++++++++ v5.00.05 追加開始 +++++++++++++++++++++++++
	/**
	 * 申込明細番号より、サービス契約、異動予約、サービス契約内訳を参照し、
	 * その申込明細番号に該当するサービス契約番号を取得する。
	 * 
	 */
	private TreeSet<String> getSvcKeiNoList(String mskmDtlNo) throws Exception
	{
		TreeSet<String> svcKeiList = new TreeSet<String>();
		
		JBSbatCommonDBInterface workRsltMap = null;
		
		// サービス契約の検索
		executeKK_T_SVC_KEI_KK_SELECT_299(new Object[]{mskmDtlNo, super.opeDate});
		while ((workRsltMap = db_KK_T_SVC_KEI.selectNext()) != null)
		{
			String svcKeiNo = JBSbatStringUtil.Rtrim(workRsltMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
			if (!svcKeiList.contains(svcKeiNo))
			{
				svcKeiList.add(svcKeiNo);
			}
		}
		
		// 異動予約の検索
		executeKK_T_IDO_RSV_KK_SELECT_078(new Object[]{mskmDtlNo, super.opeDate});
		while ((workRsltMap = db_KK_T_IDO_RSV.selectNext()) != null)
		{
			String svcKeiNo = JBSbatStringUtil.Rtrim(workRsltMap.getString(JBSbatKK_T_IDO_RSV.SVC_KEI_NO));
			String svcKeiUcwkNo = JBSbatStringUtil.Rtrim(workRsltMap.getString(JBSbatKK_T_IDO_RSV.SVC_KEI_UCWK_NO));
			if (!"".equals(svcKeiNo))
			{
				if (!svcKeiList.contains(svcKeiNo))
				{
					svcKeiList.add(svcKeiNo);
				}
			}
			else if (!"".equals(svcKeiUcwkNo))
			{
				executeKK_T_SVC_KEI_UCWK_KK_SELECT_113(new Object[]{svcKeiUcwkNo, super.opeDate});
				JBSbatCommonDBInterface svcUcwkMap = db_KK_T_SVC_KEI_UCWK.selectNext();
				if (svcUcwkMap != null)
				{
					JBSbatCommonDBInterface svcMap = getSvcKeiCurrentInfo(JBSbatStringUtil.Rtrim(svcUcwkMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO)));
					if (svcMap != null)
					{
						svcKeiNo = JBSbatStringUtil.Rtrim(svcMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO));
						if (!svcKeiList.contains(svcKeiNo))
						{
							svcKeiList.add(svcKeiNo);
						}
					}
				}
			}
		}
		// サービス契約内訳の検索
		executeKK_T_SVC_KEI_UCWK_KK_SELECT_112(new Object[]{mskmDtlNo, super.opeDate});
		while ((workRsltMap = db_KK_T_SVC_KEI_UCWK.selectNext()) != null)
		{
			String svcKeiNo = JBSbatStringUtil.Rtrim(workRsltMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO));
			if (!svcKeiList.contains(svcKeiNo))
			{
				svcKeiList.add(svcKeiNo);
			}
		}
		
		return svcKeiList;
	}
	
	/**
	 * KK_T_SVC_KEI-KK_SELECT_300を用いて指定されたサービス契約番号のカレントを取得する。
	 * 
	 * @param svcKeiNo
	 * @return
	 * @throws Exception
	 */
	private JBSbatCommonDBInterface getSvcKeiCurrentInfo(String svcKeiNo) throws Exception
	{
		// サービス契約の検索
		executeKK_T_SVC_KEI_KK_SELECT_300(new Object[]{svcKeiNo, super.opeDate});
		return db_KK_T_SVC_KEI.selectNext();
	}
// +++++++++++++++++++++++ v5.00.05 追加終了 +++++++++++++++++++++++++
}
