/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKeiHoseiListSaksei
*	ソースファイル名	：JBSbatKKKeiHoseiListSaksei.java
*	作成者				：富士通　
*	作成日				：2011年07月19日
*＜機能概要＞
*　契約補正リスト作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/19	FJ）庭山	新規作成
*	v2.00.00	2012/06/02	FJ）倉上	【ST1-2012-0000064】障害対応
*	v4.00.00	2013/03/19	FJ)石原		【IT1-2013-0000498】システムエラー対処の横展開
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM056;
import eo.business.util.table.JBSbatKK_T_KOJI_DLY_KEHSI;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKeiHoseiListSaksei extends JBSbatBusinessService
{
	/**
	 * コード種別ID（サービス課金開始年月日変更理由コード）
	 */
	private static final String CODE_ID = "CD00869";

	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");

		JBSbatOutputItem out_bean = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();

		out_map.setString(JBSbatKKIFM056.SVC_KEI_NO, inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.SVC_KEI_NO));
		out_map.setString(JBSbatKKIFM056.SEIKY_KEI_NO, "");
		out_map.setString(JBSbatKKIFM056.KEISHA_NM, "");
		out_map.setString(JBSbatKKIFM056.KEI_SVC, "");
		out_map.setString(JBSbatKKIFM056.TORIATSU_DIV, serchCodeNm(inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.SVC_CHRG_STAYMD_CHGRE_CD)));

		/* ++++++++++ v2.00.00 修正開始 ++++++++++ */
		// out_map.setString(JBSbatKKIFM056.HOSEI_YMD, inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.KOJI_DLY_HOSEI_YMD));
		out_map.setString(JBSbatKKIFM056.HOSEI_YMD, editDate(JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.KOJI_DLY_HOSEI_YMD))));
		/* ++++++++++ v2.00.00 修正終了 ++++++++++ */

		out_map.setString(JBSbatKKIFM056.SVC_STA_YMD, "");

		/* ++++++++++ v2.00.00 修正開始 ++++++++++ */
		// out_map.setString(JBSbatKKIFM056.CHRG_STA_HOSEI_AF_YMD, inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.HOSEI_AF_SVC_CHRG_STAYMD));
		// out_map.setString(JBSbatKKIFM056.CHRG_STA_HOSEI_BF_YMD, inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.HOSEI_BF_SVC_CHRG_STAYMD));
		out_map.setString(JBSbatKKIFM056.CHRG_STA_HOSEI_AF_YMD, editDate(JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.HOSEI_AF_SVC_CHRG_STAYMD))));
		out_map.setString(JBSbatKKIFM056.CHRG_STA_HOSEI_BF_YMD, editDate(JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KOJI_DLY_KEHSI.HOSEI_BF_SVC_CHRG_STAYMD))));
		/* ++++++++++ v2.00.00 修正終了 ++++++++++ */

		out_map.setString(JBSbatKKIFM056.RRKS_TEL, "");
		out_map.setString(JBSbatKKIFM056.SYSID, "");
		out_map.setString(JBSbatKKIFM056.PRC_GRP_CD, "");
		out_map.setString(JBSbatKKIFM056.PCRS_CD, "");

		// 出力フラグを設定します
		out_map.setOutFlg(true);
		out_bean.addOutMapList(out_map);

		super.logPrint.printDebugLog("execute_END");

		return out_bean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 変更理由コードの名称を取得します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.DBアクセスを実行します。<br>
	 *
	 * 2.存在した場合はコード名称、存在しない場合は空文字を返します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param code　変更理由コード。
	 * @return String。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String serchCodeNm(String code) throws Exception
	{
		String rtn_value = "";
		JBSbatCommonDBInterface map = null;

		String[] param = new String[2];

		// バインド変数を設定します
		param[0] = CODE_ID;
		param[1] = code;

		// 検索を実行します
		map = executeZM_M_CD_NM_KANRI_PKSELECT(param);

		if (map != null)
		{
			// 検索結果を取得します
			rtn_value = JBSbatStringUtil.Rtrim(map.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
		}

		return rtn_value;
	}
	
	/**
	 * 年月日（YYYYMMDD）を"YYYY.MM.DD"形式に編集します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.年月日を"YYYY.MM.DD"形式にします。<br>
	 *
	 * </pre>
	 * <p>
	 * @param data　編集する年月日。
	 * @return String　編集後年月日。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String editDate(String data) throws Exception
	{
		StringBuffer value = new StringBuffer();
		
		if (data == null || "".equals(data))
		{
			return "";
		}
		
		value.append(data.subSequence(2, 4));
		value.append(".");
		value.append(data.subSequence(4, 6));
		value.append(".");
		value.append(data.subSequence(6, 8));
		
		return value.toString();
	}
}
