/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*  システム名               ：eo顧客基幹システム
*  モジュール名              ：JBSbatCHMineoCicTrgtCustInfoFileMake
*  ソースファイル名            ：JBSbatCHMineoCicTrgtCustInfoFileMake.java
*  作成者                 ：ジョバニー	
*  作成日                 ：2021年07月09日
*＜機能概要＞
*  mineoCIC対象お客様情報ファイル作成
*＜修正履歴＞
*  バージョン               修正日           修正者               修正内容              障害／仕様変更No.
*  v54.00.00            2021/07/07      GDC)ジョバニー                              【ANK-4064-00-00】CIC連携の自動化対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCHIFE094;
import eo.business.util.file.JBSbatCHIFM396;
import eo.business.util.table.JBSbatCH_T_NYUKIN;
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;


/**
* mineoCIC対象お客様情報ファイル作成です。<p>
* <BR>
* @author ジョバニー
* 
*/
public class JBSbatCHMineoCicTrgtCustInfoFileMake extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
    /**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** テーブル(課金先) */
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";
	
	/** テーブルアクセスクラス(課金先) */
	private JBSbatSQLAccess db_KK_T_KAKINS = null;
	
	/** SQL定義キー(CH_SELECT_007)*/
	private static final String KK_T_KAKINS_CH_SELECT_007 = "CH_SELECT_007";
	
	
	/** 空の文字列 */
	private static final String EMPTY_STRING = "";
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KAKINS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAKINS);

		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 利用停止予告対象データ作成
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		// 入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		String custID = inMap.getString(JBSbatCHIFM396.CUST_ID);
		
		// お客様番号
		outMap.setString(JBSbatCHIFE094.CUST_NO, inMap.getString(JBSbatCHIFM396.CUST_NO));
		// お客さまID
		outMap.setString(JBSbatCHIFE094.CUST_ID, custID);
		// 契約ｻｰﾋﾞｽ連番
		outMap.setString(JBSbatCHIFE094.KEI_SVC_REN_NO, inMap.getString(JBSbatCHIFM396.KEI_SVC_REN_NO));
		// 割賦ｻｰﾋﾞｽ連番
		outMap.setString(JBSbatCHIFE094.KAP_SVC_REN_NO, inMap.getString(JBSbatCHIFM396.KAP_SVC_REN_NO));
		// 割賦契約番号
		outMap.setString(JBSbatCHIFE094.KAP_KEI_NO, inMap.getString(JBSbatCHIFM396.KAP_KEI_NO));
		// 契約年月日
		outMap.setString(JBSbatCHIFE094.SVC_YMD, inMap.getString(JBSbatCHIFM396.SVC_YMD));
		// 課金開始日
		outMap.setString(JBSbatCHIFE094.CHRG_STA_YMD, inMap.getString(JBSbatCHIFM396.CHRG_STA_YMD));
		// 契約終了予定日
		outMap.setString(JBSbatCHIFE094.SVC_END_RSV_YMD, inMap.getString(JBSbatCHIFM396.SVC_END_RSV_YMD));
		// 支払回数
		outMap.setString(JBSbatCHIFE094.PAY_CNT, inMap.getString(JBSbatCHIFM396.PAY_CNT));
		// 割賦請求額
		outMap.setString(JBSbatCHIFE094.KAP_SEIKY_AMNT, inMap.getString(JBSbatCHIFM396.KAP_SEIKY_AMNT));
		// 請求年月
		outMap.setString(JBSbatCHIFE094.SEIKY_YM, inMap.getString(JBSbatCHIFM396.SEIKY_YM));
		// 当月請求額
		outMap.setString(JBSbatCHIFE094.TOGTU_SEIKY_AMNT, inMap.getString(JBSbatCHIFM396.TOGTU_SEIKY_AMNT));
		// 公的資料区分
		outMap.setString(JBSbatCHIFE094.KOTEKI_ATICLE_DIV, inMap.getString(JBSbatCHIFM396.KOTEKI_ATICLE_DIV));
		// 公的資料番号
		outMap.setString(JBSbatCHIFE094.KOTEKI_ATICLE_NO, inMap.getString(JBSbatCHIFM396.KOTEKI_ATICLE_NO));
		// 公的資料確認日
		outMap.setString(JBSbatCHIFE094.KOTEKI_ATICLE_CHECK_DATE, inMap.getString(JBSbatCHIFM396.KOTEKI_ATICLE_CHECK_DATE));
		// SYSID
		outMap.setString(JBSbatCHIFE094.SYSID, inMap.getString(JBSbatCHIFM396.SYSID));
		// お客様カナ名
		outMap.setString(JBSbatCHIFE094.CUST_KANA, inMap.getString(JBSbatCHIFM396.CUST_KANA));
		// お客様名
		outMap.setString(JBSbatCHIFE094.CUST_NM, inMap.getString(JBSbatCHIFM396.CUST_NM));
		// お客様生年月日
		outMap.setString(JBSbatCHIFE094.CUST_BIRTHD, inMap.getString(JBSbatCHIFM396.CUST_BIRTHD));
		// 契約者郵便番号
		outMap.setString(JBSbatCHIFE094.KEISHA_PCD, inMap.getString(JBSbatCHIFM396.KEISHA_PCD));
		// 契約者都道府県名
		outMap.setString(JBSbatCHIFE094.KEISHA_STATE_NM, inMap.getString(JBSbatCHIFM396.KEISHA_STATE_NM));
		// 契約者市区町村名
		outMap.setString(JBSbatCHIFE094.KEISHA_CITY_NM, inMap.getString(JBSbatCHIFM396.KEISHA_CITY_NM));
		// 契約者大字通称名
		outMap.setString(JBSbatCHIFE094.KEISHA_OAZTSU_NM, inMap.getString(JBSbatCHIFM396.KEISHA_OAZTSU_NM));
		// 契約者字丁目名
		outMap.setString(JBSbatCHIFE094.KEISHA_AZCHO_NM, inMap.getString(JBSbatCHIFM396.KEISHA_AZCHO_NM));
		// 契約者番地号
		outMap.setString(JBSbatCHIFE094.KEISHA_BNCHIGO, inMap.getString(JBSbatCHIFM396.KEISHA_BNCHIGO));
		// 契約者住所補記・建物名
		outMap.setString(JBSbatCHIFE094.KEISHA_ADRTTM, inMap.getString(JBSbatCHIFM396.KEISHA_ADRTTM));
		// 契約者住所補記・部屋番号
		outMap.setString(JBSbatCHIFE094.KEISHA_ADRRM, inMap.getString(JBSbatCHIFM396.KEISHA_ADRRM));
		// 契約者電話番号
		outMap.setString(JBSbatCHIFE094.KEISHA_TELNO, inMap.getString(JBSbatCHIFM396.KEISHA_TELNO));
		// お客様性別CD
		outMap.setString(JBSbatCHIFE094.CUST_SEX_CD, inMap.getString(JBSbatCHIFM396.CUST_SEX_CD));
		// 入会日
		outMap.setString(JBSbatCHIFE094.JOIN_DATE, EMPTY_STRING);
		
		// サービス契約＿工事案件の抽出結果を格納するマップ
		JBSbatCommonDBInterface resultMapKK_T_KAKINS_CH_SELECT_007 = new JBSbatCommonDBInterface();
		
		executeKK_T_KAKINS_CH_SELECT_007(custID);
		
		resultMapKK_T_KAKINS_CH_SELECT_007 = db_KK_T_KAKINS.selectNext();
		
		if (resultMapKK_T_KAKINS_CH_SELECT_007 != null) {
			outMap.setString(JBSbatCHIFE094.JOIN_DATE, resultMapKK_T_KAKINS_CH_SELECT_007.getString(JBSbatCH_T_NYUKIN.NYUKIN_TRN_YMD));
		}
		
		outMap.setOutFlg(true);	
		
		// 出力共通電文に入出力インターフェースを設定する。
		outputItem.addOutMapList(outMap);
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		
		// DBアクセスクラスをクローズします
		if (db_KK_T_KAKINS != null) {
			db_KK_T_KAKINS.close();
		}
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	 /**
	  * CH_SELECT_007(KK_T_KAKINS）を実行結果を取得する。
	  * @param custID お客様ID
	  * @throws Exception
	  */
	private void executeKK_T_KAKINS_CH_SELECT_007(String custID) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(custID);

		// DBアクセスを実行します
		db_KK_T_KAKINS.selectBySqlDefine(paramList, KK_T_KAKINS_CH_SELECT_007);
	}
}
