/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom  					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHCreditFirstAuthoriAdd
*	ソースファイル名	：JBSbatCHCreditFirstAuthoriAdd.java
*	作成者				：富士通　
*	作成日				：2011年07月14日
*＜機能概要＞
*　クレジット初回オーソリ登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/14   富士通		新規作成
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatCHIFM067;
import eo.common.constant.JACStrConst;
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;

/**
* クレジット初回オーソリ登録 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHCreditFirstAuthoriAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(クレジットオーソリ実績)*/
	private static final String D_TBL_NAME_KK_T_CREDIT_AUTH_JSK = "KK_T_CREDIT_AUTH_JSK";

	/** テーブルアクセスクラス(クレジットオーソリ実績)*/
	private JBSbatSQLAccess db_KK_T_CREDIT_AUTH_JSK = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 半角スペース*/
	private static final String SPACE = " ";
	
	/** シーケンス名（シーケンス番号） */
	private static final String SEQ_NAME = "SEQ_CREDIT_AUTH_JSK_NO";
	
	/** シーケンス接頭辞（シーケンス番号） */
	private static final String SEQ_PREFIX = "";
	
	/** シーケンス桁数（シーケンス番号） */
	private static final int SEQ_LEN = 12;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_CREDIT_AUTH_JSK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CREDIT_AUTH_JSK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		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 JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.toString() + "]");
		
		// 引数有無判定
		if (inMap.getMap().isEmpty())
		{
			return null;
		}
		
		// クレジット初回オーソリ登録
		insertCreditFirstAuthori(inMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return null;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * クレジット初回オーソリの登録を行います。
	 * 
	 * @param inMap 入力電文
	 * @throws Exception 
	 */
	private void insertCreditFirstAuthori(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insertCreditFirstAuthori]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insertCreditFirstAuthori][inMap=" + inMap.toString() + "]");
		
		// 登録項目の設定
		JBSbatCommonDBInterface setParam = new JBSbatCommonDBInterface();
		
		// シーケンス番号（共通部品を使用して取得する）
		String seqNo = JCCBatCommon.getFormatedNextSeq(super.commonItem, SEQ_NAME, SEQ_PREFIX, SEQ_LEN);

		// クレジットオーソリ実績番号
		setParam.setValue(seqNo);
		// 世代登録年月日時分秒
		setParam.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 請求契約番号
		setParam.setValue(inMap.get(JBSbatCHIFM067.SEIKY_KEI_NO));
		// 請求契約世代登録年月日時分秒
		setParam.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 請求方法番号（クレジットカード）
		setParam.setValue(inMap.get(JBSbatCHIFM067.SEIKY_WAY_NO_CRECARD));
		// クレジットカード世代登録年月日時分秒
		setParam.setValue(JCCBatCommon.getSysDateTimeStamp());
		// クレジットカード会社コード
		setParam.setValue(inMap.get(JBSbatCHIFM067.CRECARD_COMP_CD));
		// オーソリ処理コード
//		setParam.setValue(JACStrConst.FAUTHORI_TRAN_CD_FLOOR_LIMIT);
		// 売上オーソリ金額
		setParam.setValue(inMap.get(JBSbatCHIFM067.AMNT));
		// クレジットカード番号
		setParam.setValue(inMap.get(JBSbatCHIFM067.CRECARD_NO));
		// 加盟店番号
		setParam.setValue(inMap.get(JBSbatCHIFM067.MEMBSTR_NO_15));
		// クレジットカード有効期限
		setParam.setValue(inMap.get(JBSbatCHIFM067.CRECARD_YK_KIGEN));
		// 有効期限変更有無
		setParam.setValue(null);
		// オーソリフラグ
		setParam.setValue(null);
		// オーソリ審査結果コード
		setParam.setValue(null);
		// オーソリ承認番号
		setParam.setValue(null);
		// オーソリ要求コード
		setParam.setValue(SPACE);
		// 仕向先会社コード
		setParam.setValue(null);
		// 処理フラグ
//		setParam.setValue(JACStrConst.FAUTHORI_TRAN_FLG_MI);
		// 抽出フラグ
//		setParam.setValue(JACStrConst.FAUTHORI_CHSHT_FLG_MI);
		// 取消コード
//		setParam.setValue(JACStrConst.FAUTHORI_CL_FLG_MI);
		// 登録年月日時分秒
		setParam.setValue(null);
		// 登録オペレータアカウント
		setParam.setValue(null);
		// 更新年月日時分秒
		setParam.setValue(null);
		// 更新オペレータアカウント
		setParam.setValue(null);
		// 削除年月日時分秒
		setParam.setValue(null);
		// 削除オペレータアカウント
		setParam.setValue(null);
		// 無効フラグ
		setParam.setValue(null);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insertCreditFirstAuthori][setParam=" + setParam.getList().toString() + "]");
		
		// SQL文を実行
		executeKK_T_CREDIT_AUTH_JSK_PKINSERT(setParam.getList().toArray());
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insertCreditFirstAuthori]");
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_CREDIT_AUTH_JSK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	クレジットオーソリ実績番号				CREDIT_AUTH_JSK_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	請求契約世代登録年月日時分秒				SEIKY_KEI_GENE_ADD_DTM
	 *		 	請求方法番号（クレジットカード）				SEIKY_WAY_NO_CRECARD
	 *		 	クレジットカード世代登録年月日時分秒				CRECARD_GENE_ADD_DTM
	 *		 	クレジットカード会社コード				CRECARD_COMP_CD
	 *		 	オーソリ処理コード				AUTH_TRAN_CD
	 *		 	売上オーソリ金額				SALES_AUTHORI_AMNT
	 *		 	クレジットカード番号				CRECARD_NO
	 *		 	加盟店番号				MEMBSTR_NO
	 *		 	クレジットカード有効期限				CRECARD_YK_KIGEN
	 *		 	有効期限変更有無				YK_KIGEN_CHG_UM
	 *		 	オーソリフラグ				AUTH_FLG
	 *		 	オーソリ審査結果コード				AUTH_SKEKKA_CD
	 *		 	オーソリ承認番号				AUTHORI_SHONIN_NO
	 *		 	オーソリ要求コード				AUTHORI_YOKYU_CD
	 *		 	仕向先会社コード				SHIKOSAKI_COMP_CD
	 *		 	処理フラグ				TRN_FLG
	 *		 	抽出フラグ				CHSHT_FLG
	 *		 	取消コード				CL_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CREDIT_AUTH_JSK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("CREDIT_AUTH_JSK_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("SEIKY_KEI_NO", setParam[2]);
		setMap.setValue("SEIKY_KEI_GENE_ADD_DTM", setParam[3]);
		setMap.setValue("SEIKY_WAY_NO_CRECARD", setParam[4]);
		setMap.setValue("CRECARD_GENE_ADD_DTM", setParam[5]);
		setMap.setValue("CRECARD_COMP_CD", setParam[6]);
		setMap.setValue("AUTH_TRAN_CD", setParam[7]);
		setMap.setValue("SALES_AUTHORI_AMNT", setParam[8]);
		setMap.setValue("CRECARD_NO", setParam[9]);
		setMap.setValue("MEMBSTR_NO", setParam[10]);
		setMap.setValue("CRECARD_YK_KIGEN", setParam[11]);
		setMap.setValue("YK_KIGEN_CHG_UM", setParam[12]);
		setMap.setValue("AUTH_FLG", setParam[13]);
		setMap.setValue("AUTH_SKEKKA_CD", setParam[14]);
		setMap.setValue("AUTHORI_SHONIN_NO", setParam[15]);
		setMap.setValue("AUTHORI_YOKYU_CD", setParam[16]);
		setMap.setValue("SHIKOSAKI_COMP_CD", setParam[17]);
		setMap.setValue("TRN_FLG", setParam[18]);
		setMap.setValue("CHSHT_FLG", setParam[19]);
		setMap.setValue("CL_CD", setParam[20]);
		setMap.setValue("ADD_DTM", setParam[21]);
		setMap.setValue("ADD_OPEACNT", setParam[22]);
		setMap.setValue("UPD_DTM", setParam[23]);
		setMap.setValue("UPD_OPEACNT", setParam[24]);
		setMap.setValue("DEL_DTM", setParam[25]);
		setMap.setValue("DEL_OPEACNT", setParam[26]);
		setMap.setValue("MK_FLG", setParam[27]);
	
		// DBアクセスを実行します
		db_KK_T_CREDIT_AUTH_JSK.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
