/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCKCustInfoChsht
*	ソースファイル名	：JBSbatCKCustInfoChsht.java
*	作成者				：富士通　
*	作成日				：2011年07月20日
*＜機能概要＞
*　お客様情報抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/20  FJ)久保田	新規作成
*	v2.00.00	2012/04/11  FJ)久保田	【TAI-2012-0000027】排他制御対応
*	v4.00.00	2012/06/06  FJ)神吉		【ANK-0085-00-00】不良顧客検索条件の変更対応
*	v5.00.00	2013/06/26  FJ)中作		【LT-2013-0000060】障害対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCKIFM001;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_CUST_KOJIN;
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.log.JBSbatLogUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCKCustInfoChsht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(お客様＜個人＞)*/
	private static final String D_TBL_NAME_CK_T_CUST_KOJIN = "CK_T_CUST_KOJIN";

	/** テーブル(連絡先)*/
	private static final String D_TBL_NAME_CK_T_RRKS = "CK_T_RRKS";

	/** SQL定義キー(CK_SELECT_002)*/
	private static final String CK_T_CUST_KOJIN_CK_SELECT_002 = "CK_SELECT_002";

	/** SQL定義キー(CK_SELECT_001)*/
	private static final String CK_T_RRKS_CK_SELECT_001 = "CK_SELECT_001";

	/** テーブルアクセスクラス(お客様＜個人＞)*/
	private JBSbatSQLAccess db_CK_T_CUST_KOJIN = null;

	/** テーブルアクセスクラス(連絡先)*/
	private JBSbatSQLAccess db_CK_T_RRKS = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 
	 * 申込番号
	 */
	protected String mskmNo = "";

	/** 
	 * ＳＹＳＩＤ
	 */
	protected String sysid = "";

	/** 
	 * 申込種別コード
	 */
	protected String mskmSbtCd = "";

	/** 
	 * 申込明細番号
	 */
	protected String mskmDtlNo = "";

	/** 
	 * お客様名
	 */
	protected String custNm = "";

	/** 
	 * お客様カナ名
	 */
	protected String custKana = "";
	
	/** 
	 * お客様生年月日
	 */
	protected String custBirthd = "";

	/**
	 *  契約者タイプコード
	 */
	protected String keishaTypeCd = "";

	/** 
	 * サービス契約番号
	 */
	protected String svcKeiNo = "";

	/** 
	 * 異動区分
	 */
	protected String idoDiv = "";

	/** 
	 * 審査番号
	 */
	protected String judgeNo = "";

	/** 
	 * 電話番号
	 */
	protected String telno = "";

	/** 
	 * 親権者名
	 */
	protected String skshaNm = "";

	/** 
	 * 親権者名カナ
	 */
	protected String skshaKana = "";
	
	/** 
	 * 親権者生年月日
	 */
	protected String skshaBirthd = "";

	/** 
	 * 親権者電話番号
	 */
	protected String skshaTelno = "";

	/**
	 *  更新年月日時分秒(初期検索)
	 */
	protected String lastUpdDtmBf = "";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CK_T_CUST_KOJIN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST_KOJIN);
		db_CK_T_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_RRKS);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 中間ファイルの読み込みを行います。
		getCkifm001(inMap);
		
		// SQL実行結果取得用mapを生成（お客様＜個人＞）
		JBSbatCommonDBInterface custKojinMap = new JBSbatCommonDBInterface(); 
		
		// SQL定義キー(CK_SELECT_002)を実行する
		String [] selectParam01 = {sysid, this.opeDate};
		super.logPrint.printDebugLog("selectParam(ＳＹＳＩＤ)：：：：" +  selectParam01[0]);
		super.logPrint.printDebugLog("selectParam(予約適用年月日)：：" +  selectParam01[1]);
		executeCK_T_CUST_KOJIN_CK_SELECT_002(selectParam01);
		
		// フィールド変数の初期化
		skshaNm     = "";
		skshaKana   = "";
		skshaTelno  = "";
		custBirthd  = "";
		skshaBirthd = "";
		telno       = "";
		
		// 検索結果を取得する
		for(custKojinMap = db_CK_T_CUST_KOJIN.selectNext(); null != custKojinMap ; custKojinMap = db_CK_T_CUST_KOJIN.selectNext())
		{
			
			// 検索結果のお客様＜個人＞情報をフィールド変数に設定する。
			skshaNm     = JBSbatStringUtil.Rtrim(custKojinMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_NM));
			skshaKana   = JBSbatStringUtil.Rtrim(custKojinMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_KANA));
			skshaTelno  = JBSbatStringUtil.Rtrim(custKojinMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_TELNO));
			custBirthd  = JBSbatStringUtil.Rtrim(custKojinMap.getString(JBSbatCK_T_CUST.CUST_BIRTHD));
			skshaBirthd = JBSbatStringUtil.Rtrim(custKojinMap.getString(JBSbatCK_T_CUST_KOJIN.SKSHA_BIRTHD));
			telno       = JBSbatStringUtil.Rtrim(custKojinMap.getString(JBSbatCK_T_CUST.KEISHA_TELNO));
			
			// ログレベルがデバッグモードの場合
			if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("親権者名（CK_T_CUST_KOJIN_CK_SELECT_002）：：：：" + skshaNm);
				super.logPrint.printDebugLog("親権者カナ名（CK_T_CUST_KOJIN_CK_SELECT_002）：：" + skshaKana);
				super.logPrint.printDebugLog("親権者電話番号（CK_T_CUST_KOJIN_CK_SELECT_002）：" + skshaTelno);
				super.logPrint.printDebugLog("お客様生年月日（CK_T_CUST_KOJIN_CK_SELECT_002）：" + custBirthd);
				super.logPrint.printDebugLog("親権者生年月日（CK_T_CUST_KOJIN_CK_SELECT_002）：" + skshaBirthd);
				super.logPrint.printDebugLog("契約者電話番号（CK_T_CUST_KOJIN_CK_SELECT_002）：" + telno);
			}
		}
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		// 不良顧客チェックファイルのファイル出力
		outputBean = createCkifm001(outputBean);
		
		super.logPrint.printDebugLog("execute_END");
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CK_T_CUST_KOJIN.close();
		db_CK_T_RRKS.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(CK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	お客様＜個人＞．SYSID
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KOJIN_CK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_CUST_KOJIN.selectBySqlDefine(paramList, CK_T_CUST_KOJIN_CK_SELECT_002);
	}

	/**
	 * SQLKEY(CK_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	連絡先．SYSID
	 *		 	連絡先．予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_RRKS_CK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_CK_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 
	 *  不良顧客チェックファイルの作成を行います。
	 *  
	 * @param  outputBean JBSbatOutputItem
	 * 
	 * @return outputBean JBSbatOutputItem
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private JBSbatOutputItem createCkifm001(JBSbatOutputItem outputBean) throws Exception 
	{
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		
		//項目を設定
		outmap.setString(JBSbatCKIFM001.MSKM_NO, mskmNo);					// 申込番号            ← CKIFM001.MSKM_NO
		outmap.setString(JBSbatCKIFM001.SYSID, sysid);						// ＳＹＳＩＤ          ← CKIFM001.SYSID
		outmap.setString(JBSbatCKIFM001.MSKM_SBT_CD, mskmSbtCd);			// 申込種別コード      ← CKIFM001.MSKM_SBT_CD
		outmap.setString(JBSbatCKIFM001.MSKM_DTL_NO, mskmDtlNo);			// 申込明細番号        ← CKIFM001.MSKM_DTL_NO
		outmap.setString(JBSbatCKIFM001.CUST_NM, custNm);					// お客様名            ← CKIFM001.CUST_NM
		outmap.setString(JBSbatCKIFM001.CUST_KANA, custKana);				// お客様カナ名        ← CKIFM001.CUST_KANA
		outmap.setString(JBSbatCKIFM001.CUST_BIRTHD, custBirthd);			// お客様生年月日      ← CKIFM001.CUST_BIRTHD
		outmap.setString(JBSbatCKIFM001.KEISHA_TYPE_CD, keishaTypeCd);		// 契約者タイプコード  ← CKIFM001.KEISHA_TYPE_CD
		outmap.setString(JBSbatCKIFM001.SVC_KEI_NO, svcKeiNo);				// サービス契約番号    ← CKIFM001.SVC_KEI_NO
		outmap.setString(JBSbatCKIFM001.IDO_DIV, idoDiv);					// 異動区分            ← CKIFM001.KEISHA_TYPE_CD
		outmap.setString(JBSbatCKIFM001.JUDGE_NO, judgeNo);					// 審査番号            ← CKIFM001.JUDGE_NO
		outmap.setString(JBSbatCKIFM001.TELNO, telno);						// 電話番号            ← CK_SELECT_001.TELNO
		outmap.setString(JBSbatCKIFM001.SKSHA_NM, skshaNm);					// 親権者名            ← CK_SELECT_002.SKSHA_NM
		outmap.setString(JBSbatCKIFM001.SKSHA_KANA, skshaKana);				// 親権者名カナ        ← CK_SELECT_002.SKSHA_KANA
		outmap.setString(JBSbatCKIFM001.SKSHA_BIRTHD, skshaBirthd);			// 親権者生年月日      ← CKIFM001.SKSHA_BIRTHD
		outmap.setString(JBSbatCKIFM001.SKSHA_TELNO, skshaTelno);			// 親権者電話番号      ← CK_SELECT_002.skshaTelno
		outmap.setString(JBSbatCKIFM001.UPD_DTM_BF, lastUpdDtmBf);			// 更新年月日時分秒    ← CKIFM001.UPD_DTM_BF
		
		//出力フラグを設定
		outmap.setOutFlg(true);
		//出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outmap);
		//出力共通電文を返却
		return outputBean;
	}

	/**
	 * 
	 * 中間ファイルの読み込みを行います。
	 * 
	 * @param inMap 中間ファイルの値。
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void getCkifm001(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		mskmNo       = inMap.getString(JBSbatCKIFM001.MSKM_NO);				// 申込番号
		sysid        = inMap.getString(JBSbatCKIFM001.SYSID);				// ＳＹＳＩＤ
		mskmSbtCd    = inMap.getString(JBSbatCKIFM001.MSKM_SBT_CD);			// 申込種別コード
		mskmDtlNo    = inMap.getString(JBSbatCKIFM001.MSKM_DTL_NO);			// 申込明細番号
		custNm       = inMap.getString(JBSbatCKIFM001.CUST_NM);				// お客様名
		custKana     = inMap.getString(JBSbatCKIFM001.CUST_KANA);			// お客様カナ名
		keishaTypeCd = inMap.getString(JBSbatCKIFM001.KEISHA_TYPE_CD);		// 契約者タイプコード
		svcKeiNo     = inMap.getString(JBSbatCKIFM001.SVC_KEI_NO);			// サービス契約番号
		idoDiv       = inMap.getString(JBSbatCKIFM001.IDO_DIV);				// 異動区分
		judgeNo      = inMap.getString(JBSbatCKIFM001.JUDGE_NO);			// 審査番号
		lastUpdDtmBf = inMap.getString(JBSbatCKIFM001.UPD_DTM_BF);			// 更新年月日時分秒

	}
}
