/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatZMTrnKnriDelDataChsht
*	ソースファイル名	：JBSbatZMTrnKnriDelDataChsht.java
*	作成者				：富士通　
*	作成日				：2013年02月13日
*＜機能概要＞
*　処理管理削除期間経過データ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/02/13   富士通		新規作成
*	v5.00.00	2013/02/13   FJ)岩元	【ANK-1460-00-00】共通機能の処理管理削除バッチ作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JZMBatCommon;
import eo.business.common.JZMBatConst;
import eo.business.util.table.JBSbatCC_T_EFILE_KANRI;
import eo.business.util.table.JBSbatZM_M_TRN_KANRI;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.business.util.table.JBSbatZM_T_DATAIKTTRK_KNRI;
import eo.business.util.table.JBSbatZM_T_DL_FILE_KANRI;
import eo.common.constant.JPCBatchMessageConstant;
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.util.JBSbatBusinessFileUtil;

/**
* 処理管理関連の削除期間経過データを抽出クラスです。<p>
*<BR>
* @author 富士通
*/
public class JBSbatZMTrnKnriDelDataChsht extends JBSbatBusinessService
{

	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(データ一括登録管理)*/
	private static final String D_TBL_NAME_ZM_T_DATAIKTTRK_KNRI = "ZM_T_DATAIKTTRK_KNRI";

	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** テーブル(処理管理)*/
	private static final String D_TBL_NAME_ZM_M_TRN_KANRI = "ZM_M_TRN_KANRI";

	/** SQL定義キー(ZM_SELECT_004)*/
	private static final String ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004 = "ZM_SELECT_004";

	/** SQL定義キー(ZM_SELECT_005)*/
	private static final String ZM_M_WORK_PARAM_KNRI_ZM_SELECT_005 = "ZM_SELECT_005";

	/** SQL定義キー(ZM_SELECT_001)*/
	private static final String ZM_T_DATAIKTTRK_KNRI_ZM_SELECT_001 = "ZM_SELECT_001";

	/** SQL定義キー(ZM_SELECT_001)*/
	private static final String CC_T_EFILE_KANRI_ZM_SELECT_001 = "ZM_SELECT_001";

	/** SQL定義キー(ZM_SELECT_001)*/
	private static final String ZM_T_DL_FILE_KANRI_ZM_SELECT_001 = "ZM_SELECT_001";

	/** SQL定義キー(ZM_SELECT_001)*/
	private static final String ZM_M_TRN_KANRI_ZM_SELECT_001 = "ZM_SELECT_001";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(データ一括登録管理)*/
	private JBSbatSQLAccess db_ZM_T_DATAIKTTRK_KNRI = null;

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;

	/** テーブルアクセスクラス(処理管理)*/
	private JBSbatSQLAccess db_ZM_M_TRN_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	
	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	/** JBSbatBusinessFileUtil データ一括登録管理削除データファイル */
	private JBSbatBusinessFileUtil fileUtilDtikt = null;

	/** JBSbatBusinessFileUtil ディレイド処理依頼削除データファイル */
	private JBSbatBusinessFileUtil fileUtilDylyd = null;

	/** JBSbatBusinessFileUtil ダウンロードファイル管理削除データファイル */
	private JBSbatBusinessFileUtil fileUtilDl = null;

	/** JBSbatBusinessFileUtil 電子ファイル管理削除データファイル */
	private JBSbatBusinessFileUtil fileUtilEfile = null;
	
	/** データ一括登録管理削除データファイル名 */
	private static final String DTIKT_FILE_NM = JZMBatConst.ZMIFM030001_FILE_NM;

	/** ディレイド処理依頼削除データファイル名 */
	private static final String DYLYD_FILE_NM = JZMBatConst.ZMIFM031001_FILE_NM;

	/** ダウンロードファイル管理削除データファイル名 */
	private static final String DL_FILE_NM = JZMBatConst.ZMIFM032001_FILE_NM;

	/** 電子ファイル管理削除データファイル名 */
	private static final String EFILE_FILE_NM = JZMBatConst.ZMIFM033001_FILE_NM;
	
	/** 一括登録管理番号リスト */
	private ArrayList<String> ikttrkKanriNoList = new ArrayList<String>();
	
	/** ディレイド処理依頼番号リスト */
	private ArrayList<String> dlydReqNoList = new ArrayList<String>();
	
	/** 電子ファイル管理番号リスト */
	private ArrayList<String> efileNoList = new ArrayList<String>();
	
	/** ファイル番号リスト */
	private ArrayList<String> dlKanriNoList = new ArrayList<String>();
	
	/** データ一括登録管理取得基本SQL */
	private String baseSqlDtIktTrkKnri = null;
	
	/** 電子ファイル管理取得基本SQL */
	private String baseSqlEfileKnri = null;
	
	/** ダウンロードファイル管理取得基本SQL */
	private String baseSqlDlFileKnri = null;
	
	/** 000000000 */
	private static final String NINE_ZERO = "000000000";

	/** SQLの置換文字 */
	private static final String SQL_REP = "(?)";

	/** SQLのIN句の最後の文字 */
	private static final String SQL_IN_END = "')";

	/** SQLのIN句の最初の文字 */
	private static final String SQL_IN_STT = "('";

	/** SQLのIN区の区切り文字 */
	private static final String SQL_KUGIRI = "','";
	
	/** 業務パラメータ管理.業務パラメータ設定値 */
	private static final String ZM_WORK_PARAM_KNRI_SETTE = "業務パラメータ管理.業務パラメータ設定値";

	/** 業務パラメータ管理.業務パラメータＩＤ */
	private static final String ZM_WORK_PARAM_KNRI_ID = "業務パラメータ管理.業務パラメータＩＤ";

	/** 業務パラメータ管理.業務パラメータ設定値 */
	private static final String DB_ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004_WORK_PARAM_SETTE_VALUE = "DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_004.WORK_PARAM_SETTE_VALUE";

	/** 業務パラメータ管理.業務パラメータＩＤ */
	private static final String DB_ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004_WORK_PARAM_ID = "DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_004.WORK_PARAM_ID";

	/** SQL置換文字 */
	private static final String SQL_REP_DLYD_DLYD_TRN_REQ_NO_IN = "DLYD.DLYD_TRN_REQ_NO IN (?)";

	/** SQL OR文 */
	private static final String SQL_OR_DLYD_DLYD_TRN_REQ_NO = " OR DLYD.DLYD_TRN_REQ_NO = '";

	/** SQL OR文 最初の文字*/
	private static final String SQL_DLYD_DLYD_TRN_REQ_NO = " DLYD.DLYD_TRN_REQ_NO = '";
	
	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		db_ZM_T_DATAIKTTRK_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DATAIKTTRK_KNRI);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		db_ZM_M_TRN_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_TRN_KANRI);
		

		/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
		
		// 出力クラスを生成する。
		// データ一括登録管理削除データファイル
		// ディレイド処理依頼削除データファイル
		// ダウンロードファイル管理削除データファイル
		// 電子ファイル管理削除データファイル
		String path = JZMBatCommon.getMidDir();
		fileUtilDtikt = getBusinessFileUtil(path, DTIKT_FILE_NM);
		fileUtilDylyd = getBusinessFileUtil(path, DYLYD_FILE_NM);
		fileUtilDl = getBusinessFileUtil(path, DL_FILE_NM);
		fileUtilEfile = getBusinessFileUtil(path, EFILE_FILE_NM);
		
		/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
		
		HashMap<String, String> rsMap = new HashMap<String, String>(2);

		// 単項目チェックの準備
		HashMap<String, String> itemvalueMap = new HashMap<String, String>(2);
		itemvalueMap.put(DB_ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004_WORK_PARAM_ID, ZM_WORK_PARAM_KNRI_ID);
		itemvalueMap.put(DB_ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004_WORK_PARAM_SETTE_VALUE, ZM_WORK_PARAM_KNRI_SETTE);
		
		// 値の一時格納先
		String prmId = null;
		String val = null;
		
		// 業パラの値の格納先
		// 削除期間
		ArrayList<String> delPrdList = new ArrayList<String>();
		ArrayList<String> delPrdKeyList = new ArrayList<String>();
		
		// 削除期間適用処理管理番号
		ArrayList<String> delTgList = new ArrayList<String>();
		ArrayList<String> delTgKeyList = new ArrayList<String>();
		
		// 削除期間の取得
		executeZM_M_WORK_PARAM_KNRI_ZM_SELECT_004(new Object[]{commonItem.getOpeDate(), commonItem.getOpeDate()});
		JBSbatCommonDBInterface dbif = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		
		while(dbif != null)
		{
			prmId = JZMBatCommon.getDbifValString(dbif, JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_ID);
			val = JZMBatCommon.getDbifValString(dbif, JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
			
			rsMap.put(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_ID, prmId);
			rsMap.put(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE, val);
			
			// 単項目チェック
			if(!isSingleCheckZM_M_WORK_PARAM_KNRI_ZM_SELECT_004(rsMap, itemvalueMap))
			{
				// 単項目チェックでエラーが発生した場合、処理を終了する。
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EZMB0060CW);
			}
			
			// 単項目チェックに問題がなければ値を取得
			delPrdList.add(val);
			delPrdKeyList.add(prmId);
			rsMap.clear();
			prmId = null;
			val = null;
			
			dbif = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		}

		dbif = null;
		
		
		// 削除期間適用処理管理番号の取得
		executeZM_M_WORK_PARAM_KNRI_ZM_SELECT_005(new Object[]{commonItem.getOpeDate(), commonItem.getOpeDate()});
		
		dbif = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		

		db_ZM_M_WORK_PARAM_KNRI.getSql(ZM_M_WORK_PARAM_KNRI_ZM_SELECT_005);
		
		while(dbif != null)
		{
			prmId = JZMBatCommon.getDbifValString(dbif, JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_ID);
			val = JZMBatCommon.getDbifValString(dbif, JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);

			// 単項目チェック
			rsMap.put(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_ID, prmId);
			rsMap.put(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE, val);
			
			if(!isSingleCheckZM_M_WORK_PARAM_KNRI_ZM_SELECT_005(rsMap, itemvalueMap))
			{
				// 単項目チェックでエラーが発生した場合、処理を終了する。
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EZMB0060CW);
			}

			// 単項目チェックに問題がなければ値を取得
			delTgList.add(val);
			delTgKeyList.add(prmId);
			rsMap.clear();
			prmId = null;
			val = null;
			
			dbif = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		}

		baseSqlDtIktTrkKnri = db_ZM_T_DATAIKTTRK_KNRI.getSql(ZM_T_DATAIKTTRK_KNRI_ZM_SELECT_001);
		baseSqlEfileKnri = db_CC_T_EFILE_KANRI.getSql(CC_T_EFILE_KANRI_ZM_SELECT_001);
		baseSqlDlFileKnri = db_ZM_T_DL_FILE_KANRI.getSql(ZM_T_DL_FILE_KANRI_ZM_SELECT_001);
		
		// 処理済処理管理番号格納変数
		StringBuilder trnKnriNo = new StringBuilder();
		
		for(int i = 0; i < delPrdKeyList.size() - 1; i++)
		{
			String tmpPrdKey = delPrdKeyList.get(i);
			
			boolean isKnrnErr = true;
			for(int j = 0; j < delTgKeyList.size(); j++)
			{
				if(delTgKeyList.get(j).contains(tmpPrdKey))
				{
					
					// 削除期間を取得
					String delPrd = delPrdList.get(i);

					// 処理管理番号を取得
					String trnKanriNoStr = delTgList.get(j);
					
					if(trnKnriNo.length() != 0)
					{
						trnKnriNo.append(JZMBatConst.CONMA);
					}
					trnKnriNo.append(trnKanriNoStr);
					
					isKnrnErr = false;
					
					// 処理管理関連マスタ削除データ抽出処理
					trnKnriDelChsht(delPrd, trnKanriNoStr);
					
				}
			}
			
			if(isKnrnErr)
			{
				// 関連チェックでエラーが発生した場合、処理を終了する。
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EZMB0280KW, new String[]{tmpPrdKey});
			}
		}
		
		
		// 処理管理から処理管理番号全件取得
		
		executeZM_M_TRN_KANRI_ZM_SELECT_001(null);
		
		ArrayList<String> trnKnriNoList = new ArrayList<String>();
		dbif = db_ZM_M_TRN_KANRI.selectNext();
		
		while(dbif != null)
		{
			addToListExcludeBlank(trnKnriNoList, JZMBatCommon.getDbifValString(dbif, JBSbatZM_M_TRN_KANRI.TRN_KANRI_NO));
			dbif = db_ZM_M_TRN_KANRI.selectNext();
		}

		// 処理済の処理管理番号を除外する。
		String[] usedTrnKnriArr = trnKnriNo.toString().split(JZMBatConst.CONMA);
		for(int i = 0; i < trnKnriNoList.size(); i++)
		{
			for(int j = 0; j < usedTrnKnriArr.length; j++)
			{
				if(trnKnriNoList.get(i).equals(usedTrnKnriArr[j]))
				{
					trnKnriNoList.remove(i);
					i--;
					break;
				}
			}
		}
		
		StringBuilder trnKnriNoBf = new StringBuilder();
		
		for(int i = 0; i < trnKnriNoList.size(); i++)
		{
			trnKnriNoBf.append(trnKnriNoList.get(i)).append(JZMBatConst.CONMA);
		}

		trnKnriDelChsht(delPrdList.get(delPrdList.size() - 1), trnKnriNoBf.toString());

		fileUtilEfile.print(efileNoList);
		fileUtilDtikt.print(ikttrkKanriNoList);
		fileUtilDylyd.print(dlydReqNoList);
		fileUtilDl.print(dlKanriNoList);
		
		/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	/**
	 * 処理管理削除抽出処理です。
	 * @param prmDelPrd  削除期間
	 * @param prmTrnKanriNoStr 処理管理No
	 * @throws Exception
	 */
	private void trnKnriDelChsht(String prmDelPrd, String prmTrnKanriNoStr) throws Exception
	{
		
		String trnKanriNoStr = prmTrnKanriNoStr;
		String delPrd = prmDelPrd;
		JBSbatCommonDBInterface dbif = null;
		StringBuffer sb = new StringBuffer();
		
		// 処理管理番号をシングルクォートで囲む
		sb.append(trnKanriNoStr.replace(JZMBatConst.CONMA, SQL_KUGIRI));
		sb.insert(0, SQL_IN_STT).insert(sb.length(), SQL_IN_END);
		trnKanriNoStr = sb.toString();
		
		// 削除基準年月日を編集する。
		String baseYMD = JZMBatCommon.addDay(commonItem.getOpeDate(), -1 * Integer.parseInt(delPrd));
		Object[] baseYmdParamArr = new Object[]{baseYMD + NINE_ZERO};
		
		// データ一括登録管理テーブルから削除対象レコードを取得
		String wkSql = baseSqlDtIktTrkKnri.replace(SQL_REP, trnKanriNoStr);
		
		// データ一括登録管理テーブル取得ＳＱＬを実行
		db_ZM_T_DATAIKTTRK_KNRI.setSqlMap(ZM_T_DATAIKTTRK_KNRI_ZM_SELECT_001, wkSql);
		executeZM_T_DATAIKTTRK_KNRI_ZM_SELECT_001(baseYmdParamArr);

		// データを取得する。
		dbif = db_ZM_T_DATAIKTTRK_KNRI.selectNext();

		// ディレイド処理管理テーブル取得用DLYD_TRN_REQ_NO変数
		StringBuilder dlydReqNoBf = new StringBuilder();
		
		// 値の取得
		while(dbif != null)
		{
			String dlydReqNo = null;
			dlydReqNo = JZMBatCommon.getDbifValString(dbif, JBSbatZM_T_DATAIKTTRK_KNRI.DLYD_TRN_REQ_NO);
			
			addToListExcludeBlank(ikttrkKanriNoList, JZMBatCommon.getDbifValString(dbif, JBSbatZM_T_DATAIKTTRK_KNRI.DATAIKTTRK_KNRI_NO));
			addToListExcludeBlank(dlydReqNoList, dlydReqNo);
			addToListExcludeBlank(efileNoList, JZMBatCommon.getDbifValString(dbif, JBSbatZM_T_DATAIKTTRK_KNRI.EFILE_KANRI_NO));
			if(dlydReqNoBf.length() == 0)
			{
				dlydReqNoBf.append(SQL_DLYD_DLYD_TRN_REQ_NO).append(dlydReqNo).append(JZMBatConst.SINGLE_QUOTE);
			}
			else
			{
				dlydReqNoBf.append(SQL_OR_DLYD_DLYD_TRN_REQ_NO).append(dlydReqNo).append(JZMBatConst.SINGLE_QUOTE);
			}
			
			dbif = db_ZM_T_DATAIKTTRK_KNRI.selectNext();
		}

		if(dlydReqNoBf.length() != 0)
		{
			// SQL編集
			wkSql = baseSqlEfileKnri.replace(SQL_REP_DLYD_DLYD_TRN_REQ_NO_IN, dlydReqNoBf.toString());
			
			db_CC_T_EFILE_KANRI.setSqlMap(CC_T_EFILE_KANRI_ZM_SELECT_001, wkSql);
			executeCC_T_EFILE_KANRI_ZM_SELECT_001(new Object[]{});
			
			dbif = db_CC_T_EFILE_KANRI.selectNext();
			
			while(dbif != null)
			{
				addToListExcludeBlank(efileNoList, JZMBatCommon.getDbifValString(dbif, JBSbatCC_T_EFILE_KANRI.EFILE_KANRI_NO));
				dbif = db_CC_T_EFILE_KANRI.selectNext();
			}
		}
			
		
		
		wkSql = baseSqlDlFileKnri.replace(SQL_REP, trnKanriNoStr);
		
		db_ZM_T_DL_FILE_KANRI.setSqlMap(ZM_T_DL_FILE_KANRI_ZM_SELECT_001, wkSql);
		executeZM_T_DL_FILE_KANRI_ZM_SELECT_001(baseYmdParamArr);
		
		dbif = db_ZM_T_DL_FILE_KANRI.selectNext();
		
		while(dbif != null)
		{
			addToListExcludeBlank(dlKanriNoList, JZMBatCommon.getDbifValString(dbif, JBSbatZM_T_DL_FILE_KANRI.FILE_NO));
			addToListExcludeBlank(efileNoList, JZMBatCommon.getDbifValString(dbif, JBSbatZM_T_DL_FILE_KANRI.EFILE_KANRI_NO));
			dbif = db_ZM_T_DL_FILE_KANRI.selectNext();
		}
	}

	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/

		/* ++++++++++ v1.0.0 追加開始 ++++++++++ */

		closeBusinessFileUtil(fileUtilDl);
		closeBusinessFileUtil(fileUtilDtikt);
		closeBusinessFileUtil(fileUtilDylyd);
		closeBusinessFileUtil(fileUtilEfile);

		/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
		
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		db_ZM_T_DATAIKTTRK_KNRI.close();
		db_CC_T_EFILE_KANRI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		db_ZM_M_TRN_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/* ++++++++++ v1.0.0 追加開始 ++++++++++ */
	
	
	
	/**
	 * ファイル出力クラスを生成します。
	 * @param path ファイルパス
	 * @param fileName ファイル名
	 * @return ファイル出力クラス
	 * @throws Exception
	 */
	private JBSbatBusinessFileUtil getBusinessFileUtil(String path, String fileName) throws Exception
	{

		String outputFilePath = path + fileName;

		// ファイル出力クラス
		JBSbatBusinessFileUtil outputFile = JZMBatCommon.createBusinessFileUtil(outputFilePath,
				JZMBatConst.SJIS,
				JZMBatConst.CRLF,
				JZMBatConst.CONMA);
		return outputFile;
	}

	/**
	 * ファイル出力制御クラスのクローズ処理を行います。
	 * @param fileUtil
	 * @throws Exception 
	 */
	private void closeBusinessFileUtil(JBSbatBusinessFileUtil fileUtil) throws Exception
	{
		if(fileUtil != null)
		{
			fileUtil.close();
		}
	}
	

	/**
	 * ブランク以外の値をリストに追加します。
	 * @param list リスト
	 * @param val 値
	 */
	private void addToListExcludeBlank(ArrayList<String> list, String val)
	{
		if(val != null && !JZMBatConst.BLANK.equals(val))
		{
			list.add(val);
		}
	}

	/* ++++++++++ v1.0.0 追加終了 ++++++++++ */
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(ZM_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_ZM_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004);
	}

	/**
	 *入力情報（業務パラメータ管理）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_004.WORK_PARAM_ID			業務パラメータ管理.業務パラメータＩＤ
	 *			 DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_004.WORK_PARAM_SETTE_VALUE			業務パラメータ管理.業務パラメータ設定値
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckZM_M_WORK_PARAM_KNRI_ZM_SELECT_004(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// 業務パラメータＩＤ項目チェック
		strValue = (String)rsMap.get("WORK_PARAM_ID");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZMB0030TW", new String[]{
															(String)itemvalueMap.get(DB_ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004_WORK_PARAM_ID)});
			return false;
		}

		// 業務パラメータ設定値項目チェック
		strValue = (String)rsMap.get("WORK_PARAM_SETTE_VALUE");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZMB0030TW", new String[]{
															(String)itemvalueMap.get(DB_ZM_M_WORK_PARAM_KNRI_ZM_SELECT_004_WORK_PARAM_SETTE_VALUE)});
			return false;
		}

		return true;
	}

	/**
	 * SQLKEY(ZM_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_ZM_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_ZM_SELECT_005);
	}

	/**
	 *入力情報（業務パラメータ管理）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_005.WORK_PARAM_ID			業務パラメータ管理.業務パラメータＩＤ
	 *			 DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_005.WORK_PARAM_SETTE_VALUE			業務パラメータ管理.業務パラメータ設定値
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckZM_M_WORK_PARAM_KNRI_ZM_SELECT_005(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// 業務パラメータＩＤ項目チェック
		strValue = (String)rsMap.get("WORK_PARAM_ID");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZMB0030TW", new String[]{
															(String)itemvalueMap.get("DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_005.WORK_PARAM_ID")});
			return false;
		}

		// 業務パラメータ設定値項目チェック
		strValue = (String)rsMap.get("WORK_PARAM_SETTE_VALUE");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EZMB0030TW", new String[]{
															(String)itemvalueMap.get("DB-ZM_M_WORK_PARAM_KNRI-ZM_SELECT_005.WORK_PARAM_SETTE_VALUE")});
			return false;
		}

		return true;
	}

	/**
	 * SQLKEY(ZM_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	処理管理番号
	 *		 	更新年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DATAIKTTRK_KNRI_ZM_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		//paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_T_DATAIKTTRK_KNRI.selectBySqlDefine(paramList, ZM_T_DATAIKTTRK_KNRI_ZM_SELECT_001);
	}

	/**
	 * SQLKEY(ZM_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ディレイド処理依頼番号
	 *		 	ディレイド処理依頼番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_EFILE_KANRI_ZM_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CC_T_EFILE_KANRI.selectBySqlDefine(paramList, CC_T_EFILE_KANRI_ZM_SELECT_001);
	}

	/**
	 * SQLKEY(ZM_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	処理管理番号
	 *		 	更新年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DL_FILE_KANRI_ZM_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		//paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.selectBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_ZM_SELECT_001);
	}

	/**
	 * SQLKEY(ZM_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_TRN_KANRI_ZM_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_ZM_M_TRN_KANRI.selectBySqlDefine(paramList, ZM_M_TRN_KANRI_ZM_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
