/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikyUcwkDelSyunoHak
*	ソースファイル名	：JBSbatCHSeikyUcwkDelSyunoHak.java
*	作成者				：富士通　
*	作成日				：2019年07月18日
*＜機能概要＞
*　請求内訳削除（料金収納手数料）部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v45.00.00	2019/07/18	FJ)澤田		【ANK-3607-00-00】料金収納手数料課金抑止の残課題対応について	新規作成
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatDenshiFileUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;
import eo.common.constant.JKKStrConst;
import eo.common.util.JPCUtilCommon;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHSeikyUcwkDelSyunoHak extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(ダウンロードファイル管理)*/
//	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(ディレイド処理依頼)*/
	private static final String D_TBL_NAME_CC_T_DLYD_TRN_REQ = "CC_T_DLYD_TRN_REQ";

	/** SQL定義キー(KK_INSERT_002)*/
//	private static final String DL_FILE_KANRI_INSERT_002 = "KK_INSERT_002";

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
//	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;
	
	/** テーブルアクセスクラス(ディレイド処理依頼)*/
	private JBSbatSQLAccess db_CC_T_DLYD_TRN_REQ = null;
	
	private static final String DLYD_TRN_REQ_STAT = "001";
	
	private static final String DLYD_TRN_JSSI_UNYO_DTM = "00000000000000000";
	
	private static final String REQ_JOB_ID = "EO61W0110J0";
	
	private static final String SYS_CD = "99";
	
	private static final String DLYD_TRN_REQ_SBT_CD = "ZM109";
	
	private static final String FILE_CD = "ZMDY";

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** CSVファイルパス*/
	private String csvFilePath = null;
	
//	/** ファイル件数 */
//	private String fileCnt = null;
	
	/** フリー項目 */
	private String[] freeItems = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
//		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		db_CC_T_DLYD_TRN_REQ = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_DLYD_TRN_REQ);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		
		// FREEITEMの取得
		this.freeItems = super.freeItem.split(JKKStrConst.SEMI_COLON);
		
		// CSVファイルパスを設定
		this.csvFilePath = this.freeItems[0];
		//ファイル件数
//		this.fileCnt = this.freeItems[1];
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 料金一括調整指示ファイル（料金収納手数料削除）の作成
		outputPayChgAddFinTgCstFile();
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
//		db_ZM_T_DL_FILE_KANRI.close();
		db_CC_T_EFILE_KANRI.close();
		db_CC_T_DLYD_TRN_REQ.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**	
	 * 料金一括調整指示ファイル（料金収納手数料削除）を作成し、電子ファイル管理、ダウンロードファイル管理に登録します。
	 * 	
	 * @return payChgAddFinTgList DB取得結果のList	
	 * @throws Exception 業務サービス内で発生した例外全般。	
	 */	
	private void outputPayChgAddFinTgCstFile()  throws Exception 
	{
		// 料金一括調整指示ファイル（料金収納手数料削除）保持期間を運用日から３ヶ月間に設定する
		String delYmd = null;

		delYmd = JPCUtilCommon.addMonth(super.opeDate, 3);
		
		String[] retDenshiFile = null;
		String fullFileName = this.csvFilePath;
		
		try
		{
			// 電子ファイル管理情報の登録
			retDenshiFile = JCCbatDenshiFileUtil.createDenshiFile(commonItem, FILE_CD, fullFileName, delYmd);
		}
		catch (Exception ex)
		{
			commonItem.getConnection().rollback();
			throw ex;
		}
		
		// ディレイド処理依頼番号を採番する。
		String seqDlydTrnReqNo = JCCBatCommon.getFormatedNextSeq(commonItem, "SEQ_DLYD_TRN_REQ_NO", "D", 14);
		
		try
		{
			// ディレイド処理依頼登録処理
			String[] paramValue = this.createCcTDlydTrnReq(seqDlydTrnReqNo, retDenshiFile);
			this.executeCC_T_DLYD_TRN_REQ_PKINSERT(paramValue);
		}
		catch (Exception ex)
		{
			commonItem.getConnection().rollback();
			throw ex;
		}
		
//		// ダウンロードファイル管理登録処理
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		
//		// 処理管理番号
//		paramList.setValue("000000000021");
//		// ファイル名
//		paramList.setValue("請求内訳削除（料金収納手数料）");
//		// データ件数
//		paramList.setValue(new Long(fileCnt));
//		// 電子ファイル管理番号
//		paramList.setValue(retDenshiFile[0]);
//		// 世代登録年月日時分秒
//		paramList.setValue(retDenshiFile[1]);
//		
//		try{
//			// ダウンロードファイル管理登録
//			createDlFileKanri(paramList, db_ZM_T_DL_FILE_KANRI);
//		}
//		catch(Exception ex)
//		{
//			commonItem.getConnection().rollback();
//			throw ex;
//		}
		
		// 電子ファイル管理に登録したファイルを削除する
//		File file = new File(fullFileName);
//		if (file.exists())
//		{
//			file.delete();
//		}
	}

	/**
	 * ディレイド処理依頼情報登録文字配列を作成します。<br>
	 * <br>
	 * @param seqDlydTrnReqNo ディレイド処理依頼番号
	 * @param retDenshiFile 電子ファイル管理情報
	 * @return 登録用文字配列
	 */
	private String[] createCcTDlydTrnReq(String seqDlydTrnReqNo, String[] retDenshiFile)
	{
		String[] strParam = new String[24];

		// ディレイド処理依頼番号
		strParam[0] = seqDlydTrnReqNo;

		// ディレイド処理依頼ステータス
		strParam[1] = DLYD_TRN_REQ_STAT;

		// ディレイド処理実施運用年月日時分秒
		strParam[2] = DLYD_TRN_JSSI_UNYO_DTM;

		// 入力電子ファイル世代登録年月日時分秒
		strParam[3] = retDenshiFile[1];

		// 入力電子ファイル管理番号
		strParam[4] = retDenshiFile[0];

		// 依頼ジョブID
		strParam[5] = REQ_JOB_ID;

		// システムコード
		strParam[6] = SYS_CD;

		// ディレイド処理依頼種別コード
		strParam[7] = DLYD_TRN_REQ_SBT_CD;

		// ディレイド処理結果コード
		strParam[8] = null;

		// エラー電子ファイル管理番号
		strParam[9] = null;

		// エラー電子ファイル世代登録年月日時分秒
		strParam[10] = null;
		
		return strParam;
	}
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ディレイド処理依頼番号				DLYD_TRN_REQ_NO
	 *		 	ディレイド処理依頼ステータス				DLYD_TRN_REQ_STAT
	 *		 	ディレイド処理実施運用年月日時分秒				DLYD_TRN_JSSI_UNYO_DTM
	 *		 	入力電子ファイル世代登録年月日時分秒				INPUT_EFILE_GENE_ADD_DTM
	 *		 	入力電子ファイル管理番号				INPUT_EFILE_KANRI_NO
	 *		 	依頼ジョブＩＤ				REQ_JOB_ID
	 *		 	システムコード				SYS_CD
	 *		 	ディレイド処理依頼種別コード				DLYD_TRN_REQ_SBT_CD
	 *		 	ディレイド処理結果コード				DLYD_TRN_RSLT_CD
	 *		 	エラー電子ファイル管理番号				ERR_EFILE_KANRI_NO
	 *		 	エラー電子ファイル世代登録年月日時分秒				ERR_EFILE_GENE_ADD_DTM
	 *		 	登録年月日時分秒				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 executeCC_T_DLYD_TRN_REQ_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("DLYD_TRN_REQ_NO", setParam[0]);
		setMap.setValue("DLYD_TRN_REQ_STAT", setParam[1]);
		setMap.setValue("DLYD_TRN_JSSI_UNYO_DTM", setParam[2]);
		setMap.setValue("INPUT_EFILE_GENE_ADD_DTM", setParam[3]);
		setMap.setValue("INPUT_EFILE_KANRI_NO", setParam[4]);
		setMap.setValue("REQ_JOB_ID", setParam[5]);
		setMap.setValue("SYS_CD", setParam[6]);
		setMap.setValue("DLYD_TRN_REQ_SBT_CD", setParam[7]);
		setMap.setValue("DLYD_TRN_RSLT_CD", setParam[8]);
		setMap.setValue("ERR_EFILE_KANRI_NO", setParam[9]);
		setMap.setValue("ERR_EFILE_GENE_ADD_DTM", setParam[10]);
		setMap.setValue("ADD_DTM", setParam[11]);
		setMap.setValue("ADD_OPEACNT", setParam[12]);
		setMap.setValue("UPD_DTM", setParam[13]);
		setMap.setValue("UPD_OPEACNT", setParam[14]);
		setMap.setValue("DEL_DTM", setParam[15]);
		setMap.setValue("DEL_OPEACNT", setParam[16]);
		setMap.setValue("MK_FLG", setParam[17]);
		setMap.setValue("ADD_UNYO_YMD", setParam[18]);
		setMap.setValue("ADD_TRN_ID", setParam[19]);
		setMap.setValue("UPD_UNYO_YMD", setParam[20]);
		setMap.setValue("UPD_TRN_ID", setParam[21]);
		setMap.setValue("DEL_UNYO_YMD", setParam[22]);
		setMap.setValue("DEL_TRN_ID", setParam[23]);
	
		// DBアクセスを実行します
		db_CC_T_DLYD_TRN_REQ.insertByPrimaryKeys(setMap);
	}

//	/**
//	 * ファイル登録処理<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 *
//	 * 1.DBアクセスを実行します。<br>
//	 * 
//	 * </pre>
//	 * <p>
//	 * @param paramList    SQLパラメータリスト
//	 * @param dbDlFileKanri    テーブルアクセスクラス
//	 * @throws Exception      業務サービス内で発生した例外全般。
//	 */
//	private static void createDlFileKanri(JBSbatCommonDBInterface paramList, JBSbatSQLAccess dbDlFileKanri) throws Exception
//	{
//	
//		// DBアクセスを実行します
//		dbDlFileKanri.executeBySqlDefine(paramList, DL_FILE_KANRI_INSERT_002);
//	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
