/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCNTkbtSaleSmrTktFileMake
*	ソースファイル名	：JBSbatCNTkbtSaleSmrTktFileMake.java
*	作成者				：富士通　
*	作成日				：2011年12月13日
*＜機能概要＞
*　月別売上集計統括ファイル作成処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/13   富士通		新規作成
*	v3.00.0		2012/09/19	FJ)小林		【ST1-2012-0000589】トランザクションテーブル取得0件の場合、異常終了から警告終了へ修正
*	v5.00.0		2013/03/29  FJ)泉		【IT1-2013-0000689】文字列結合時のnullチェック追加
*	v58.00.00	2022/06/17   FJ) 秋末   【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCbatDenshiFileUtil;
import eo.business.common.JCNBatCommon;
import eo.common.constant.JCNStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JPCDateUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatBusinessFileUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCNTkbtSaleSmrTktFileMake extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(処理日付情報)*/
	private static final String D_TBL_NAME_CN_T_TRAN_YMD_INFO = "CN_T_TRAN_YMD_INFO";

	/** テーブル(月別売上集計ワーク)*/
	private static final String D_TBL_NAME_CN_T_TKBT_SALES_SHUK = "CN_T_TKBT_SALES_SHUK";

	/** テーブル(コンテンツサービス)*/
	private static final String D_TBL_NAME_CN_M_CONT_SVC = "CN_M_CONT_SVC";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(クレジットカード会社)*/
	private static final String D_TBL_NAME_KK_M_CRECARD_COMP = "KK_M_CRECARD_COMP";

	/** テーブル(コンテンツ決済電子ファイル管理)*/
	private static final String D_TBL_NAME_CN_T_CNKS_EFILE_KNRI = "CN_T_CNKS_EFILE_KNRI";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** SQL定義キー(CN_SELECT_002)*/
	private static final String CN_T_TRAN_YMD_INFO_CN_SELECT_002 = "CN_SELECT_002";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String CN_T_TKBT_SALES_SHUK_CN_SELECT_001 = "CN_SELECT_001";

	/** SQL定義キー(CN_SELECT_010)*/
	private static final String CN_M_CONT_SVC_CN_SELECT_010 = "CN_SELECT_010";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_CN_SELECT_001 = "CN_SELECT_001";

	/** SQL定義キー(CN_SELECT_003)*/
	private static final String KK_M_CRECARD_COMP_CN_SELECT_003 = "CN_SELECT_003";

	/** SQL定義キー(CN_SELECT_006)*/
	private static final String ZM_M_CD_NM_KANRI_CN_SELECT_006 = "CN_SELECT_006";

	/** SQL定義キー(CN_SELECT_001)*/
	private static final String CN_T_CNKS_EFILE_KNRI_CN_SELECT_001 = "CN_SELECT_001";

	/** SQL定義キー(CN_INSERT_001)*/
	private static final String CN_T_CNKS_EFILE_KNRI_CN_INSERT_001 = "CN_INSERT_001";
	
	/** SQL定義キー(CN_INSERT_001)*/
	private static final String ZM_T_DL_FILE_KANRI_CN_INSERT_001 = "CN_INSERT_001";

	/** テーブルアクセスクラス(処理日付情報)*/
	private JBSbatSQLAccess db_CN_T_TRAN_YMD_INFO = null;

	/** テーブルアクセスクラス(月別売上集計ワーク)*/
	private JBSbatSQLAccess db_CN_T_TKBT_SALES_SHUK = null;

	/** テーブルアクセスクラス(コンテンツサービス)*/
	private JBSbatSQLAccess db_CN_M_CONT_SVC = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(クレジットカード会社)*/
	private JBSbatSQLAccess db_KK_M_CRECARD_COMP = null;

	/** テーブルアクセスクラス(コンテンツ決済電子ファイル管理)*/
	private JBSbatSQLAccess db_CN_T_CNKS_EFILE_KNRI = null;
	
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** メッセージキー*/
	private static final String ECNB0090AI = JPCBatchMessageConstant.ECNB0090AI;
	
	/** メッセージキー*/
	private static final String ECNB0060KE = JPCBatchMessageConstant.ECNB0060KE;
	
	/** メッセージキー*/
	private static final String ECNB0080KE = JPCBatchMessageConstant.ECNB0080KE;
	
	/** メッセージキー*/
	private static final String ECNB0230KE = JPCBatchMessageConstant.ECNB0230KE;
	
	/** メッセージキー*/
	private static final String ECNB0410JW = JPCBatchMessageConstant.ECNB0410JW;
	
	/** 処理名(月別売上集計統括ファイル作成)*/
	public static final String S_SELECT = "取得";
	
	/** 処理名(月別売上集計統括ファイル作成)*/
	public static final String S_JOB_NAME = "月別売上集計統括ファイル作成";
	
	/** ファイル名(月別売上集計統括)*/
	public static final String S_FILE_NAME = "月別売上集計統括";
	
	/** ファイルコード(0001:月別売上集計統括ファイル)*/
	public static final String S_FILE_CD = "0001";
	
	/** コロン*/
	private static final String S_COL = ".";
	
	/** ファイル削除年月日算出用数値(6)*/
	private static final int I_P_SIX = 6;
	
	/** 集計単位コード(1:訂正前金額) */
	private static final String S_SHUK_TANI_CD_1 = "1";
	
	/** 集計単位コード(2:訂正金額) */
	private static final String S_SHUK_TANI_CD_2 = "2";
	
	/** ヘッダー情報1 */
	private static final String S_HAEDER_1 = "集計単位";
	
	/** ヘッダー情報2 */
	private static final String S_HAEDER_2 = "回線系サービス";
	
	/** ヘッダー情報3 */
	private static final String S_HAEDER_3 = "合計";
	
	/** 集計単位(1:訂正前金額) */
	private static final String S_SHUK_TANI_1 = "訂正前金額";
	
	/** 集計単位(2:訂正金額) */
	private static final String S_SHUK_TANI_2 = "訂正金額";
	
	/** 集計単位(3:訂正後金額) */
	private static final String S_SHUK_TANI_3 = "訂正後金額";
	
	/** 小計 */
	private static final String S_SHOUKEI = "小計";
	
	/** クレジットカード会社名付与文字 */
	private static final String S_CRKS_KAKKO = "クレジット決済（";
	
	/** クレジットカード会社名付与文字 */
	private static final String S_KAKKO = "）";
	
	/** 処理管理番号 */
	private static final String TRN_KANRI_NO = "000000000011";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// FREEパラメータチェック
		String strFreeParam = commonItem.getFreeItem();
		String[] lines = strFreeParam.split(JCNStrConst.S_PARAM_DELIM);
		if(lines.length != 1 || "".equals(lines[0]))
		{
			throw new JBSbatBusinessException(ECNB0230KE);
		}
		
		// DBアクセスクラスを生成します
		db_CN_T_TRAN_YMD_INFO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_TRAN_YMD_INFO);
		db_CN_T_TKBT_SALES_SHUK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_TKBT_SALES_SHUK);
		db_CN_M_CONT_SVC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_M_CONT_SVC);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_KK_M_CRECARD_COMP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_CRECARD_COMP);
		db_CN_T_CNKS_EFILE_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CN_T_CNKS_EFILE_KNRI);
		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
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// 処理日付情報を取得
		JBSbatCommonDBInterface dbList1 = new JBSbatCommonDBInterface();
		dbList1.setValue(JCNStrConst.S_BAT_TRAN_CD_SMR);		// バッチ集計処理実行日取得キー(6)
		executeCN_T_TRAN_YMD_INFO_CN_SELECT_002(dbList1.getList().toArray());
		
		// SQL実行結果を取得
		JBSbatCommonDBInterface map = new JBSbatCommonDBInterface(); 
		String strTranTgYMD = "";
		String strTranTgSmrYMD = "";
		String strTranTgSmrYM = "";
		
		
		// 処理日付情報とエラーフラグ(true:エラーあり,false:エラーなし)の設定
		boolean tranErrFlg = true;
		for(map = db_CN_T_TRAN_YMD_INFO.selectNext(); 
				null != map; 
				map = db_CN_T_TRAN_YMD_INFO.selectNext())
		{
			strTranTgYMD = map.getString("TRAN_TG_YMD");			// 処理対象年月日
			strTranTgSmrYMD = map.getString("TRAN_TG_YMD_BEFRM");	// 集計対象年月日
			strTranTgSmrYM = strTranTgSmrYMD.substring(0, 6);		// 集計対象年月
			
			tranErrFlg = false;
		}
		
		// 処理日付情報エラーフラグ = true:エラーあり の場合は、エラー出力し終了する。
		if(tranErrFlg)
		{
			super.logPrint.printBusinessErrorLog(ECNB0080KE, new String[]
			                                                			{S_JOB_NAME, D_TBL_NAME_CN_T_TRAN_YMD_INFO, "BAT_TRAN_CD=" + JCNStrConst.S_BAT_TRAN_CD_SMR});
			throw new JBSbatBusinessException(ECNB0080KE, new String[]
			{S_JOB_NAME, D_TBL_NAME_CN_T_TRAN_YMD_INFO, "BAT_TRAN_CD=" + JCNStrConst.S_BAT_TRAN_CD_SMR});
		}
		
		// コンテンツ決済文書種別コード取得
		JBSbatCommonDBInterface dbList10 = new JBSbatCommonDBInterface();
		String[] strCBSCList = new String[2];
		int i = 0;
		dbList10.setValue(JCNStrConst.S_CD01134);
		executeZM_M_CD_NM_KANRI_CN_SELECT_001(dbList10.getList().toArray());
		for(map = db_ZM_M_CD_NM_KANRI.selectNext(); null != map; map = db_ZM_M_CD_NM_KANRI.selectNext())
		{
			strCBSCList[i] = map.getString("CD_DIV");
			i++;
		}
		
		String strCnksBunSbtCD01 = strCBSCList[0];
		
		// ダウンロード済フラグ取得
		JBSbatCommonDBInterface dbList11 = new JBSbatCommonDBInterface();
		String[] strDZFList = new String[2];
		i = 0;
		dbList11.setValue(JCNStrConst.S_CD00833);
		executeZM_M_CD_NM_KANRI_CN_SELECT_001(dbList11.getList().toArray());
		for(map = db_ZM_M_CD_NM_KANRI.selectNext(); null != map; map = db_ZM_M_CD_NM_KANRI.selectNext())
		{
			strDZFList[i] = map.getString("CD_DIV");
			i++;
		}
		
		String strDLZumiFlg0 = strDZFList[0];
		
		// 回線系サービス格納用リスト
		ArrayList<String> strKisnSvcList = new ArrayList<String>();
		
		// 料金グループ名取得
		JBSbatCommonDBInterface dbList12 = new JBSbatCommonDBInterface();
		dbList12.setValue(JCNStrConst.S_CD01202);
		executeZM_M_CD_NM_KANRI_CN_SELECT_006(dbList12.getList().toArray());
		for(map = db_ZM_M_CD_NM_KANRI.selectNext(); null != map; map = db_ZM_M_CD_NM_KANRI.selectNext())
		{
			strKisnSvcList.add(map.getString("CD_DIV_NM"));
		}
		
		// クレジットカード会社名取得
		JBSbatCommonDBInterface dbList13 = new JBSbatCommonDBInterface();
		dbList13.setValue(strTranTgYMD);
		dbList13.setValue(strTranTgYMD);
		dbList13.setValue(strTranTgYMD);
		executeKK_M_CRECARD_COMP_CN_SELECT_003(dbList13.getList().toArray());
		
		String creCardCompNm = "";
		
		for(map = db_KK_M_CRECARD_COMP.selectNext(); null != map; map = db_KK_M_CRECARD_COMP.selectNext())
		{
			// クレジットカード会社名がnullでない場合のみ、値を設定する
			//ANK-3846-00-00 MOD START
			//if (JCNBatCommon.isNotNullCheck(map.getString("CRECARD_COMP_NM")))
			if (JCNBatCommon.isNotNullCheck(map.getString("CRECARD_COMP_ALI")))
			//ANK-3846-00-00 MOD END
			{
				//ANK-3846-00-00 MOD START
				//creCardCompNm = map.getString("CRECARD_COMP_NM");
				creCardCompNm = map.getString("CRECARD_COMP_ALI");
				//ANK-3846-00-00 MOD END
			} else {
				creCardCompNm = "";
			}
			
			strKisnSvcList.add(S_CRKS_KAKKO + creCardCompNm + S_KAKKO);
		}
		
		// FREEパラメータ取得
		String strFreeParam = commonItem.getFreeItem();
		
		// ファイルのリネーム
		String strFileNMFP = updateFileName(strFreeParam, strTranTgSmrYM);
		
		// ファイル出力データ格納用リスト
		ArrayList<String> strRecList = new ArrayList<String>();
		
		// ヘッダー情報取得（コンテンツサービス名）
		JBSbatCommonDBInterface dbList2 = new JBSbatCommonDBInterface();
		ArrayList<String> strContSvcCDList = new ArrayList<String>();	// コンテンツサービスコード格納用リスト
		ArrayList<String> strContSvcNMList = new ArrayList<String>();	// コンテンツサービス名格納用リスト
		dbList2.setValue(JCNStrConst.S_CD01200);
		dbList2.setValue(strTranTgYMD);
		executeCN_M_CONT_SVC_CN_SELECT_010(dbList2.getList().toArray());
		for(map = db_CN_M_CONT_SVC.selectNext(); null != map; map = db_CN_M_CONT_SVC.selectNext())
		{
			strContSvcCDList.add(map.getString("CONT_SVC_CD"));
			strContSvcNMList.add(map.getString("CONT_SVC_NM"));
		}
		
		// 取得したレコードが0件であれば異常終了
		if(0 == strContSvcCDList.size() || 0 == strContSvcNMList.size())
		{
			super.logPrint.printBusinessErrorLog(ECNB0410JW, new String[] {S_JOB_NAME + JCNStrConst.S_HAIFUN + D_TBL_NAME_CN_M_CONT_SVC + S_SELECT});
			
			throw new JBSbatBusinessException(ECNB0410JW, new String[]
			                                                         {S_JOB_NAME + JCNStrConst.S_HAIFUN + D_TBL_NAME_CN_M_CONT_SVC + S_SELECT});
		}
		
		int intIndexNo = strContSvcNMList.size() + 3;	// 配列の要素数
		int k = 2;					// 二次元配列参照インデックス指定変数
		int intOutputCnt = 0;		// ファイル出力件数
		
		// ヘッダレコード作成
		String[] strData1 = new String[intIndexNo];	// ファイル出力データ一時格納用リスト1
		strData1[0] = S_HAEDER_1;
		strData1[1] = S_HAEDER_2;
		
		for(i = 0; i < strContSvcNMList.size(); i++)
		{
			strData1[k] = strContSvcCDList.get(i) + ":" + strContSvcNMList.get(i);
			k++;
		}
		
		strData1[k] = S_HAEDER_3;
		strRecList.add(createCSV1(strData1, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
		
		// ファイル出力件数カウントアップ
		intOutputCnt++;
		
		// 集計単位が訂正前金額のレコードを取得し、訂正前金額レコードを作成する
		JBSbatCommonDBInterface dbList3 = new JBSbatCommonDBInterface();
		String[] strData2 = new String[intIndexNo];	// ファイル出力データ一時格納用リスト2
		ArrayList<String[]> strList1 = new ArrayList<String[]>();	// 配列格納用リスト1
		HashMap<String, String> hmContSvcAmnt = new HashMap<String, String>();	// コンテンツサービス名／集計金額格納用マップ
		String strShukNMJun = "";	// 集計用表示名称表示順
		String strShukNM = "";		// 集計用表示名称
		String strContSvcNM = "";	// コンテンツサービス名
		String strShukAmnt = "";	// 集計金額
		long lShukAmnt = 0;			// 集計金額（数値）
		String strShukNMJunC = "";	// 比較用集計用表示名称表示順
		String strShukNMC = "";		// 比較用集計用表示名称
		String strContSvcNMC = "";	// 比較用コンテンツサービス名
		long lShukAmntC = 0;		// 比較用集計金額（数値）
		long lGokei = 0;			// 合計（数値）
		
		k = 2;
		
		dbList3.setValue(S_SHUK_TANI_CD_1);
		executeCN_T_TKBT_SALES_SHUK_CN_SELECT_001(dbList3.getList().toArray());
		
		// 取得したレコードの1行目を読み取る
		map = db_CN_T_TKBT_SALES_SHUK.selectNext();
		
		// 取得したレコードが0件であれば異常終了
		if(null == map)
		{
			super.logPrint.printBusinessErrorLog(ECNB0410JW, new String[] {S_JOB_NAME + JCNStrConst.S_HAIFUN + D_TBL_NAME_CN_T_TKBT_SALES_SHUK + S_SELECT});
			
			throw new JBSbatBusinessException(ECNB0410JW, new String[]
			                                                         {S_JOB_NAME + JCNStrConst.S_HAIFUN + D_TBL_NAME_CN_T_TKBT_SALES_SHUK + S_SELECT});
		}
		
		strShukNMJun = map.getString("SHUK_DSP_NM_DSP_JUN");
		strShukNM = map.getString("SHUK_DSP_NM");
		strContSvcNM = map.getString("CONT_SVC_NM");
		lShukAmnt = Long.parseLong(map.getString("SHUK_AMNT_SMR"));
		
		hmContSvcAmnt.put(strContSvcNM, String.valueOf(lShukAmnt));
		
		// 取得したレコードの2行目以降を読み取る
		// 回線系サービス毎に合計を算出する
		for(map = db_CN_T_TKBT_SALES_SHUK.selectNext(); null != map; map = db_CN_T_TKBT_SALES_SHUK.selectNext())
		{
			strShukNMJunC = map.getString("SHUK_DSP_NM_DSP_JUN");
			strShukNMC = map.getString("SHUK_DSP_NM");
			strContSvcNMC = map.getString("CONT_SVC_NM");
			lShukAmntC = Long.parseLong(map.getString("SHUK_AMNT_SMR"));
			
			if(!strShukNMJunC.equals(strShukNMJun))
			{
				strData2[0] = S_SHUK_TANI_1;
				strData2[1] = strShukNM;
				for(i = 0; i < strContSvcNMList.size(); i++)
				{
					strShukAmnt = hmContSvcAmnt.get(strContSvcNMList.get(i));
					if(JCNBatCommon.isNotNullCheck(strShukAmnt))
					{
						strData2[k] = strShukAmnt;
					}
					else
					{
						strData2[k] = JCNStrConst.S_ZERO;
					}
					
					lGokei += Long.parseLong(strData2[k]);
					
					k++;
				}
				
				strData2[k] = String.valueOf(lGokei);
				
				strList1.add(strData2.clone());
				
				lGokei = 0;
				
				k = 2;
				
				hmContSvcAmnt.clear();
				
			}
			
			strShukNMJun = strShukNMJunC;
			strShukNM = strShukNMC;
			strContSvcNM = strContSvcNMC;
			lShukAmnt = lShukAmntC;
			
			hmContSvcAmnt.put(strContSvcNM, String.valueOf(lShukAmnt));
		}
		
		strData2[0] = S_SHUK_TANI_1;
		strData2[1] = strShukNM;
		for(i = 0; i < strContSvcNMList.size(); i++)
		{
			strShukAmnt = hmContSvcAmnt.get(strContSvcNMList.get(i));
			
			if(JCNBatCommon.isNotNullCheck(strShukAmnt))
			{
				strData2[k] = strShukAmnt;
			}
			else
			{
				strData2[k] = JCNStrConst.S_ZERO;
			}
			
			lGokei += Long.parseLong(strData2[k]);
			
			k++;
		}
		
		strData2[k] = String.valueOf(lGokei);
		
		strList1.add(strData2.clone());
		
		hmContSvcAmnt.clear();
		
		
		// 訂正前金額データと回線系サービスデータの突合
		ArrayList<String[]> strTeiseMaeList = new ArrayList<String[]>();	// 訂正前金額データ格納用リスト
		String strTeiseMae = "";
		k = 2;
		int j = 0;
		int intIndex = 0;
		boolean inputflg = false;
		for(i = 0; i < strKisnSvcList.size(); i++)
		{
			strData2[0] = S_SHUK_TANI_1;
			strData2[1] = strKisnSvcList.get(i);
			
			for(j = 0; j < strList1.size(); j++)
			{
				
				strTeiseMae = strList1.get(j)[1];
				
				if(strTeiseMae.equals(strData2[1]))
				{
					inputflg = true;
					intIndex = j;
					break;
				}
			}
			
			if(inputflg)
			{
				// 訂正前金額データと回線系サービスデータの回線系サービス名が一致した場合
				for(j = 0; j < strContSvcNMList.size(); j++)
				{
					strData2[k] = strList1.get(intIndex)[k];
					
					k++;
				}
				
				strData2[k] = strList1.get(intIndex)[k];
				
				inputflg = false;
			}
			else
			{
				for(j = 0; j < strContSvcNMList.size(); j++)
				{
					strData2[k] = JCNStrConst.S_ZERO;
					
					k++;
				}
				
				strData2[k] =  JCNStrConst.S_ZERO;
			}
			
			strRecList.add(createCSV2(strData2, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
			strTeiseMaeList.add(strData2.clone());
			
			// ファイル出力件数カウントアップ
			intOutputCnt++;
			
			k = 2;
		}
		
		
		// 訂正前金額小計レコード作成
		lGokei = 0;
		long lShouKei = 0;	// 小計（数値）
		k = 2;
		
		strData2[0] = S_SHUK_TANI_1;
		strData2[1] = S_SHOUKEI;
		
		for(i = 0; i < strContSvcNMList.size(); i++)
		{
			
			for(j = 0; j < strTeiseMaeList.size(); j++)
			{
				lShouKei += Long.parseLong(strTeiseMaeList.get(j)[k]);
			}
			
			lGokei += lShouKei;
			
			strData2[k] = String.valueOf(lShouKei);
			
			lShouKei = 0;
			
			k++;
		}
		
		strData2[k] = String.valueOf(lGokei);
		
		strRecList.add(createCSV2(strData2, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
		
		// ファイル出力件数カウントアップ
		intOutputCnt++;
		
		
		// 集計単位が訂正金額のレコードを取得し、訂正金額レコードを作成する
		strShukNMJun = "";
		strShukNM = "";
		strContSvcNM = "";
		lShukAmnt = 0;
		
		JBSbatCommonDBInterface dbList4 = new JBSbatCommonDBInterface();
		ArrayList<String[]> strList2 = new ArrayList<String[]>();	// 配列格納用リスト2
		lGokei = 0;
		k = 2;
		dbList4.setValue(S_SHUK_TANI_CD_2);
		executeCN_T_TKBT_SALES_SHUK_CN_SELECT_001(dbList4.getList().toArray());
		
		// 取得したレコードの1行目を読み取る
		map = db_CN_T_TKBT_SALES_SHUK.selectNext();
		
//		// 取得したレコードが0件であれば警告ログを出力し処理を終了する
		if(null != map)
		{
//			super.logPrint.printBusinessErrorLog(ECNB0410JW, new String[] {S_JOB_NAME + JCNStrConst.S_HAIFUN + D_TBL_NAME_CN_T_TKBT_SALES_SHUK + S_SELECT});
//			
//			throw new JBSbatBusinessException(ECNB0410JW, new String[]
//			                                                         {S_JOB_NAME + JCNStrConst.S_HAIFUN + D_TBL_NAME_CN_T_TKBT_SALES_SHUK + S_SELECT});
//		}
		
			strShukNMJun = map.getString("SHUK_DSP_NM_DSP_JUN");
			strShukNM = map.getString("SHUK_DSP_NM");
			strContSvcNM = map.getString("CONT_SVC_NM");
			lShukAmnt = Long.parseLong("-" + map.getString("SHUK_AMNT_SMR"));	// 訂正金額はマイナス扱いとして-を付与
		
			hmContSvcAmnt.put(strContSvcNM, String.valueOf(lShukAmnt));
			
			// 取得したレコードの2行目以降を読み取る
			// 回線系サービス毎に合計を算出する
			for(map = db_CN_T_TKBT_SALES_SHUK.selectNext(); null != map; map = db_CN_T_TKBT_SALES_SHUK.selectNext())
			{
				strShukNMJunC = map.getString("SHUK_DSP_NM_DSP_JUN");
				strShukNMC = map.getString("SHUK_DSP_NM");
				strContSvcNMC = map.getString("CONT_SVC_NM");
				lShukAmntC = Long.parseLong("-" + map.getString("SHUK_AMNT_SMR"));
				
				if(!strShukNMJunC.equals(strShukNMJun))
				{
					strData2[0] = S_SHUK_TANI_2;
					strData2[1] = strShukNM;
					for(i = 0; i < strContSvcNMList.size(); i++)
					{
						strShukAmnt = hmContSvcAmnt.get(strContSvcNMList.get(i));
						
						if(JCNBatCommon.isNotNullCheck(strShukAmnt))
						{
							strData2[k] = strShukAmnt;
						}
						else
						{
							strData2[k] = JCNStrConst.S_ZERO;
						}
						
						lGokei += Long.parseLong(strData2[k]);
						
						k++;
					}
					
					strData2[k] = String.valueOf(lGokei);
					
					strList2.add(strData2.clone());
					
					lGokei = 0;
					
					k = 2;
					
					hmContSvcAmnt.clear();
					
				}
				
				strShukNMJun = strShukNMJunC;
				strShukNM = strShukNMC;
				strContSvcNM = strContSvcNMC;
				lShukAmnt = lShukAmntC;
				
				hmContSvcAmnt.put(strContSvcNM, String.valueOf(lShukAmnt));
			}
			
			strData2[0] = S_SHUK_TANI_2;
			strData2[1] = strShukNM;
			for(i = 0; i < strContSvcNMList.size(); i++)
			{
				strShukAmnt = hmContSvcAmnt.get(strContSvcNMList.get(i));
				
				if(JCNBatCommon.isNotNullCheck(strShukAmnt))
				{
					strData2[k] = strShukAmnt;
				}
				else
				{
					strData2[k] = JCNStrConst.S_ZERO;
				}
				
				lGokei += Long.parseLong(strData2[k]);
				
				k++;
			}
		}
		
		strData2[k] = String.valueOf(lGokei);
		
		strList2.add(strData2.clone());
		
		hmContSvcAmnt.clear();
		
		
		// 訂正金額データと回線系サービスデータの突合
		ArrayList<String[]> strTeiseList = new ArrayList<String[]>();	// 訂正金額データ格納用リスト
		String strTeise = "";
		k = 2;
		intIndex = 0;
		inputflg = false;
		for(i = 0; i < strKisnSvcList.size(); i++)
		{
			strData2[0] = S_SHUK_TANI_2;
			strData2[1] = strKisnSvcList.get(i);
			
			for(j = 0; j < strList2.size(); j++)
			{
				
				strTeise = strList2.get(j)[1];
				
				if(strTeise.equals(strData2[1]))
				{
					inputflg = true;
					intIndex = j;
					break;
				}
			}
			
			if(inputflg)
			{
				// 訂正前金額データと回線系サービスデータの回線系サービス名が一致した場合
				for(j = 0; j < strContSvcNMList.size(); j++)
				{
					strData2[k] = strList2.get(intIndex)[k];
					
					k++;
				}
				
				strData2[k] = strList2.get(intIndex)[k];
				
				inputflg = false;
			}
			else
			{
				for(j = 0; j < strContSvcNMList.size(); j++)
				{
					strData2[k] = JCNStrConst.S_ZERO;
					
					k++;
				}
				
				strData2[k] =  JCNStrConst.S_ZERO;
			}
			
			strRecList.add(createCSV2(strData2, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
			strTeiseList.add(strData2.clone());
			
			// ファイル出力件数カウントアップ
			intOutputCnt++;
			
			k = 2;
		}
		
		
		// 訂正金額小計レコード作成
		lShukAmnt = 0;
		lGokei = 0;
		lShouKei = 0;
		k = 2;
		
		strData2[0] = S_SHUK_TANI_2;
		strData2[1] = S_SHOUKEI;
		
		for(i = 0; i < strContSvcNMList.size(); i++)
		{
			
			for(j = 0; j < strTeiseList.size(); j++)
			{
				lShouKei += Long.parseLong(strTeiseList.get(j)[k]);
			}
			
			lGokei += lShouKei;
			
			strData2[k] = String.valueOf(lShouKei);
			
			lShouKei = 0;
			
			k++;
		}
		
		strData2[k] = String.valueOf(lGokei);
		
		strRecList.add(createCSV2(strData2, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
		
		// ファイル出力件数カウントアップ
		intOutputCnt++;
		
		
		// 訂正後金額を算出し、訂正後金額レコードを作成する
		ArrayList<String[]> strTeiseGoList = new ArrayList<String[]>();	// 訂正後金額データ格納用リスト
		long lTeiseMaeAmnt = 0;	// 訂正前金額
		long lTeiseAmnt = 0;	// 訂正金額
		long lTeiseGoAmnt = 0;	// 訂正後金額
		lGokei = 0;
		k = 2;
		String[] strArray1 = new String[intIndexNo];
		String[] strArray2 = new String[intIndexNo];
		String strKisnSvc = "";
		for(i = 0; i < strKisnSvcList.size(); i++)
		{
			strArray1 = strTeiseMaeList.get(i);
			strArray2 = strTeiseList.get(i);
			strKisnSvc = strKisnSvcList.get(i);
			
			strData2[0] = S_SHUK_TANI_3;
			strData2[1] = strKisnSvc;
			
			for(j = 0; j < strContSvcNMList.size(); j++)
			{
				lTeiseMaeAmnt = Long.parseLong(strArray1[k]);
				lTeiseAmnt = Long.parseLong(strArray2[k]);
				lTeiseGoAmnt = lTeiseMaeAmnt + lTeiseAmnt;
				
				strData2[k] = String.valueOf(lTeiseGoAmnt);
				
				lGokei += lTeiseGoAmnt;
				
				lTeiseGoAmnt = 0;
				
				k++;
			}
			
			strData2[k] = String.valueOf(lGokei);
			
			strRecList.add(createCSV2(strData2, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
			strTeiseGoList.add(strData2.clone());
			
			// ファイル出力件数カウントアップ
			intOutputCnt++;
			
			lGokei = 0;
			
			k = 2;
		}
		
		// 訂正後金額小計レコード作成
		lShukAmnt = 0;
		lGokei = 0;
		lShouKei = 0;
		k = 2;
		
		strData2[0] = S_SHUK_TANI_3;
		strData2[1] = S_SHOUKEI;
		
		for(i = 0; i < strContSvcNMList.size(); i++)
		{
			
			for(j = 0; j < strTeiseGoList.size(); j++)
			{
				lShouKei += Long.parseLong(strTeiseGoList.get(j)[k]);
			}
			
			lGokei += lShouKei;
			
			strData2[k] = String.valueOf(lShouKei);
			
			lShouKei = 0;
			
			k++;
		}
		
		strData2[k] = String.valueOf(lGokei);
		
		strRecList.add(createCSV2(strData2, true) + JCNStrConst.S_LINE_SEPARAOR_CR_LF);
		
		// ファイル出力件数カウントアップ
		intOutputCnt++;
		
		
		// ファイル出力
		JBSbatBusinessFileUtil obj = JCNBatCommon.createBusinessFileUtil(strFileNMFP, JCNStrConst.SJIS, JCNStrConst.S_LINE_SEPARAOR_LF, "");
		JCNBatCommon.printBusinessFileUtil(obj, strRecList);
		JCNBatCommon.closeBusinessFileUtil(obj);
		
		// ファイル削除年月日の算出
		String strFileDelYMD = JPCDateUtil.addMonth(strTranTgYMD, I_P_SIX);
		
		// 電子ファイル管理にコンテンツ毎売上集計ファイルを登録する
		String[] strEFileReturn = JCCbatDenshiFileUtil.createDenshiFile(commonItem, S_FILE_CD, strFileNMFP, strFileDelYMD);
		
		// 電子ファイル管理番号取得
		String strEFileKanriNo = strEFileReturn[0];
		
		// パラメータを区切り文字で分割する
		String[] lines = strFileNMFP.split(JCNStrConst.S_PARAM_SLASH);
		
		// ファイル名格納用変数
		String strFileNM = "";
		
		// ファイル名を取得
		for(i = 0; i < lines.length; i++)
		{
			strFileNM = lines[i];
		}
		
		// コンテンツ決済電子ファイル管理番号を取得（+1加算）
		executeCN_T_CNKS_EFILE_KNRI_CN_SELECT_001();
		String strCnksEFileKNo = db_CN_T_CNKS_EFILE_KNRI.selectNext().getString("SEQ_NEXTVAL");
		String strCnksEFileKNoZP = JCNBatCommon.strZeroPad(strCnksEFileKNo, 10);
		
		// コンテンツ決済電子ファイル管理へ登録
		JBSbatCommonDBInterface dbList9 = new JBSbatCommonDBInterface();
		dbList9.setValue(strCnksEFileKNoZP);
		dbList9.setValue(strCnksBunSbtCD01);
		dbList9.setValue(strEFileKanriNo);
		dbList9.setValue(strFileNM);
		dbList9.setValue(strDLZumiFlg0);
//		dbList9.setValue(JCNBatCommon.getSysDateTimeStamp());
//		dbList9.setValue(commonItem.getBatchUserId());
//		dbList9.setValue(JCNBatCommon.getSysDateTimeStamp());
//		dbList9.setValue(commonItem.getBatchUserId());
		dbList9.setValue("");
		dbList9.setValue("");
//		dbList9.setValue(JCNStrConst.S_MK_FLG);
		executeCN_T_CNKS_EFILE_KNRI_CN_INSERT_001(dbList9.getList().toArray());
		
		// 電子ファイル管理テーブルに正常登録された場合ダウンロードファイル管理の登録を行う
		String[] insertData = new String[7];
		insertData[0] = TRN_KANRI_NO;
		insertData[1] = strFileNM;
		insertData[2] = String.valueOf(intOutputCnt);
		insertData[3] = JCNBatCommon.getSysDateTimeStamp();
		insertData[4] = strFileDelYMD;
//		insertData[5] = JCNBatCommon.getSysDateTimeStamp();
//		insertData[6] = commonItem.getBatchUserId();
//		insertData[7] = JCNBatCommon.getSysDateTimeStamp();
//		insertData[8] = commonItem.getBatchUserId();
		insertData[5] = strEFileKanriNo;
		insertData[6] = strEFileReturn[1];
		
		executeZM_T_DL_FILE_KANRI_CN_INSERT_001(insertData);
		
		// ファイル出力件数ログ出力
		super.logPrint.printBusinessErrorLog(ECNB0090AI, new String[] {S_FILE_NAME, String.valueOf(intOutputCnt)});
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CN_T_TRAN_YMD_INFO.close();
		db_CN_T_TKBT_SALES_SHUK.close();
		db_CN_M_CONT_SVC.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_M_CRECARD_COMP.close();
		db_CN_T_CNKS_EFILE_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(CN_SELECT_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 executeCN_T_TRAN_YMD_INFO_CN_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CN_T_TRAN_YMD_INFO.selectBySqlDefine(paramList, CN_T_TRAN_YMD_INFO_CN_SELECT_002);
	}

	/**
	 * SQLKEY(CN_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 executeCN_T_TKBT_SALES_SHUK_CN_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CN_T_TKBT_SALES_SHUK.selectBySqlDefine(paramList, CN_T_TKBT_SALES_SHUK_CN_SELECT_001);
	}

	/**
	 * SQLKEY(CN_SELECT_010)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	コンテンツサービス適用開始年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_M_CONT_SVC_CN_SELECT_010(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CN_M_CONT_SVC.selectBySqlDefine(paramList, CN_M_CONT_SVC_CN_SELECT_010);
	}

	/**
	 * SQLKEY(CN_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_CD_NM_KANRI_CN_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CN_SELECT_001);
	}
	
	/**
	 * SQLKEY(CN_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	クレジットカード会社適用開始年月日
	 *		 	クレジットカード会社適用終了年月日
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_CRECARD_COMP_CN_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_M_CRECARD_COMP.selectBySqlDefine(paramList, KK_M_CRECARD_COMP_CN_SELECT_003);
	}

	/**
	 * SQLKEY(CN_SELECT_006)で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_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_CN_SELECT_006);
	}

	/**
	 * SQLKEY(CN_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCN_T_CNKS_EFILE_KNRI_CN_SELECT_001() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_CN_T_CNKS_EFILE_KNRI.selectBySqlDefine(paramList, CN_T_CNKS_EFILE_KNRI_CN_SELECT_001);
	}

	/**
	 * SQLKEY(CN_INSERT_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 executeCN_T_CNKS_EFILE_KNRI_CN_INSERT_001(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());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());

		// DBアクセスを実行します
		db_CN_T_CNKS_EFILE_KNRI.executeBySqlDefine(paramList, CN_T_CNKS_EFILE_KNRI_CN_INSERT_001);
	}
	
	/**
	 * SQLKEY(CN_INSERT_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_CN_INSERT_001(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());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());

		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_CN_INSERT_001);
	}

	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイルのリネーム処理を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で対象ファイル名を設定します。<br>
	 *
	 * 2.引数を元に対象ファイル名(フルパス)を元にタイムスタンプを付与してリネームします。<br>
	 * 
	 * 3.リネーム後のファイル名(フルパス)を返却します。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param strFileName     対象ファイル名(フルパス)。
	 * @param strTranTgSmrYM  集計対象年月(YYYYMM)。
	 * @return strRmFileNm    リネーム後ファイル名(フルパス)。
	 * @throws Exception      業務サービス内で発生した例外全般。
	 */
	private static String updateFileName(String strFileName, String strTranTgSmrYM) throws Exception
	{
		
		String strRmFileNm = strFileName.replace(S_COL, JCNStrConst.S_UNDER_BAR + strTranTgSmrYM + S_COL);

//		File fOutFile1 = new File(inspection(strFileName));
//
//		File fOutFile2 = new File(inspection(strRmFileNm));
		
		File fOutFile1 = new File(strFileName);

		File fOutFile2 = new File(strRmFileNm);
		
		//リネーム処理(FileName1⇒FileName2)
		fOutFile1.renameTo(fOutFile2);
		
		return strRmFileNm;
	}
	
	/**
	 * ファイル出力先照査を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でファイル出力先を設定します。<br>
	 *
	 * 2.引数を元に半角英数字記号にて構成されているか照査を行います。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param strFileOut    出力ファイル(フルパス)
	 * @return strFileOut   出力ファイル(フルパス)
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private static String inspection(String strFileOut) throws Exception
	{
		if(strFileOut.matches("^[a-zA-Z0-9 -/:_]+$")) 
		{
			return strFileOut;
		}
		
		throw new JBSbatBusinessException(ECNB0060KE, new String[] {strFileOut});
	}
	
	/**
	 * CSV形式に文字列編集を行います(ヘッダー部専用)。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で連結文字列、""括り有無を設定します。<br>
	 *
	 * 2.引数を元に文字列を連結します。
	 *   連結文字列最後尾には改行コードを設定します。<br>
	 *   返却文字列内のnullは""へ置換します。
	 * </pre>
	 * <p>
	 * @param strData       出力対象データ。
	 * @param bDqFlg        ""括りあり(true),括りなし(false)。
	 * @return strRec       文字列連結結果を返却します。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	public static String createCSV1(String[] strData, boolean bDqFlg) throws Exception
	{

		StringBuffer sBufRec = new StringBuffer();

		for (int i = 0; i < strData.length; i++)
		{
			if(!bDqFlg)
			{
				sBufRec.append(strData[i]);
			}
			else
			{
					sBufRec.append(JCNStrConst.S_SEP_DQ);
					sBufRec.append(strData[i]);
					sBufRec.append(JCNStrConst.S_SEP_DQ);
			}
				
			if(i < strData.length - 1)
			{
					sBufRec.append(JCNStrConst.S_SEP_CAM);
			}
		}
		
		return sBufRec.toString().replace(JCNStrConst.S_IS_NULL, "");
	}
	
	/**
	 * CSV形式に文字列編集を行います(データ部専用)。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で連結文字列、""括り有無を設定します。<br>
	 *
	 * 2.引数を元に文字列を連結します。
	 *   連結文字列最後尾には改行コードを設定します。<br>
	 *   返却文字列内のnullは""へ置換します。
	 * 3.数字項目が格納されたインデックスに対しては""括りを実行しない。
	 * </pre>
	 * <p>
	 * @param strData       出力対象データ。
	 * @param bDqFlg        ""括りあり(true),括りなし(false)。
	 * @return strRec       文字列連結結果を返却します。
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	public static String createCSV2(String[] strData, boolean bDqFlg) throws Exception
	{

		StringBuffer sBufRec = new StringBuffer();

		for (int i = 0; i < strData.length; i++)
		{
			if(!bDqFlg)
			{
				sBufRec.append(strData[i]);
			}
			else
			{
				if(i >= 2)
				{
					sBufRec.append(strData[i]);
				}
				else
				{
					sBufRec.append(JCNStrConst.S_SEP_DQ);
					sBufRec.append(strData[i]);
					sBufRec.append(JCNStrConst.S_SEP_DQ);
				}
			}
				
			if(i < strData.length - 1)
			{
					sBufRec.append(JCNStrConst.S_SEP_CAM);
			}
		}
		
		return sBufRec.toString().replace(JCNStrConst.S_IS_NULL, "");
	}
}
