/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCNContYkRsltHsFileChk
*	ソースファイル名	：JBSbatCNContYkRsltHsFileChk.java
*	作成者				：富士通　
*	作成日				：2023年02月20日
*＜機能概要＞
*　コンテンツ有効性結果補正ファイルチェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v64.00.00   2023/02/21  FJ)謝       【ANK-4349-00-00】コンテンツクレカ有効性結果補正のシステム化対応 新規作成
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.common.JCNBatCommon;
import eo.business.util.file.JBSbatCNLST01701;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JCNStrConst;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCNContYkRsltHsFileChk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(コンテンツ事業クレジットカード)*/
	private static final String D_TBL_NAME_CN_T_CONTJIGYO_CRECA = "CN_T_CONTJIGYO_CRECA";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** SQL定義キー(CN_SELECT_009)*/
	private static final String ZM_M_CD_NM_KANRI_CN_SELECT_009 = "CN_SELECT_009";

	/** SQL定義キー(CN_SELECT_006)*/
	private static final String CK_T_CUST_CN_SELECT_006 = "CN_SELECT_006";

	/** SQL定義キー(CN_SELECT_009)*/
	private static final String CN_T_CONTJIGYO_CRECA_CN_SELECT_009 = "CN_SELECT_009";

	/** SQL定義キー(CN_INSERT_002)*/
	private static final String ZM_T_DL_FILE_KANRI_CN_INSERT_002 = "CN_INSERT_002";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(コンテンツ事業クレジットカード)*/
	private JBSbatSQLAccess db_CN_T_CONTJIGYO_CRECA = null;

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 入力定義ファイルパス */
	private static final String DIR_IND = "IND";
	
	/** 改行コード */
	private static final String LINE_SEPARATOR = "\r\n";
	
	/** ディレイド処理結果コード(完了) */
	private static final String DLYD_TRN_RSLT_CD_COMPLETE = "1";
	
	/** ディレイド処理結果コード(業務エラー) */
	private static final String DLYD_TRN_RSLT_CD_APP_ERR = "2";
	
	/** コンテンツ有効性結果補正アップロードファイル定義ファイル名 */
	private static final String CNLST01701_DEF = "CNLST01701.def";
	
	/** ファイルコード */
	private static final String FILE_CD = "0000";
	
	/** 処理管理番号：コンテンツ有効性結果補正ファイル */
	private static final String TRN_KANRI_NO = "000000000258";
	
	/** コンテンツ有効性結果補正アップロードファイルチェック結果リストファイル名編集用 */
	private static final String FILE_NM = "CNLST01702_yyyyMMddHHmmss.csv";
	
	/** ファイル名で利用するタイムスタンプのフォーマット */
	private static final String FILE_TIMESTAMP_FORMAT = "yyyyMMddHHmmss";
	
	/** コンテンツ有効性結果補正アップロードファイルチェックエラーコード */
	private HashMap<String, String> chkErrMsgList = null;
	
	/** コンテンツ有効性結果補正アップロードファイルチェック結果リストファイルオブジェクト */
	private JBSbatBusinessFileUtil cnlst01702FileObj = null;
	
	/** コンテンツ有効性結果補正アップロードファイルチェック結果リストファイル件数 */
	private int cnlst01702Cnt = 0;
	
	/** コンテンツ有効性結果補正オブジェクト */
	private JBSbatBusinessFileUtil cnifm017FileObj = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_CN_T_CONTJIGYO_CRECA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_CONTJIGYO_CRECA);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ディレイド処理依頼情報リストを取得する
		List<HashMap<String, Object>> shoriIraiList = JCCbatShoriIraiUtil.getShoriIraiInfo(commonItem, this.jobid);
		
		// ディレイド処理依頼情報リストが取得できない場合、処理を終了する
		if (null == shoriIraiList)
		{
			return null;
		}
		
		// 初回処理フラグ true:初回、false:初回以外
		boolean firstTranFlg = true;
		// クレジットカード番号預りIDチェックリスト
		HashSet<String> crecardNoAzkriIdChkList = new HashSet<String>();
		// コンテンツ有効性結果補正アップロードファイルチェックエラーコード
		chkErrMsgList = new HashMap<String, String>();
		
		// フリー項目を取得する
		String[] freeItems = freeItem.split(JCNStrConst.S_PARAM_DELIM);
		
		// コード名称管理を取得する
		String[] selectParam001 = new String[2];
		selectParam001[0] = super.opeDate;
		selectParam001[1] = super.opeDate;
		executeZM_M_CD_NM_KANRI_CN_SELECT_009(selectParam001);
		JBSbatCommonDBInterface cdNmKanriMap = db_ZM_M_CD_NM_KANRI.selectNext();
		while (cdNmKanriMap != null)
		{
			// コンテンツ有効性結果補正アップロードファイルチェックエラーコード
			chkErrMsgList.put(cdNmKanriMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), cdNmKanriMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			
			// 次のデータを読む
			cdNmKanriMap = db_ZM_M_CD_NM_KANRI.selectNext();
		}
		
		// 有効性依頼ファイル(コンテンツ)ファイルパス
		String kkife482ContFilePath = freeItems[2];
		
		// 有効性依頼ファイル(コンテンツ)オブジェクトを生成する
		JBSbatInputFileUtil kkife482ContFileUtil = new JBSbatInputFileUtil(kkife482ContFilePath);
		kkife482ContFileUtil.setEncode(JCNStrConst.SJIS);						// 文字コード
		kkife482ContFileUtil.setLine(LINE_SEPARATOR);							// 改行コード
		
		// Readerオブジェクトを生成する
		kkife482ContFileUtil.createReader();
		
		// 有効性依頼ファイル(コンテンツ)の件数分繰り返す
		while (kkife482ContFileUtil.ready())
		{
			// ファイルから１レコードを取得する
			String line = kkife482ContFileUtil.readLine();
			
			if (line != null)
			{
				String[] columns = line.split(JCNStrConst.S_SEP_CAM, -1);
				
				if (columns.length >= 3)
				{
					if (JCNBatCommon.isNotNullCheck(columns[2]) && !crecardNoAzkriIdChkList.contains(columns[2]))
					{
						crecardNoAzkriIdChkList.add(columns[2]);
					}
				}
			}
		}
		
		// 有効性依頼ファイル(コンテンツ)を閉じる
		if (kkife482ContFileUtil != null)
		{
			kkife482ContFileUtil.close();
		}
		
		for (HashMap<String, Object> shoriIrai : shoriIraiList)
		{
			// ディレイド処理依頼番号
			String shoriIraiNo = (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);
			
			// 初回以外の場合
			if (!firstTranFlg)
			{
				// ディレイド処理依頼結果更新
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, DLYD_TRN_RSLT_CD_COMPLETE, null);
				continue;
			}
			
			firstTranFlg = false;
			
			// コンテンツ有効性結果補正アップロードファイル定義ファイル名を取得する
			String cnlst01701DefName = JBSbatAplConst.getAplConstValue(DIR_IND) + CNLST01701_DEF;
			
			// チェックエラーフラグ false:エラーなし、true:チェックあり
			boolean fileChkErrFlg = false;
			
			// エラーコード
			String errCode = "";
			
			// システム日時を取得する
			String sysDateTime = JCCBatCommon.getSysDateTime();
			
			// コンテンツ有効性結果補正アップロードファイルチェック結果リストファイル名
			String fileName = FILE_NM.replaceAll(FILE_TIMESTAMP_FORMAT, sysDateTime);
			
			// コンテンツ有効性結果補正アップロードファイルチェック結果リストファイルパス
			String cnlst01702FilePath = freeItems[0] + fileName;
			
			// コンテンツ有効性結果補正アップロードファイルチェック結果リストファイルオブジェクトを生成する
			cnlst01702FileObj = JCCBatCommon.createBusinessFileUtil(cnlst01702FilePath,
					JCNStrConst.SJIS, LINE_SEPARATOR, JCNStrConst.S_SEP_CAM);
			
			// コンテンツ有効性結果補正アップロードファイルチェック結果リストファイルレコード件数
			cnlst01702Cnt = 0;
			
			// コンテンツ有効性結果補正ファイルのファイルパス
			String cnifm017FilePath = freeItems[1];
			
			// コンテンツ有効性結果補正ファイルオブジェクトを生成する
			cnifm017FileObj = JCCBatCommon.createBusinessFileUtil(cnifm017FilePath,
					JCNStrConst.SJIS, LINE_SEPARATOR, JCNStrConst.S_SEP_CAM);
			
			// 電子ファイル管理からコンテンツ有効性結果補正アップロードファイルを取得する
			String cnlst01701FilePath = JCCBatCommon.searchDenshiFile(commonItem, (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO));
			
			// コンテンツ有効性結果補正アップロードファイルオブジェクトを生成する
			JBSbatInputFileUtil cnlst01701FileUtil = new JBSbatInputFileUtil(cnlst01701FilePath);
			
			// コンテンツ有効性結果補正アップロード定義ファイルオブジェクトを生成する
			JBSbatDefFileUtil cnlst01701FileDef = new JBSbatDefFileUtil(cnlst01701DefName, cnlst01701FileUtil);
			
			// アップロード期間チェック処理を行う
			String day = "";
			if (JCCBatCommon.checkDate(super.opeDate, 8))
			{
				day = super.opeDate.substring(6, 8);
			}
			if (!(day.compareTo(freeItems[3]) >= 0 && day.compareTo(freeItems[4]) <= 0))
			{
				fileChkErrFlg = true;
				errCode = "E100";
				createCnlst01702(errCode, chkErrMsgList.get(errCode), "", "");
			}
			
			// エラーなしの場合
			if (!fileChkErrFlg)
			{
				// Readerオブジェクトを生成する
				cnlst01701FileUtil.createReader();
				
				// コンテンツ有効性結果補正アップロードファイルの件数分繰り返す
				while (cnlst01701FileUtil.ready())
				{
					// ファイルから１レコードを取得する
					String line = cnlst01701FileUtil.readLine();
					
					// １レコードの情報をマップに格納する
					JBSbatServiceInterfaceMap recordMap = cnlst01701FileDef.lineToObject(line, cnlst01701FileUtil, 0);
					
					// 項目数不一致の場合
					if (recordMap.isInputErrorFlg())
					{
						fileChkErrFlg = true;
						errCode = "E010";
						createCnlst01702(errCode, chkErrMsgList.get(errCode), "", "");
						break;
					}
				}
				
				// エラーなしの場合
				if (!fileChkErrFlg)
				{
					// Readerオブジェクトを生成する
					cnlst01701FileUtil.createReader();
					
					// コンテンツ有効性結果補正アップロードファイルの件数分繰り返す
					while (cnlst01701FileUtil.ready())
					{
						// ファイルから１レコードを取得する
						String line = cnlst01701FileUtil.readLine();
						
						// １レコードの情報をマップに格納する
						JBSbatServiceInterfaceMap recordMap = cnlst01701FileDef.lineToObject(line, cnlst01701FileUtil, 0);
						
						// SYSID
						String sysid = (String)recordMap.getMap().get(JBSbatCNLST01701.SYSID);
						// クレジットカード番号預りID
						String crecardNoAzkriId = (String)recordMap.getMap().get(JBSbatCNLST01701.CRECARD_NO_AZKRI_ID);
						
						// 単項目チェックを行う
						if (isSingleCheck(recordMap))
						{
							fileChkErrFlg = true;
							
							// 次のレコードを処理する
							continue;
						}
						
						// クレジットカード有効性依頼ファイルへの存在チェックを行う
						if (!crecardNoAzkriIdChkList.contains(crecardNoAzkriId))
						{
							fileChkErrFlg = true;
							errCode = "E110";
							createCnlst01702(errCode, chkErrMsgList.get(errCode), sysid, crecardNoAzkriId);
							
							// 次のレコードを処理する
							continue;
						}
						
						// お客様の状態チェックを行う
						String[] selectParam002 = new String[1];
						selectParam002[0] = sysid;
						executeCK_T_CUST_CN_SELECT_006(selectParam002);
						JBSbatCommonDBInterface custMap = db_CK_T_CUST.selectNext();
						if (custMap == null)
						{
							fileChkErrFlg = true;
							errCode = "E120";
							createCnlst01702(errCode, chkErrMsgList.get(errCode), sysid, crecardNoAzkriId);
							
							// 次のレコードを処理する
							continue;
						}
						
						// コンテンツ事業クレジットカードの存在チェックを行う
						String[] selectParam003 = new String[1];
						selectParam003[0] = crecardNoAzkriId;
						executeCN_T_CONTJIGYO_CRECA_CN_SELECT_009(selectParam003);
						JBSbatCommonDBInterface contjigyoCrecaMap = db_CN_T_CONTJIGYO_CRECA.selectNext();
						if (contjigyoCrecaMap == null)
						{
							fileChkErrFlg = true;
							errCode = "E130";
							createCnlst01702(errCode, chkErrMsgList.get(errCode), sysid, crecardNoAzkriId);
							
							// 次のレコードを処理する
							continue;
						}
						
						// チェックOKの場合
						createCnlst01702("", "", sysid, crecardNoAzkriId);
						createCnifm017(sysid, crecardNoAzkriId);
					}
				}
			}
			
			// コンテンツ有効性結果補正アップロードファイルチェック結果リストを閉じる
			JCNBatCommon.closeBusinessFileUtil(cnlst01702FileObj);
			
			// コンテンツ有効性結果補正ファイルを閉じる
			JCNBatCommon.closeBusinessFileUtil(cnifm017FileObj);
			
			// ディレイド処理依頼結果更新
			// エラーなしの場合
			if (!fileChkErrFlg)
			{
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, DLYD_TRN_RSLT_CD_COMPLETE, null);
			}
			else
			{
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, DLYD_TRN_RSLT_CD_APP_ERR, null);
			}
			
			// 電子ファイル管理登録処理
			JBSbatCommonItem common = commonItem;										// 業務共通電文
			String fileCd = FILE_CD;													// ファイルコード
			String filePath = cnlst01702FilePath;										// ファイルパス
			String fileDeletionDt = JBSbatDateUtil.adjustMonth(super.opeDate, 3);		// ファイル削除年月日（運用日付 + 3ヶ月）
			String[] rc = JCCBatCommon.createDenshiFile(common, fileCd, filePath, fileDeletionDt);
			
			// ログ出力
			super.logPrint.printDebugLog("電子ファイル管理番号(" + rc[0] + ")、世代登録年月日時分秒(" + rc[1] + ")");
			
			// ダウンロードファイル管理登録処理
			String[] insertSetParam = new String[5];
			insertSetParam[0] = TRN_KANRI_NO;							// 処理管理番号
			insertSetParam[1] = fileName;								// ファイル名
			insertSetParam[2] = String.valueOf(cnlst01702Cnt);			// データ件数
			insertSetParam[3] = rc[0];									// 電子ファイル管理番号
			insertSetParam[4] = rc[1];									// 世代登録年月日時分秒
			executeZM_T_DL_FILE_KANRI_CN_INSERT_002(insertSetParam);
			
			// コンテンツ有効性結果補正アップロードファイルチェック結果リストを削除する
			File cnlst01702File = new File(cnlst01702FilePath);
			if (cnlst01702File.exists())
			{
				cnlst01702File.delete();
			}
			
			// エラーありの場合、コンテンツ有効性結果補正を削除する
			if (fileChkErrFlg)
			{
				File cnifm017File = new File(cnifm017FilePath);
				if (cnifm017File.exists())
				{
					cnifm017File.delete();
				}
			}
			
			// コンテンツ有効性結果補正アップロードファイルを閉じる
			if (cnlst01701FileUtil != null)
			{
				cnlst01701FileUtil.close();
			}
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		db_CK_T_CUST.close();
		db_CN_T_CONTJIGYO_CRECA.close();
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CN_SELECT_009)で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_CD_NM_KANRI_CN_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CN_SELECT_009);
	}

	/**
	 * SQLKEY(CN_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_CN_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_CN_SELECT_006);
	}

	/**
	 * SQLKEY(CN_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	クレジットカード番号預りID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_T_CONTJIGYO_CRECA_CN_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CN_T_CONTJIGYO_CRECA.selectBySqlDefine(paramList, CN_T_CONTJIGYO_CRECA_CN_SELECT_009);
	}

	/**
	 * SQLKEY(CN_INSERT_002)で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_CN_INSERT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_CN_INSERT_002);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * パラメタの単項目チェックを行う。<br>
	 * @param recordMap 入力データ
	 * @return boolean false：エラーなし、true：エラーあり
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private boolean isSingleCheck(JBSbatServiceInterfaceMap recordMap) throws Exception
	{
		String errCode = "";
		String errName = "";
		boolean checkErrFlg = false;
		
		// SYSID
		String sysid = (String)recordMap.getMap().get(JBSbatCNLST01701.SYSID);
		// クレジットカード番号預りID
		String crecardNoAzkriId = (String)recordMap.getMap().get(JBSbatCNLST01701.CRECARD_NO_AZKRI_ID);
		
		// ■SYSID
		errName = "SYSID";
		
		// 必須チェック
		if (!JCNBatCommon.isNotNullCheck(sysid))
		{
			checkErrFlg = true;
			errCode = "E020";
			createCnlst01702(errCode, getNullToStr(chkErrMsgList.get(errCode)) + "（" + errName + "）", sysid, crecardNoAzkriId);
		}
		// 桁数チェック
		else if (!JBSbatCheckUtil.invoke(sysid, new String[]{"ketasuu1","10"}))
		{
			checkErrFlg = true;
			errCode = "E030";
			createCnlst01702(errCode, getNullToStr(chkErrMsgList.get(errCode)) + "（" + errName + "）", sysid, crecardNoAzkriId);
		}
		// 形式チェック
		else if (!JBSbatCheckUtil.invoke(sysid, new String[]{"hannkakuesuuji1"}))
		{
			checkErrFlg = true;
			errCode = "E040";
			createCnlst01702(errCode, getNullToStr(chkErrMsgList.get(errCode)) + "（" + errName + "）", sysid, crecardNoAzkriId);
		}
		
		// ■クレジットカード番号預りID
		errName = "クレジットカード番号預りID";
		
		// 必須チェック
		if (!JCNBatCommon.isNotNullCheck(crecardNoAzkriId))
		{
			checkErrFlg = true;
			errCode = "E020";
			createCnlst01702(errCode, getNullToStr(chkErrMsgList.get(errCode)) + "（" + errName + "）", sysid, crecardNoAzkriId);
		}
		// 桁数チェック
		else if (!JBSbatCheckUtil.invoke(crecardNoAzkriId, new String[]{"ketasuu1","16"}))
		{
			checkErrFlg = true;
			errCode = "E030";
			createCnlst01702(errCode, getNullToStr(chkErrMsgList.get(errCode)) + "（" + errName + "）", sysid, crecardNoAzkriId);
		}
		// 形式チェック
		else if (!JBSbatCheckUtil.invoke(crecardNoAzkriId, new String[]{"hannkakuesuuji1"}))
		{
			checkErrFlg = true;
			errCode = "E040";
			createCnlst01702(errCode, getNullToStr(chkErrMsgList.get(errCode)) + "（" + errName + "）", sysid, crecardNoAzkriId);
		}
		
		return checkErrFlg;
	}
	
	/**
	 * コンテンツ有効性結果補正アップロードファイルチェック結果リストを出力する。<br>
	 * @param errCode エラーコード
	 * @param errNaiyo エラー内容
	 * @param sysid SYSID
	 * @param crecardNoAzkriId クレジットカード番号預りID
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void createCnlst01702(String errCode, String errNaiyo, String sysid, String crecardNoAzkriId) throws Exception
	{
		ArrayList<String> outputInfo = new ArrayList<String>();
		
		// エラーコード
		outputInfo.add(getNullToStr(errCode));
		// エラー内容
		outputInfo.add(getNullToStr(errNaiyo));
		// SYSID
		outputInfo.add(getNullToStr(sysid));
		// クレジットカード番号預りID
		outputInfo.add(getNullToStr(crecardNoAzkriId));
		
		JCNBatCommon.printDoubleQuoteBusinessFileUtil(cnlst01702FileObj, outputInfo);
		
		// ファイル件数カウント
		cnlst01702Cnt++;
	}
	
	/**
	 * コンテンツ有効性結果補正ファイルを出力する。<br>
	 * @param sysid SYSID
	 * @param crecardNoAzkriId クレジットカード番号預りID
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void createCnifm017(String sysid, String crecardNoAzkriId) throws Exception
	{
		ArrayList<String> outputInfo = new ArrayList<String>();
		
		// SYSID
		outputInfo.add(getNullToStr(sysid));
		// クレジットカード番号預りID
		outputInfo.add(getNullToStr(crecardNoAzkriId));
		
		JCNBatCommon.printDoubleQuoteBusinessFileUtil(cnifm017FileObj, outputInfo);
	}
	
	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "";
		}
		return str;
	}
}
