/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKjRsvHaisoInfoCst
*	ソースファイル名	：JBSbatKKKjRsvHaisoInfoCst.java
*	作成者				：富士通　
*	作成日				：2011年08月18日
*＜機能概要＞
*　工事予定配送情報抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/18   富士通		新規作成
*	v2.00.00	2012/03/06   FJ)長西	【ST2-2012-0000289】出力ファイルソートキー MSKMSHO_NO → KOJIAK_NO 変更
*	v2.01.00	2012/03/26   FJ)藤原	【ST2-2012-0000461】個別指定フラグによりソートキーを変更する処理を追加
*	v2.02.00	2012/03/28   FJ)藤原	【IT2-2012-0000223】住変新設撤去は抽出外とする処理を追加
*	v2.03.00	2012/04/04   FJ)藤原	【IT2-2012-0000223】STB,C-CAS,B-CASでも住変新設撤去は対象外とするよう修正
*	v3.00.00	2012/06/15   FJ)藤本	【IT2-2012-0000888】KIKI_STC_SAKI_PLACE_NOの取得修正
*	v3.01.00	2012/06/18   FJ)倉上	【IT2-2012-0000929】機器変更番号取得処理修正。
*	v3.02.00	2012/06/26   FJ)神吉	【SGY-2012-0000037】住所変更対応
*	v3.03.00	2012/06/27   FJ)倉上	【IT2-2012-0001099】配送物品TBL登録処理修正。
*	v3.04.00	2012/07/18   FJ)倉上	【ST1-2012-0000152】機器変更番号設定処理追加。
*	v4.00.00	2012/09/23   FJ)中作	【ANK-1188-00-00】宅内機器管理S：在庫更新処理の変更対応について対応
*	v4.01.00	2012/11/27   FJ)中作	【IT2-2012-0001850】障害対応
*	v4.02.00	2012/12/11   FJ)岡田	【IT2-2012-0002039】障害対応
*	v4.03.00	2013/01/17   FJ)藤本	【IT1-2013-0000093】障害対応
*	v4.04.00	2013/03/20   FJ)藤本	【IKK-2013-0000438】障害対応
*	v4.05.00	2013/04/08   FJ)石原	【IKK-2013-0000838】障害対応
*	v5.00.00	2013/01/30   FJ)岡田	【ANK-1352-00-00】緊急出荷の対応
*	v5.00.01	2013/04/12   FJ)柳		【IT1-2013-0000826】障害対応
*	v5.00.02	2013/05/22   FJ)団		【IKK-2013-0001111】障害関連対応
*	v5.00.03	2013/08/19   FJ)柳		【OM-2013-0000215】障害対応
*	v5.00.04	2013/09/24   FJ)柳		【OM-2013-0002368】障害対応
* 	v22.00.00	2015/11/19   FJ)金本	【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM100;
import eo.business.util.table.JBSbatKK_T_KJ_RSV_WK;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
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.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_KJAK_TG_TKKIKI;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.business.util.table.JBSbatKU_T_SVKEI_KOJIAK;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;
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 JBSbatKKKjRsvHaisoInfoCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(配送)*/
	private static final String D_TBL_NAME_DK_T_HAISO = "DK_T_HAISO";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";

	/** テーブル(サービス契約回線内訳)*/
	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_MSKM_DTL = "KK_T_MSKM_DTL";

	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** SQL定義キー(KK_SELECT_009)*/
	private static final String DK_T_HAISO_KK_SELECT_009 = "KK_SELECT_009";
	
	/** SQL定義キー(KK_SELECT_012)*/
	private static final String DK_T_HAISO_KK_SELECT_012 = "KK_SELECT_012";

	/** SQL定義キー(KK_SELECT_119)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_119 = "KK_SELECT_119";

	/** SQL定義キー(KK_SELECT_016)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_016 = "KK_SELECT_016";

	/** SQL定義キー(KK_SELECT_007)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_007 = "KK_SELECT_007";

	/** SQL定義キー(KK_SELECT_006)*/
	private static final String KK_T_MSKM_DTL_KK_SELECT_006 = "KK_SELECT_006";

	/** SQL定義キー(KK_SELECT_094)*/
	private static final String KK_T_SVC_KEI_UCWK_KK_SELECT_094 = "KK_SELECT_094";

	/** SQL定義キー(KK_SELECT_095)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_095 = "KK_SELECT_095";

	/** テーブルアクセスクラス(配送)*/
	private JBSbatSQLAccess db_DK_T_HAISO = null;
	
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;

	/** テーブルアクセスクラス(申込明細)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;

	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** テーブル(進捗)*/
	private static final String D_TBL_NAME_KK_T_PRG = "KK_T_PRG";
	
	/** テーブルアクセスクラス(共通部品)*/
	private JBSbatSQLAccess stmt = null;
	
	/** 改行コード*/
	private static final String CRLF  = "CR+LF";
	
	// ++++++++++ v22.00.00 削除開始 ++++++++++
//	/** 宅内機器種別コード（STB）*/
//	private static final String TAKNKIKI_SBT_CD_STB  = "A0";
//	
//	/** 宅内機器種別コード（B-CAS）*/
//	private static final String TAKNKIKI_SBT_CD_BCAS  = "B0";
//	
//	/** 宅内機器種別コード（C-CAS）*/
//	private static final String TAKNKIKI_SBT_CD_CCAS  = "C0";
	// ++++++++++ v22.00.00 削除終了 ++++++++++

	/** 出力ファイルソートキー */
	private static final String[] SORT_KEYS_1  = {
		JBSbatKKIFM100.KOJIAK_NO,					// 工事案件番号
		JBSbatKKIFM100.DOHUBT_MAKE_FLG,				// 同封物作成対象フラグ
		JBSbatKKIFM100.HAISO_DIV,					// 配送区分
		JBSbatKKIFM100.KANRI_PLACE_SKBT_CD,			// 管理場所識別コード
		JBSbatKKIFM100.SOKO_CD,						// 倉庫コード
		JBSbatKKIFM100.KOCOMP_CD,					// 工事会社コード
		JBSbatKKIFM100.YTKSKOF_CD					// 預託先オフィスコード
	};

	/** 出力ファイル名*/
	private String otf1FileName = null;
	
	/** 出力共通電文保持*/
	private JBSbatOutputItem outputItem = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_DK_T_HAISO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/

		// フリー項目で渡されたファイル名を取得します
		this.otf1FileName = super.freeItem;
	
		// 出力ファイル情報
		outputItem = new JBSbatOutputItem();
		
		// 共通部品用
		stmt = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_PRG);
		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// シェルで実行されたSQLで抽出された工事案件、工事案件対象宅内機器情報から、
		// 配送が未作成の工事案件対象宅内機器を対象として抽出します。
		// 配送、配送対象物品TBLを検索し、配送レコードが存在する場合、配送作成済とし対象外とします。
		// 工事案件番号
		String kojiak_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO));
		
		// 機器提供サービス契約番号
		String kktk_svc_kei_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.KKTK_SVC_KEI_NO));
		
		// 変更機器変更番号の取得
		String chge_kiki_chg_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.CHGE_KIKI_CHG_NO));
		
		// 予定機器変更番号の取得
		String rsv_kiki_chg_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.RSV_KIKI_CHG_NO));
		
		super.logPrint.printDebugLog("工事案件番号            ：" + kojiak_no);
		super.logPrint.printDebugLog("機器提供サービス契約番号：" + kktk_svc_kei_no);
		super.logPrint.printDebugLog("変更機器変更番号        ：" + chge_kiki_chg_no);
		super.logPrint.printDebugLog("予定機器変更番号        ：" + rsv_kiki_chg_no);
		
		// 機器変更番号
		String kiki_chg_no = "";
		
		// 工事案件対象宅内機器.変更機器変更番号が設定されている場合
		if (!"".equals(chge_kiki_chg_no))
		{
			// 配送、配送対象物品TBL、機器提供サービス契約TBL検索パラメータに変更機器変更番号をセットします。
			kiki_chg_no = chge_kiki_chg_no;
			
		}
		// 工事案件対象宅内機器.変更機器変更番号が設定されていない場合
		else
		{
			// 配送、配送対象物品TBL、機器提供サービス契約TBL検索パラメータに予定機器変更番号をセットします。
			kiki_chg_no = rsv_kiki_chg_no;
		}
		
		super.logPrint.printDebugLog("機器変更番号            ：" + kiki_chg_no);
		

		
		String dohubtFlg = JBSbatStringUtil.Rtrim(inMap.getString("DOHUBT_MAKE_FLG"));
		
		//工事案件対象宅内機器抽出の場合
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if("0".equals(dohubtFlg)){
		if(JBSbatKKConst.KKIFM100_DOHUBT_MAKE_FLG_0.equals(dohubtFlg)){
		// ++++++++++ v22.00.00 変更終了 ++++++++++
			// 配送、配送対象物品TBLを検索します。
			JBSbatCommonDBInterface outMap009 = this.selectHaiso009( kktk_svc_kei_no, kiki_chg_no);
			
			// 検索結果を判断します。
			if (null != outMap009)
			{
				// 検索ありの場合、配送作成済とし対象外としてスキップします。
				return null;
			}
			
		//配送対象同仏工事案件対象宅内機器抽出の場合
		} else {
			// 配送、配送対象物品TBLを検索します。
			JBSbatCommonDBInterface outMap012 = this.selectHaiso012( kktk_svc_kei_no, kiki_chg_no);
			
			// 検索結果を判断します。
			if (null != outMap012)
			{
				// 検索ありの場合、配送作成済とし対象外としてスキップします。
				return null;
			}
		}
		
		// 対象とする機器提供サービス契約情報を取得します。
		// 該当の工事案件対象宅内機器レコードの機器提供サービス契約番号を持つ
		//   機器提供サービス契約を対象とします。
		// 機器提供サービス契約TBLを検索します。（世代のMAXを取得）
		JBSbatCommonDBInterface outMap119 = this.selectKktkSvcKei119(kktk_svc_kei_no, kiki_chg_no);
		
		// 検索結果を判断します。
		if (null == outMap119)
		{
			return null;
		}
		
		// 出力ファイルデータMAP
		JBSbatServiceInterfaceMap outDataMap = new JBSbatServiceInterfaceMap();
		// 出力ファイル設定用サービス契約番号 → 工事案件．連携サービス契約番号
		String outSvcKeiNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.RNKI_SVC_KEI_NO));
		outDataMap.setString(JBSbatKKIFM100.SVC_KEI_NO, outSvcKeiNo);
		
		// 宅内機器種別コードが「50：ｅｏ電話用ＶＡ」の場合
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if("50".equals(JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD))))
		if(JBSbatKKConst.CD01262_TAKNKIKI_SBT_CD_50.equals(JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD))))
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		{
			// 機器提供サービス契約に設定されているサービス契約番号を出力用サービス契約番号とする。
			outDataMap.setString(JBSbatKKIFM100.SVC_KEI_NO, JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_NO)));
		}
		
		// サービス契約回線内訳．回線場所番号設定用
		String kaisenPlaceNo = "";
		// サービス契約回線内訳．回線場所住所未確定フラグ設定用
		String kisnPlcAdMiFixFlg = "";
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = "";
		
		// サービス契約＿工事案件のPK検索を行い、サービス契約回線内訳番号の取得を行う。
		String[] whereParam = {outSvcKeiNo, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO))};
		JBSbatCommonDBInterface svkeiKojiakMap = this.executeKU_T_SVKEI_KOJIAK_PKSELECT(whereParam);
		if(null != svkeiKojiakMap)
		{
			svcKeiKaisenUcwkNo = JBSbatStringUtil.Rtrim(svkeiKojiakMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_KAISEN_UCWK_NO));
		}
		
		// 機器提供サービス契約．申込明細番号
		String mskm_dtl_no = JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.MSKM_DTL_NO));

		// 申込明細番号が取得できなかった場合
		if (null == mskm_dtl_no || "".equals(mskm_dtl_no))
		{
			// 機器提供サービス契約．サービス契約回線内訳番号を元に申込明細番号を取得する。
			mskm_dtl_no = getMskmDtlNo(inMap, svcKeiKaisenUcwkNo);

			// 取得できなかった場合エラー
			if (null == mskm_dtl_no)
			{
				return null;
			}
		}
		
		// サービス契約回線内訳の検索を行う。
		String[] param = {svcKeiKaisenUcwkNo};
		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_007(param);
		JBSbatCommonDBInterface resultMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		if(null != resultMap)
		{
			kisnPlcAdMiFixFlg = resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_FLG);
			
			kaisenPlaceNo = resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_NO);
		}

		// 工事予定配送情報ファイルへ出力する申込明細情報を設定
		setMskmDtlInfo(mskm_dtl_no, outDataMap);

		// 工事予定配送情報ファイルへ出力する料金コースコードを設定
		setSvcKeiUcwkInfo(outSvcKeiNo, outDataMap, outMap119);

		// 工事予定配送情報ファイルへ出力する上記以外の項目のデータを設定
		setOtf1FileInfo(inMap, outDataMap, kaisenPlaceNo, kisnPlcAdMiFixFlg, outMap119);

		outDataMap.setOutFlg(true);
		outputItem.addOutMapList(outDataMap);
		
		super.logPrint.printDebugLog("execute_END");
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_DK_T_HAISO.close();
		db_KK_T_KKTK_SVC_KEI.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_KK_T_MSKM_DTL.close();
		db_KK_T_SVC_KEI_UCWK.close();
		db_KK_T_SVC_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/

		// ソート処理後のデータファイルを出力
		outFileSort();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	工事案件番号
	 *		 	機器提供サービス契約番号
	 *		 	機器変更番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_HAISO_KK_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_009);
	}
	
	/**
	 * SQLKEY(KK_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	工事案件番号
	 *		 	機器提供サービス契約番号
	 *		 	機器変更番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_HAISO_KK_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_012);
	}
	
	/**
	 * SQLKEY(KK_SELECT_119)で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_KKTK_SVC_KEI_KK_SELECT_119(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_119);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SVC_KEI_NO
	 *		 	KOJIAK_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKU_T_SVKEI_KOJIAK_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SVC_KEI_NO", whereParam[0]);
		whereMap.setValue("KOJIAK_NO", whereParam[1]);

		// DBアクセスを実行します
		return db_KU_T_SVKEI_KOJIAK.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_016)で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_016(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());

		// DBアクセスを実行します
		db_KK_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_016);
	}
	
	/**
	 * SQLKEY(KK_SELECT_007)で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_007(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_007);
	}

	/**
	 * SQLKEY(KK_SELECT_006)で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_006(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_006);
	}

	/**
	 * SQLKEY(KK_SELECT_094)で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_094(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_094);
	}

	/**
	 * SQLKEY(KK_SELECT_095)で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_095(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_095);
	}

	/**
	 *入力情報（サービス契約回線内訳）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 DB-KK_T_KKTK_SVC_KEI-.MSKM_DTL_NO			機器提供サービス契約.申込明細番号
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckKK_T_SVKEI_KAISEN_UW_KK_SELECT_016(HashMap<String, String> rsMap, HashMap<String, String> itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// 申込明細番号項目チェック
		strValue = (String)rsMap.get("MSKM_DTL_NO");
		// 必須チェック
		if(null == strValue || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("DB-KK_T_KKTK_SVC_KEI-.MSKM_DTL_NO")});
			return false;
		}

		return true;
	}

	/**
	 *入力情報（サービス契約回線内訳）の存在チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.存在チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		nRsCnt:レコード数
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 * </pre>
	 * <p>
	 * @param rsDB レコードデータオブジェクト。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isExistCheckKK_T_SVKEI_KAISEN_UW_KK_SELECT_016(JBSbatCommonDBInterface rsDB, HashMap<String, String> itemvalueMap)
	{
		int nRsCnt = 0;
		if(null != rsDB)
		{
			nRsCnt = 1;
		}
		// 存在チェックを行います(SQLKEY=KK_SELECT_016)
		if(1 != nRsCnt)
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0150JE", new String[]{
															"サービス契約"});
			return false;
		}
		return true;
	}
	
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 申込明細の申込番号と申込書番号を設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.申込明細情報取得処理。
	 * 2.取得データ設定処理。
	 * </pre>
	 * <p>
	 * @param mskmDtlNo 申込明細番号
	 * @param outDataMap 出力ファイルデータMAP
	 * @throws Exception
	 */
	private void setMskmDtlInfo(String mskmDtlNo, JBSbatServiceInterfaceMap outDataMap) throws Exception
	{
		if (null != mskmDtlNo && !"".equals(mskmDtlNo))
		{
			String[] params = new String[]{mskmDtlNo};
			executeKK_T_MSKM_DTL_KK_SELECT_006(params);
			JBSbatCommonDBInterface mskmDtlMap = db_KK_T_MSKM_DTL.selectNext();
			if (null != mskmDtlMap)
			{
				outDataMap.setString(JBSbatKKIFM100.MSKM_NO,
						mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_NO));
				outDataMap.setString(JBSbatKKIFM100.MSKMSHO_NO,
						mskmDtlMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_NO));
			}
		}
	}

	/**
	 * サービス契約の料金コースコードを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス契約情報取得処理。
	 * 2.取得データ設定処理。
	 * </pre>
	 * <p>
	 * @param svcKeiNo サービス契約番号
	 * @param outDataMap 出力ファイルデータMAP
	 * @param outMap119 機器提供サービス契約TBL検索結果
	 * @throws Exception
	 */
	private void setSvcKeiUcwkInfo(
			String svcKeiNo, JBSbatServiceInterfaceMap outDataMap, JBSbatCommonDBInterface outMap119) throws Exception
	{
		super.logPrint.printDebugLog("setSvcKeiUcwkInfo_START");
		
		// 機器提供サービス契約.宅内機器種別コードによる判定を行い、取得先テーブルを振り分けます。
		String taknkikiSbtCd = JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD));
		super.logPrint.printDebugLog("taknkikiSbtCd：" + taknkikiSbtCd);
		
		// 宅内機器種別コードが"A0"（STB）または、"B0"（B-CAS）または、"C0"（C-CAS）の場合、
		//   サービス契約内訳TBLより料金コースコードを取得します。
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if (TAKNKIKI_SBT_CD_STB.equals(taknkikiSbtCd) 
//				|| TAKNKIKI_SBT_CD_BCAS.equals(taknkikiSbtCd) || TAKNKIKI_SBT_CD_CCAS.equals(taknkikiSbtCd))
		if (JBSbatKKConst.CD01262_TAKNKIKI_SBT_CD_A0.equals(taknkikiSbtCd) 
				|| JBSbatKKConst.CD01262_TAKNKIKI_SBT_CD_B0.equals(taknkikiSbtCd) || JBSbatKKConst.CD01262_TAKNKIKI_SBT_CD_C0.equals(taknkikiSbtCd))
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		{
			// サービス契約内訳番号
			String svcKeiUcwkNo = JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_UCWK_NO));
			
			// サービス契約内訳TBLを検索します。
			JBSbatCommonDBInterface outMap094 = this.selectSvcKeiUcwk094(svcKeiUcwkNo);
			
			if (null != outMap094)
			{
				// サービス契約内訳.料金コースコードをセットします。
				outDataMap.setString(JBSbatKKIFM100.PCRS_CD, outMap094.getString(JBSbatKK_T_SVC_KEI_UCWK.PCRS_CD));
			}
		}
		// それ以外の場合、サービス契約TBLより料金コースコードを取得します。
		else
		{
			if (null != svcKeiNo && !"".equals(svcKeiNo))
			{
				String[] params = new String[]{svcKeiNo, super.opeDate};
				executeKK_T_SVC_KEI_KK_SELECT_095(params);
				JBSbatCommonDBInterface svcKeiMap = db_KK_T_SVC_KEI.selectNext();
				if (null != svcKeiMap)
				{
					outDataMap.setString(JBSbatKKIFM100.PCRS_CD,
							svcKeiMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
				}
			}
		}
		
		super.logPrint.printDebugLog("setSvcKeiUcwkInfo_END");
	}

	/**
	 * 入力電文から単純転送で設定する項目のデータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.データ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @param outDataMap 出力ファイルデータMAP
	 * @param kaisenPlaceNo 回線場所番号
	 * @param kisnPlcAdMiFixFlg 回線場所住所未確定フラグ
	 * @param outMap119 機器提供サービス契約TBL検索結果
	 * @throws Exception
	 */
	private void setOtf1FileInfo(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outDataMap,
			String kaisenPlaceNo, String kisnPlcAdMiFixFlg, JBSbatCommonDBInterface outMap119) throws Exception
	{
		// 配送先営業所工事会社コード
		outDataMap.setString(JBSbatKKIFM100.HISOS_BUIOFFC_KOJI_COMP_CD,
				JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.HISOS_BUIOFFC_KOJI_COMP_CD)));
		// 場所番号
		outDataMap.setString(JBSbatKKIFM100.PLACE_NO, kaisenPlaceNo);
		// 配送区分
		outDataMap.setString(JBSbatKKIFM100.HAISO_DIV,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.HAISO_DIV)));
		
		// 管理場所識別コード
		String kikiStiJiKriplaceSkcd = JBSbatStringUtil.Rtrim(
				outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_STI_JI_KRIPLACE_SKCD));
		
		// 管理場所識別コード=""の場合、"1"を設定
		if("".equals(kikiStiJiKriplaceSkcd))
		{
			// ++++++++++ v22.00.00 変更開始 +++++++++
//			outDataMap.setString(JBSbatKKIFM100.KANRI_PLACE_SKBT_CD, "1");
			outDataMap.setString(JBSbatKKIFM100.KANRI_PLACE_SKBT_CD, JBSbatKKConst.CD01527_KANRI_PLACE_SKBT_CD_1);
			// ++++++++++ v22.00.00 変更終了 +++++++++
		}
		else
		{
			outDataMap.setString(JBSbatKKIFM100.KANRI_PLACE_SKBT_CD, kikiStiJiKriplaceSkcd);
		}
		// 倉庫コード
		outDataMap.setString(JBSbatKKIFM100.SOKO_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_HKAT_SHITEI_SOKO_CD)));
		// 倉庫棚コード
		outDataMap.setString(JBSbatKKIFM100.SKDN_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_HKAT_SHITEI_SKDN_CD)));
		// 工事会社コード
		outDataMap.setString(JBSbatKKIFM100.KOCOMP_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_STI_JI_KOCOMP_CD)));
		// 工事会社棚コード
		outDataMap.setString(JBSbatKKIFM100.KOCOMP_SLF_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_STI_JI_KOCOMP_SLF_CD)));
		// 預託先オフィスコード
		outDataMap.setString(JBSbatKKIFM100.YTKSKOF_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_STI_JI_YTKSKOF_CD)));
		// 預託先オフィス棚コード
		outDataMap.setString(JBSbatKKIFM100.YTKSKOF_SLF_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_STI_JI_YTKSKOF_SLF_CD)));
		// 住所未確定フラグ
		outDataMap.setString(JBSbatKKIFM100.AD_MI_FIX_FLG, kisnPlcAdMiFixFlg);
		// 登録契機契約異動コード
		outDataMap.setString(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_CD,
				JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.KOJI_UK_OPTNTY_IDO_DIV)));
		// 通知書添付コード
		outDataMap.setString(JBSbatKKIFM100.TCHISHO_TEMP_CD, "");
		// 機器提供サービス契約番号
		outDataMap.setString(JBSbatKKIFM100.KKTK_SVC_KEI_NO,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO)));
		// 宅内機器種別コード
		outDataMap.setString(JBSbatKKIFM100.TAKNKIKI_SBT_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD)));
		// 宅内機器型式コード
		outDataMap.setString(JBSbatKKIFM100.TAKNKIKI_MODEL_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD)));
		// 宅内機器セット品型コード
		outDataMap.setString(JBSbatKKIFM100.TAKNKIKI_SETHIN_MODEL_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SETHIN_MODEL_CD)));
		// 申込明細番号
		outDataMap.setString(JBSbatKKIFM100.MSKM_DTL_NO,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.MSKM_DTL_NO)));
		// 工事案件番号
		outDataMap.setString(JBSbatKKIFM100.KOJIAK_NO,
				JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KJ_RSV_WK.KOJIAK_NO)));
		// 機器付加情報コード
		outDataMap.setString(JBSbatKKIFM100.KIKI_HUKA_INFO_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_HUKA_INFO_CD)));
		// 機器送付先個別指定フラグ
		// ++++++++++ v22.00.00 変更開始 +++++++++
//		outDataMap.setString(JBSbatKKIFM100.KIKI_SHS_KBT_SHITEI_FLG, "1");
		outDataMap.setString(JBSbatKKIFM100.KIKI_SHS_KBT_SHITEI_FLG, JBSbatKKConst.KKIFM100_KIKI_SHS_KBT_SHITEI_FLG_1);
		// ++++++++++ v22.00.00 変更終了 +++++++++
		// 機器送付先名
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_NM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_NM)));
		// 機器送付先住所コード
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_AD_CD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_AD_CD)));
		// 機器送付先郵便番号
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_PCD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_PCD)));
		// 機器送付先都道府県名
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_STATE_NM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_STATE_NM)));
		// 機器送付先市区町村名
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_CITY_NM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_CITY_NM)));
		// 機器送付先大字通称名
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_OAZTSU_NM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_OAZTSU_NM)));
		// 機器送付先字丁目名
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_AZCHO_NM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_AZCHO_NM)));
		// 機器送付先番地号
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_BNCHIGO,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_BNCHIGO)));
		// 機器送付先住所補記・建物名
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_ADRTTM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_ADRTTM)));
		// 機器送付先住所補記・部屋番号
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_ADRRM,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_ADRRM)));
		// 機器送付先電話番号
		outDataMap.setString(JBSbatKKIFM100.KIKI_SOHUS_TELNO,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SOHUS_TELNO)));
		// 機器変更番号
		outDataMap.setString(JBSbatKKIFM100.KIKI_CHG_NO,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO)));

		// 配送予定年月日
		outDataMap.setString(JBSbatKKIFM100.HAISO_RSV_YMD,
				JBSbatStringUtil.Rtrim(outMap119.getString(JBSbatKK_T_KKTK_SVC_KEI.HAISO_REQ_SHITEI_YMD)));
		
		// 共通部品「進捗.異動年月日時分秒取得」部品を使用し、進捗.異動年月日時分秒を取得します。
		// 工事案件．連携サービス契約番号
		String rnkiSvcKeiNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.RNKI_SVC_KEI_NO));
		
		// 工事案件．工事受付契機異動区分 
		String kojiUkOptntyIdoDiv = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KOJIAK.KOJI_UK_OPTNTY_IDO_DIV));
		
		super.logPrint.printDebugLog("連携サービス契約番号：" + rnkiSvcKeiNo);
		super.logPrint.printDebugLog("工事受付契機異動区分：" + kojiUkOptntyIdoDiv);
		
		// 登録契機契約異動年月日時分秒
		outDataMap.setString(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_DTM, 
				JKKBatCommon.getIdoDtmMax(commonItem, rnkiSvcKeiNo, kojiUkOptntyIdoDiv, stmt));
		
		String dohubtFlg = JBSbatStringUtil.Rtrim(inMap.getString("DOHUBT_MAKE_FLG"));
		
		// 同封物作成対象フラグ
		outDataMap.setString(JBSbatKKIFM100.DOHUBT_MAKE_FLG,dohubtFlg);
		
		//同封物作成対象の場合
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if("1".equals(dohubtFlg)){
		if(JBSbatKKConst.KKIFM100_DOHUBT_MAKE_FLG_1.equals(dohubtFlg)){
		// ++++++++++ v22.00.00 変更終了 ++++++++++
			
			
			// 変更機器製造番号の取得
			String chge_kiki_seizo_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.CHGE_KIKI_SEIZO_NO));
			
			// 予定機器製造番号の取得
			String rsv_kiki_seizo_no = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKU_T_KJAK_TG_TKKIKI.RSV_KIKI_SEIZO_NO));
			
			//変更機器変更番号が存在する場合
			if(chge_kiki_seizo_no.length() > 0) {
				// 機器製造番号：変更機器製造番号
				outDataMap.setString(JBSbatKKIFM100.KIKI_SEIZO_NO, chge_kiki_seizo_no);
			} else {
				// 機器製造番号：予定機器製造番号
				outDataMap.setString(JBSbatKKIFM100.KIKI_SEIZO_NO, rsv_kiki_seizo_no);
			}
		} else {
			outDataMap.setString(JBSbatKKIFM100.KIKI_SEIZO_NO,"");
		}

		


	}

	/**
	 * ソート処理後のデータファイルを出力します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.抽出データ読み込み処理。
	 * 2.データソート処理。
	 * 3.ソート後データ出力処理。
	 * </pre>
	 * <p>
	 * @throws Exception
	 */
	private void outFileSort() throws Exception
	{
		// 読み込んだデータをソート
		ArrayList<String> outMap = sortDataList(outputItem.getOutMapList());

		// 出力ファイル名を設定し、ソート後のデータを出力
		String outFileName = this.otf1FileName;
		JBSbatOutputFileUtil outFileObj = null;
		if (null != outFileName && !"".equals(outFileName))
		{
			outFileObj = new JBSbatOutputFileUtil(outFileName);
			outFileObj.setEncode(JKKBatConst.SJIS);
			outFileObj.setLine(CRLF);
			outFileObj.createWriter();
			for (String line : outMap) {
				// データをファイルに出力
				outFileObj.write(line);
			}
			outFileObj.close();
		}
	}

	/**
	 * データのソート処理を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.ソート対象データ取得処理。
	 * 2.ソート処理。
	 * </pre>
	 * <p>
	 * @param inArr ソート対象データリスト
	 * @return outData ソート後データリスト
	 * @throws Exception
	 */
	private ArrayList<String> sortDataList(ArrayList inArr) throws Exception
	{
		// ソート用データリスト
		ArrayList<HashMap<String, Comparable>> sortList = new ArrayList<HashMap<String, Comparable>>();
		// ファイル出力データ
		ArrayList<String> outData = new ArrayList<String>();
		super.logPrint.printDebugLog("sortDataList====>" + inArr.size() + "<======");

		// ソート対象データを設定
		for (int i = 0 ; i < inArr.size() ; i++)
		{
			HashMap<String, Comparable> dataMap = new HashMap<String, Comparable>();
			
			JBSbatServiceInterfaceMap map = (JBSbatServiceInterfaceMap)inArr.get(i);
			
			dataMap.put(JBSbatKKIFM100.SVC_KEI_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.SVC_KEI_NO)));									// サービス契約番号

			dataMap.put(JBSbatKKIFM100.HISOS_BUIOFFC_KOJI_COMP_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.HISOS_BUIOFFC_KOJI_COMP_CD)));	// 配送先営業所工事会社コード

			dataMap.put(JBSbatKKIFM100.PLACE_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.PLACE_NO)));										// 場所番号

			dataMap.put(JBSbatKKIFM100.HAISO_DIV, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.HAISO_DIV)));										// 配送区分

			dataMap.put(JBSbatKKIFM100.KANRI_PLACE_SKBT_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KANRI_PLACE_SKBT_CD))); 				// 管理場所識別コード

			dataMap.put(JBSbatKKIFM100.SOKO_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.SOKO_CD)));											// 倉庫コード

			dataMap.put(JBSbatKKIFM100.SKDN_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.SKDN_CD)));											// 倉庫棚コード

			dataMap.put(JBSbatKKIFM100.KOCOMP_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KOCOMP_CD)));										// 工事会社コード

			dataMap.put(JBSbatKKIFM100.KOCOMP_SLF_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KOCOMP_SLF_CD)));								// 工事会社棚コード

			dataMap.put(JBSbatKKIFM100.YTKSKOF_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.YTKSKOF_CD)));									// 預託先オフィスコード

			dataMap.put(JBSbatKKIFM100.YTKSKOF_SLF_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.YTKSKOF_SLF_CD)));							// 預託先オフィス棚コード

			dataMap.put(JBSbatKKIFM100.AD_MI_FIX_FLG, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.AD_MI_FIX_FLG)));								// 住所未確定フラグ

			dataMap.put(JBSbatKKIFM100.MSKM_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.MSKM_NO)));											// 申込番号

			dataMap.put(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_CD)));				// 登録契機契約異動コード

			dataMap.put(JBSbatKKIFM100.TCHISHO_TEMP_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.TCHISHO_TEMP_CD)));							// 通知書添付コード

			dataMap.put(JBSbatKKIFM100.KKTK_SVC_KEI_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KKTK_SVC_KEI_NO)));							// 機器提供サービス契約番号

			dataMap.put(JBSbatKKIFM100.TAKNKIKI_SBT_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.TAKNKIKI_SBT_CD)));							// 宅内機器種別コード

			dataMap.put(JBSbatKKIFM100.TAKNKIKI_MODEL_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.TAKNKIKI_MODEL_CD)));						// 宅内機器型式コード

			dataMap.put(JBSbatKKIFM100.TAKNKIKI_SETHIN_MODEL_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.TAKNKIKI_SETHIN_MODEL_CD)));		// 宅内機器セット品型コード

			dataMap.put(JBSbatKKIFM100.MSKM_DTL_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.MSKM_DTL_NO)));									// 申込明細番号

			dataMap.put(JBSbatKKIFM100.MSKMSHO_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.MSKMSHO_NO)));									// 申込書番号

			dataMap.put(JBSbatKKIFM100.KOJIAK_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KOJIAK_NO)));										// 工事案件番号

			dataMap.put(JBSbatKKIFM100.PCRS_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.PCRS_CD)));											// 料金コースコード

			dataMap.put(JBSbatKKIFM100.KIKI_HUKA_INFO_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_HUKA_INFO_CD)));						// 機器付加情報コード

			dataMap.put(JBSbatKKIFM100.KIKI_SHS_KBT_SHITEI_FLG, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SHS_KBT_SHITEI_FLG)));			// 機器送付先個別指定フラグ

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_NM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_NM)));								// 機器送付先名

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_AD_CD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_AD_CD)));						// 機器送付先住所コード

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_PCD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_PCD)));							// 機器送付先郵便番号

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_STATE_NM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_STATE_NM)));					// 機器送付先都道府県名

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_CITY_NM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_CITY_NM)));					// 機器送付先市区町村名

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_OAZTSU_NM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_OAZTSU_NM)));				// 機器送付先大字通称名

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_AZCHO_NM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_AZCHO_NM)));					// 機器送付先字丁目名

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_BNCHIGO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_BNCHIGO)));					// 機器送付先番地号

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_ADRTTM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_ADRTTM)));						// 機器送付先住所補記・建物名

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_ADRRM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_ADRRM)));						// 機器送付先住所補記・部屋番号

			dataMap.put(JBSbatKKIFM100.KIKI_SOHUS_TELNO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SOHUS_TELNO)));						// 機器送付先電話番号

			dataMap.put(JBSbatKKIFM100.KIKI_CHG_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_CHG_NO)));									// 機器変更番号
			
			dataMap.put(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_DTM, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_DTM)));			// 登録契機契約異動年月日時分秒
			
			dataMap.put(JBSbatKKIFM100.DOHUBT_MAKE_FLG, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.DOHUBT_MAKE_FLG)));			// 同封物作成対象フラグ
			
			dataMap.put(JBSbatKKIFM100.KIKI_SEIZO_NO, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.KIKI_SEIZO_NO)));			// 機器製造番号
			
			dataMap.put(JBSbatKKIFM100.HAISO_RSV_YMD, JBSbatStringUtil.Rtrim(map.getString(JBSbatKKIFM100.HAISO_RSV_YMD)));			// 配送予定年月日
			sortList.add(dataMap);
		}
		
		// ソート処理
		Collections.sort(sortList, new Comparator<Object>()
		{
			/**
			 * ソート処理
			 * @param arg0
			 * @param arg1
			 * @return int
			 */
			public int compare(Object arg0, Object arg1)
			{
				String[] sort_keys = {};
				HashMap<String, Comparable> kbt = (HashMap<String, Comparable>)arg0;
				sort_keys = SORT_KEYS_1;
				
				for (String key : sort_keys)
				{
					HashMap<String, Comparable> o1 = (HashMap<String, Comparable>)arg0;
					HashMap<String, Comparable> o2 = (HashMap<String, Comparable>)arg1;
					
					Comparable c1 = o1.get(key);
					Comparable c2 = o2.get(key);
					int check = c1.compareTo(c2);
					if (0 != check)
					{
						return check;
					}
				}
				return 0;
			}
		});

		// 出力ファイル用にデータを設定
		for (int i = 0 ; i < sortList.size() ; i++)
		{
			StringBuffer databuf = new StringBuffer();
			HashMap<String, Comparable> outMap = sortList.get(i);

			databuf.append(outMap.get(JBSbatKKIFM100.SVC_KEI_NO));					// サービス契約番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.HISOS_BUIOFFC_KOJI_COMP_CD));	// 配送先営業所工事会社コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.PLACE_NO));					// 場所番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.HAISO_DIV));					// 配送区分
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KANRI_PLACE_SKBT_CD)); 		// 管理場所識別コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.SOKO_CD));						// 倉庫コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.SKDN_CD));						// 倉庫棚コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KOCOMP_CD));					// 工事会社コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KOCOMP_SLF_CD));				// 工事会社棚コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.YTKSKOF_CD));					// 預託先オフィスコード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.YTKSKOF_SLF_CD));				// 預託先オフィス棚コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.AD_MI_FIX_FLG));				// 住所未確定フラグ
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.MSKM_NO));						// 申込番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_CD));		// 登録契機契約異動コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.TCHISHO_TEMP_CD));				// 通知書添付コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KKTK_SVC_KEI_NO));				// 機器提供サービス契約番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.TAKNKIKI_SBT_CD));				// 宅内機器種別コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.TAKNKIKI_MODEL_CD));			// 宅内機器型式コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.TAKNKIKI_SETHIN_MODEL_CD));	// 宅内機器セット品型コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.MSKM_DTL_NO));					// 申込明細番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.MSKMSHO_NO));					// 申込書番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KOJIAK_NO));					// 工事案件番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.PCRS_CD));						// 料金コースコード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_HUKA_INFO_CD));			// 機器付加情報コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SHS_KBT_SHITEI_FLG));		// 機器送付先個別指定フラグ
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_NM));				// 機器送付先名
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_AD_CD));			// 機器送付先住所コード
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_PCD));				// 機器送付先郵便番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_STATE_NM));			// 機器送付先都道府県名
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_CITY_NM));			// 機器送付先市区町村名
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_OAZTSU_NM));		// 機器送付先大字通称名
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_AZCHO_NM));			// 機器送付先字丁目名
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_BNCHIGO));			// 機器送付先番地号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_ADRTTM));			// 機器送付先住所補記・建物名
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_ADRRM));			// 機器送付先住所補記・部屋番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SOHUS_TELNO));			// 機器送付先電話番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_CHG_NO));					// 機器変更番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.ADD_OPTNTY_KEI_IDO_DTM));		// 登録契機契約異動年月日時分秒
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.DOHUBT_MAKE_FLG));				// 同封物作成対象フラグ
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.KIKI_SEIZO_NO));				// 機器製造番号
			databuf.append(JKKBatConst.S_SEP_CAM);
			databuf.append(outMap.get(JBSbatKKIFM100.HAISO_RSV_YMD));				// 配送予定年月日
			outData.add(databuf.toString());
		}

		return outData;
	}

	/**
	 * サービス契約の申込書明細番号を取得します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス契約の申込明細番号取得処理。
	 * </pre>
	 * <p>
	 * @param inMap　入力電文
	 * @param svcKeiKaisenUcwkNo サービス契約回線内訳番号
	 * @return String 申込明細番号
	 * @throws Exception
	 */
	private String getMskmDtlNo(JBSbatServiceInterfaceMap inMap, String svcKeiKaisenUcwkNo) throws Exception
	{
		String[] params = new String[]{svcKeiKaisenUcwkNo, super.opeDate, super.opeDate, super.opeDate};
		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_016(params);
		JBSbatCommonDBInterface resultMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		if(null != resultMap)
		{
			// レコード存在チェック
			boolean result = isExistCheckKK_T_SVKEI_KAISEN_UW_KK_SELECT_016(resultMap, null);
			if(!result)
			{
				return null;
			}
			// 単項目チェック
			result = isSingleCheckKK_T_SVKEI_KAISEN_UW_KK_SELECT_016(resultMap.getMap(), getItemvalueMap());
			if(!result)
			{
				return null;
			}

			// 申込明細番号を返却
			return resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.MSKM_DTL_NO);
		}

		return null;
	}
	
	/**
	 * サービス契約回線内訳情報DBアクセス時のエラーメッセージ埋込み文字を設定します。
	 * <BR>
	 * @return itemValueMap エラーメッセージ埋込み文字Map
	 */
	@SuppressWarnings("unchecked")
	private HashMap getItemvalueMap()
	{
		HashMap<String, String> itemValueMap = new HashMap<String, String>();
		itemValueMap.put("DB-KK_T_KKTK_SVC_KEI-.MSKM_DTL_NO", "サービス契約.回線場所番号");
		return itemValueMap;
	}
	
	/**
	 * 機器提供サービス契約TBLの検索を行います。(KK_SELECT_119)
	 * <br>
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kkChgNo 機器変更番号
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectKktkSvcKei119(String kktkSvcKeiNo, String kkChgNo) throws Exception
	{
		// 機器提供サービス契約TBLを検索し、世代のMAXを取得します。
		// 機器提供サービス契約TBL検索条件項目を設定します。
		Object[] paramList = new Object[2];
		
		paramList[0] = kktkSvcKeiNo;		// 機器提供サービス契約番号
		paramList[1] = kkChgNo;				// 機器変更番号
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		
		// 機器提供サービス契約情報検索処理を実行します。
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_119(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_KKTK_SVC_KEI.selectNext();
		
		return outDbMap;
	}
	
	/**
	 * 配送、配送対象物品TBLの検索を行います。(KK_SELECT_009)
	 * <br>
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kkChgNo 機器変更番号
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectHaiso009(String kktkSvcKeiNo, String kkChgNo) throws Exception
	{
		super.logPrint.printDebugLog("selectHaiso009_START");
		
		// 配送、配送対象物品TBLを検索します。
		// 配送、配送対象物品TBL検索条件項目を設定します。
		Object[] paramList = new Object[2];
		
		paramList[0] = kktkSvcKeiNo;		// 機器提供サービス契約番号
		paramList[1] = kkChgNo;				// 機器変更番号
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		
		// 配送、配送対象物品情報検索処理を実行します。
		executeDK_T_HAISO_KK_SELECT_009(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_DK_T_HAISO.selectNext();
		
		super.logPrint.printDebugLog("selectHaiso009_END");
		return outDbMap;
	}
	
	/**
	 * 配送、配送対象物品TBLの検索を行います。(KK_SELECT_009)
	 * <br>
	 * @param kojiakNo 工事案件番号
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param kkChgNo 機器変更番号
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectHaiso012(String kktkSvcKeiNo, String kkChgNo) throws Exception
	{
		super.logPrint.printDebugLog("selectHaiso012_START");
		
		// 配送、配送対象物品TBLを検索します。
		// 配送、配送対象物品TBL検索条件項目を設定します。
		Object[] paramList = new Object[2];

		paramList[0] = kktkSvcKeiNo;		// 機器提供サービス契約番号
		paramList[1] = kkChgNo;				// 機器変更番号
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		
		// 配送、配送対象物品情報検索処理を実行します。
		executeDK_T_HAISO_KK_SELECT_012(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_DK_T_HAISO.selectNext();
		
		super.logPrint.printDebugLog("selectHaiso012_END");
		return outDbMap;
	}
	
	/**
	 * サービス契約内訳TBLの検索を行います。(KK_SELECT_094)
	 * <br>
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectSvcKeiUcwk094(String svcKeiUcwkNo) throws Exception
	{
		super.logPrint.printDebugLog("selectSvcKeiUcwk094_START");
		
		// サービス契約内訳TBLを検索します。
		// サービス契約内訳TBL検索条件項目を設定します。
		Object[] paramList = new Object[2];
		
		paramList[0] = svcKeiUcwkNo;		// サービス契約内訳番号
		paramList[1] = super.opeDate;		// 予約適用年月日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		
		// サービス契約内訳情報検索処理を実行します。
		executeKK_T_SVC_KEI_UCWK_KK_SELECT_094(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_SVC_KEI_UCWK.selectNext();
		
		super.logPrint.printDebugLog("selectSvcKeiUcwk094_END");
		return outDbMap;
	}
}
