/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKcnRnkiKeiIfStku
*	ソースファイル名	：JBSbatKKKcnRnkiKeiIfStku.java
*	作成者				：富士通　
*	作成日				：2011年10月05日
*＜機能概要＞
*　ＫＣＮ連携契約情報取得部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v2.00.00	2011/10/05	FJ)神吉		新規作成
*	v2.01.00	2012/01/12  FJ)神吉		IT2-2012-0000048障害対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatInterface;
import eo.business.util.file.JBSbatKKIFM097;
import eo.business.util.file.JBSbatKKIFM115;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
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 JBSbatKKKcnRnkiKeiIfStku extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 
	 *  該当データカウント
	 */
	private int count = 0;
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		String svcKeiNo              = "";		// サービス契約番号
		String kcnNo                 = "";		// ＫＣＮ番号
		String svcStaymd             = "";		// サービス開始年月日
		String svcChrgStaymd         = "";		// サービス課金開始年月日
		String svcEndymd             = "";		// サービス終了年月日
		String kcnKeiCd              = "";		// ＫＣＮ契約コード
		String kcnKeiStatCd          = "";		// ＫＣＮ契約状態コード 
		String shosaZumiFlg          = "";		// 照査済フラグ
		String shosaYmd              = "";		// 照査年月日
		String svcCancelYmd          = "";		// サービスキャンセル年月日
		String svcDslYmd             = "";		// サービス解約年月日
		String packKindCd            = "";		// パック種類コード
		String packTstaymd           = "";		// パック適用開始年月日
		String packTendymd           = "";		// パック適用終了年月日
		String zngtuYm               = "";     	// 前月の年月
		String zngtuMatuYmd          = "";      // 前月末日
		
		
		// 処理年月の前月の年月取得
		zngtuYm = JBSbatInterface.adjustMonth(super.opeDate, -1).substring(0, 6);
		
		// 処理年月の前月の末日取得（前月の年月＋前月の末日）
		zngtuMatuYmd = zngtuYm.concat(JBSbatInterface.getEndOfMonth(zngtuYm));
		
		svcStaymd    = inMap.getString(JBSbatKKIFM115.SVC_STAYMD);
		
		// サービス開始年月日が「null」または、空または、サービス開始年月日が処理年月の前月末日以前でない場合
		if(svcStaymd == null || svcStaymd.length() == 0 || svcStaymd.compareTo(zngtuMatuYmd) > 0) 
		{
			return null;
		}
		
		// サービス契約番号
		svcKeiNo = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SVC_KEI_NO));
		
		// ＫＣＮ番号
		kcnNo = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.KCN_NO));
		
		// サービス開始年月日
		svcStaymd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SVC_STAYMD));
		
		// サービス課金開始年月日
		svcChrgStaymd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SVC_CHRG_STAYMD));
		
		// サービス終了年月日
		svcEndymd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SVC_ENDYMD));
		
		// ＫＣＮ契約コード
		kcnKeiCd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.KCN_KEI_CD));
		
		// ＫＣＮ契約状態コード 
		kcnKeiStatCd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.KCN_KEI_STAT_CD));
		
		// 照査済フラグ
		shosaZumiFlg = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SHOSA_ZUMI_FLG));
		
		// 照査年月日
		shosaYmd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SHOSA_YMD));
		
		// サービスキャンセル年月日
		svcCancelYmd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SVC_CANCEL_YMD));
		
		// サービス解約年月日
		svcDslYmd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.SVC_DSL_YMD));
		
		// パック種類コード
		packKindCd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.PACK_KIND_CD));
		
		// パック適用開始年月日
		packTstaymd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.PACK_TSTAYMD));
		
		// パック適用終了年月日
		packTendymd = JBSbatStringUtil.trim(inMap.getString(JBSbatKKIFM115.PACK_TENDYMD));
		
		//項目を設定
		outmap.setString(JBSbatKKIFM115.SVC_KEI_NO, svcKeiNo);					// サービス契約番号
		outmap.setString(JBSbatKKIFM115.KCN_NO, kcnNo);							// ＫＣＮ番号
		outmap.setString(JBSbatKKIFM115.SVC_STAYMD, svcStaymd);					// サービス開始年月日
		outmap.setString(JBSbatKKIFM115.SVC_CHRG_STAYMD, svcChrgStaymd);		// サービス課金開始年月日
		outmap.setString(JBSbatKKIFM115.SVC_ENDYMD, svcEndymd);					// サービス終了年月日
		outmap.setString(JBSbatKKIFM115.KCN_KEI_CD, kcnKeiCd);					// ＫＣＮ契約コード
		outmap.setString(JBSbatKKIFM115.KCN_KEI_STAT_CD, kcnKeiStatCd);			// ＫＣＮ契約状態コード 
		outmap.setString(JBSbatKKIFM115.SHOSA_ZUMI_FLG, shosaZumiFlg);			// 照査済フラグ
		outmap.setString(JBSbatKKIFM115.SHOSA_YMD, shosaYmd);					// 照査年月日
		outmap.setString(JBSbatKKIFM115.SVC_CANCEL_YMD, svcCancelYmd);			// サービスキャンセル年月日
		outmap.setString(JBSbatKKIFM115.SVC_DSL_YMD, svcDslYmd);				// サービス解約年月日
		outmap.setString(JBSbatKKIFM115.PACK_KIND_CD, packKindCd);				// パック種類コード
		outmap.setString(JBSbatKKIFM115.PACK_TSTAYMD, packTstaymd);				// パック適用開始年月日
		outmap.setString(JBSbatKKIFM115.PACK_TENDYMD, packTendymd);				// パック適用終了年月日
		
		super.logPrint.printDebugLog("サービス契約番号：" +  svcKeiNo);
		super.logPrint.printDebugLog("ＫＣＮ番号：" +  kcnNo);
		super.logPrint.printDebugLog("サービス開始年月日：" +  svcStaymd);
		super.logPrint.printDebugLog("サービス課金開始年月日：" +  svcChrgStaymd);
		super.logPrint.printDebugLog("サービス終了年月日：" +  svcEndymd);
		super.logPrint.printDebugLog("ＫＣＮ契約コード：" +  kcnKeiCd);
		super.logPrint.printDebugLog("ＫＣＮ契約状態コード ：" +  kcnKeiStatCd);
		super.logPrint.printDebugLog("照査済フラグ：" +  shosaZumiFlg);
		super.logPrint.printDebugLog("照査年月日：" +  shosaYmd);
		super.logPrint.printDebugLog("サービスキャンセル年月日：" +  svcCancelYmd);
		super.logPrint.printDebugLog("サービス解約年月日：" +  svcDslYmd);
		super.logPrint.printDebugLog("パック種類コード：" +  packKindCd);
		super.logPrint.printDebugLog("パック適用開始年月日：" +  packTstaymd);
		super.logPrint.printDebugLog("パック適用終了年月日：" +  packTendymd);

		// 該当レコードカウントアップ
		count++;
		
		//出力フラグを設定
		outmap.setOutFlg(true);
		//出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outmap);
		
		super.logPrint.printDebugLog("execute_END");
		
		//出力共通電文を返却
		return outputBean;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		// 該当レコードがない場合
		if(count == 0)
		{
			// 連携契約情報テーブルに該当レコードがない内容のログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
					new String[]{"KCN連携契約情報テーブルに該当データが存在しません。該当レコード件数：" + count});
		}
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
