/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名			：eo顧客基幹システム
 *	モジュール名		：JBSbatKKPcSetupReqDataSaksei
 *	ソースファイル名	：JBSbatKKPcSetupReqDataSaksei.java
 *	作成者				：富士通　
 *	作成日				：2011年10月03日
 *＜機能概要＞
 *　ＰＣセットアップ依頼データ作成部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/10/03	FAP）庭山	新規作成
 *	v3.00.00	2012/06/05	FJ)岡田		【ANK-0315-00-00】に付随する全角項目文字化け横展開対応
 *	v3.01.00	2012/06/22	FJ)神吉		【SGY-2012-0000015】住所編集部品対応
 *	v3.02.00	2012/06/26	FJ)神吉		【SGY-2012-0000037】住所変更対応
 *	v3.03.00	2012/07/17	FJ)中作		仕様漏れ対応
 *	v3.04.00	2012/08/09	FJ)中作		【ST1-2012-0000283】対応
 *	v3.05.00	2012/08/10	FJ)倉上		【IT1-2012-0000936】対応
 *	v3.06.00	2012/08/21	FJ)中作		【ST1-2012-0000379】対応
 *	v3.07.00	2012/09/14	FJ)藤本		【ST2-2012-0001683】対応
 *	v3.08.00	2012/10/30	FJ)倉上		【ST1-2012-0000844】対応
 *	v3.09.00	2012/11/16	FJ)柳		【TAI-2012-0000127】文字化け対応
 *	v4.00.00	2012/12/23	FJ)柳		【ST3-2012-0000485】障害対応
 *	v4.01.00	2013/01/16	FJ)中作		【OT-2013-0000001】 障害対応
 *	v4.02.00	2013/02/28	FJ)団		【KT1-2013-0000271】障害対応
 *	v4.03.00	2013/03/05	FJ)団		【IT2-2013-0000256】障害対応
 *	v4.04.00	2013/04/01	FJ)神田		【OT-2013-0000527】障害対応
 *	v4.05.00	2013/06/19	FJ)団		【IT1-2013-0001267】障害対応
 *	v5.00.00	2013/08/19	FJ)団		【OM-2013-0000308】障害対応
 *	v5.00.01	2013/08/29	FJ)団		【OM-2013-0001189】障害対応
 *	v5.00.02	2013/09/01	FJ)団		【OM-2013-0001404】障害対応
 *	v5.00.03	2013/09/09	FJ)団		【OM-2013-0001842/IT1-2013-0001625】障害対応
 *	v6.00.00	2014/01/19	FJ)桑島		【OM-2014-0000211】障害対応
 *********************************************************************/
package eo.business.service;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatInterface;
import eo.business.common.JKKBatOutputEditUtil;
import eo.business.common.JKKBatOutputUtil;
import eo.business.util.file.JBSbatKKIFE018001;
import eo.business.util.file.JBSbatKKIFE018002;
import eo.business.util.file.JBSbatKKIFM119;
import eo.business.util.file.JBSbatKKIFM127;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_M_VSIT_SPRT_COMP;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
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 JBSbatKKPcSetupReqDataSaksei extends JBSbatBusinessService {
	/**
	 * 送信用ファイル名
	 */
	private static final String SEND_FILE_NM = "setup_%1$s_%2$s%3$s";

	/**
	 * TARファイル名
	 */
	private static final String TAR_FILE_NM = "temp500162000001%1$s000000_%2$s";

	/**
	 * 囲み文字（"）
	 */
	private static final String MOJI_D = "\"";

	/**
	 * 新規申込区分（PCセットアップのみ）
	 */
	// private static final String NEW_MSKM_SBT = "1";
	/**
	 * 訪問サポート希望時間コード（10:00〜13:00）
	 */
	private static final String KIBO_TIME_CD_P1 = "01";

	/**
	 * 訪問サポート希望時間コード（13:00〜16:00）
	 */
	private static final String KIBO_TIME_CD_P2 = "02";

	/**
	 * 訪問サポート希望時間コード（16:00〜19:00）
	 */
	private static final String KIBO_TIME_CD_P3 = "03";

	/**
	 * 訪問サポート希望時間コード（19:00〜21:00）
	 */
	private static final String KIBO_TIME_CD_P4 = "04";

	/**
	 * 訪問サポート希望時間コード（その他）
	 */
	private static final String KIBO_TIME_CD_P5 = "99";

	/** 契約者タイプコード（法人） */
	private static final String KEISHA_TYPE_CD_HOJIN = "2";

	/** エンコード */
	private static final String ENCODE = "Shift-JIS";
	/** ▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼ */
	/** テーブル(訪問サポート会社) */
	private static final String D_TBL_NAME_KK_M_VSIT_SPRT_COMP = "KK_M_VSIT_SPRT_COMP";

	/** テーブル(お客様) */
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(回線対象サービス契約) */
	private static final String D_TBL_NAME_KK_T_KAISEN_TG_SVKEI = "KK_T_KAISEN_TG_SVKEI";

	/** テーブル(オプションサービス契約) */
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(申込明細) */
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** SQL定義キー(KK_SELECT_003) */
	private static final String KK_M_VSIT_SPRT_COMP_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_SELECT_013) */
	private static final String CK_T_CUST_KK_SELECT_013 = "KK_SELECT_013";

	/** SQL定義キー(KK_SELECT_009) */
	private static final String KK_T_KAISEN_TG_SVKEI_KK_SELECT_009 = "KK_SELECT_009";

	/** SQL定義キー(KK_SELECT_025) */
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_025 = "KK_SELECT_025";

	/** SQL定義キー(KK_SELECT_009) */
	private static final String KK_T_MSKM_DTL_KK_SELECT_009 = "KK_SELECT_009";

	/** ＰＣセットアップ依頼データファイル送信定義ファイル名 */
	private static final String KKIFE018001_DEF = "KKIFE018001";

	/** ＰＣセットアップ依頼データ件数ファイル送信定義ファイル名 */
	private static final String KKIFE018002_DEF = "KKIFE018002";

	/** テーブルアクセスクラス(訪問サポート会社) */
	private JBSbatSQLAccess db_KK_M_VSIT_SPRT_COMP = null;

	/** テーブルアクセスクラス(お客様) */
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(回線対象サービス契約) */
	private JBSbatSQLAccess db_KK_T_KAISEN_TG_SVKEI = null;

	/** テーブルアクセスクラス(オプションサービス契約) */
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;

	/** テーブルアクセスクラス(申込明細) */
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;
	/** ▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲ */

	/**
	 * 出力依頼先訪問サポート会社識別コード
	 */
	private String out_req_comp_cd = "";

	/**
	 * ファイル名付加日付
	 */
	private String file_nm_sysdate = "";

	/**
	 * 出力ファイル格納先
	 */
	private String gaibu_send_dir_kk = "";

	/**
	 * チェックリスト
	 */
	private ArrayList<String> checkList = new ArrayList<String>();

	/**
	 * PCセットアップ依頼出力情報リスト
	 */
	private ArrayList<JBSbatServiceInterfaceMap> compList = null;

	/**
	 * 出力対象訪問サポート会社保持領域
	 */
	private ArrayList<String> vscp_skbt_cd_List = new ArrayList<String>();

	/**
	 * 出力済訪問サポート会社保持領域
	 */
	private HashMap<String, String> out_sprt_comp_cd_map = null;

	/**
	 * 初期処理
	 * 
	 * @param JBSbatCommonItem
	 *            commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		/** ▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼ */
		/** ▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼ */
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_M_VSIT_SPRT_COMP = new JBSbatSQLAccess(commonItem,
				D_TBL_NAME_KK_M_VSIT_SPRT_COMP);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_T_KAISEN_TG_SVKEI = new JBSbatSQLAccess(commonItem,
				D_TBL_NAME_KK_T_KAISEN_TG_SVKEI);
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem,
				D_TBL_NAME_KK_T_OP_SVC_KEI);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem,
				D_TBL_NAME_KK_T_MSKM_DTL);
		/** ▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲ */

		// ファイル名に付加するシステム日付を取得します
		file_nm_sysdate = JBSbatDateUtil.getSystemDateTime();

		// フリー項目から格納先を取得します
		String file_path = commonItem.getFreeItem();

		// 取得出来なかった場合、エラーとします。
		if (file_path.length() == 0) {
			throw new JBSbatBusinessException(
					JPCBatchMessageConstant.EKKB0130CE,
					new String[] { "フリー項目：送信ファイル格納パス名" });
		}

		gaibu_send_dir_kk = file_path + "/";

		// 対象となる訪問サポート会社コードを取得します。
		JBSbatCommonDBInterface db_map = null;
		String[] param = new String[3];
		param[0] = super.opeDate;
		param[1] = super.opeDate;
		param[2] = super.opeDate;
		executeKK_M_VSIT_SPRT_COMP_KK_SELECT_003(param);
		db_map = db_KK_M_VSIT_SPRT_COMP.selectNext();
		while (null != db_map) {
			String vscp_skbt_cd = JBSbatStringUtil.Rtrim(db_map
					.getString(JBSbatKK_M_VSIT_SPRT_COMP.REQ_SK_VSCP_SKBT_CD));
			vscp_skbt_cd_List.add(vscp_skbt_cd);
			db_map = db_KK_M_VSIT_SPRT_COMP.selectNext();
		}

		// 出力済訪問サポート会社保持領域
		out_sprt_comp_cd_map = new HashMap<String, String>();
		/** ▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 主処理
	 * 
	 * @param inMap
	 *            　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap)
			throws Exception {
		/** ▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼ */

		super.logPrint.printDebugLog("execute_START");

		JBSbatOutputItem outItem = null;

		String comp_cd = inMap.getString(JBSbatKKIFM127.REQ_SK_VSCP_SKBT_CD);
		String svc_kei_no = inMap.getString(JBSbatKKIFM127.SVC_KEI_NO);

		String supportNo = inMap.getString(JBSbatKKIFM127.SUPPORT_NO);

		// 変数【出力依頼先訪問サポート会社識別コード】≠訪問サポート会社コード場合、以下の処理を行います。
		if (!out_req_comp_cd.equals(comp_cd)) {
			// PCセットアップ依頼ファイル（KKIFE018）作成(変更前の会社コード＿最初はスキップ、最後はterminalで行う)
			executeOutFile();

			// 送信用ファイルを生成します
			outItem = executeNewFile(comp_cd);

			// 会社情報初期化
			compList = new ArrayList<JBSbatServiceInterfaceMap>();
		}

		// 同じサービス契約番号,サポート番号,依頼先訪問サポート会社識別コードは処理なし
		String checkNo = svc_kei_no + supportNo + comp_cd;

		if (checkList.contains(checkNo)) {
			return null;

		} else {
			checkList.add(checkNo);
		}

		JBSbatServiceInterfaceMap outmapKKIFE018001 = new JBSbatServiceInterfaceMap();
		JBSbatServiceInterfaceMap outmapKKIFM127002 = new JBSbatServiceInterfaceMap();

		// お客様情報の検索を行います
		boolean updFlg = serchCust(outmapKKIFE018001, inMap
				.getString(JBSbatKKIFM127.SYSID));

		// PCセットアップ依頼中間ファイル（更新用）
		if(updFlg)
		{
			// 回線内訳情報の検索を行います
			outmapKKIFE018001 = serchKaisenTg(outmapKKIFE018001, svc_kei_no);

			// 申込明細情報の検索を行います
			outmapKKIFE018001 = serchMskmDtl(outmapKKIFE018001, inMap
					.getString(JBSbatKKIFM127.MSKM_DTL_NO));

			// オプションサービス契約の検索を行います
			outmapKKIFE018001 = serchOpSvcKei(outmapKKIFE018001, svc_kei_no);

			// 入力電文を出力情報へ転記
			outmapKKIFE018001 = setInMapInfo(outmapKKIFE018001, inMap);
			
			compList.add(outmapKKIFE018001);
			
			// PCセットアップ依頼出力情報リストに登録
			if(null == outItem)
			{
				outItem = new JBSbatOutputItem();
			}
			outmapKKIFM127002 = setInMapInfo2(outmapKKIFM127002, inMap);
			outmapKKIFM127002.setOutFlg(true);
			outItem.addOutMapList_2(outmapKKIFM127002);
		}
		else
		{
			super.logPrint.printBusinessErrorLog("EKKB0290AW",
			new String[] { "お客様情報、連絡先情報（SYSID：" + inMap.getString(JBSbatKKIFM127.SYSID) + "）" });
			super.commonItem.addErrorCount(1);
		}
		
		super.logPrint.printDebugLog("execute_END");

		return outItem;
		/** ▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲ */
	}

	/**
	 * 業務サービス終了処理
	 * 
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		/** ▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼ */
		// PCセットアップ依頼データ抽出(最後の会社コード分)
		executeOutFile();
		// PCセットアップ依頼0件データ作成
		execute0CntOutFile();
		
		/** ▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼ */
		// DBアクセスクラスをクローズします
		db_KK_M_VSIT_SPRT_COMP.close();
		db_CK_T_CUST.close();
		db_KK_T_KAISEN_TG_SVKEI.close();
		db_KK_T_OP_SVC_KEI.close();
		db_KK_T_MSKM_DTL.close();
		/** ▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲ */
		/** ▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲ */
	}

	/** ▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼ */
	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	訪問サポート会社適用開始年月日
	 * 	 	訪問サポート会社適用終了年月日
	 * 	 	予約適用年月日
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_VSIT_SPRT_COMP_KK_SELECT_003(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_M_VSIT_SPRT_COMP.selectBySqlDefine(paramList,
				KK_M_VSIT_SPRT_COMP_KK_SELECT_003);
	}

	/**
	 * SQLKEY(KK_SELECT_013)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	予約適用年月日
	 * 	 	予約適用年月日
	 * 	 	予約適用年月日
	 * 	 	予約適用年月日
	 * 	 	SYSID
	 * 	 	予約適用年月日
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_013(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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_013);
	}

	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	サービス契約番号
	 * 		運用日
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_009(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_009);
	}

	/**
	 * SQLKEY(KK_SELECT_025)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	サービス契約番号
	 * 	 	予約適用年月日
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OP_SVC_KEI_KK_SELECT_025(Object[] param)
			throws Exception {
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList,
				KK_T_OP_SVC_KEI_KK_SELECT_025);
	}

	/**
	 * SQLKEY(KK_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	申込明細番号
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KK_SELECT_009(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_009);
	}

	/** ▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲ */

	/**
	 * 出力ファイル切り替え処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.変数【出力依頼先会社コード】に、入力.【依頼先会社コード】を設定します。&lt;br&gt;
	 * 
	 * 2.変数【出力依頼先会社コード】のファイル名で、出力ファイルを生成します。
	 * 
	 * 3.ＰＣセットアップ依頼用ファイルに生成したファイル名を出力します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param compCd
	 *            　依頼先会社コード。
	 * @return JBSbatOutputItem　出力情報。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatOutputItem executeNewFile(String compCd) throws Exception {
		JBSbatOutputItem outItem = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();

		// 変数【出力依頼先訪問サポート会社識別コード】の初期化
		out_req_comp_cd = compCd;

		// TARファイル名の出力
		// TARファイル名
		String tarFileNm = String.format(TAR_FILE_NM, compCd, file_nm_sysdate);

		outmap.setString(JBSbatKKIFM119.SEND_FILE_NM, tarFileNm);

		super.logPrint.printDebugLog("依頼会社コード取得---->" + compCd);

		// 依頼先会社コード
		outmap.setString(JBSbatKKIFM119.REQ_SK_VSCP_SKBT_CD, compCd);

		outmap.setOutFlg(true);
		outItem.addOutMapList(outmap);

		return outItem;
	}
	
	/**
	 * お客様情報の検索を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 2.検索結果なしの場合、エラーとし処理中断します。
	 * 
	 * 3.検索結果ありの場合、契約者名（カナ）、契約者名１、契約者名２、契約者名３
	 * 　郵便番号、住所＿都道府県市区町村、住所＿上記以外の名称、住所＿マンション名等
	 * 　電話番号、携帯・ＰＨＳ番号に転記します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param sysid
	 *            　SYSID。
	 * @return boolean　結果。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private boolean serchCust(
			JBSbatServiceInterfaceMap outmap, String sysid) throws Exception {
		JBSbatCommonDBInterface dbmap = null;
		String[] param = new String[6];
		String[] custNm = null;

		// 検索条件の設定
		param[0] = super.opeDate;
		param[1] = super.opeDate;
		param[2] = super.opeDate;
		param[3] = super.opeDate;
		param[4] = sysid;
		param[5] = super.opeDate;

		// 検索実行
		executeCK_T_CUST_KK_SELECT_013(param);
		dbmap = db_CK_T_CUST.selectNext();

		// エラー判定
		if (null == dbmap) {
//			super.logPrint.printBusinessErrorLog("EKKB0290AW",
//					new String[] { "お客様情報、連絡先情報（SYSID：" + sysid + "）" });
//			throw new JBSbatBusinessError();
			return false;
		}

		// 全角項目に対して文字化け対応します。
		String custNmStr = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.CUST_NM))); // お客様名

		String keishaStateNm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM))); // 契約者都道府県名

		String keishaCityNm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM))); // 契約者市区町村名

		String keishaOaztsuNm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM))); // 契約者大字通称名

		String keishaAzchoNm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM))); // 契約者字丁目名

		String keishaBnchigoNm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO))); // 契約者番地号

		String keishaAdrttm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM))); // 契約者住所補記・建物名

		String keishaAdrrm = JBSbatInterface.charConverter(JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM))); // 契約者住所補記・部屋番号

		// 住所出力編集部品(パターン１)呼出
		String adNm = JZMAdOutputEdit.getPtn01(keishaStateNm, keishaCityNm,
				keishaOaztsuNm, keishaAzchoNm, keishaBnchigoNm, keishaAdrttm,
				keishaAdrrm);

		// 契約者住所が「null」且つ空文字でなく、且つ242バイトより大きい場合
		if (!isEmpty(adNm) && 242 < adNm.getBytes(ENCODE).length) {
			// 契約者住所（住所名編集処理（242バイトに編集））
			adNm = JBSbatStringUtil.adjustCharSize(adNm, 242, "");
		}

		// 転記処理
		// 契約者名（カナ）← お客様．お客様カナ名を設定。
		outmap.setString(JBSbatKKIFE018001.KEISHA_NM_KANA, JBSbatStringUtil
				.Rtrim(dbmap.getString(JBSbatCK_T_CUST.CUST_KANA)));

		// 契約者名１,契約者名２,契約者名３← お客様．お客様名を設定。
		custNm = editCustNm(custNmStr);
		outmap.setString(JBSbatKKIFE018001.KEISHA_NM_1, custNm[0]);
		outmap.setString(JBSbatKKIFE018001.KEISHA_NM_2, custNm[1]);
		outmap.setString(JBSbatKKIFE018001.KEISHA_NM_3, custNm[2]);

		// 郵便番号 ← お客様．契約者郵便番号を設定。
		outmap.setString(JBSbatKKIFE018001.PCD, JBSbatStringUtil.Rtrim(dbmap
				.getString(JBSbatCK_T_CUST.KEISHA_PCD)));

		// 契約者住所
		outmap.setString(JBSbatKKIFE018001.KEISHA_ADDRESS, JBSbatStringUtil
				.Rtrim(adNm));

		// 契約者タイプ
		String keisha_type_cd = JBSbatStringUtil.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_TYPE_CD));
		// 契約者タイプ：法人の場合
		if(KEISHA_TYPE_CD_HOJIN.equals(keisha_type_cd))
		{
			// 電話番号
			if("".equals(JBSbatStringUtil.Rtrim(dbmap.getString("TELNO_H5"))))
			{
				outmap.setString(JBSbatKKIFE018001.TELNO, JBSbatStringUtil
						.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_TELNO)));
			}
			else
			{
				outmap.setString(JBSbatKKIFE018001.TELNO, JBSbatStringUtil.Rtrim(dbmap
						.getString("TELNO_H5")));
			}
	
			// 携帯・PHS
			outmap.setString(JBSbatKKIFE018001.KTAI_PHS_NO, JBSbatStringUtil.Rtrim(dbmap
					.getString("TELNO_H2")));
		}
		// 契約者タイプ：その他の場合
		else
		{
			// 電話番号
			if("".equals(JBSbatStringUtil.Rtrim(dbmap.getString("TELNO_K5"))))
			{
				outmap.setString(JBSbatKKIFE018001.TELNO, JBSbatStringUtil
						.Rtrim(dbmap.getString(JBSbatCK_T_CUST.KEISHA_TELNO)));
			}
			else
			{
				outmap.setString(JBSbatKKIFE018001.TELNO, JBSbatStringUtil.Rtrim(dbmap
						.getString("TELNO_K5")));
			}
	
			// 携帯・PHS
			outmap.setString(JBSbatKKIFE018001.KTAI_PHS_NO, JBSbatStringUtil.Rtrim(dbmap
					.getString("TELNO_K2")));
		}
		
		return true;
	}

	/**
	 * 回線内訳情報の検索を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 2.検索結果なしの場合、エラーとし処理中断します。
	 * 
	 * 3.検索結果ありの場合、端末設置場所＿郵便番号、端末設置場所＿都道府県市区町村
	 * 　端末設置場所＿上記以外の名称、端末設置場所＿建物名、端末設置場所＿部屋番号に転記します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param svcKeiNo
	 *            　サービス契約番号。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap serchKaisenTg(
			JBSbatServiceInterfaceMap outmap, String svcKeiNo) throws Exception {
		JBSbatCommonDBInterface dbmap = null;
		String[] param = new String[2];

		// 検索条件の設定
		param[0] = svcKeiNo;
		param[1] = this.opeDate;

		// 検索実行
		executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_009(param);
		dbmap = db_KK_T_KAISEN_TG_SVKEI.selectNext();

		// エラー判定
		if (null == dbmap) {
			// 回線対象サービス契約の検索結果が無い場合はお客様より編集した郵便番号、契約者住所の値を設定する。
			// （料金グループ「ｅｏモバイル（Ｗｉ−Ｆｉ）」の場合、同テーブルは作成されない。その他作成されないケースも同様とする。）
			// 端末設置場所＿郵便番号 ← お客様．契約者郵便番号を設定。
			outmap.setString(JBSbatKKIFE018001.TMSTBS_PCD, JBSbatStringUtil
					.Rtrim(outmap.getString(JBSbatKKIFE018001.PCD)));
			// 利用場所住所 ← お客様．契約者住所の編集結果を設定。
			outmap.setString(JBSbatKKIFE018001.USE_PLACE_ADDRESS,
					JBSbatStringUtil.Rtrim(outmap
							.getString(JBSbatKKIFE018001.KEISHA_ADDRESS)));
		}
		// 回線対象サービス契約の検索結果がある場合、利用場所住所を編集する。
		else {
			// 全角項目に対して文字化け対応します。
			String kaisenPlaceStateNm = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM))); // 回線場所都道府県名

			String kaisenPlaceCityNm = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM))); // 回線場所市区町村名

			String kaisenPlaceOaztsuNm = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM))); // 回線場所大字通称名

			String kaisenPlaceAzchoNm = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM))); // 回線場所字丁目名

			String kaisenPlaceBnchigo = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO))); // 回線場所番地号

			String kaisenPlaceAdrttm = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM))); // 回線場所住所補記・建物名

			String kaisenPlaceAdrrm = JBSbatInterface
					.charConverter(JBSbatStringUtil
							.Rtrim(dbmap
									.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM))); // 回線場所住所補記・部屋番号

			// 住所出力編集部品(パターン１)呼出
			String adNm = JZMAdOutputEdit.getPtn01(kaisenPlaceStateNm,
					kaisenPlaceCityNm, kaisenPlaceOaztsuNm, kaisenPlaceAzchoNm,
					kaisenPlaceBnchigo, kaisenPlaceAdrttm, kaisenPlaceAdrrm);

			// 利用場所住所が「null」且つ空文字でなく、且つ242バイトより大きい場合
			if (!isEmpty(adNm) && 242 < adNm.getBytes(ENCODE).length) {
				// 利用場所住所（住所名編集処理（242バイトに編集））
				adNm = JBSbatStringUtil.adjustCharSize(adNm, 242, "");
			}

			// 転記処理
			// 端末設置場所＿郵便番号 ← サービス契約回線内訳．回線場所郵便番号を設定。
			outmap
					.setString(
							JBSbatKKIFE018001.TMSTBS_PCD,
							JBSbatStringUtil
									.Rtrim(dbmap
											.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)));

			outmap.setString(JBSbatKKIFE018001.USE_PLACE_ADDRESS,
					JBSbatStringUtil.Rtrim(adNm));
		}

		return outmap;
	}

	/**
	 * 申込明細情報の検索を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 2.検索結果なしの場合、エラーとし処理中断します。
	 * 
	 * 3.検索結果ありの場合、勤務先電話番号に転記します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param mskmDtlNo
	 *            　申込明細番号。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap serchMskmDtl(
			JBSbatServiceInterfaceMap outmap, String mskmDtlNo)
			throws Exception {
		JBSbatCommonDBInterface dbmap = null;
		String[] param = new String[1];

		// 検索条件の設定
		param[0] = mskmDtlNo;

		// 検索実行
		executeKK_T_MSKM_DTL_KK_SELECT_009(param);
		dbmap = db_KK_T_MSKM_DTL.selectNext();

		// 検索結果判定
		if (dbmap == null) {
			// 勤務先電話番号に空文字を設定。
			outmap.setString(JBSbatKKIFE018001.OFFC_TELNO, "");
		} else {
			// 転記処理
			outmap
					.setString(
							JBSbatKKIFE018001.OFFC_TELNO,
							JBSbatStringUtil
									.Rtrim(dbmap
											.getString(JBSbatKK_T_MSKM_DTL.KOJI_APO_RRKS_TELNO)));
		}
		return outmap;
	}

	/**
	 * オプションサービス契約の検索を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 2.検索結果なしの場合、「'0'：未加入」を設定します。
	 * 
	 * 3.検索結果ありの場合、サービス提供中があれば「'1'：加入」を設定します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param svcKeiNo
	 *            　サービス契約番号。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap serchOpSvcKei(
			JBSbatServiceInterfaceMap outmap, String svcKeiNo) throws Exception {
		
		super.logPrint.printDebugLog("serchOpSvcKei_START");
		
		JBSbatCommonDBInterface dbmap = null;
		//【OM-2014-0000211】障害対応 START
		
		//サービス契約ステータス　解約済
		String SVCKEISTAT_910 = "910";
		//サービス契約ステータス　キャンセル済
		String SVCKEISTAT_920 = "920";
		String[] param = new String[2];
		String umu = "0";
		boolean opSvcKeiStatFlg = false;

		// 検索条件の設定
		param[0] = svcKeiNo;
		param[1] = super.opeDate;
		
		super.logPrint.printDebugLog("サービス契約番号 :" +svcKeiNo);

		// 検索実行
		executeKK_T_OP_SVC_KEI_KK_SELECT_025(param);
		dbmap = db_KK_T_OP_SVC_KEI.selectNext();

		// 検索結果判定
		if (null != dbmap) {
			
			while(null != dbmap)
			{
				//オプションサービス契約ステータスを取得（サービス提供があれば「'1'：加入」対応）
				String opSvcKeiStat = JBSbatStringUtil.Rtrim(dbmap.getString(JBSbatKK_T_OP_SVC_KEI.OP_SVC_KEI_STAT));
				
				super.logPrint.printDebugLog("オプションサービス契約ステータス :" +opSvcKeiStat);
				
				//サービス契約ステータス　解約済でなく、かつサービス契約ステータス　キャンセル済でない
				if((!SVCKEISTAT_910.equals(opSvcKeiStat)) && (!SVCKEISTAT_920.equals(opSvcKeiStat)))
				{
					super.logPrint.printDebugLog("サービス提供あり");
					opSvcKeiStatFlg = true;
					break;
				}
				
				// 次の検索処理を取得
				dbmap = db_KK_T_OP_SVC_KEI.selectNext();
			}
			//サービス提供中があれば「'1'：加入」対応
			if(opSvcKeiStatFlg)
			{
				umu = "1";
			}

		}
		
		super.logPrint.printDebugLog("ｅｏサポートプラス加入有無 :" +umu);
		
		//【OM-2014-0000211】障害対応 END

		// 転記処理
		outmap.setString(JBSbatKKIFE018001.EO_SPRT_PLUS_KANYU_UM, umu);
		
		super.logPrint.printDebugLog("serchOpSvcKei_END");

		return outmap;
	}

	/**
	 * 入力電文を出力情報へ転記し、出力します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.お客様ＩＤ、案件番号（申込書番号）、依頼先コード、送信回数
	 * 　希望日１、希望時間１、希望日２、希望時間２、希望日３、希望時間３、メモに転記します。&lt;br&gt;
	 * 
	 * 2.ファイルへ出力します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param inmap
	 *            　入力電文。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeOutFile() throws Exception {

		if (compList == null) {
			//return;
			compList = new ArrayList<JBSbatServiceInterfaceMap>();
			return;
		}

		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		for (JBSbatServiceInterfaceMap outMap : compList) {

			JKKBatOutputEditUtil.setOutputDateZengoChr(outMap, MOJI_D);
			outMap.setOutFlg(true);
			outputBean.addOutMapList(outMap);
		}

		// ＰＣセットアップ依頼データファイル名
		String fileNm = String.format(SEND_FILE_NM, out_req_comp_cd, "",
				file_nm_sysdate)
				+ ".csv";

		// ＰＣセットアップ依頼データファイル作成
		JKKBatOutputUtil.editOutFile(super.commonItem, outputBean,
				KKIFE018001_DEF, gaibu_send_dir_kk, fileNm);

		// PCセットアップ依頼データ抽出件数ファイルを出力します。
		outputBean = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outmapKKIFE018002 = new JBSbatServiceInterfaceMap();
		outmapKKIFE018002.setString(JBSbatKKIFE018002.DATA_CNT, String
				.valueOf(compList.size()));
		JKKBatOutputEditUtil.setOutputDateZengoChr(outmapKKIFE018002, MOJI_D);
		outputBean.addOutMapList(outmapKKIFE018002);
		fileNm = String.format(SEND_FILE_NM, out_req_comp_cd, "cnt_",
				file_nm_sysdate)
				+ ".csv";
		JKKBatOutputUtil.editOutFile(super.commonItem, outputBean,
				KKIFE018002_DEF, gaibu_send_dir_kk, fileNm);

		out_sprt_comp_cd_map.put(out_req_comp_cd, "");

	}

	/**
	 * ０件データを作成し、出力します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.０件データ
	 * 
	 * 2.ファイルへ出力します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param inmap
	 *            　入力電文。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void execute0CntOutFile() throws Exception {
		for (String vscp_skbt_cd : vscp_skbt_cd_List) {
			if (!out_sprt_comp_cd_map.containsKey(vscp_skbt_cd)) {
				// ＰＣセットアップ依頼データファイル名
				String fileNm = String.format(SEND_FILE_NM, vscp_skbt_cd, "",
						file_nm_sysdate)
						+ ".csv";
				// ＰＣセットアップ依頼データファイル作成
				execute0DataOutFile(gaibu_send_dir_kk + fileNm);
				// PCセットアップ依頼データ抽出件数ファイルを出力します。
				fileNm = String.format(SEND_FILE_NM, vscp_skbt_cd, "cnt_",
						file_nm_sysdate)
						+ ".csv";
				execute0CntOutFile(gaibu_send_dir_kk + fileNm);
				
				JBSbatOutputFileUtil out_obj = super.commonItem.getOutPutFile();
				StringBuffer buf = new StringBuffer(); 
				String tarFileNm = String.format(TAR_FILE_NM, vscp_skbt_cd, file_nm_sysdate);
				buf.append(tarFileNm);
				buf.append(",");
				buf.append(vscp_skbt_cd);
				out_obj.write(buf.toString());
			}
		}

	}

	/**
	 * ０件データファイル出力処理
	 * 
	 * @return String
	 * @throws Exception
	 */
	private void execute0DataOutFile(String fileName) throws Exception {
		// ファイル生成
		BufferedWriter out_writer = null;
		try {

			// ファイル生成
			out_writer = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(fileName)));

			// ファイル出力
			out_writer.flush();

		}

		catch (IOException e) {
			throw new JBSbatBusinessException("EKKB0250CE", new String[] {
					fileName, e.getMessage() });
		} finally {
			if (null != out_writer) {
				out_writer.close();
			}
		}
	}

	/**
	 * ０件カウントファイル出力処理
	 * 
	 * @return String
	 * @throws Exception
	 */
	private void execute0CntOutFile(String fileName) throws Exception {
		// ファイル生成
		BufferedWriter out_writer = null;
		try {

			// ファイル生成
			out_writer = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(fileName)));
			StringBuilder sb = new StringBuilder();
			sb.append("\"" + 0 + "\"");
			sb.append("\n");
			out_writer.write(sb.toString());
			// ファイル出力
			out_writer.flush();

		}

		catch (IOException e) {
			throw new JBSbatBusinessException("EKKB0250CE", new String[] {
					fileName, e.getMessage() });
		} finally {
			if (null != out_writer) {
				out_writer.close();
			}
		}
	}

	/**
	 * 入力電文を出力情報へ転記し、出力します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.お客様ＩＤ、案件番号（申込書番号）、依頼先コード、送信回数
	 * 　希望日１、希望時間１、希望日２、希望時間２、希望日３、希望時間３、メモに転記します。&lt;br&gt;
	 * 
	 * 2.ファイルへ出力します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param inmap
	 *            　入力電文。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap setInMapInfo(
			JBSbatServiceInterfaceMap outmap, JBSbatServiceInterfaceMap inmap)
			throws Exception {

		outmap.setString(JBSbatKKIFE018001.CUST_ID, inmap
				.getString(JBSbatKKIFM127.SVC_KEI_NO)); // お客様ＩＤ
		outmap.setString(JBSbatKKIFE018001.ANKEN_NO, inmap
				.getString(JBSbatKKIFM127.SUPPORT_NO)); // 案件番号（申込書番号）
		outmap.setString(JBSbatKKIFE018001.NEW_MSKM_DIV, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_SBT_CD)); // 新規申込区分
		outmap.setString(JBSbatKKIFE018001.REQ_SK_CD, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_COMP_CD)); // 依頼先コード
																	// 訪問サポート会社コード
		outmap.setString(JBSbatKKIFE018001.SND_CNT, inmap
				.getLong(JBSbatKKIFM127.SEND_CNT)); // 送信回数
		outmap.setString(JBSbatKKIFE018001.KIBO_YMD_1, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_1)); // 希望日１
		outmap.setString(JBSbatKKIFE018001.KIBO_TIME_1, editKiboTime(inmap
				.getString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_1))); // 希望時間１
		outmap.setString(JBSbatKKIFE018001.KIBO_YMD_2, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_2)); // 希望日２
		outmap.setString(JBSbatKKIFE018001.KIBO_TIME_2, editKiboTime(inmap
				.getString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_2))); // 希望時間２
		outmap.setString(JBSbatKKIFE018001.KIBO_YMD_3, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_3)); // 希望日３
		outmap.setString(JBSbatKKIFE018001.KIBO_TIME_3, editKiboTime(inmap
				.getString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_3))); // 希望時間３
		outmap.setString(JBSbatKKIFE018001.MEMO, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_MEMO)); // メモ
		return outmap;

	}

	/**
	 * 入力電文を出力情報へ転記し、出力します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.サービス契約番号、ＳＹＳＩＤ、申込明細番号、サポート番号、
	 * 　希望日１、希望日２、希望日３、希望時間１、希望時間２、希望時間３、送信回数
	 * 　メモ、会社コード、会社識別コード、サポート種別コードに転記します。&lt;br&gt;
	 * 
	 * 2.ファイルへ出力します。
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param outmap
	 *            　出力情報。
	 * @param inmap
	 *            　入力電文。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap setInMapInfo2(
			JBSbatServiceInterfaceMap outmap, JBSbatServiceInterfaceMap inmap)
			throws Exception {

		outmap.setString(JBSbatKKIFM127.SVC_KEI_NO, inmap
				.getString(JBSbatKKIFM127.SVC_KEI_NO)); // サービス契約番号
		outmap.setString(JBSbatKKIFM127.SYSID, inmap
				.getString(JBSbatKKIFM127.SYSID)); // SYSID
		outmap.setString(JBSbatKKIFM127.MSKM_DTL_NO, inmap
				.getString(JBSbatKKIFM127.MSKM_DTL_NO)); // 申込明細番号
		outmap.setString(JBSbatKKIFM127.SUPPORT_NO, inmap
				.getString(JBSbatKKIFM127.SUPPORT_NO)); // サポート番号
		outmap.setString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_1, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_1)); // 希望日１
		outmap.setString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_2, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_2)); // 希望日２
		outmap.setString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_3, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_KIBO_YMD_3)); // 希望日３
		outmap.setString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_1, editKiboTime(inmap
				.getString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_1))); // 希望時間１
		outmap.setString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_2, editKiboTime(inmap
				.getString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_2))); // 希望時間２
		outmap.setString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_3, editKiboTime(inmap
				.getString(JBSbatKKIFM127.VSIT_SPRT_KIBO_TIME_CD_3))); // 希望時間３
		outmap.setString(JBSbatKKIFM127.SEND_CNT, inmap
				.getLong(JBSbatKKIFM127.SEND_CNT)); // 送信回数
		outmap.setString(JBSbatKKIFM127.VSIT_SUPPORT_MEMO, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_MEMO)); // メモ
		outmap.setString(JBSbatKKIFM127.VSIT_SUPPORT_COMP_CD, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_COMP_CD)); // 会社コード
		outmap.setString(JBSbatKKIFM127.REQ_SK_VSCP_SKBT_CD, inmap
				.getString(JBSbatKKIFM127.REQ_SK_VSCP_SKBT_CD)); // 会社識別コード
		outmap.setString(JBSbatKKIFM127.VSIT_SUPPORT_SBT_CD, inmap
				.getString(JBSbatKKIFM127.VSIT_SUPPORT_SBT_CD)); // サポート種別コード
		return outmap;

	}

	/**
	 * 契約者名の編集をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.1〜15文字、16〜30文字、31〜45文字に分割します。&lt;br&gt;
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param data
	 *            　編集する文字列。
	 * @return String[]　編集後文字列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private String[] editCustNm(String data) throws Exception {
		String[] value = new String[3];

		if (data.length() <= 15) {
			value[0] = data;
			value[1] = "";
			value[2] = "";
		} else if (data.length() <= 30) {
			value[0] = data.substring(0, 15);
			value[1] = data.substring(15);
			value[2] = "";
		} else if (data.length() <= 45) {
			value[0] = data.substring(0, 15);
			value[1] = data.substring(15, 30);
			value[2] = data.substring(30);
		} else {
			value[0] = data.substring(0, 15);
			value[1] = data.substring(15, 30);
			value[2] = data.substring(30, 45);
		}

		return value;
	}

	/**
	 * 希望時間コードの編集をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.訪問サポート希望時間コードを判定し、編集したコード定義内容を返却します。&lt;br&gt;
	 * 
	 * </pre>
	 * <p>
	 * 
	 * @param kibotime
	 *            　訪問サポート希望時間コード。
	 * @return String　編集内容。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private String editKiboTime(String kibotime) throws Exception {
		String value = "";

		if (KIBO_TIME_CD_P1.equals(kibotime)) {
			value = "10001300";
		} else if (KIBO_TIME_CD_P2.equals(kibotime)) {
			value = "13001600";
		} else if (KIBO_TIME_CD_P3.equals(kibotime)) {
			value = "16001900";
		} else if (KIBO_TIME_CD_P4.equals(kibotime)) {
			value = "19002100";
		} else if (KIBO_TIME_CD_P5.equals(kibotime)) {
			value = "00000000";
		}

		return value;
	}

	/**
	 * 文字列がnullか判定する <br>
	 * 
	 * @param arg0
	 *            判定する文字列
	 * @return 文字列がNullか空文字のときtrue
	 */
	private static boolean isEmpty(String arg0) {
		if (null == arg0 || "".equals(arg0)) {
			return true;
		}
		return false;
	}
}
