/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKPayChgAddFinOsrInfSksi
*	ソースファイル名	：JBSbatKKPayChgAddFinOsrInfSksi.java
*	作成者				：富士通　
*	作成日				：2018年12月18日
*＜機能概要＞
*　支払変更登録完了お知らせ情報作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
* 	v40.00.00	2018/12/18   FJ)周藤	【ANK-3511-00-00】支払登録完了のお知らせの自動送信対応 新規作成
*   v41.00.00	2019/03/08   FJ)澤田	【ANK-3534-00-00】社名変更対応の資料連携について
*	v66.00.00	2023/06/05  FJ)辻野		【ANK-4408-00-00】口振請求及びWeb申込システム移行 事前対応
*   71.00.00    2023/11/15  GDC)J.Zabala 89_ANK-4468-00-00 _eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM870;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_T_KOZA;
import eo.business.util.table.JBSbatKK_T_OPSVKEI_ISP;
import eo.business.util.table.JBSbatKK_T_SEIKY_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.common.constant.JKKStrConst;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessBase;
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.log.JBSbatLogPrintControl;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKPayChgAddFinOsrInfSksi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** SQL定義キー(KK_SELECT_370)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_370 = "KK_SELECT_370";

	// ANK-4468-00-00 ADD START
	/** SQL定義キー(KK_SELECT_381)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_381 = "KK_SELECT_381";
	// ANK-4468-00-00 ADD END
	
	/** SQL定義キー(KK_SELECT_371)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_371 = "KK_SELECT_371";

	/** SQL定義キー(KK_SELECT_372)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_372 = "KK_SELECT_372";

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;

	/** エラーメッセージコード(EKKB1930TW:必須チェック) */
	private static final String EKKB1930TW = "EKKB1930TW";

	/** エラーメッセージコード(EKKB0690TW:桁数チェック) */
	private static final String EKKB0690TW = "EKKB0690TW";

	/** エラーメッセージコード(EKKB1940KW:レコード存在チェック) */
	private static final String EKKB1940KW = "EKKB1940KW";

	/** 支払変更登録完了対象ファイル名(中間ファイル名) */
	private static final String PAY_CHG_ADD_FIN_TG_FILE_NM = "KKIFM870";

	/** 拡張子 */
	private static final String CSV = ".csv";

	/** 項目名(請求.請求契約番号毎の件数) */
	private static final String CNT = "CNT";

	/** 項目名(請求契約.送付先) */
	private static final String SOHUS = "SOHUS";

	/** 空白 */
	private static final String BRANK = "";

	/** 送信文 */
	// ANK-3534-00-00 MOD START
	//private static final String SEND_BUN = "eo光のケイ・オプティコムです。料金支払申込書を受領しました。" +
	private static final String SEND_BUN = "eo光のオプテージです。料金支払申込書を受領しました。" +
	// ANK-3534-00-00 MOD END
												"ご返送ありがとうございました。0120-919-151（9時から21時まで）";

	/** 支払変更登録完了お知らせメール向けリストファイル名 */
	private static final String PAY_CHG_ADD_FIN_OSR_MAIL = "KKLST115_MAIL_LIST_";

	/** 支払変更登録完了お知らせSMS向けリストファイル名 */
	private static final String PAY_CHG_ADD_FIN_OSR_SMS = "KKLST115_SMS_LIST_";

	/** 支払変更登録完了お知らせハガキ向けリストファイル名 */
	private static final String PAY_CHG_ADD_FIN_OSR_POSTCARD = "KKLST115_POSTCARD_LIST_";

	/** 支払変更登録完了対象エラーファイル名 */
	private static final String PAY_CHG_ADD_FIN_ERR = "KKLST115_PAY_CHG_ADD_FIN_TG_ERR_";

	/** 処理管理番号(支払変更登録完了お知らせSMS向けリスト) */
	private static final String TRN_KANRI_NO_PAY_CHG_ADD_FIN_OSR_SMS = "000000000201";

	/** 処理管理番号(支払変更登録完了お知らせハガキ向けリスト) */
	private static final String TRN_KANRI_NO_PAY_CHG_ADD_FIN_OSR_POSTCARD = "000000000202";

	/** 処理管理番号(支払変更登録完了対象エラーファイル) */
	private static final String TRN_KANRI_NO_PAY_CHG_ADD_FIN_ERR = "000000000203";

	/** 支払変更登録完了お知らせメール向けリストファイルオブジェクト*/
	private JBSbatBusinessFileUtil payChgAddFinOsrMail = null;

	/** 支払変更登録完了お知らせSMS向けリストファイルオブジェクト*/
	private JBSbatBusinessFileUtil payChgAddFinOsrSms = null;

	/** 支払変更登録完了お知らせハガキ向けリストファイルオブジェクト*/
	private JBSbatBusinessFileUtil payChgAddFinOsrPostcard = null;

	/** 支払変更登録完了対象エラーファイルオブジェクト*/
	private JBSbatBusinessFileUtil payChgAddFinTgErr = null;
	
	/** 支払変更登録完了お知らせメール向けリストファイル名*/
	private String payChgAddFinOsrMailFileNm = null;

	/** 支払変更登録完了お知らせSMS向けリストファイル名*/
	private String payChgAddFinOsrSmsFileNm = null;

	/** 支払変更登録完了お知らせハガキ向けリストファイル名*/
	private String payChgAddFinOsrPostcardFileNm = null;

	/** 支払変更登録完了対象エラーファイル名*/
	private String payChgAddFinTgErrFileNm = null;
	
	/** ディレイド処理依頼確認部品呼び出し*/
	private ArrayList<HashMap<String, Object>> dlydTrnMapList = null;

	/** メールデータ部リスト*/
	private ArrayList<ArrayList<String>> mailDataList = null;

	/** SMSデータ部リスト*/
	private ArrayList<ArrayList<String>> smsDataList = null;

	/** ハガキデータ部リスト*/
	private ArrayList<ArrayList<String>> postcardDataList = null;

	/** エラーリスト */
	private ArrayList<ArrayList<String>> errList = null;

	/** 総レコード件数*/
	private int allRecordCnt = 0;

	/** 依頼結果コード*/
	private String rsltCd = null;

	/** タイムスタンプ*/
	private String timeStamp = null;

	/** ディレイド処理依頼処理済フラグ*/
	private boolean isdlydTrnReqSyrzm = false;

	/** エラーフラグ */
	private Boolean isCheckErrFlg = false;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// DBアクセスクラスを生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		//ダウンロードファイル管理テーブルアクセスクラスの生成
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		
		//ディレイド処理依頼確認部品呼び出し
		dlydTrnMapList = JKKBatCommon.getShoriIraiInfo(commonItem, commonItem.getJobid());
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ディレイド処理情報が取得出来ない場合、処理終了
		if (dlydTrnMapList == null)
		{
			return null;
		}
		// ディレイド処理依頼カウント
		int shoriCnt = 0;
		
		try
		{
			for (int i = 0 ; i < dlydTrnMapList.size() ; i++) 
			{
				// 依頼結果コード初期値("1":完了)設定
				rsltCd = JKKStrConst.DLYD_TRN_RSLT_CD_COMPLETE;
				// 総件数カウント初期化
				allRecordCnt =0;
				
				// 処理件数設定
				shoriCnt = i ;
				
				// ディレイド依頼未処理の場合
				if (!isdlydTrnReqSyrzm)
				{
					// タイムスタンプ取得
					timeStamp = JKKBatCommon.getSysDateTimeStamp();
					
					// データリスト初期化
					mailDataList = new ArrayList<ArrayList<String>>();
					smsDataList = new ArrayList<ArrayList<String>>();
					postcardDataList = new ArrayList<ArrayList<String>>();
					errList = new ArrayList<ArrayList<String>>();
					
					// ファイルオブジェクト初期化
					initFileObj();
					
					// 電子ファイル管理から支払変更登録完了対象ファイル取得
					String filePath = JKKBatCommon.searchDenshiFile(commonItem, 
											dlydTrnMapList.get(shoriCnt).get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO).toString());
					
					// 支払変更登録完了対象ファイルオブジェクトを生成する
					JBSbatInputFileUtil payChgAddFinTg = new JBSbatInputFileUtil(filePath);
					// 支払変更登録完了対象ファイル定義名を取得する
					String payChgAddFinTgDefName = JBSbatAplConst.getAplConstValue(JKKStrConst.KK_DIR_IND) + PAY_CHG_ADD_FIN_TG_FILE_NM + ".def";
					// 支払変更登録完了対象ファイル定義オブジェクトを生成する
					JBSbatDefFileUtil payChgAddFinTgFileDef  = new JBSbatDefFileUtil(payChgAddFinTgDefName, payChgAddFinTg);
					
					// Readerオブジェクトを生成する。
					payChgAddFinTg.createReader();
					
					// ファイルレコード
					String line = null; 
					
					while (payChgAddFinTg.ready()) 
					{
						//エラーフラグ初期化
						isCheckErrFlg = false;
						
						// ファイルレコード取得
						line = payChgAddFinTg.readLine();
						
						// 総レコード数カウントアップ
						allRecordCnt++;
						
						// 1行目はヘッダーのため、次のレコードへ移る
						if (allRecordCnt == 1)
						{
							continue;
						}
						
						// 一行取り出し、payChgAddFinTgMapに代入
						JBSbatServiceInterfaceMap payChgAddFinTgMap = payChgAddFinTgFileDef.lineToObject(line, payChgAddFinTg, allRecordCnt);
						
						// 請求契約番号取得
						String seikyKeiNo = payChgAddFinTgMap.getString(JBSbatKKIFM870.SEIKY_KEI_NO);
						
						// 入力チェック（項目）
						String errMsgCd = isInputCheck(seikyKeiNo);
						
						// 項目エラーの場合、業務エラーとする。
						if (isCheckErrFlg)
						{
							// メッセージ設定
							String msg = JBSbatLogPrintControl.getMessage(errMsgCd, new String[]{"請求契約番号"});
							// エラーリスト設定
							errList.add(setErrDataMap(msg, seikyKeiNo));
							// 依頼結果コード:"2"(業務エラー)
							rsltCd = JKKStrConst.DLYD_TRN_RSLT_CD_APP_ERR;
						}
						else
						{
							// エラーでない場合、リスト出力先を判定する。
							judgeOutList(seikyKeiNo);
						}
					}
					
					// ファイルクローズ
					if (payChgAddFinTg != null)
					{
						payChgAddFinTg.close();
					}
					
					// 各ファイル書き出し
					outFile();
					
					// ディレイド依頼処理済フラグにtrueをセット
					isdlydTrnReqSyrzm = true;
				}
				
				// ファイルの全レコード処理終了、またはディレイド依頼処理済の場合
				// ディレイド処理依頼結果更新処理
				updateShoriIrai(shoriCnt, false);
				
			}
		}
		catch (Exception e)
		{
			// ディレイド処理依頼結果更新処理
			updateShoriIrai(shoriCnt, true);
			
			throw e;
		}
		
		return null;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_370)で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_T_SVC_KEI_KK_SELECT_370(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_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_370);
	}

	// ANK-4468-00-00 ADD START
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_381)で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_T_SVC_KEI_KK_SELECT_381(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_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_381);
	}
	// ANK-4468-00-00 ADD END
	
	/**
	 * SQLKEY(KK_SELECT_371)で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_T_SVC_KEI_KK_SELECT_371(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());
		// ANK-4408-00-00 ADD START
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		// ANK-4408-00-00 ADD END

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_371);
	}

	/**
	 * SQLKEY(KK_SELECT_372)で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_T_SVC_KEI_KK_SELECT_372(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());
		// ANK-4408-00-00 ADD START
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		// ANK-4408-00-00 ADD END

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_372);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * ファイルオブジェクト初期化
	 * @throws Exception
	 */
	private void initFileObj() throws Exception
	{
		// メール向けリスト
		if (payChgAddFinOsrMail == null)
		{
			// 支払変更登録完了お知らせメール向けリストファイル名
			payChgAddFinOsrMailFileNm = PAY_CHG_ADD_FIN_OSR_MAIL + timeStamp + CSV;
			// 支払変更登録完了お知らせメール向けリストファイルオブジェクトを生成する
			payChgAddFinOsrMail = JKKBatCommon.createBusinessFileUtil(commonItem.getFreeItem() + "/" + payChgAddFinOsrMailFileNm, 
																		JKKBatConst.SJIS, 
																		JKKStrConst.LINE_SEPARATOR, 
																		JKKStrConst.COMMA);
		}
		
		// SMS向けリスト
		if (payChgAddFinOsrSms == null)
		{
			// 支払変更登録完了お知らせSMS向けリストファイル名
			payChgAddFinOsrSmsFileNm = PAY_CHG_ADD_FIN_OSR_SMS + timeStamp + CSV;
			// 支払変更登録完了お知らせSMS向けリストファイルオブジェクトを生成する
			payChgAddFinOsrSms = JKKBatCommon.createBusinessFileUtil(commonItem.getFreeItem() + "/" + payChgAddFinOsrSmsFileNm, 
																		JKKBatConst.SJIS, 
																		JKKStrConst.LINE_SEPARATOR, 
																		JKKStrConst.COMMA);
		}
		// ハガキ向けリスト
		if (payChgAddFinOsrPostcard == null)
		{
			// 支払変更登録完了お知らせハガキ向けリストファイル名
			payChgAddFinOsrPostcardFileNm = PAY_CHG_ADD_FIN_OSR_POSTCARD + timeStamp + CSV;
			// 支払変更登録完了お知らせハガキ向けリストファイルオブジェクトを生成する
			payChgAddFinOsrPostcard = JKKBatCommon.createBusinessFileUtil(commonItem.getFreeItem() + "/" + payChgAddFinOsrPostcardFileNm, 
																		JKKBatConst.SJIS, 
																		JKKStrConst.LINE_SEPARATOR, 
																		JKKStrConst.COMMA);
		}
		// エラーファイル
		if (payChgAddFinTgErr == null)
		{
			// 支払変更登録完了対象エラーファイル名
			payChgAddFinTgErrFileNm = PAY_CHG_ADD_FIN_ERR + timeStamp + CSV;
			// 支払変更登録完了対象エラーファイルオブジェクトを生成する
			payChgAddFinTgErr = JKKBatCommon.createBusinessFileUtil(commonItem.getFreeItem() + "/" + payChgAddFinTgErrFileNm, 
																		JKKBatConst.SJIS, 
																		JKKStrConst.LINE_SEPARATOR, 
																		JKKStrConst.COMMA);
		}
	}
	
	/**
	 *入力情報（支払変更登録完了対象ファイル.請求契約番号）のチェックを行います。<br>
	 * @param seikyKeiNo 請求契約番号
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private String isInputCheck(String seikyKeiNo)throws Exception
	{
		// 存在チェック
		if (seikyKeiNo == null || "".equals(seikyKeiNo))
		{
			// エラー
			commonItem.getLogPrint().printBusinessErrorLog(EKKB1930TW, new String[]{"請求契約番号"});
			
			// エラーフラグにtrueをセット
			isCheckErrFlg = true;
			
			return EKKB1930TW;
		}
		
		// 桁数チェック
		if (!JBSbatCheckUtil.invoke(seikyKeiNo, new String[]{"ketasuu2", "10", "10"}))
		{
			// エラー
			commonItem.getLogPrint().printBusinessErrorLog(EKKB0690TW, null);
			
			// エラーフラグにtrueをセット
			isCheckErrFlg = true;
			
			return EKKB0690TW;
		}
		return null;
	}
	
	/**
	 *リスト出力先判定<br>
	 * @param seikyKeiNo 請求契約番号
	 * @return true 正常/false エラー
	 * @throws Exception
	 */
	private boolean judgeOutList(String seikyKeiNo) throws Exception
	{
		// 追加済フラグ
		boolean addZumiFlg = false;
		JBSbatCommonDBInterface result = null;
		
		// メール向けのリストデータを取得する。
		getMailListData(seikyKeiNo);
		// データ追加済メールアドレスハッシュマップ初期化
		HashSet<String> addedMail = new HashSet<String>();
		
		// 取得結果が存在する限りループする。
		while (null != (result = db_KK_T_SVC_KEI.selectNext()))
		{
			// データ追加済メールアドレスハッシュマップにメールアドレスが存在しない場合のみ、以下の処理を行う。
			if (!addedMail.contains(result.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD)))
			{
				// 請求.請求契約番号毎の件数が1件以上かつメールアドレスがnullでない場合、メール向けリスト用データにデータを追加する。
				if (result.getString(CNT) != null && !"".equals(result.getString(CNT)) && Integer.parseInt(result.getString(CNT)) > 0 
						&& result.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD) != null && !"".equals(result.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD)))
				{
					// メール向けリスト用データ追加処理
					mailDataList.add(setMailListData(result));
					
					// ハッシュセットにデータ追加済メールアドレスを追加
					addedMail.add(result.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD));
					// 追加済フラグをtrueに変更
					addZumiFlg =true;
				}
			}
		}
		
		// ANK-4468-00-00 ADD START
		// メール向けリストデータを取得する(連絡用メールアドレス宛)
		getMailListDataForComm(seikyKeiNo);
		// 取得結果が存在する限りループする。
		while (null != (result = db_KK_T_SVC_KEI.selectNext()))
		{
			// 連絡先.メールアドレスが@-1で取得したオプションサービス契約_ISP.メールアドレスと同一の場合、支払変更登録完了お知らせメール向けリストに出力しない
			if (!addedMail.contains(result.getString(JBSbatCK_T_RRKS.MLAD)))
			{
				// 請求.請求契約番号毎の件数が1件以上かつメールアドレスがnullでない場合、メール向けリスト用データにデータを追加する。
				if (result.getString(CNT) != null && !"".equals(result.getString(CNT)) && Integer.parseInt(result.getString(CNT)) > 0 
						&& result.getString(JBSbatCK_T_RRKS.MLAD) != null && !"".equals(result.getString(JBSbatCK_T_RRKS.MLAD)))
				{
					// メール向けリスト用データ追加処理
					mailDataList.add(setMailListData(result));
					
					// ハッシュセットにデータ追加済メールアドレスを追加
					addedMail.add(result.getString(JBSbatCK_T_RRKS.MLAD));
					// 追加済フラグをtrueに変更
					addZumiFlg =true;
				}
			}
		}
		// ANK-4468-00-00 ADD END
		
		// 追加済フラグがfalseの場合
		if (!addZumiFlg)
		{
			// 電話番号比較用リスト
			ArrayList<String> jdgTelNoList = new ArrayList<String>();
			// 比較のため、初期値としてリストにNULLを設定
			jdgTelNoList.add(null);
			
			// SMS向けのリストデータを取得する。
			getSmsListData(seikyKeiNo);
			
			// 取得結果が存在する限りループする。
			while (null != (result = db_KK_T_SVC_KEI.selectNext()))
			{
				// 請求が0件の場合
				if ("".equals(result.getString(CNT)) || null == result.getString(CNT))
				{
					// 取得項目のいずれかの1〜3桁目が090,080,070の場合、SMS向けリスト用データにデータを追加する。
					String telNo = getTelNo(result);
					// ANK-4408-00-00 ADD START
					//コード区分名をSMS向けリスト用データに追加する。
					String cdDivNm = result.getString("CD_DIV_NM");
					// ANK-4408-00-00 ADD END
					
					// 電話番号が取得できたかつ、出力済みの電話番号では無い場合
					if (telNo != null && !jdgTelNoList.contains(telNo))
					{
						// SMS向けリスト用データ追加処理
						// ANK-4408-00-00 MOD START
						//smsDataList.add(setSmsListData(telNo));
						smsDataList.add(setSmsListData(telNo, cdDivNm));
						// ANK-4408-00-00 MOD END
						
						// 追加済フラグをtrueに変更
						addZumiFlg =true;
						
						//SNS向けリストに追加した電話番号を比較用電話番号に格納
						jdgTelNoList.add(telNo);
					}
				}
			}
		}
		
		// 追加済フラグがfalseの場合
		if (!addZumiFlg)
		{
			// ハガキ向けのリストデータを取得する。
			result = getPostcardListData(seikyKeiNo);
			
			// 取得結果が存在する場合
			if (result != null)
			{
				// ANK-4408-00-00 ADD START
				//コード区分名をハガキ向けリスト用データに追加する。
				String cdDivNm = result.getString("CD_DIV_NM");
				// ANK-4408-00-00 ADD END
				// ハガキ向けリスト用データ追加処理
				// ANK-4408-00-00 MOD START
				//postcardDataList.add(setPostcardListData(result));
				postcardDataList.add(setPostcardListData(result, cdDivNm));
				// ANK-4408-00-00 MOD END
				
				// 追加済フラグをtrueに変更
				addZumiFlg =true;
			}
		}
		// いずれにおいてもマップに追加されなかった場合、エラーマップにデータを追加し、次のレコードに移る。
		if (!addZumiFlg)
		{
			// エラーログ
			commonItem.getLogPrint().printBusinessErrorLog(EKKB1940KW, new String[]{"請求契約番号"});
			// メッセージ設定
			String msg = JBSbatLogPrintControl.getMessage(EKKB1940KW, new String[]{"請求契約番号"});
			// エラーリスト設定
			errList.add(setErrDataMap(msg, seikyKeiNo));
			// 依頼結果コード:"2"(業務エラー)
			rsltCd = JKKStrConst.DLYD_TRN_RSLT_CD_APP_ERR;
			
			return false;
		}
		return true;
	}
	
	/**
	 *  メール向けリストデータを取得する<br>
	 * @param seikyKeiNo 請求契約番号
	 * @return result  メール向けリストデータ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getMailListData(String seikyKeiNo) throws Exception 
	{
		// 設定値のマップを作成する
		Object[] setParam = new Object[5];
		// 予約適用年月日
		setParam[0] = commonItem.getOpeDate();
		// 予約適用年月日
		setParam[1] = commonItem.getOpeDate();
		// 課金先適用開始年月日
		setParam[2] = commonItem.getOpeDate();
		// 課金先適用終了年月日
		setParam[3] = commonItem.getOpeDate();
		// 請求契約番号
		setParam[4] = seikyKeiNo;
		
		// DBアクセスを実行する
		executeKK_T_SVC_KEI_KK_SELECT_370(setParam);
	}

	// ANK-4468-00-00 ADD START
	/**
	 *  メール向けリストデータを取得する(連絡用メールアドレス宛)<br>
	 * @param seikyKeiNo 請求契約番号
	 * @return result  メール向けリストデータ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getMailListDataForComm(String seikyKeiNo) throws Exception 
	{
		// 設定値のマップを作成する
		Object[] setParam = new Object[5];
		// 予約適用年月日
		setParam[0] = commonItem.getOpeDate();
		// 課金先適用開始年月日
		setParam[1] = commonItem.getOpeDate();
		// 課金先適用終了年月日
		setParam[2] = commonItem.getOpeDate();
		// 請求契約番号
		setParam[3] = seikyKeiNo;
		// 予約適用年月日
		setParam[4] = commonItem.getOpeDate();
		
		// DBアクセスを実行する
		executeKK_T_SVC_KEI_KK_SELECT_381(setParam);
	}
	// ANK-4468-00-00 ADD END
	
	/**
	 *  SMS向けリストデータを取得する<br>
	 * @param seikyKeiNo 請求契約番号
	 * @return result  SMS向けリストデータ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getSmsListData(String seikyKeiNo) throws Exception 
	{
		// 設定値のマップを作成する
		Object[] setParam = new Object[8];
		// ANK-4408-00-00 ADD START
		// コード適用開始年月日
		setParam[0] = commonItem.getOpeDate();
		// コード適用終了年月日
		setParam[1] = commonItem.getOpeDate();
		// ANK-4408-00-00 ADD END
		// ANK-4408-00-00 MOD START
		// 予約適用年月日
		//setParam[0] = commonItem.getOpeDate();
		setParam[2] = commonItem.getOpeDate();
		// 予約適用年月日
		//setParam[1] = commonItem.getOpeDate();
		setParam[3] = commonItem.getOpeDate();
		// 予約適用年月日
		//setParam[2] = commonItem.getOpeDate();
		setParam[4] = commonItem.getOpeDate();
		// 課金先適用開始年月日
		//setParam[3] = commonItem.getOpeDate();
		setParam[5] = commonItem.getOpeDate();
		// 課金先適用終了年月日
		//setParam[4] = commonItem.getOpeDate();
		setParam[6] = commonItem.getOpeDate();
		// 請求契約番号
		//setParam[5] = seikyKeiNo;
		setParam[7] = seikyKeiNo;
		// ANK-4408-00-00 MOD END
		
		// DBアクセスを実行する
		executeKK_T_SVC_KEI_KK_SELECT_371(setParam);
	}

	/**
	 *  ハガキ向けリストデータを取得する<br>
	 * @param seikyKeiNo 請求契約番号
	 * @return result  ハガキ向けリストデータ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface getPostcardListData(String seikyKeiNo) throws Exception 
	{
		// 設定値のマップを作成する
		Object[] setParam = new Object[7];
		// ANK-4408-00-00 ADD START
		// コード適用開始年月日
		setParam[0] = commonItem.getOpeDate();
		// コード適用終了年月日
		setParam[1] = commonItem.getOpeDate();
		// ANK-4408-00-00 ADD END
		// ANK-4408-00-00 MOD START
		// 予約適用年月日
		//setParam[0] = commonItem.getOpeDate();
		setParam[2] = commonItem.getOpeDate();
		// 予約適用年月日
		//setParam[1] = commonItem.getOpeDate();
		setParam[3] = commonItem.getOpeDate();
		// 課金先適用開始年月日
		//setParam[2] = commonItem.getOpeDate();
		setParam[4] = commonItem.getOpeDate();
		// 課金先適用終了年月日
		//setParam[3] = commonItem.getOpeDate();
		setParam[5] = commonItem.getOpeDate();
		// 請求契約番号
		//setParam[4] = seikyKeiNo;
		setParam[6] = seikyKeiNo;
		// ANK-4408-00-00 MOD END
		
		// DBアクセスを実行する
		executeKK_T_SVC_KEI_KK_SELECT_372(setParam);
		
		// 結果を返却
		return db_KK_T_SVC_KEI.selectNext();
		
	}
	
	/**
	 *SMS向けリスト用データ設定処理<br>
	 * @param result 検索結果
	 * @return telNo 電話番号
	 * @throws Exception
	 */
	private String getTelNo(JBSbatCommonDBInterface result) throws Exception
	{
		// 連絡先.電話番号
		String rrsTelNo = result.getString(JBSbatCK_T_RRKS.TELNO);
		// お客様.契約者電話番号
		String keishaTelNo = result.getString(JBSbatCK_T_CUST.KEISHA_TELNO);
		
		// 連絡先.電話番号の1〜3桁目が090,080,070のとき、連絡先.電話番号を返却する。
		if (rrsTelNo != null && !"".equals(rrsTelNo)
				&& ("090".equals(rrsTelNo.substring(0, 3)) 
				|| "080".equals(rrsTelNo.substring(0, 3))
				|| "070".equals(rrsTelNo.substring(0, 3))))
		{
			return rrsTelNo;
		}
		// お客様.契約者電話番号の1〜3桁目が090,080,070のとき、お客様.契約者電話番号を返却する。
		else if (keishaTelNo != null && !"".equals(keishaTelNo)
				&& ("090".equals(keishaTelNo.substring(0, 3)) 
				|| "080".equals(keishaTelNo.substring(0, 3))
				|| "070".equals(keishaTelNo.substring(0, 3))))
		{
			return keishaTelNo;
		}
		//どちらも1〜3桁目が090,080,070でないとき、nullを返却する。
		return null;
	}
	
	/**
	 *メール向けリスト用データ設定処理<br>
	 * @param result 検索結果
	 * @return mailList メール向けリスト用データ
	 * @throws Exception
	 */
	private ArrayList<String> setMailListData(JBSbatCommonDBInterface result) throws Exception
	{
		ArrayList<String> mailList = new ArrayList<String>();
		
		// サービス契約番号
		mailList.add(result.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
		// メールアドレス
		mailList.add(result.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD));
		// ANK-4408-00-00 ADD START
		// 口座支払方法受付区分
		mailList.add(result.getString(JBSbatKK_T_KOZA.KOZA_PAYWAY_UK_DIV));
		// ANK-4408-00-00 ADD END
		
		return mailList;
	}
	
	/**
	 *SMS向けリスト用データ設定処理<br>
	 * @param result 検索結果
	 * @return smsList SMS向けリスト用データ
	 * @throws Exception
	 */
	// ANK-4408-00-00 MOD START
	//private ArrayList<String> setSmsListData(String telno) throws Exception
	private ArrayList<String> setSmsListData(String telno, String cdDivNm) throws Exception
	// ANK-4408-00-00 MOD END
	{
		ArrayList<String> smsList = new ArrayList<String>();
		
		// 電話番号
		smsList.add(telno);
		// 送信文 
		smsList.add(SEND_BUN);
		// 送信指定日付
		smsList.add(BRANK);
		// 送信指定時刻
		smsList.add(BRANK);
		// 備考
		smsList.add(BRANK);
		// 備考２
		smsList.add(BRANK);
		// ANK-4408-00-00 ADD START
		//口座支払方法受付区分
		smsList.add(cdDivNm);
		// ANK-4408-00-00 ADD END
		
		return smsList;
	}
	
	/**
	 *ハガキ向けリスト用データ設定処理<br>
	 * @param result 検索結果
	 * @return postcardList ハガキ向けリスト用データ
	 * @throws Exception
	 */
	// ANK-4408-00-00 MOD START
	//private ArrayList<String> setPostcardListData(JBSbatCommonDBInterface result) throws Exception
	private ArrayList<String> setPostcardListData(JBSbatCommonDBInterface result, String cdDivNm) throws Exception
	// ANK-4408-00-00 MOD END
	{
		ArrayList<String> postcardList = new ArrayList<String>();
		
		// 送付先郵便番号
		postcardList.add(result.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_PCD));
		// 送付先
		postcardList.add(result.getString(SOHUS));
		// 送付先名
		postcardList.add(result.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_NM));
		// ANK-4408-00-00 ADD START
		//口座支払方法受付区分
		postcardList.add(cdDivNm);
		// ANK-4408-00-00 ADD END
		
		return postcardList;
	}
	
	/**
	 *エラー用データマップ設定処理<br>
	 * @param errMsg エラーメッセージ
	 * @param seikyKeiNo 請求契約番号
	 * @throws Exception
	 */
	private ArrayList<String> setErrDataMap(String errMsg, String seikyKeiNo) throws Exception
	{
		ArrayList<String> errList = new ArrayList<String>();
		
		// レコード行番号
		errList.add(Integer.toString(allRecordCnt));
		// 請求契約番号
		errList.add(seikyKeiNo);
		// エラーメッセージ
		errList.add(errMsg);
		
		return errList;
	}
	
	/**
	 * ファイル出力処理
	 * (電子管理ファイルテーブルへファイル登録、ダウンロード管理ファイルへファイル情報登録)
	 * @throws Exception
	 */
	private void outFile() throws Exception
	{
		// 支払変更登録完了お知らせメール向けリスト出力
		outpayChgAddFinOsrMail();
		// 支払変更登録完了お知らせSMS向けリスト出力
		outpayChgAddFinOsrSms();
		// 支払変更登録完了お知らせハガキ向けリスト出力
		outpayChgAddFinOsrPostcard();
		// 支払変更登録完了対象エラー出力
		outpayChgAddFinTgErr();
	}
	
	/**
	 * 支払変更登録完了お知らせメール向けリスト出力処理
	 * @throws Exception
	 */
	private void outpayChgAddFinOsrMail() throws Exception
	{
		// 支払変更登録完了お知らせメール向けリスト(タイトル部)出力
		ArrayList<String> titleList = new ArrayList<String>();
		
		// サービス契約番号
		titleList.add("サービス契約番号");
		// メールアドレス
		titleList.add("メールアドレス");
		// ANK-4408-00-00 ADD START
		// 口座支払方法受付区分
		titleList.add("口座支払方法受付区分");
		// ANK-4408-00-00 ADD END
		
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinOsrMail, titleList);
		
		// 支払変更登録完了お知らせメール向けリスト(データ部)出力
		for (int dataCnt = 0; dataCnt < mailDataList.size(); dataCnt++) 
		{
			JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinOsrMail, mailDataList.get(dataCnt));
		}
		
		// ファイルクローズ
		if (payChgAddFinOsrMail != null)
		{
			payChgAddFinOsrMail.close();
		}
	}
	
	/**
	 * 支払変更登録完了お知らせSMS向けリスト出力処理
	 * @throws Exception
	 */
	private void outpayChgAddFinOsrSms() throws Exception
	{
		// 支払変更登録完了お知らせSMS向けリスト(タイトル部)出力
		ArrayList<String> titleList = new ArrayList<String>();
		
		// 電話番号
		titleList.add("電話番号");
		// 送信文
		titleList.add("送信文");
		// 送信指定日付
		titleList.add("送信指定日付");
		// 送信指定時刻
		titleList.add("送信指定時刻");
		// 備考
		titleList.add("備考");
		// 備考２
		titleList.add("備考２");
		// ANK-4408-00-00 ADD START
		// 口座支払方法受付区分
		titleList.add("口座支払方法受付区分");
		// ANK-4408-00-00 ADD END
		
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinOsrSms, titleList);
		
		// 支払変更登録完了お知らせSMS向けリスト(データ部)出力
		for (int dataCnt = 0; dataCnt < smsDataList.size(); dataCnt++) 
		{
			JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinOsrSms, smsDataList.get(dataCnt));
		}
		
		// ファイルクローズ
		if (payChgAddFinOsrSms != null)
		{
			payChgAddFinOsrSms.close();
		}
		
		// 支払変更登録完了お知らせSMS向けリストファイル保持期間を運用日から三ヶ月間に設定する
		String delYmd = JPCUtilCommon.addMonth(super.opeDate, 3);
		
		// 支払変更登録完了お知らせSMS向けリストファイル登録処理
		// このメソッドで電子管理ファイルにファイルを登録したと同時にダウンロードファイル管理にファイル情報が登録される
		JKKBatCommon.createFile(commonItem,
								TRN_KANRI_NO_PAY_CHG_ADD_FIN_OSR_SMS,
								new Long(smsDataList.size()),
								null,
								commonItem.getFreeItem(),
								payChgAddFinOsrSmsFileNm,
								delYmd,
								db_ZM_T_DL_FILE_KANRI,
								false);
	}
	
	/**
	 * 支払変更登録完了お知らせハガキ向けリスト出力処理
	 * @throws Exception
	 */
	private void outpayChgAddFinOsrPostcard() throws Exception
	{
		// 支払変更登録完了お知らせハガキ向けリスト(タイトル部)出力
		ArrayList<String> titleList = new ArrayList<String>();
		
		// 郵便番号
		titleList.add("郵便番号");
		// 住所
		titleList.add("住所");
		// 氏名
		titleList.add("氏名");
		// ANK-4408-00-00 ADD START
		// 口座支払方法受付区分
		titleList.add("口座支払方法受付区分");
		// ANK-4408-00-00 ADD END
		
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinOsrPostcard, titleList);
		
		// 支払変更登録完了お知らせハガキ向けリスト(データ部)出力
		for (int dataCnt = 0; dataCnt < postcardDataList.size(); dataCnt++) 
		{
			JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinOsrPostcard, postcardDataList.get(dataCnt));
		}
		
		// ファイルクローズ
		if (payChgAddFinOsrPostcard != null)
		{
			payChgAddFinOsrPostcard.close();
		}
		
		// 支払変更登録完了お知らせハガキ向けリストファイル保持期間を運用日から三ヶ月間に設定する
		String delYmd = JPCUtilCommon.addMonth(super.opeDate, 3);
		
		// 支払変更登録完了お知らせハガキ向けリストファイル登録処理
		// このメソッドで電子管理ファイルにファイルを登録したと同時にダウンロードファイル管理にファイル情報が登録される
		JKKBatCommon.createFile(commonItem,
								TRN_KANRI_NO_PAY_CHG_ADD_FIN_OSR_POSTCARD,
								new Long(postcardDataList.size()),
								null,
								commonItem.getFreeItem(),
								payChgAddFinOsrPostcardFileNm,
								delYmd,
								db_ZM_T_DL_FILE_KANRI,
								false);
	}
	
	/**
	 * 支払変更登録完了対象エラー出力処理
	 * @throws Exception
	 */
	private void outpayChgAddFinTgErr() throws Exception
	{
		// 支払変更登録完了対象エラー(タイトル部)出力
		ArrayList<String> titleList = new ArrayList<String>();
		
		// 行番号
		titleList.add("行番号");
		// 請求契約番号
		titleList.add("請求契約番号");
		// エラーメッセージ
		titleList.add("エラーメッセージ");
		
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinTgErr, titleList);
		
		// 支払変更登録完了対象エラー(データ部)出力
		for (int dataCnt = 0; dataCnt < errList.size(); dataCnt++) 
		{
			JKKBatCommon.printDoubleQuoteBusinessFileUtil(payChgAddFinTgErr, errList.get(dataCnt));
		}
		
		// ファイルクローズ
		if (payChgAddFinTgErr != null)
		{
			payChgAddFinTgErr.close();
		}
		
		// 支払変更登録完了対象エラーファイル保持期間を運用日から三ヶ月間に設定する
		String delYmd = JPCUtilCommon.addMonth(super.opeDate, 3);
		
		// 支払変更登録完了対象エラーファイル登録処理
		// このメソッドで電子管理ファイルにファイルを登録したと同時にダウンロードファイル管理にファイル情報が登録される
		JKKBatCommon.createFile(commonItem,
								TRN_KANRI_NO_PAY_CHG_ADD_FIN_ERR,
								new Long(errList.size()),
								null,
								commonItem.getFreeItem(),
								payChgAddFinTgErrFileNm,
								delYmd,
								db_ZM_T_DL_FILE_KANRI,
								false);
	}
	
	/**
	 *ディレイド処理依頼結果更新処理<br>
	 * @param fileCnt ファイル件数
	 * @param isSysErrFlg エラーフラグ
	 * @throws Exception
	 */
	private void updateShoriIrai(int fileCnt, boolean isSysErrFlg) throws Exception
	{
		if (isSysErrFlg)
		{
			// エラーの場合
			// DBロールバック処理
			JBSbatBusinessBase.dbcon.rollback();
			rsltCd = JKKStrConst.DLYD_TRN_RSLT_CD_SYS_ERR;
		}
		
		// ディレイド処理依頼結果更新部品呼び出し
		String dlydTrnReqNo =  dlydTrnMapList.get(fileCnt).get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO).toString();
		JKKBatCommon.updateShoriIraiResult(commonItem, dlydTrnReqNo, rsltCd, null);
		
		// DBコミット処理
		JBSbatBusinessBase.dbcon.commit();
	}
	
}
