/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKStbPcrsSegoseCheck
*	ソースファイル名	：JBSbatKKStbPcrsSegoseCheck.java
*	作成者				：富士通　
*	作成日				：2013年04月18日
*＜機能概要＞
*　ＳＴＢ料金コースの整合性チェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/04/17  FJ)柳		新規作成 
*	v5.01.00	2013/06/21  FJ)柳		【IT1-2013-0001274】障害対応 
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatInterface;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.util.file.JBSbatKKIFM460;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCCFileUtil;
import eo.framework.application.JBSbatBusinessException;
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 JBSbatKKStbPcrsSegoseCheck extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイル出力データ有無判断
	 */
	private int outCount = 0;
	
	/**
	 *  出力ファイル格納先パス
	 */
	private String file_path = "";
	
	/**
	 * 出力ファイル格納先パス
	 */
	private String mid_dir_ck_path = "";
	
	/**
	 * 処理管理番号
	 */
	private String trnKanriNo = "000000000108";
	
	/**
	 * ファイル名
	 */
	private String fileName = "ＳＴＢ料金コース整合性チェックリスト_";
	
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	
	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		outCount = 0;
		
		// フリー項目から格納先を取得します
		file_path = commonItem.getFreeItem();

		// 取得出来なかった場合、エラーとします。
		if (file_path.length() == 0)
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[]{"フリー項目：送信ファイル格納パス名"});
		}
		
		mid_dir_ck_path = file_path + "KKIFM460001.csv";
	}

	/**
	 * 主処理
	 * @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 = JBSbatInterface.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_NO));
		//サービス契約番号設定
		outmap.setString(JBSbatKKIFM460.SVC_KEI_NO, svcKeiNo);
		
		// 出力フラグを設定
		outmap.setOutFlg(true);
		// 出力共通電文に入出力インターフェースを設定する
		outputBean.addOutMapList(outmap);
		super.logPrint.printDebugLog("execute_END");
		outCount++;
		// 出力共通電文を返却
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		if(commonItem.getOutPutFile() != null) {
			commonItem.getOutPutFile().close();
		}
		
		// 出力カウントが1件以上有る場合
		if (outCount>0)
		{
			// 電子ファイル管理登録部品呼出
			String[] eFileInfo = JCCBatCommon.createDenshiFile(commonItem, "0000", mid_dir_ck_path, "20991231");
			
			// ダウンロードファイル管理登録
			insZmTDlFileKanri(eFileInfo);
		}
		
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * ダウンロードファイル管理スキーマに登録します。
	 * 
	 * @param eFileInfo 電子ファイル管理情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insZmTDlFileKanri(String[] eFileInfo) throws Exception
	{

		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();
		
		String opeDtm =  JKKBatCommon.getOpeDateTimeStamp(commonItem).substring(0, 8);
		
		//  1.ファイル番号
		param.setValue(JCCBatCommon.getFormatedNextSeq(commonItem, JKKStrConst.SEQ_FILE_NO, JKKStrConst.SEQ_PREFIX_SEQ_FILE_NOO, JKKStrConst.SEQ_LEN_SEQ_FILE_NO));
		//  2.処理管理番号
		param.setValue(trnKanriNo);
		//  3.電子ファイル管理番号
		param.setValue(eFileInfo[0]);
		//  4.ファイル名
		param.setValue(fileName + opeDtm + ".csv");
		//  5.ファイルサイズ
		param.setValue(JCCFileUtil.getFileSize(mid_dir_ck_path));
		//  6.データ件数
		param.setValue(outCount);
		//  7.ファイル登録年月日時分秒
		param.setValue(eFileInfo[1]);
		//  8.ファイル削除年月日
		param.setValue("");
		//  9.登録年月日時分秒
		param.setValue(null);
		// 10.登録オペレータアカウント
		param.setValue(null);
		// 11.更新年月日時分秒
		param.setValue(null);
		// 12.更新オペレータアカウント
		param.setValue(null);
		// 13.削除年月日時分秒
		param.setValue(null);
		// 14.削除オペレータアカウント
		param.setValue(null);
		// 15.無効フラグ
		param.setValue(null);
		//登録運用年月日
		param.setValue(null);
		//登録処理ID
		param.setValue(null);
		//更新運用年月日
		param.setValue(null);
		//更新処理ID
		param.setValue(null);
		//削除運用年月日
		param.setValue(null);
		//削除処理ID
		param.setValue(null);

		// SQL実行
		executeZM_T_DL_FILE_KANRI_PKINSERT(param.getList().toArray());
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ファイル番号				FILE_NO
	 *		 	処理管理番号				TRN_KANRI_NO
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	ファイル名				FILE_NM
	 *		 	ファイルサイズ				FILE_SIZE
	 *		 	データ件数				DATA_CNT
	 *		 	ファイル登録年月日時分秒				FILE_ADD_DTM
	 *		 	ファイル削除年月日				FILE_DEL_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DL_FILE_KANRI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("FILE_NO", setParam[0]);
		setMap.setValue("TRN_KANRI_NO", setParam[1]);
		setMap.setValue("EFILE_KANRI_NO", setParam[2]);
		setMap.setValue("FILE_NM", setParam[3]);
		setMap.setValue("FILE_SIZE", setParam[4]);
		setMap.setValue("DATA_CNT", setParam[5]);
		setMap.setValue("FILE_ADD_DTM", setParam[6]);
		setMap.setValue("FILE_DEL_YMD", setParam[7]);
		setMap.setValue("ADD_DTM", setParam[8]);
		setMap.setValue("ADD_OPEACNT", setParam[9]);
		setMap.setValue("UPD_DTM", setParam[10]);
		setMap.setValue("UPD_OPEACNT", setParam[11]);
		setMap.setValue("DEL_DTM", setParam[12]);
		setMap.setValue("DEL_OPEACNT", setParam[13]);
		setMap.setValue("MK_FLG", setParam[14]);
		setMap.setValue("ADD_UNYO_YMD", setParam[15]);
		setMap.setValue("ADD_TRN_ID", setParam[16]);
		setMap.setValue("UPD_UNYO_YMD", setParam[17]);
		setMap.setValue("UPD_TRN_ID", setParam[18]);
		setMap.setValue("DEL_UNYO_YMD", setParam[19]);
		setMap.setValue("DEL_TRN_ID", setParam[20]);
	
		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.insertByPrimaryKeys(setMap);
	}
}
