/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKTgWrbSvcKeiChsht
*	ソースファイル名	：JBSbatKKTgWrbSvcKeiChsht.java
*	作成者				：富士通　
*	作成日				：2011年07月22日
*＜機能概要＞
*　対象割引サービス契約抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/22  FJ)久保田	新規作成
*	v3.00.00	2012/07/17  FJ)藤本		【IT2-2012-0001348】割引関連スキーマの変更に伴う修正
*	v4.00.00	2013/01/06  FJ)倉上		【ST4-2013-0000032】障害対応
*	v4.01.00	2013/02/28	FJ)松浦		【ST4-2013-0000166】性能改善
*	v4.02.00	2013/03/08	FJ)中作		【ST2-2013-0001163】障害対応
*	v5.00.00	2013/02/14	FJ)石原		【ANK-1458-00-00】「割引サービス契約」のサービス課金開始年月日の項目不正使用対応
*	v5.01.00	2013/04/10	FJ)藤本		【ST2-2013-0001654】障害対応
*	v22.00.00	2015/11/25	FJ)杉本		【ANK-2732-00-00】プロジェクト正常化 サービス開始に関するソース可読性向上
*	v50.00.00	2020/07/16	FJ)謝		【ANK-3889-00-00】機器単位キャンペーン対応（機器サービス開始日の開始契機導入）
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.util.file.JBSbatKKIFM068;
import eo.business.util.file.JBSbatKKIFM384;
import eo.business.util.table.JBSbatKK_M_WRIB_SVC;
import eo.business.util.table.JBSbatKK_M_WRIB_SVC_DTL;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_WRIB_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_WRISVC_KEI_UCWK;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKTgWrbSvcKeiChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @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();
		
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap2 = new JBSbatServiceInterfaceMap();
		
		// 割引サービス契約を取得。
		JBSbatCommonDBInterface wribSvcKeiMap = this.getWribSvcKei(inMap);
		if (null != wribSvcKeiMap) {
			
			// キャンペーン開始コードで分岐処理を行う。
			String campaign_sta_cd = wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.CAMPAIGN_STA_CD);
			
			// 下記コードは対象外
			// "58":割賦契約割引,"59":ハイブリッド割引
			// ++++++++++ v22.00.00 変更開始 ++++++++++
//			if("58".equals(campaign_sta_cd)
//					|| "59".equals(campaign_sta_cd))
			if(JBSbatKKConst.CAMPAIGN_STA_CD_KAP_KEI_WRIB.equals(campaign_sta_cd)
					|| JBSbatKKConst.CAMPAIGN_STA_CD_BYBRID_WRIB.equals(campaign_sta_cd))
			// ++++++++++ v22.00.00 変更終了 ++++++++++
			{
				return null;
			}
			
			// 下記コード以外の場合、ファイル出力を行う。
			// "01"：課金開始日、"02"：サービス開始日、"03"：登録月、"04"：翌月、"05"：翌月（初日は当月）
			// "06"：課金開始前月、"07"：プラン変更、"08"：機種変更、"09"：出荷日+n日、"10":機器サービス開始日、"20"：住変サービス開始日
			// ++++++++++ v22.00.00 変更開始 ++++++++++
//			if (!"01".equals(campaign_sta_cd)
//					&& !"02".equals(campaign_sta_cd)
//					&& !"03".equals(campaign_sta_cd)
//					&& !"04".equals(campaign_sta_cd)
//					&& !"05".equals(campaign_sta_cd)
//					&& !"06".equals(campaign_sta_cd)
//					&& !"07".equals(campaign_sta_cd)
//					&& !"08".equals(campaign_sta_cd)
//					&& !"09".equals(campaign_sta_cd)
//					&& !"20".equals(campaign_sta_cd)) { 
			if (!JBSbatKKConst.CAMPAIGN_STA_CD_CHRG_STA_DAY.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_SVC_STA_DAY.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_SVC_ADD_MON.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_NXT_MON.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_NXT_MON_SHONICHI_GAI.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_CHRG_STA_PREV_MON.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_PLAN_CHG.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_MDL_CHG.equals(campaign_sta_cd)
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_SHUKKA_DAY_PLUS.equals(campaign_sta_cd)
// ANK-3889-00-00 ADD START
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_KIKI_SVC_STA_DAY.equals(campaign_sta_cd)
// ANK-3889-00-00 ADD END
					&& !JBSbatKKConst.CAMPAIGN_STA_CD_ADCHG_SVC_STA_DAY.equals(campaign_sta_cd)) { 
			// ++++++++++ v22.00.00 変更終了 ++++++++++
				
				//割引サービス対象契約抽出（割引）の作成
				outmap2 = createKkife384Data(wribSvcKeiMap);
				
				//「割引サービス対象契約抽出（割引）」ファイルの出力情報を設定する。
				outputBean.addOutMapList_2(outmap2);

				//出力フラグを設定
				outmap2.setOutFlg(true);
				
				return outputBean;
			}
			
			//項目を設定
			outmap.setString(JBSbatKKIFM068.WRIB_SVC_KEI_NO,      wribSvcKeiMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_NO));			// 割引サービス契約番号
			outmap.setString(JBSbatKKIFM068.WRIB_SVC_KEI_UCWK_NO, wribSvcKeiMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_NO));	// 割引サービス契約内訳番号
			outmap.setString(JBSbatKKIFM068.GENE_ADD_DTM,         wribSvcKeiMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM));			// 世代登録年月日時分秒
			outmap.setString(JBSbatKKIFM068.WRIB_SVC_CD,          wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.WRIB_SVC_CD));		// 割引サービスコード
			outmap.setString(JBSbatKKIFM068.CAMPAIGN_STA_CD,      wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.CAMPAIGN_STA_CD));	// キャンペーン開始コード
			outmap.setString(JBSbatKKIFM068.STA_ADJ_CD,           wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_CD));			// 開始調整コード
			outmap.setString(JBSbatKKIFM068.STA_ADJ, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_PRD));																		// 開始調整期間
			outmap.setString(JBSbatKKIFM068.APLY_CNT_HAMBET_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT_HAMBET_CD));	// 適用数判別コード
			outmap.setString(JBSbatKKIFM068.APLY_CNT, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT));																		// 適用数
			outmap.setString(JBSbatKKIFM068.WRIB_TYPE_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC.WRIB_TYPE_CD));					// 割引タイプコード
			outmap.setString(JBSbatKKIFM068.MSKM_DTL_NO,  wribSvcKeiMap.getString(JBSbatKK_T_WRIB_SVC_KEI.MSKM_DTL_NO));				// 申込明細番号
			outmap.setString(JBSbatKKIFM068.MSKM_YMD,     wribSvcKeiMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_YMD));						// 申込年月日
			
			//出力フラグを設定
			outmap.setOutFlg(true);
			
			//出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList(outmap);
		}
		
		super.logPrint.printDebugLog("execute_END");
		
		//出力共通電文を返却
		return outputBean;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	

	private JBSbatCommonDBInterface getWribSvcKei(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		JBSbatCommonDBInterface rtnMap = null;
		
		if (inMap != null)
		{
			rtnMap = new JBSbatCommonDBInterface();
			
			// 割引サービス契約番号
			rtnMap.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_NO));
			// 割引サービス契約内訳番号
			rtnMap.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_NO, inMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_NO));
			// 世代登録年月日時分秒
			rtnMap.setValue(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM, inMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM));
			// 割引サービスコード
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC_DTL.WRIB_SVC_CD, inMap.getString(JBSbatKK_M_WRIB_SVC_DTL.WRIB_SVC_CD));
			// キャンペーン開始コード
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC_DTL.CAMPAIGN_STA_CD, inMap.getString(JBSbatKK_M_WRIB_SVC_DTL.CAMPAIGN_STA_CD));
			// 開始調整コード
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_CD, inMap.getString(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_CD));
			// 開始調整期間
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_PRD, inMap.getString(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_PRD));
			// 適用数判別コード
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT_HAMBET_CD, inMap.getString(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT_HAMBET_CD));
			// 適用数
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT, inMap.getString(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT));
			// 割引タイプコード
			rtnMap.setValue(JBSbatKK_M_WRIB_SVC.WRIB_TYPE_CD, inMap.getString(JBSbatKK_M_WRIB_SVC.WRIB_TYPE_CD));
			// 申込明細番号
			rtnMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.MSKM_DTL_NO, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.MSKM_DTL_NO));
			// 割引額算出基準年月日
			rtnMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD));
			// 割引課金開始月指定コード
			rtnMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_CHRG_STA_MON_STI_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_CHRG_STA_MON_STI_CD));
			// 割引登録年月日
			rtnMap.setValue(JBSbatKK_T_WRIB_SVC_KEI.WRIB_ADD_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_ADD_YMD));
			// 申込年月日
			rtnMap.setValue(JBSbatKK_T_MSKM_DTL.MSKM_YMD, inMap.getString(JBSbatKK_T_MSKM_DTL.MSKM_YMD));
			
		}
		return rtnMap;
	}

	/**
	 * 
	 *  割引サービス対象契約抽出（割引）の作成を行います。
	 * @param wribSvcKeiMap 割引サービス契約情報
	 * @return JBSbatServiceInterfaceMap
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap createKkife384Data(JBSbatCommonDBInterface wribSvcKeiMap) throws Exception
	{

		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();

		// 割引サービス契約番号
		outmap.setString(JBSbatKKIFM384.WRIB_SVC_KEI_NO, wribSvcKeiMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_NO));
		// 割引サービス契約内訳番号
		outmap.setString(JBSbatKKIFM384.WRIB_SVC_KEI_UCWK_NO, wribSvcKeiMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.WRIB_SVC_KEI_UCWK_NO));
		// 世代登録年月日時分秒
		outmap.setString(JBSbatKKIFM384.GENE_ADD_DTM, wribSvcKeiMap.getString(JBSbatKK_T_WRISVC_KEI_UCWK.GENE_ADD_DTM));
		// 割引サービスコード
		outmap.setString(JBSbatKKIFM384.WRIB_SVC_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.WRIB_SVC_CD));
		// キャンペーン開始コード
		outmap.setString(JBSbatKKIFM384.CAMPAIGN_STA_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.CAMPAIGN_STA_CD));
		// 開始調整コード
		outmap.setString(JBSbatKKIFM384.STA_ADJ_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_CD));
		// 開始調整期間
		outmap.setString(JBSbatKKIFM384.STA_ADJ_PRD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.STA_ADJ_PRD));
		// 適用数判別コード
		outmap.setString(JBSbatKKIFM384.APLY_CNT_HAMBET_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT_HAMBET_CD));
		// 適用数
		outmap.setString(JBSbatKKIFM384.APLY_CNT, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC_DTL.APLY_CNT));
		// 割引タイプコード
		outmap.setString(JBSbatKKIFM384.WRIB_TYPE_CD, wribSvcKeiMap.getString(JBSbatKK_M_WRIB_SVC.WRIB_TYPE_CD));
		// 割引登録年月日
		outmap.setString(JBSbatKKIFM384.WRIB_ADD_YMD, wribSvcKeiMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_ADD_YMD));
		// 割引額算出基準年月日
		outmap.setString(JBSbatKKIFM384.WRIB_AMNT_SNST_STDARDYMD, wribSvcKeiMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD));
		// 割引額開始月指定コード
		outmap.setString(JBSbatKKIFM384.WRIB_CHRG_STA_MON_STI_CD, wribSvcKeiMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_CHRG_STA_MON_STI_CD));

		return outmap;
	}
}
