/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			： eo顧客基幹システム
*	モジュール名		JBSbatCRTaioKirokEfileButsuriDel
*	ソースファイル名		JBSbatCRTaioKirokEfileButsuriDel.java
*	作成者			： GDC)ミコ
*	作成日			：2020年04月23日
*＜機能概要＞
*添付ウイルスメール論理削除
*＜修正履歴＞
*
*バージョン	修正日		 修正者		修正内容
*v49.00.00  2020/04/23  GDC)ミコ 【ANK-3845-00-00】 対応履歴添付ウイルスメールの削除
*********************************************************************/
package eo.business.service;


import eo.business.common.JBSbatBusinessService;
import eo.business.util.table.JBSbatCR_T_TORK_EFILE_KNRI;
import eo.framework.application.JBSbatBusinessBase;
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 JBSbatCRTaioKirokEfileButsuriDel extends JBSbatBusinessService {
	
	/** テーブルアクセスクラス(対応履歴電子ファイル管理)*/
	private JBSbatSQLAccess db_CR_T_TORK_EFILE_KNRI = null;
	
	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;

	/** テーブル(対応履歴電子ファイル管理)*/
	private static final String D_TBL_NAME_CR_T_TORK_EFILE_KNRI = "CR_T_TORK_EFILE_KNRI";

	/** テーブル(対応履歴電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(電子ファイル管理)*/
	private static final String CR_T_TORK_EFILE_KNRI_CR_SELECT_007 = "CR_SELECT_007";	

	/** テーブル(電子ファイル管理)*/
	private static final String CR_T_TORK_EFILE_KNRI_CR_DELETE_001 = "CR_DELETE_001";	

	/** テーブル(電子ファイル管理)*/
	private static final String CC_T_EFILE_KANRI_CR_SELECT_001 = "CR_SELECT_001";	

	/** テーブル(電子ファイル管理)*/
	private static final String CC_T_EFILE_KANRI_CR_DELETE_001 = "CR_DELETE_001";	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		
        super.setCommonInfo(commonItem);

        // DBアクセスクラスを生成します
		db_CR_T_TORK_EFILE_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CR_T_TORK_EFILE_KNRI);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception {
		
//        //1.電子ファイル管理番号取得
//        //入力ファイル から、"FILE_NAME"を取得する。
//        String file_nm = inMap.getString(JBSbatCRIFM006.FILE_NM);
//        
//        //電子ファイル管理番号
//        String denshiFairuKanriNo = null;
//        
//        //FILE_NAMEの長さ < 15 の場合、何もしないで処理終了する。
//		if(file_nm.length() < 15){
//            return null;			
//		} else {
//			//上記以外の場合、FILE_NAMEの頭15桁を取得して、電子ファイル管理番号とする。
//            denshiFairuKanriNo = file_nm.substring(0,15);
//		}
		
		String denshiFairuKanriNo = inMap.getString(JBSbatCR_T_TORK_EFILE_KNRI.EFILE_KANRI_NO);

		//2.対応履歴電子ファイル管理の検索
		//対応履歴電子ファイル管理を検索し、該当レコードが存在しないことを確認する。
		if(taioRirekiDenFileRecordExists(denshiFairuKanriNo)) {
			//該当レコードが存在する場合、何もしないで処理終了する。
			super.logPrint.printLogMsg(JBSbatBusinessBase.SYSTEM_INFORMATION, "対応履歴電子ファイル管理が有効なため、処理対象外とします。電子ファイル管理番号：" + denshiFairuKanriNo);
			return null;
		}

		//3.電子ファイル管理の検索
		//電子ファイル管理を検索し、該当レコードが存在しないことを確認する。
		if(denshiFileRecordExists(denshiFairuKanriNo)) {
			//該当レコードが存在する場合、何もしないで処理終了する。
			super.logPrint.printLogMsg(JBSbatBusinessBase.SYSTEM_INFORMATION, "電子ファイル管理が有効なため、処理対象外とします。電子ファイル管理番号：" + denshiFairuKanriNo);
			return null;
		}
		
		//4.対応履歴電子ファイル管理の削除
		deleteTaioRirekiDenFile(denshiFairuKanriNo);
		//5.電子ファイル管理の削除
		deleteDenshiFile(denshiFairuKanriNo);
		
		return null;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		db_CR_T_TORK_EFILE_KNRI.close();
		db_CC_T_EFILE_KANRI.close();
	}
	/**
	 * 対応履歴電子ファイル管理を検索し、該当レコードが存在しないことを確認。
	 * @param denshiFairuKanriNo 電子ファイル管理番号
	 * @throws Exception
	 */
	private boolean taioRirekiDenFileRecordExists(String denshiFairuKanriNo) throws Exception
	{

		executeCR_T_TORK_EFILE_KNRI_CR_SELECT_007(new Object[] {denshiFairuKanriNo});

		// DBアクセスを実行します
		JBSbatCommonDBInterface dbTorkEfileKanri = db_CR_T_TORK_EFILE_KNRI.selectNext();

		if(dbTorkEfileKanri != null) {	
			return true;
		}
		
		return false;
	}
	/**
	 * 電子ファイル管理を検索し、該当レコードが存在しないことを確認。
	 * @param denshiFairuKanriNo 電子ファイル管理番号
	 * @throws Exception
	 */
	private boolean denshiFileRecordExists(String denshiFairuKanriNo) throws Exception
	{
		executeCC_T_EFILE_KANRI_CC_SELECT_001(new Object[] {denshiFairuKanriNo});
		
		// DBアクセスを実行します
		JBSbatCommonDBInterface dbEfileKanri = db_CC_T_EFILE_KANRI.selectNext();
		
		if(dbEfileKanri != null){
			return true;
		}
		
		return false;

	}
	/**
	 * 対応履歴電子ファイル管理を検索し、該当レコードが存在しないことを確認。
	 * @param denshiFairuKanriNo 電子ファイル管理番号
	 * @throws Exception
	 */
	private void deleteTaioRirekiDenFile(String denshiFairuKanriNo) throws Exception
	{
		executeCR_T_TORK_EFILE_KNRI_CR_DELETE_001(new Object[] {denshiFairuKanriNo});
	}
	
	/**
	 * 電子ファイル管理を検索し、該当レコードが存在しないことを確認。
	 * @param denshiFairuKanriNo 電子ファイル管理番号
	 * @throws Exception
	 */
	private void deleteDenshiFile(String denshiFairuKanriNo) throws Exception
	{
		executeCC_T_EFILE_KANRI_CC_DELETE_001(new Object[] {denshiFairuKanriNo});
	}

	/**
	 * @param param
	 * @throws Exception
	 */
	private void executeCR_T_TORK_EFILE_KNRI_CR_SELECT_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CR_T_TORK_EFILE_KNRI.selectBySqlDefine(paramList, CR_T_TORK_EFILE_KNRI_CR_SELECT_007);
	}
    

	/**
	 * SQLKEY(CR_DELETE_001)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCR_T_TORK_EFILE_KNRI_CR_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		int count = db_CR_T_TORK_EFILE_KNRI.executeBySqlDefine(paramList, CR_T_TORK_EFILE_KNRI_CR_DELETE_001);
		if(count==0){
			super.logPrint.printLogMsg(JBSbatBusinessBase.SYSTEM_INFORMATION, "削除対象となる対応履歴電子ファイル管理が存在しません。電子ファイル管理番号：" + param[0]);
		}
	}
	
	/**
	 * @param param
	 * @throws Exception
	 */
	private void executeCC_T_EFILE_KANRI_CC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_T_EFILE_KANRI.selectBySqlDefine(paramList, CC_T_EFILE_KANRI_CR_SELECT_001);
	}
    

	/**
	 * SQLKEY(CC_DELETE_001)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_EFILE_KANRI_CC_DELETE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		int count = db_CC_T_EFILE_KANRI.executeBySqlDefine(paramList, CC_T_EFILE_KANRI_CR_DELETE_001);
		if(count==0){
			super.logPrint.printLogMsg(JBSbatBusinessBase.SYSTEM_INFORMATION, "削除対象となる電子ファイル管理が存在しません。電子ファイル管理番号：" + param[0]);
		}

	}
	
}