/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKMailTextSaksei
*	ソースファイル名	：JBSbatKKMailTextSaksei.java
*	作成者				：富士通　
*	作成日				：2011年08月22日
*＜機能概要＞
*　メール本文作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/22  FJ)倉上		新規作成
*	v5.00.00	2012/12/25  FJ)神田		【ANK-1384-00-00】工事進捗メール文言修正対応
*	v5.00.01	2013/03/18  FJ)中作		【IT1-2013-0000498】障害対応
*	v5.00.02	2013/12/20  FJ)古内		【OM-2013-0005227】障害対応
*	v5.00.03	2013/12/21  FJ)古内		【OM-2013-0005227】障害対応
*	v5.00.04	2014/01/21  FJ)古内		【OM-2014-0000197】障害対応
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM078;
import eo.business.util.file.JBSbatKKIFM079;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKMailTextSaksei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_001 = "KK_SELECT_001";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** サービス契約ステータス(受付済) */
	private static final String SVC_KEI_STAT_010 = "010";
	
	/** サービス契約ステータス(照査済) */
	private static final String SVC_KEI_STAT_020 = "020";
	
	/** 宅内調査実施フラグ(宅内調査無) */
	private static final String TAKCHO_JSSI_FLG_NON = "0";
	
	/** 作業中 */
	private static final String SAGYO_CHU = "1";

	/** 作業完了 */
	private static final String SAGYO_KANRYO = "2";
	
	/** 工事進捗状況PCメールコード */
	private static final String PC_MAIL_CODE = "KKM1000001";
	
	/** 工事進捗状況携帯メールコード */
	private static final String KEITAI_MAIL_CODE = "KKM1000002";
	
	/** 改行文字列 */
	private static final String STR_KAIGYO = "改行";
	
	/** 検索保持(業務パラメータ設定値) */
	ArrayList<String> work_param_List = new ArrayList<String>();
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		
		// 検索条件の設定
		Object[] param = new Object[2];
		param[0] = super.opeDate;
		param[1] = super.opeDate;
		
		//	検索処理の実行
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_001(param);
		
		// 検索結果の取得
		JBSbatCommonDBInterface m_work_param_kanri = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		
		// 取得件数分の繰返し。（取得件数は33件。）
		while(m_work_param_kanri != null)
		{
			// 業務パラメータ設定値を取得し、格納する。
			work_param_List.add(JBSbatStringUtil.Rtrim(m_work_param_kanri.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE)));
			
			m_work_param_kanri = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		}
		
		// 検索結果がない場合、エラーログを出力。
		if (0 == work_param_List.size() || 33 != work_param_List.size())
		{
			super.logPrint.printDebugLog("出力する工程のメール文言が取得できませんでした。");
			throw new JBSbatBusinessException("EWCB0330CE", new String[]{"ZM_M_WORK_PARAM_KNRI", "KK_MAIL_NAIYO"});
		}
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		//入出力インターフェースオブジェクトを生成(KKIFM0079結果ファイル用)
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		// 送信対象データに工事進捗通知メールアドレスが設定されている場合
		if (inMap.getString(JBSbatKKIFM078.KOJI_PRG_TCHI_MLAD) != null
				&& !"".equals(inMap.getString(JBSbatKKIFM078.KOJI_PRG_TCHI_MLAD)))
		{
			// 工事進捗状況PCメール情報設定。
			setKojiSinchokuJokyoPcMail(outmap, inMap);
		}
		
		// 送信対象データに工事進捗通知携帯メールアドレスが設定されている場合
		if (inMap.getString(JBSbatKKIFM078.KJSC_TCH_KTAI_MLAD) != null
				&& !"".equals(inMap.getString(JBSbatKKIFM078.KJSC_TCH_KTAI_MLAD)))
		{
			// 工事進捗状況携帯メール情報設定
			setKojiSinchokuJokyoKeitai(outmap, inMap);
			
		}
		
		// 工事進捗状況携帯メール情報ファイル出力。
		outmap.setOutFlg(true);
		outputBean.addOutMapList(outmap);
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 工事進捗状況携帯メール情報設定。<br>
	 * <p>
	 * @param outmap 出力ファイル情報格納
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setKojiSinchokuJokyoKeitai(JBSbatServiceInterfaceMap outmap, JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス契約ステータス取得
		String svc_kei_stat = inMap.getString(JBSbatKKIFM078.SVC_KEI_STAT);
		
		// 宅内調査実施フラグの取得
		String takcho_jssi_flg = inMap.getString(JBSbatKKIFM078.TAKCHO_JSSI_FLG);
		
		// 申込番号の設定
		outmap.set(JBSbatKKIFM079.MSKM_NO, inMap.getString(JBSbatKKIFM078.MSKM_NO));
		
		// サービス名の設定
		outmap.set(JBSbatKKIFM079.SVC_NM, inMap.getString(JBSbatKKIFM078.SVC_NAME));
		
// ++++++++++++++++++++++++ v5.00.02 変更開始 ++++++++++++++++++++++++
// コース変更工事であるかの判定処理を追加
		// 受付完了の設定
		if (!isCourceChgKojiak(inMap))
		{
			outmap.set(JBSbatKKIFM079.UK_FIN, getServiceKeiyakuStatusNaiyo(svc_kei_stat));
		}
// ++++++++++++++++++++++++ v5.00.02 変更終了 ++++++++++++++++++++++++
		
		// 工程光ルート調査・設計の設定
		outmap.set(JBSbatKKIFM079.STEP_HROUTE_CHOSA_DSGN, 
				getHikariRouteNaiyo(inMap.getString(JBSbatKKIFM078.STEP_HROUTE_CHOSA_DSGN_CD)));
		
// ++++++++++++++++++++++++ v5.00.02 変更開始 ++++++++++++++++++++++++
// コース変更工事であるかの判定処理を追加
		if (!isCourceChgKojiak(inMap))
		{
			// お客様宅内調査日程調整の設定
			outmap.set(JBSbatKKIFM079.CUST_TAKCHO_NTADJ, 
					getkokyakuTkiiChosaNitteiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_CUST_TAKCHO_NTADJ_CD), takcho_jssi_flg));
			
			// お客様宅内調査の設定
			outmap.set(JBSbatKKIFM079.CUST_TAKCHO_CD, 
					getkokyakuTkiiChosaNaiyo(inMap.getString(JBSbatKKIFM078.STEP_CUST_TAKCHO_CD), takcho_jssi_flg));
			
			// 承諾書受領の設定
			outmap.set(JBSbatKKIFM079.SDAKS_RCP, 
					getShodakushoJuryoNaiyo(inMap.getString(JBSbatKKIFM078.STEP_TAKCHO_SDAKS_RCP_CD), takcho_jssi_flg));
		}
// ++++++++++++++++++++++++ v5.00.02 変更終了 ++++++++++++++++++++++++
		
		// 各種許可申請の設定
		outmap.set(JBSbatKKIFM079.VARI_KYOKA_SHINSEI,
				getKakushuKyokaShinseiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_VARI_KYOKA_SHINSEI_CD)));
		
		// 光ケーブル線路工事の設定
		outmap.set(JBSbatKKIFM079.HCABLE_LINE_KOJI,
				getHikariCableKansenKojiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_HCABLE_LINE_KOJI_CD)));
		
		// お客様宅内工事の設定
		outmap.set(JBSbatKKIFM079.CUST_TAKNI_KOJI,
				getkokyakuTkiiKojiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_CUST_TAKNI_KOJI_CD)));
		
		// ご利用開始の設定
		outmap.set(JBSbatKKIFM079.USE_STA, getRiyoKaishiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_USE_STA_CD)));
		
		// メールコードの設定
		outmap.set(JBSbatKKIFM079.MAIL_CD, KEITAI_MAIL_CODE);
		
		// 工事案件番号の設定
		outmap.set(JBSbatKKIFM079.KOJIAK_NO, inMap.getString(JBSbatKKIFM078.KOJIAK_NO));
		
		// 工事進捗通知メールアドレスの設定
		outmap.set(JBSbatKKIFM079.KOJI_PRG_TCHI_MLAD, inMap.getString(JBSbatKKIFM078.KOJI_PRG_TCHI_MLAD));
		
		// 工事進捗通知携帯メールアドレスの設定
		outmap.set(JBSbatKKIFM079.KJSC_TCH_KTAI_MLAD, inMap.getString(JBSbatKKIFM078.KJSC_TCH_KTAI_MLAD));
		
		// 申込書番号の設定
		outmap.set(JBSbatKKIFM079.MSKMSHO_NO, inMap.getString(JBSbatKKIFM078.MSKMSHO_NO));

// ++++++++++++++++++++++++ v5.00.04 変更開始 ++++++++++++++++++++++++
		// 工事案件種別の設定
		outmap.set(JBSbatKKIFM079.KOJIAK_SBT_CD, inMap.getString(JBSbatKKIFM078.KOJIAK_SBT_CD));
		// 申込書明細番号の設定
		outmap.set(JBSbatKKIFM079.MSKMSHO_DTL_NO, inMap.getString(JBSbatKKIFM078.MSKMSHO_DTL_NO));
// ++++++++++++++++++++++++ v5.00.04 変更開始 ++++++++++++++++++++++++
	}
	
	/**
	 * 工事進捗状況PCメール情報設定。<br>
	 * <p>
	 * @param outmap 出力ファイル情報格納
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private void setKojiSinchokuJokyoPcMail(JBSbatServiceInterfaceMap outmap, JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// サービス契約ステータス取得
		String svc_kei_stat = inMap.getString(JBSbatKKIFM078.SVC_KEI_STAT);
		
		// 宅内調査実施フラグの取得
		String takcho_jssi_flg = inMap.getString(JBSbatKKIFM078.TAKCHO_JSSI_FLG);
		
		// 申込番号の設定
		outmap.set(JBSbatKKIFM079.MSKM_NO, inMap.getString(JBSbatKKIFM078.MSKM_NO));
		
		// サービス名の設定
		outmap.set(JBSbatKKIFM079.SVC_NM, inMap.getString(JBSbatKKIFM078.SVC_NAME));
		
// ++++++++++++++++++++++++ v5.00.02 変更開始 ++++++++++++++++++++++++
// コース変更工事であるかの判定処理を追加
		// 受付完了の設定
		if (!isCourceChgKojiak(inMap))
		{
			outmap.set(JBSbatKKIFM079.UK_FIN, getServiceKeiyakuStatusNaiyo(svc_kei_stat));
		}
// ++++++++++++++++++++++++ v5.00.02 変更終了 ++++++++++++++++++++++++
		
		// 工程光ルート調査・設計の設定
		outmap.set(JBSbatKKIFM079.STEP_HROUTE_CHOSA_DSGN, 
				getHikariRouteNaiyo(inMap.getString(JBSbatKKIFM078.STEP_HROUTE_CHOSA_DSGN_CD)));
		
// ++++++++++++++++++++++++ v5.00.02 変更開始 ++++++++++++++++++++++++
// コース変更工事であるかの判定処理を追加
		if (!isCourceChgKojiak(inMap))
		{
			// お客様宅内調査日程調整の設定
			outmap.set(JBSbatKKIFM079.CUST_TAKCHO_NTADJ, 
					getkokyakuTkiiChosaNitteiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_CUST_TAKCHO_NTADJ_CD), takcho_jssi_flg));
			
			// お客様宅内調査の設定
			outmap.set(JBSbatKKIFM079.CUST_TAKCHO_CD, 
					getkokyakuTkiiChosaNaiyo(inMap.getString(JBSbatKKIFM078.STEP_CUST_TAKCHO_CD), takcho_jssi_flg));
			
			// 承諾書受領の設定
			outmap.set(JBSbatKKIFM079.SDAKS_RCP, 
					getShodakushoJuryoNaiyo(inMap.getString(JBSbatKKIFM078.STEP_TAKCHO_SDAKS_RCP_CD), takcho_jssi_flg));
		}
// ++++++++++++++++++++++++ v5.00.02 変更終了 ++++++++++++++++++++++++
		
		// 各種許可申請の設定
		outmap.set(JBSbatKKIFM079.VARI_KYOKA_SHINSEI,
				getKakushuKyokaShinseiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_VARI_KYOKA_SHINSEI_CD)));
		
		// 光ケーブル線路工事の設定
		outmap.set(JBSbatKKIFM079.HCABLE_LINE_KOJI,
				getHikariCableKansenKojiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_HCABLE_LINE_KOJI_CD)));
		
		// お客様宅内工事の設定
		outmap.set(JBSbatKKIFM079.CUST_TAKNI_KOJI, 
				getkokyakuTkiiKojiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_CUST_TAKNI_KOJI_CD)));
		
		// ご利用開始の設定
		outmap.set(JBSbatKKIFM079.USE_STA, getRiyoKaishiNaiyo(inMap.getString(JBSbatKKIFM078.STEP_USE_STA_CD)));
		
		// メールコードの設定
		outmap.set(JBSbatKKIFM079.MAIL_CD, PC_MAIL_CODE);
		
		// 工事案件番号の設定
		outmap.set(JBSbatKKIFM079.KOJIAK_NO, inMap.getString(JBSbatKKIFM078.KOJIAK_NO));
		
		// 工事進捗通知メールアドレスの設定
		outmap.set(JBSbatKKIFM079.KOJI_PRG_TCHI_MLAD, inMap.getString(JBSbatKKIFM078.KOJI_PRG_TCHI_MLAD));
		
		// 工事進捗通知携帯メールアドレスの設定
		outmap.set(JBSbatKKIFM079.KJSC_TCH_KTAI_MLAD, inMap.getString(JBSbatKKIFM078.KJSC_TCH_KTAI_MLAD));
		
		// 申込書番号の設定
		outmap.set(JBSbatKKIFM079.MSKMSHO_NO, inMap.getString(JBSbatKKIFM078.MSKMSHO_NO));

// ++++++++++++++++++++++++ v5.00.04 変更開始 ++++++++++++++++++++++++
		// 工事案件種別の設定
		outmap.set(JBSbatKKIFM079.KOJIAK_SBT_CD, inMap.getString(JBSbatKKIFM078.KOJIAK_SBT_CD));
		// 申込書明細番号の設定
		outmap.set(JBSbatKKIFM079.MSKMSHO_DTL_NO, inMap.getString(JBSbatKKIFM078.MSKMSHO_DTL_NO));
// ++++++++++++++++++++++++ v5.00.04 変更開始 ++++++++++++++++++++++++

	}
	
	/**
	 * サービス契約ステータスの進捗内容を取得。<br>
	 * <p>
	 * @param svc_kei_stat サービス契約ステータス
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getServiceKeiyakuStatusNaiyo(String svc_kei_stat) throws Exception
	{
		// サービス契約ステータスの進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// メール文言（工程の名称：受付完了）
		str.append(work_param_List.get(0));
		str.append(STR_KAIGYO);
		
		// サービス契約ステータスが受入済みの場合
		if (SVC_KEI_STAT_010.equals(svc_kei_stat))
		{
			// メール文言（工程の名称：受付完了、サービス契約ステータス：受付済）
			str.append(work_param_List.get(9));
		}
		
		// サービス契約ステータスが照査済みの場合
		else
		{
			// メール文言（工程の名称：受付完了、サービス契約ステータス：照査済）
			str.append(work_param_List.get(10));
		}
		
		return str.toString();
	}
	
	/**
	 * 光ルート調査・設計の進捗内容を取得。<br>
	 * <p>
	 * @param hikari_route_cd 光ルート調査・設計コード
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getHikariRouteNaiyo(String hikari_route_cd) throws Exception
	{
		// 光ルート調査・設計コードの進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// 光ルート調査・設計コードが設定されている場合
		if (hikari_route_cd != null && !"".equals(hikari_route_cd))
		{
			// メール文言（工程の名称：光ルート調査・設計）
			str.append(work_param_List.get(1));
			str.append(STR_KAIGYO);
			
			// 光ルート調査・設計コードが作業中の場合
			if (SAGYO_CHU.equals(hikari_route_cd))
			{
				// メール文言（工程の名称：光ルート調査・設計、状況：作業中）
				str.append(work_param_List.get(11));
			}
			
			// 光ルート調査・設計コードが作業完了の場合
			else if (SAGYO_KANRYO.equals(hikari_route_cd))
			{
				// メール文言（工程の名称：光ルート調査・設計、状況：作業完了）
				str.append(work_param_List.get(12));
			}
		}
		
		return str.toString();
	}
	
	/**
	 * お客様宅内調査日程調整の進捗内容を取得。<br>
	 * <p>
	 * @param kokyaku_tkii_chosa_nittei_cd お客様宅内調査日程調整コード
	 * @param takcho_jssi_flg 宅内調査実施フラグ
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getkokyakuTkiiChosaNitteiNaiyo(String kokyaku_tkii_chosa_nittei_cd, String takcho_jssi_flg) throws Exception
	{
		// お客様宅内調査日程調整の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// 宅内調査実施フラグ(宅内調査無)でない場合
		if (!TAKCHO_JSSI_FLG_NON.equals(takcho_jssi_flg))
		{
			// お客様宅内調査日程調整コードが設定されている場合
			if (kokyaku_tkii_chosa_nittei_cd != null && !"".equals(kokyaku_tkii_chosa_nittei_cd))
			{
				// メール文言（工程の名称：お客様宅内調査日程調整）
				str.append(work_param_List.get(2));
				str.append(STR_KAIGYO);
			
				// お客様宅内調査日程調整コードが作業中の場合
				if (SAGYO_CHU.equals(kokyaku_tkii_chosa_nittei_cd))
				{
					// メール文言（工程の名称：お客様宅内調査日程調整、状況：作業中）
					str.append(work_param_List.get(13));
				}
				
				// お客様宅内調査日程調整コードが作業完了の場合
				else if (SAGYO_KANRYO.equals(kokyaku_tkii_chosa_nittei_cd))
				{
					// メール文言（工程の名称：お客様宅内調査日程調整、状況：作業完了）
					str.append(work_param_List.get(14));
				}
			}
		}
		
		return str.toString();
	}

	/**
	 * お客様宅内調査の進捗内容を取得。<br>
	 * <p>
	 * @param kokyaku_tkii_chosa_cd お客様宅内調査コード
	 * @param takcho_jssi_flg 宅内調査実施フラグ
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getkokyakuTkiiChosaNaiyo(String kokyaku_tkii_chosa_cd, String takcho_jssi_flg) throws Exception
	{
		// お客様宅内調査の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// 宅内調査実施フラグ(宅内調査無)でない場合
		if (!TAKCHO_JSSI_FLG_NON.equals(takcho_jssi_flg))
		{
			// お客様宅内調査コードが設定されている場合
			if (kokyaku_tkii_chosa_cd != null && !"".equals(kokyaku_tkii_chosa_cd))
			{
				// メール文言（工程の名称：お客様宅内調査）
				str.append(work_param_List.get(3));
				str.append(STR_KAIGYO);
				
				// お客様宅内調査コードが作業中の場合
				if (SAGYO_CHU.equals(kokyaku_tkii_chosa_cd))
				{
					// メール文言（工程の名称：お客様宅内調査、状況：作業中）
					str.append(work_param_List.get(15));
				}
				
				// お客様宅内調査コードが作業完了の場合
				else if (SAGYO_KANRYO.equals(kokyaku_tkii_chosa_cd))
				{
					// メール文言（工程の名称：お客様宅内調査、状況：作業完了）
					str.append(work_param_List.get(16));
				}
			}
		}
		
		return str.toString();
	}
	
	/**
	 * 各種許可申請の進捗内容を取得。<br>
	 * <p>
	 * @param kakushu_kyoka_shinsei_cd 各種許可申請コード
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getKakushuKyokaShinseiNaiyo(String kakushu_kyoka_shinsei_cd) throws Exception
	{
		// 各種許可申請の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// 各種許可申請コードが設定されている場合
		if (kakushu_kyoka_shinsei_cd != null && !"".equals(kakushu_kyoka_shinsei_cd))
		{
			// メール文言（工程の名称：各種許可申請）
			str.append(work_param_List.get(4));
			str.append(STR_KAIGYO);
			
			// 各種許可申請コードが作業中の場合
			if (SAGYO_CHU.equals(kakushu_kyoka_shinsei_cd))
			{
				// メール文言（工程の名称：各種許可申請、状況：作業中）
				str.append(work_param_List.get(17));
			}
			
			// 各種許可申請コードが作業完了の場合
			else if (SAGYO_KANRYO.equals(kakushu_kyoka_shinsei_cd))
			{
				// メール文言（工程の名称：各種許可申請、状況：作業完了）
				str.append(work_param_List.get(18));
			}
		}
		
		return str.toString();
	}
	
	/**
	 * 承諾書受領の進捗内容を取得。<br>
	 * <p>
	 * @param shodakusho_juryo_cd 承諾書受領コード
	 * @param takcho_jssi_flg 宅内調査実施フラグ
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getShodakushoJuryoNaiyo(String shodakusho_juryo_cd, String takcho_jssi_flg) throws Exception
	{
		// 承諾書受領の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// 宅内調査実施フラグ(宅内調査無)でない場合
		if (!TAKCHO_JSSI_FLG_NON.equals(takcho_jssi_flg))
		{
			// 承諾書受領コードが設定されている場合
			if (shodakusho_juryo_cd != null && !"".equals(shodakusho_juryo_cd))
			{
				// メール文言（工程の名称：承諾書受領）
				str.append(work_param_List.get(5));
				str.append(STR_KAIGYO);
				
				// 承諾書受領コードが作業中の場合
				if (SAGYO_CHU.equals(shodakusho_juryo_cd))
				{
					// メール文言（工程の名称：承諾書受領、状況：作業中）
					str.append(work_param_List.get(19));
				}
				
				// 承諾書受領コードが作業完了の場合
				else if (SAGYO_KANRYO.equals(shodakusho_juryo_cd))
				{
					// メール文言（工程の名称：承諾書受領、状況：作業完了）
					str.append(work_param_List.get(20));
				}
			}
		}
		return str.toString();
	}

	/**
	 * 光ケーブル幹線工事の進捗内容を取得。<br>
	 * <p>
	 * @param hikari_cable_kansen_koji_cd 光ケーブル幹線工事コード
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getHikariCableKansenKojiNaiyo(String hikari_cable_kansen_koji_cd) throws Exception
	{
		// 光ケーブル幹線工事の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// 光ケーブル幹線工事コードが設定されている場合
		if (hikari_cable_kansen_koji_cd != null && !"".equals(hikari_cable_kansen_koji_cd))
		{
			// メール文言（工程の名称：光ケーブル幹線工事）
			str.append(work_param_List.get(6));
			str.append(STR_KAIGYO);
			
			// 光ケーブル幹線工事コードが作業中の場合
			if (SAGYO_CHU.equals(hikari_cable_kansen_koji_cd))
			{
				// メール文言（工程の名称：光ケーブル幹線工事、状況：作業中）
				str.append(work_param_List.get(21));
				str.append(work_param_List.get(22));
				str.append(work_param_List.get(23));
				str.append(work_param_List.get(24));
				str.append(work_param_List.get(25));
			}
			
			// 光ケーブル幹線工事コードが作業完了の場合
			else if (SAGYO_KANRYO.equals(hikari_cable_kansen_koji_cd))
			{
				// メール文言（工程の名称：光ケーブル幹線工事、状況：作業完了）
				str.append(work_param_List.get(26));
			}
		}
		
		return str.toString();
	}
	
	/**
	 * お客様宅内工事の進捗内容を取得。<br>
	 * <p>
	 * @param kokyaku_tkii_koji_cd お客様宅内工事コード
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getkokyakuTkiiKojiNaiyo(String kokyaku_tkii_koji_cd) throws Exception
	{
		// お客様宅内工事の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// お客様宅内工事コードが設定されている場合
		if (kokyaku_tkii_koji_cd != null && !"".equals(kokyaku_tkii_koji_cd))
		{
			
			// メール文言（工程の名称：お客様宅内工事）
			str.append(work_param_List.get(7));
			str.append(STR_KAIGYO);
			
			// お客様宅内工事コードが作業中の場合
			if (SAGYO_CHU.equals(kokyaku_tkii_koji_cd))
			{
				// メール文言（工程の名称：お客様宅内工事、状況：作業中）
				str.append(work_param_List.get(27));
				str.append(work_param_List.get(28));
				str.append(work_param_List.get(29));
			}
			
			// お客様宅内工事コードが作業完了の場合
			else if (SAGYO_KANRYO.equals(kokyaku_tkii_koji_cd))
			{
				// メール文言（工程の名称：お客様宅内工事、状況：作業完了）
				str.append(work_param_List.get(30));
			}
		}
		
		return str.toString();
	}
	
	/**
	 * ご利用開始の進捗内容を取得。<br>
	 * <p>
	 * @param riyo_kaishi_cd ご利用開始コード
	 * @return 出力する工程文言と出力する工程状況の文言の文字列
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @throws IOException 
	 */	
	private String getRiyoKaishiNaiyo(String riyo_kaishi_cd) throws Exception
	{
		// ご利用開始の進捗内容を保持
		StringBuilder str = new StringBuilder();
		
		// ご利用開始コードが設定されている場合
		if (riyo_kaishi_cd != null && !"".equals(riyo_kaishi_cd))
		{
			// メール文言（工程の名称：ご利用開始）
			str.append(work_param_List.get(8));
			str.append(STR_KAIGYO);
			
			// ご利用開始コードが作業中の場合
			if (SAGYO_CHU.equals(riyo_kaishi_cd))
			{
				// メール文言（工程の名称：ご利用開始、状況：作業中）
				str.append(work_param_List.get(31));
			}
			
			// ご利用開始コードが作業完了の場合
			else if (SAGYO_KANRYO.equals(riyo_kaishi_cd))
			{
				// メール文言（工程の名称：ご利用開始、状況：作業完了）
				str.append(work_param_List.get(32));
			}
		}
		
		return str.toString();
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	バッチ運用日
	 *		 	バッチ運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_001);
	}
	
// ++++++++++++++++++++++++ v5.00.02 追加開始 ++++++++++++++++++++++++
	/**
	 * 引数で指定されたKKIFM078のレコードに対する工事がコース変更工事かをチェックする。
	 */
	private boolean isCourceChgKojiak(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		if ("009".equals(inMap.getString(JBSbatKKIFM078.KOJIAK_SBT_CD)))
		{
			return true;
		}
		else if ("013".equals(inMap.getString(JBSbatKKIFM078.KOJIAK_SBT_CD)))
		{
			return true;
		}
		return false;
	}
// ++++++++++++++++++++++++ v5.00.02 追加終了 ++++++++++++++++++++++++
}
