/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKMskmInfFileSaksei
*	ソースファイル名	：JBSbatKKMskmInfFileSaksei.java
*	作成者				：富士通　
*	作成日				：2012年05月15日
*＜機能概要＞
*　申込情報ファイル作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/05/17  FJ)藤本		新規作成
*	v3.01.00	2012/08/03  FJ)藤本		【IT1-2012-0000920】回線場所住所確定フラグの設定修正
*	v3.02.00	2012/08/10  FJ)藤本		【ST2-2012-0001503】住所部品の戻り値のNullチェック追加
*	v3.03.00	2012/09/23  FJ)藤本		【ST2-2012-0000628】運用日の前日を抽出するように修正
*	v3.04.00	2012/10/26  FJ)藤本		【ST1-2012-0000713】運用日で抽出するように修正
*	v4.00.00	2013/01/17  FJ)団		【ST3-2012-0000386】KCNSTB種類コードの設定内容を修正
*                                       【ST2-2013-0000113】連携ファイル制御で範囲指定するよう修正
*	v4.01.00	2013/01/22  FJ)中作	    【ST1-2013-0000172】障害対応
*	v4.02.00	2013/01/25  FJ)団		【IT1-2013-0000151】障害対応
*	v4.03.00	2013/03/22  FJ)柳		【IT1-2013-0000498】対応
*	v4.04.00	2013/03/26  FJ)藤本		【ST1-2013-0000499】対応
*	v5.00.00	2013/04/12  FJ)藤本		【IT1-2013-0000890】障害対応
*   v5.00.01	2013/05/16  FJ)神田		【IT1-2013-0001200】障害対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFE177001;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_CUST_KOJIN;
import eo.business.util.table.JBSbatCK_T_HOJIN_RRKS;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_T_MSKM;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_RNKI_FILE_CTRL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JZMAdOutputEdit;
import eo.framework.application.JBSbatBusinessException;
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.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKMskmInfFileSaksei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(回線対象サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KAISEN_TG_SVKEI = "KK_T_KAISEN_TG_SVKEI";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(申込明細)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(連携ファイル制御)*/
	private static final String D_TBL_NAME_KK_T_RNKI_FILE_CTRL = "KK_T_RNKI_FILE_CTRL";

	/** SQL定義キー(KK_SELECT_164)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_164 = "KK_SELECT_164";

	/** SQL定義キー(KK_SELECT_017)*/
	private static final String KK_T_KAISEN_TG_SVKEI_KK_SELECT_017 = "KK_SELECT_017";

	/** SQL定義キー(KK_SELECT_009)*/
	private static final String CK_T_CUST_KK_SELECT_009 = "KK_SELECT_009";

	/** SQL定義キー(KK_SELECT_010)*/
	private static final String CK_T_CUST_KK_SELECT_010 = "KK_SELECT_010";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_T_KAISEN_TG_SVKEI_KK_SELECT_011 = "KK_SELECT_011";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_T_MSKM_DTL_KK_SELECT_011 = "KK_SELECT_011";

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(回線対象サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KAISEN_TG_SVKEI = null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(申込明細)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(連携ファイル制御)*/
	private JBSbatSQLAccess db_KK_T_RNKI_FILE_CTRL = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 物理バッチID（KKPRC01601）*/
	private static final String BAT_ID = "KKPRC01601";
	
	/** ファイルID（KKIFE044）*/
	private static final String FILE_ID = "KKIFE044  ";
	
	/** 申込情報データ件数 */
	private int data_cnt = 0;

	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_KAISEN_TG_SVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAISEN_TG_SVKEI);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_KK_T_RNKI_FILE_CTRL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_RNKI_FILE_CTRL);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		JBSbatCommonDBInterface db_map = null;
		String znkiJssiDate = "";

		// 連携ファイル制御を検索します。
		String[] para1 = {BAT_ID, FILE_ID};
		db_map = executeKK_T_RNKI_FILE_CTRL_PKSELECT(para1);
		// 前回実施日が取得できた場合
		if (null != db_map)
		{
			String znkiJssiTimestamp = JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_RNKI_FILE_CTRL.ZNKI_TRAN_RUN_DTM));
			try{
				// バッチ運用日と同日でない場合、先頭8桁を「前回運用日」とします。
				if (!super.opeDate.equals(znkiJssiTimestamp.substring(0, 8)))
				{
					znkiJssiDate = znkiJssiTimestamp.substring(0, 8);
				}
				// バッチ運用日と同日の場合、バッチ運用日-1日を「前回運用日」とします。
				else
				{
					znkiJssiDate = JBSbatDateUtil.adjustDate(super.opeDate, -1);
				}
			} catch (Exception e) {
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0090TE, new String[] {"ZNKI_TRAN_RUN_DTM:" + znkiJssiTimestamp});
			}
		
			
		}
		// 前回実施日が取得できなかった場合、バッチ運用日-1日を「前回運用日」とします。
		else
		{
			znkiJssiDate = JBSbatDateUtil.adjustDate(super.opeDate, -1);
		}
		// 対象となるサービス契約の検索を行います。
		String[] para2 = {super.opeDate, znkiJssiDate, super.opeDate, super.opeDate};
		this.executeKK_T_SVC_KEI_KK_SELECT_164(para2);
		JBSbatCommonDBInterface svkeiResult = db_KK_T_SVC_KEI.selectNext();
		if(null == svkeiResult)
		{
			super.logPrint.printDebugLog("申込年月日＞＝「" + znkiJssiDate + "」、申込年月日＜＝「" + super.opeDate + "」のWeb申込情報の検索結果がありませんでした。");
		}
		else
		{
			while(null != svkeiResult)
			{
		
				// 初期検索結果よりSYSIDを取得する。
				String sysid = JBSbatStringUtil.Rtrim(svkeiResult.getString(JBSbatKK_T_SVC_KEI.SYSID));
				
				// 初期検索結果よりサービス契約番号を取得する。
				String svc_kei_no = JBSbatStringUtil.Rtrim(svkeiResult.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
				
				// お客様（個人）の情報を抽出する。
				boolean isCustKojin = true;
				String[] param2 = {sysid, super.opeDate, sysid, super.opeDate};
				this.executeCK_T_CUST_KK_SELECT_009(param2);
				JBSbatCommonDBInterface custMap = db_CK_T_CUST.selectNext();
				
				// お客様（個人）の検索結果がない場合、お客様（法人）の抽出処理を行う。
				if(null == custMap)
				{
					isCustKojin = false;
					this.executeCK_T_CUST_KK_SELECT_010(param2);
					custMap = db_CK_T_CUST.selectNext();
				}
				
				// お客様の検索結果がある場合
				if(null != custMap)
				{
					// サービス契約回線内訳の情報を抽出する。
					String[] param1 = {svc_kei_no, super.opeDate};
					this.executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_017(param1);
					JBSbatCommonDBInterface kaisenSvkeiMap = db_KK_T_KAISEN_TG_SVKEI.selectNext();
					
					// 出力ファイルクラスを生成する。
					JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
					
					// お客様データの設定を行う。
					this.setDataCustInf(outmap, svkeiResult, custMap, isCustKojin);
					
					// サービス契約回線内訳の検索結果があれば設定を行う。
					if(null != kaisenSvkeiMap)
					{
						this.setDataKaisenInf(outmap, kaisenSvkeiMap);
					}
					
					data_cnt ++;
					
					// 出力フラグを設定
					outmap.setOutFlg(true);
					
					// 出力共通電文に入出力インターフェースを設定する。
					outputBean.addOutMapList(outmap);
				}
				else
				{
					// 業務エラーログ出力
					super.logPrint.printDebugLog("お客様テーブルにSYSID：" + sysid + "が存在しません。");
				}
				svkeiResult = db_KK_T_SVC_KEI.selectNext();
			}
		}
		
		// ファイル連携制御更新
		upDateRnkiFileCtrl();
		
		super.logPrint.printDebugLog("execute_END");
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		
		// 申込情報件数ファイルオブジェクト取得
		JBSbatOutputFileUtil outMap2 = super.commonItem.getOutPutFile2();
		
		// 該当レコード件数を設定
		outMap2.write("\"" + data_cnt + "\"");
		
		// フラグファイル出力パスを取得します。
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		String file_path = free_item[0];
		
		String file_name = "申込情報ファイル送信フラグ";
		
		// フラグファイルを出力します。
		executeOutputFile("", file_path, file_name);
		
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI.close();
		db_KK_T_KAISEN_TG_SVKEI.close();
		db_CK_T_CUST.close();
		db_KK_T_MSKM_DTL.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_T_RNKI_FILE_CTRL.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_164)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	KCN連携異動区分変換適用開始終了年月日
	 *		 	申込年月日
	 *		 	申込年月日
	 *		 	予約適用年月
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_164(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_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_164);
	}

	/**
	 * SQLKEY(KK_SELECT_017)で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_KAISEN_TG_SVKEI_KK_SELECT_017(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KAISEN_TG_SVKEI.selectBySqlDefine(paramList, KK_T_KAISEN_TG_SVKEI_KK_SELECT_017);
	}

	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *		 	RSV_APLY_YMD
	 *		 	SYSID
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_009(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_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_009);
	}

	/**
	 * SQLKEY(KK_SELECT_010)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 *		 	RSV_APLY_YMD
	 *		 	SYSID
	 *		 	RSV_APLY_YMD
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_010(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_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_010);
	}

	/**
	 * SQLKEY(KK_SELECT_011)で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_KAISEN_TG_SVKEI_KK_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_KAISEN_TG_SVKEI.selectBySqlDefine(paramList, KK_T_KAISEN_TG_SVKEI_KK_SELECT_011);
	}

	/**
	 * SQLKEY(KK_SELECT_011)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	MSKM_DTL_NO
	 *		 	MSKM_DTL_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KK_SELECT_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KK_SELECT_011);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	CD_SBT_CD
	 *		 	CD_DIV
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeZM_M_CD_NM_KANRI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("CD_SBT_CD", whereParam[0]);
		whereMap.setValue("CD_DIV", whereParam[1]);

		// DBアクセスを実行します
		return db_ZM_M_CD_NM_KANRI.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	BUTSURI_BAT_ID
	 *		 	FILE_ID
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_RNKI_FILE_CTRL_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("BUTSURI_BAT_ID", whereParam[0]);
		whereMap.setValue("FILE_ID", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_RNKI_FILE_CTRL.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	物理バッチＩＤ				BUTSURI_BAT_ID
	 *		 	ファイルＩＤ				FILE_ID
	 *		 	処理済ファイル通番				TRAN_ZUMI_FILE_SEQ
	 *		 	前回処理実行年月日時分秒				ZNKI_TRAN_RUN_DTM
	 *		 	登録年月日時分秒				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_RNKI_FILE_CTRL_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("BUTSURI_BAT_ID", setParam[0]);
		setMap.setValue("FILE_ID", setParam[1]);
		setMap.setValue("TRAN_ZUMI_FILE_SEQ", setParam[2]);
		setMap.setValue("ZNKI_TRAN_RUN_DTM", setParam[3]);
		setMap.setValue("ADD_DTM", setParam[4]);
		setMap.setValue("ADD_OPEACNT", setParam[5]);
		setMap.setValue("UPD_DTM", setParam[6]);
		setMap.setValue("UPD_OPEACNT", setParam[7]);
		setMap.setValue("DEL_DTM", setParam[8]);
		setMap.setValue("DEL_OPEACNT", setParam[9]);
		setMap.setValue("MK_FLG", setParam[10]);
		setMap.setValue("ADD_UNYO_YMD", setParam[11]);
		setMap.setValue("ADD_TRN_ID", setParam[12]);
		setMap.setValue("UPD_UNYO_YMD", setParam[13]);
		setMap.setValue("UPD_TRN_ID", setParam[14]);
		setMap.setValue("DEL_UNYO_YMD", setParam[15]);
		setMap.setValue("DEL_TRN_ID", setParam[16]);
	
		// DBアクセスを実行します
		db_KK_T_RNKI_FILE_CTRL.insertByPrimaryKeys(setMap);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	処理済ファイル通番				TRAN_ZUMI_FILE_SEQ
	 *		 	前回処理実行年月日時分秒				ZNKI_TRAN_RUN_DTM
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	BUTSURI_BAT_ID
	 *		 	FILE_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @return int 件数
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private int executeKK_T_RNKI_FILE_CTRL_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("TRAN_ZUMI_FILE_SEQ", setParam[0]);
		setMap.setValue("ZNKI_TRAN_RUN_DTM", setParam[1]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("BUTSURI_BAT_ID", whereParam[0]);
		whereMap.setValue("FILE_ID", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_RNKI_FILE_CTRL.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 申込情報ファイルの作成を行います。<br>
	 * <p>
	 * @param outmap 出力ファイルクラス
	 * @param svcKeiMap サービス契約初期検索結果
	 * @param custMap お客様検索結果
	 * @param isCustKojin true：お客様個人　false：お客様法人
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setDataCustInf(JBSbatServiceInterfaceMap outmap,
									JBSbatCommonDBInterface svcKeiMap,
									JBSbatCommonDBInterface custMap, boolean isCustKojin)
									throws Exception
	{
		// コード名称管理検索用変数の初期化
		JBSbatCommonDBInterface cdNmMap = null;
		String[] whereParam = new String[2];
		
		// サービス契約番号
		outmap.setString(JBSbatKKIFE177001.SVC_KEI_NO, JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		// コース
		outmap.setString(JBSbatKKIFE177001.COURSE, this.getCourse(svcKeiMap));
		// 申込年月日
		outmap.setString(JBSbatKKIFE177001.MSKM_YMD, JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_YMD)));
		
		// 個人、法人の各項目の変数の初期化
		// 契約者タイプ
		String keisha_type = "";
		// 契約者郵便番号
		String keisha_pcd = "";
		// 契約者住所
		String keisha_ad = "";
		// 代表者カナ名
		String daihyo_kana = "";
		// 代表者名
		String daihyo_nm = "";
		// 性別
		String sex = "";
		// 生年月日
		String birthd = "";
		// 親権者カナ名
		String sksha_kana = "";
		// 親権者名
		String sksha_nm = "";
		// 親権者生年月日
		String sksha_birthd = "";
		// 親権者続柄
		String sksha_zokugara = "";
		// 続柄その他
		String sksha_zokugara_ta = "";
		
		// 個人の情報の場合
		if(isCustKojin)
		{
			keisha_type = "個人";
			keisha_pcd = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_PCD));
			
			// お客様の「契約者都道府県名」＋「契約者市区町村名」＋「契約者大字通称名」＋「契約者字丁目名」＋
			// 			「契約者番地号」＋「契約者住所補記・建物名」＋「契約者住所補記・部屋番号」
			keisha_ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM)));
			
			// お客様性別コードで名称管理を検索し該当するコード区分名を取得する。
			whereParam[0] = "CD00245";
			whereParam[1] = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.CUST_SEX_CD));
			cdNmMap = this.executeZM_M_CD_NM_KANRI_PKSELECT(whereParam);
			if(null != cdNmMap)
			{
				sex = JBSbatStringUtil.Rtrim(cdNmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			}
			
			birthd = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.CUST_BIRTHD));
			sksha_kana = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_KANA));
			sksha_nm = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_NM));
			sksha_birthd = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_BIRTHD));
			
			// 親権者続柄コードで名称管理を検索し該当するコード区分名を取得する。
			String sksha_zokugara_cd = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_ZOKUGARA_CD));
			whereParam[0] = "CD00608";
			whereParam[1] = sksha_zokugara_cd;
			cdNmMap = this.executeZM_M_CD_NM_KANRI_PKSELECT(whereParam);
			if(null != cdNmMap)
			{
				String cd_div_nm = JBSbatStringUtil.Rtrim(cdNmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
				
				// 親権者続柄コードが「5：その他」の場合
				if("5".equals(sksha_zokugara_cd))
				{
					sksha_zokugara_ta = cd_div_nm;
				}
				else
				{
					sksha_zokugara = cd_div_nm;
				}
			}
		}
		else
		{
			keisha_type = "法人";
			// 郵便番号 ← お客様．契約者郵便番号
			keisha_pcd = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_PCD));
			
			// 住所 ← お客様の「契約者都道府県名」+「契約者市区町村名」+「契約者大字通称名」+「契約者字丁目名」+
			// 			「契約者番地号」+「契約者住所補記・建物名」+「契約者住所補記・部屋番号」を設定。(121桁を超える場合はカットする)
			keisha_ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM)),
													JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM)));
			
			super.logPrint.printDebugLog("郵便番号--->" + keisha_pcd);
			
			super.logPrint.printDebugLog("住所--->" + keisha_ad);
			
			daihyo_kana = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_HOJIN_RRKS.HJRRKS_TNTSHA_KANA));
			daihyo_nm = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_HOJIN_RRKS.HJRRKS_TNTSHA_NM));
		}
		
		// 契約者タイプ
		outmap.setString(JBSbatKKIFE177001.KEISHA_TYPE, keisha_type);
		
		// 契約者電話番号
		outmap.setString(JBSbatKKIFE177001.KEISHA_TELNO, JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_RRKS.TELNO)));
		// 契約者郵便番号
		outmap.setString(JBSbatKKIFE177001.KEISHA_PCD, keisha_pcd);
		// 契約者住所
		if(121 < JBSbatStringUtil.Rtrim(keisha_ad).length())
		{
			keisha_ad = keisha_ad.substring(0, 121);
		}
		outmap.setString(JBSbatKKIFE177001.KEISHA_AD, keisha_ad);
		// 契約者名カナ
		String keisha_kana = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.CUST_KANA));
		if(45 < keisha_kana.length())
		{
			keisha_kana = keisha_kana.substring(0, 45);
		}
		outmap.setString(JBSbatKKIFE177001.KEISHA_KANA, keisha_kana);
		// 契約者名
		String keisha_nm = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.CUST_NM));
		if(45 < keisha_nm.length())
		{
			keisha_nm = keisha_nm.substring(0, 45);
		}
		outmap.setString(JBSbatKKIFE177001.KEISHA_NM, keisha_nm);
		// 代表者カナ名
		outmap.setString(JBSbatKKIFE177001.DAIHYO_KANA, daihyo_kana);
		// 代表者名
		outmap.setString(JBSbatKKIFE177001.DAIHYO_NM, daihyo_nm);
		// 性別
		outmap.setString(JBSbatKKIFE177001.SEX, sex);
		// 生年月日
		outmap.setString(JBSbatKKIFE177001.BIRTHD, birthd);
		// 優先連絡先電話番号
		outmap.setString(JBSbatKKIFE177001.YUSEN_RRKS_TELNO, JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_MSKM.MSKM_RRKS_TELNO)));
		// 親権者カナ名
		outmap.setString(JBSbatKKIFE177001.SKSHA_KANA, sksha_kana);
		// 親権者名
		outmap.setString(JBSbatKKIFE177001.SKSHA_NM, sksha_nm);
		// 親権者生年月日
		outmap.setString(JBSbatKKIFE177001.SKSHA_BIRTHD, sksha_birthd);
		// 親権者続柄
		outmap.setString(JBSbatKKIFE177001.SKSHA_ZOKUGARA, sksha_zokugara);
		// 続柄その他
		outmap.setString(JBSbatKKIFE177001.SKSHA_ZOKUGARA_TA, sksha_zokugara_ta);
		
		// ｅｏ光テレビチューナー利用台数〜ｅｏ光テレビチューナー種類５を設定
		this.setEoHikariTunerInf(svcKeiMap, outmap);
		
		// 関西電力お客様情報授受同意有無より名称を判定する。
		String kepco_custinfo_juju_doi_um = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_MSKM.KEPCO_CUSTINFO_JUJU_DOI_UM));
		String kepco_custinfo_juju_doi = "";
		if("1".equals(kepco_custinfo_juju_doi_um))
		{
			kepco_custinfo_juju_doi = "同意する";
		}
		else if("0".equals(kepco_custinfo_juju_doi_um))
		{
			kepco_custinfo_juju_doi = "同意しない";
		}
		
		// 関西電力お客様情報授受同意
		outmap.setString(JBSbatKKIFE177001.KEPCO_CUSTINFO_JUJU_DOI, kepco_custinfo_juju_doi);
	}
	
	
	/**
	 * 出力ファイルに回線情報のデータを設定します。<br>
	 * <p>
	 * @param outmap 出力ファイルクラス
	 * @param kaisenSvkeiMap サービス契約回線内訳検索結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setDataKaisenInf(JBSbatServiceInterfaceMap outmap, JBSbatCommonDBInterface kaisenSvkeiMap) throws Exception
	{
		// コード名称管理検索用変数の初期化
		JBSbatCommonDBInterface cdNmMap = null;
		String[] whereParam = new String[2];
		
		// 利用場所電話番号
		outmap.setString(JBSbatKKIFE177001.USE_PLACE_TELNO, JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_TELNO)));
		// 利用場所郵便番号
		outmap.setString(JBSbatKKIFE177001.USE_PLACE_PCD, JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));
		// 利用場所住所
		String use_place_ad = JZMAdOutputEdit.getPtn01(JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM)),
														JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM)),
														JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM)),
														JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM)),
														JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO)),
														JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM)),
														JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM)));
		
		if(121 < JBSbatStringUtil.Rtrim(use_place_ad).length())
		{
			use_place_ad = use_place_ad.substring(0, 121);
		}
		outmap.setString(JBSbatKKIFE177001.USE_PLACE_AD, use_place_ad);
		
		// 住所形態コードで名称管理を検索し該当するコード区分名を取得する。
		String ad_form_cd = JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.AD_FORM_CD));
		whereParam[0] = "CD00627";
		whereParam[1] = ad_form_cd;
		cdNmMap = this.executeZM_M_CD_NM_KANRI_PKSELECT(whereParam);
		if(null != cdNmMap)
		{
			// 住所形態
			String ad_form = JBSbatStringUtil.Rtrim(cdNmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			if(7 < ad_form.length())
			{
				ad_form = ad_form.substring(0, 7);
			}
			outmap.setString(JBSbatKKIFE177001.AD_FORM, ad_form);
		}
		
		// 住所形態コードが「03：集合住宅」または「04：社宅・寮」の場合
		if("03".equals(ad_form_cd) || "04".equals(ad_form_cd))
		{
			// 戸建建築階数コードで名称管理を検索し該当するコード区分名を取得する。
			whereParam[0] = "CD00840";
			whereParam[1] = JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KODATE_KCKU_FLR_CNT_CD));
			cdNmMap = this.executeZM_M_CD_NM_KANRI_PKSELECT(whereParam);
			
			if(null != cdNmMap)
			{
				String shugj_nyukyo_flr_cnt = JBSbatStringUtil.Rtrim(cdNmMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
				if(2 < shugj_nyukyo_flr_cnt.length())
				{
					shugj_nyukyo_flr_cnt = shugj_nyukyo_flr_cnt.substring(0, 2);
				}
				
				// 集合住宅入居階数
				outmap.setString(JBSbatKKIFE177001.SHUGJ_NYUKYO_FLR_CNT, shugj_nyukyo_flr_cnt);
			}
		}
		
		// 竣工予定年月日
		outmap.setString(JBSbatKKIFE177001.SHUNKO_RSV_YMD, JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SHUNKO_RSV_YMD)));
		
		// 回線場所住所確定フラグより名称を判定する。
		String kisn_plc_ad_mi_fix_flg = JBSbatStringUtil.Rtrim(kaisenSvkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_FLG));
		String kisn_plc_ad_mi_fix_nm = "住所未確定";
		
		if("0".equals(kisn_plc_ad_mi_fix_flg))
		{
			kisn_plc_ad_mi_fix_nm = "住所確定";
		}
		
		// 回線場所住所確定フラグ 
		outmap.setString(JBSbatKKIFE177001.KISN_PLC_AD_FIX_FLG, kisn_plc_ad_mi_fix_nm);
	}
	
	/**
	 * 該当するコースの判定を行い返却します。<br>
	 * <p>
	 * @param svcKeiMap サービス契約初期検索結果
	 * @return 判定結果で該当するコース
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getCourse(JBSbatCommonDBInterface svcKeiMap) throws Exception
	{
		// 初期検索のサービス契約番号より回線対象サービス契約の情報を抽出する。
		String svc_kei_no = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
		String[] param1 = {svc_kei_no, super.opeDate, svc_kei_no};
		this.executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_011(param1);
		
		JBSbatCommonDBInterface kaisenMap = db_KK_T_KAISEN_TG_SVKEI.selectNext();
		
		// 検索結果がなかった場合は「201」：新規eo光テレビのみを返却する。
		if(null == kaisenMap)
		{
			return "201";
		}
		else
		{
			// 回線対象サービス契約の検索結果がある場合、申込明細の検索を行う。
			String mskm_dtl_no = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_SVC_KEI.MSKM_DTL_NO));
			String[] param2 = {mskm_dtl_no, mskm_dtl_no};
			this.executeKK_T_MSKM_DTL_KK_SELECT_011(param2);
			
			JBSbatCommonDBInterface mskmMap = db_KK_T_MSKM_DTL.selectNext();
			
			// 検索結果がなかった場合は「203」：既存eo光テレビ＋新規eo光ネットを返却する。
			if(null == mskmMap)
			{
				return "203";
			}
			
			// 検索結果がある場合は「202」：新規eo光ネット＋新規eo光テレビを返却する。
			return "202";
		}
	}
	
	/**
	 * ｅｏ光テレビチューナー利用台数、ｅｏ光テレビチューナー種類１〜５を設定します。<br>
	 * <p>
	 * @param svcKeiMap サービス契約初期検索結果
	 * @param outmap 出力用ファイルクラス
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setEoHikariTunerInf(JBSbatCommonDBInterface svcKeiMap, JBSbatServiceInterfaceMap outmap) throws Exception
	{
		// 初期検索結果より「ＫＣＮＳＴＢ申込台数」を取得
		String kcn_stb_mskm_cnt = svcKeiMap
				.getBigDecimal(JBSbatKK_T_MSKM_DTL.KCN_STB_MSKM_CNT) == null ? ""
				: svcKeiMap.getBigDecimal(JBSbatKK_T_MSKM_DTL.KCN_STB_MSKM_CNT)
						.toString();
		
		// ｅｏ光テレビチューナー利用台数
		outmap.setString(JBSbatKKIFE177001.EO_HIKARITV_TUNER_USE_CNT, kcn_stb_mskm_cnt);
		
		String tuner_kind1 = "";
		String tuner_kind2 = "";
		String tuner_kind3 = "";
		String tuner_kind4 = "";
		String tuner_kind5 = "";
		
		// 初期検索結果より「ＫＣＮＳＴＢ種類コード」を取得
		String kcn_stb_kind_cd = JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_MSKM_DTL.KCN_STB_KIND_CD));
		if(1 == kcn_stb_kind_cd.length())
		{
			tuner_kind1 = this.getTunerKindNm(kcn_stb_kind_cd.substring(0, 1));
		}
		if(2 == kcn_stb_kind_cd.length())
		{
			tuner_kind1 = this.getTunerKindNm(kcn_stb_kind_cd.substring(0, 1));
			tuner_kind2 = this.getTunerKindNm(kcn_stb_kind_cd.substring(1, 2));
		}
		if(3 == kcn_stb_kind_cd.length())
		{
			tuner_kind1 = this.getTunerKindNm(kcn_stb_kind_cd.substring(0, 1));
			tuner_kind2 = this.getTunerKindNm(kcn_stb_kind_cd.substring(1, 2));
			tuner_kind3 = this.getTunerKindNm(kcn_stb_kind_cd.substring(2, 3));
		}
		if(4 == kcn_stb_kind_cd.length())
		{
			tuner_kind1 = this.getTunerKindNm(kcn_stb_kind_cd.substring(0, 1));
			tuner_kind2 = this.getTunerKindNm(kcn_stb_kind_cd.substring(1, 2));
			tuner_kind3 = this.getTunerKindNm(kcn_stb_kind_cd.substring(2, 3));
			tuner_kind4 = this.getTunerKindNm(kcn_stb_kind_cd.substring(3, 4));
		}
		if(5 == kcn_stb_kind_cd.length())
		{
			tuner_kind1 = this.getTunerKindNm(kcn_stb_kind_cd.substring(0, 1));
			tuner_kind2 = this.getTunerKindNm(kcn_stb_kind_cd.substring(1, 2));
			tuner_kind3 = this.getTunerKindNm(kcn_stb_kind_cd.substring(2, 3));
			tuner_kind4 = this.getTunerKindNm(kcn_stb_kind_cd.substring(3, 4));
			tuner_kind5 = this.getTunerKindNm(kcn_stb_kind_cd.substring(4, 5));
		}
		
		// ｅｏ光テレビチューナー種類１
		outmap.setString(JBSbatKKIFE177001.EO_HIKARITV_TUNER_KIND1, tuner_kind1);
		// ｅｏ光テレビチューナー種類２
		outmap.setString(JBSbatKKIFE177001.EO_HIKARITV_TUNER_KIND2, tuner_kind2);
		// ｅｏ光テレビチューナー種類３
		outmap.setString(JBSbatKKIFE177001.EO_HIKARITV_TUNER_KIND3, tuner_kind3);
		// ｅｏ光テレビチューナー種類４
		outmap.setString(JBSbatKKIFE177001.EO_HIKARITV_TUNER_KIND4, tuner_kind4);
		// ｅｏ光テレビチューナー種類５
		outmap.setString(JBSbatKKIFE177001.EO_HIKARITV_TUNER_KIND5, tuner_kind5);
	}
	
	/**
	 * チューナー種類名称を返却します。<br>
	 * <p>
	 * @param kcn_stb_kind_cd ＫＣＮＳＴＢ種類コード
	 * @return ＫＣＮＳＴＢ種類コードが1：「録画機能なし」、2：「録画機能付(ブルーレイ搭載)」、A：「録画機能付(250GB)」、B：「録画機能付(500GBDVD)」、C：「録画機能付(1000GB)」
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getTunerKindNm(String kcn_stb_kind_cd)
	{
		if("1".equals(kcn_stb_kind_cd))
		{
			return "録画機能なし";
		}
		if("2".equals(kcn_stb_kind_cd))
		{
			return "録画機能付（ブルーレイ搭載）";
		}
		if("A".equals(kcn_stb_kind_cd))
		{
			return "録画機能付(250GB)";
		}
		if("B".equals(kcn_stb_kind_cd))
		{
			return "録画機能付(500GBDVD)";
		}
		if("C".equals(kcn_stb_kind_cd))
		{
			return "録画機能付(1000GB)";
		}
		return "録画機能なし";
	}
	
	/**
	 * 中間ファイルを出力します。<br>
	 * <p>
	 * @param file_data 出力情報
	 * @param file_path ファイル名(フルパス)
	 * @param file_name ファイル名
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private void executeOutputFile(String file_data, String file_path, String file_name) throws IOException, JBSbatBusinessException
	{
		// 一時ファイル読込み処理
		BufferedWriter wr = null;
		try
		{
			// パラメータで渡された中間ファイルを出力する。
			wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file_path), "Shift-JIS"));
			// ファイル書き込み
			wr.write(file_data);
			wr.flush();
		}
		catch(IOException e)
		{
			throw new JBSbatBusinessException("EKKB0250CE", new String[]{file_name, "ファイル出力"});
		}
		finally
		{
			if (null != wr)
			{
				wr.close();
			}
		}
	}

	/**
	 * 連携ファイル制御TBL更新<br>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void upDateRnkiFileCtrl() throws Exception
	{
		// EO20G0110J0にて設定した抽出開始タイムスタンプを取得
		String searhTimeStamp = this.getSearchTimeStamp();
		
		// 検索条件の設定
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
		// 物理バッチID
		whereMap.setValue(JBSbatKK_T_RNKI_FILE_CTRL.BUTSURI_BAT_ID, BAT_ID);
		
		// ファイルID
		whereMap.setValue(JBSbatKK_T_RNKI_FILE_CTRL.FILE_ID, FILE_ID);
		
		// 連携ファイル制御排他検索を実施します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_RNKI_FILE_CTRL.selectByPrimaryKeysForUpdateWait(whereMap);
		
		if (null != outDbMap)
		{
			// 連携ファイル制御更新処理を実施します。
			String file_seq = "";
			Object[] setParam = new Object[2];
			
			if(null != outDbMap.getString(JBSbatKK_T_RNKI_FILE_CTRL.TRAN_ZUMI_FILE_SEQ)
					&& !"".equals(outDbMap.getString(JBSbatKK_T_RNKI_FILE_CTRL.TRAN_ZUMI_FILE_SEQ)))
			{
				int db_value = Integer.parseInt(outDbMap.getString(JBSbatKK_T_RNKI_FILE_CTRL.TRAN_ZUMI_FILE_SEQ));
				if(String.valueOf(db_value + 1).length() < 6)
				{
					
					file_seq = JBSbatStringUtil.padNumFormString(String.valueOf(db_value + 1), 5);
				}
				else
				{
					file_seq = JBSbatStringUtil.padNumFormString(String.valueOf(0), 5);
				}
			}
			else
			{
				file_seq = JBSbatStringUtil.padNumFormString(String.valueOf(0), 5);
			}
			// 処理済ファイル通番
			setParam[0] = file_seq;
			// 前回処理年月日時分秒 → EO20G0110J0にて設定した抽出開始タイムスタンプで更新する。
			setParam[1] = searhTimeStamp;
			Object[] whereParam = new Object[2];
			whereParam[0] = BAT_ID;
			whereParam[1] = FILE_ID;
			
			// 更新処理の実行
			executeKK_T_RNKI_FILE_CTRL_PKUPDATE(setParam, whereParam);
		}
		
		// 検索結果が存在しない場合(登録処理の実施)。
		else
		{
			// 連携ファイル制御登録処理を実施します。
			Object[] setParam = new Object[17];
			
			// 物理バッチID
			setParam[0]  = BAT_ID;
			// ファイルID
			setParam[1]  = FILE_ID;
			// 処理済ファイル通番
			setParam[2]  = "00000";
			// 前回処理実行年月日時分秒
			setParam[3]  = searhTimeStamp;
			setParam[4]  = "";
			setParam[5]  = "";
			setParam[6]  = "";
			setParam[7]  = "";
			setParam[8]  = "";
			setParam[9]  = "";
			setParam[10] = "0";
			setParam[11]  = "";
			setParam[12]  = "";
			setParam[13]  = "";
			setParam[14]  = "";
			setParam[15]  = "";
			setParam[16]  = "";
			
			// 登録処理の実行
			executeKK_T_RNKI_FILE_CTRL_PKINSERT(setParam);
		}
	}
	
	/**
	 * EO20G0110J0にて出力された抽出開始タイムスタンプを取得します。<br>
	 * <p>
	 * @return 抽出開始時分秒
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private String getSearchTimeStamp() throws JBSbatBusinessException, IOException
	{
		String searhTimeStamp = "";
		
		// 読み込みファイル名取得
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		String file_name = free_item[1];
		BufferedReader br = null;
		
		// 前回処理実行年月日時分秒保持ファイルを読み込みます。
		try
		{
			InputStreamReader is = new InputStreamReader(new FileInputStream(file_name), "Shift-JIS");
			br = new BufferedReader(is);
			
			if (br.ready())
			{
				// １行読込み
				searhTimeStamp = br.readLine();
			}
		}
		catch (IOException e)
		{
			// 前回処理実行年月日時分秒保持ファイルがない場合はエラー。
			throw new JBSbatBusinessException("EKKB0020CE", new String[]{file_name});
		}
		finally
		{
			if (null != br)
			{
				br.close();
			}
		}
		return searhTimeStamp;
	}
}
