/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKhriUkTrgtDchs
*	ソースファイル名	：JBSbatKKKhriUkTrgtDchs.java
*	作成者				：富士通　
*	作成日				：2015年10月19日
*＜機能概要＞
*　口座振替受付対象データ抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v20.00.00	2015/10/19   FJ)遠藤	新規作成 ANK-2073-00-00 支払メール
*	v20.00.01	2015/10/29   FJ)遠藤	IT1-2015-0000116
*	v20.00.02	2015/11/02   FJ)遠藤	IT1-2015-0000118
*	v41.00.00	2019/02/04   FJ)星野	ANK-3396-00-00 利用停止スケジュールの変更
*********************************************************************/
package eo.business.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM664;
import eo.business.util.file.JBSbatKKIFM667;
import eo.business.util.file.JBSbatKKIFM668;
import eo.business.util.file.JBSbatKKIFM669;
import eo.business.util.table.JBSbatCC_M_MAIL;
import eo.business.util.table.JBSbatCH_M_PRC_SCHDL_TEIGI;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_M_BANK;
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.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKCommonUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKhriUkTrgtDchs extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";

	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";

	/** テーブル(メール)*/
	private static final String D_TBL_NAME_CC_M_MAIL = "CC_M_MAIL";

	/** テーブル(口座)*/
	private static final String D_TBL_NAME_KK_T_KOZA = "KK_T_KOZA";

	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";
	
	/** SQL定義キー(KK_SELECT_065)*/
	private static final String KK_T_SEIKY_KEI_KK_SELECT_065 = "KK_SELECT_065";
	
	/** SQL定義キー(KK_SELECT_320)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_320 = "KK_SELECT_320";

	/** SQL定義キー(KK_SELECT_052)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_052 = "KK_SELECT_052";

	/** SQL定義キー(KK_SELECT_065)*/
	private static final String CK_T_CUST_KK_SELECT_065 = "KK_SELECT_065";

	/** SQL定義キー(KK_SELECT_020)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_KK_SELECT_020 = "KK_SELECT_020";

	/** SQL定義キー(KK_SELECT_005)*/
	private static final String CC_M_MAIL_KK_SELECT_005 = "KK_SELECT_005";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_KOZA_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_063)*/
	private static final String KK_T_SEIKY_KEI_KK_SELECT_063 = "KK_SELECT_063";

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;

	/** テーブルアクセスクラス(メール)*/
	private JBSbatSQLAccess db_CC_M_MAIL = null;

	/** テーブルアクセスクラス(口座)*/
	private JBSbatSQLAccess db_KK_T_KOZA = null;

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 業務パラメータ(契約用対応履歴登録ユーザ) */
	private static final String KK_TAIORRK_ADD_USER = "KK_TAIORRK_ADD_USER";

	/** メールコード */
	private static final String MAIL_CD = "KKM1000011";

	/** 対応記録タイトル */
	private static final String TAIOKRK_TITLE = "口座振替申込書受付の御礼メール";	

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** 変換用マップキー：%1% */
	private static final String MAP_KEY_1 = "%1%";

	/** 変換用マップキー：%2% */
	private static final String MAP_KEY_2 = "%2%";

	/** 変換用マップキー：%3% */
	private static final String MAP_KEY_3 = "%3%";

	/** 変換用マップキー：%4% */
	private static final String MAP_KEY_4 = "%4%";

	/** 変換用マップキー：項目名1 */
	private static final String MAP_KMK_1 = "金融機関名";

	/** 変換用マップキー：項目名2 */
	private static final String MAP_KMK_2 = "支店名";

	/** 処理管理番号 */
	private static final String TRNKANRINO = "000000000125";

	/** 口座振替受付対象ＣＡＳＥファイル配置先パス */
	private static final String CASE_FAILE_PATH  = "CR_TWS_RK_FILE_DIR";

	/** 外部送信ファイルの配置先 */
	private static final String GAIBU_SEND_DIR_KK = "GAIBU_SEND_DIR_KK";

	/** 送信ファイルのパス */
	private static final String SEND_PATH = "KKIFE308";

// IT1-2015-0000116 MOD START
	/** 口座振替受付対象メール送信フラグのファイルタイムスタンプ(DateTime + ".flg") */
//	private static final String FLG_FILE_TIMESTAMP = "yyyyMMddhhmmss.flg";
	private static final String MIAL_FLG_FILE_TIMESTAMP = "yyyyMMddhhmmss.flg";
// IT1-2015-0000116 MOD END

// IT1-2015-0000116 ADD START
	/** 口座振替受付対象ＣＡＳＥファイルのファイルタイムスタンプ(DateTime + ".CSV") */
	private static final String CASE_CSV_FILE_TIMESTAMP = "yyyyMMddhhmmss.CSV";

	/** 口座振替受付対象ＣＡＳＥフラグのファイルタイムスタンプ(DateTime + "_FTP.FLG") */
	private static final String CASE_FLG_FILE_TIMESTAMP = "yyyyMMddhhmmss_FTP.FLG";

	/** 口座振替受付対象ＣＡＳＥ件数のファイルタイムスタンプ(DateTime + "_CNT.TXT") */
	private static final String CASE_CNT_FILE_TIMESTAMP = "yyyyMMddhhmmss_CNT.TXT";
// IT1-2015-0000116 ADD END

	/** 口座振替受付対象メール送信ファイルID */
	private static final String KHRIUK_DAT_FILE_ID = "KHRIUK_DAT_";

	/** 口座振替受付対象メール送信フラグファイルID */
	private static final String FTP_KHRIUK_FILE_ID = "FTP_KHRIUK_";

	/** 口座振替受付対象メール送信件数ファイルID */
	private static final String KHRIUK_CNT_FILE_ID = "KHRIUK_CNT_";

	/** 口座振替受付対象ＣＡＳＥファイルID */
	private static final String CASE_KHRIUK_FILE_ID  = "CASE_KHRIUK_";
	
	/** 口座振替受付対象情報リストファイルID */
	private static final String KHRIUK_DATA_FILE_ID = "KKLST090_KHRI_UK_TG_";

	/** 請求契約情報ファイル（CSV）*/
	private static final String SEIKYKEI_DATA_FILE_CSV = "KKIFM669.csv";	

	/** 口座振替受付対象メール送信ファイルのdefファイルID */
	private static final String KHRIUK_DAT_ID = "KKIFM664";

	/** 口座振替受付対象情報リストのdefファイルID */
	private static final String KHRIUK_DATA_ID = "KKIFM667";

	/** 口座振替受付対象ＣＡＳＥファイルのdefファイルID */
	private static final String CASE_KHRIUK_ID  = "KKIFM668";

	/** 請求契約情報ファイルのdefファイルID */
	private static final String SEIKYKEI_DATA_ID = "KKIFM669";

	/** 口座振替受付対象メール送信ファイル名 */
	private static final String KHRIUK_DAT_FILE_JAPANESE_NM = "口座振替受付対象メール送信";

	/** 口座振替受付対象情報リスト名 */
	private static final String KHRIUK_DATA_JAPANESE_NM = "口座振替受付対象情報リスト";

	/** 改行コード - CR+LF */
	private static final String LINE_CRL = "CR+LF";

	/** def */
	private static final String def = ".def";

	/** 中間ファイルの配置先 */
	private String midDirKk = null;

	/** 送信ファイルの配置先 */
	private String sendDirKk = null;

	/** 出力ファイル名用のタイムスタンプ */
	private String fileTimeStamp = null;

	/** メール送信ファイルオブジェクト*/
	private JBSbatOutputFileUtil mailSendFileObj = null;

	/** ダウンロードファイルオブジェクト*/
	private JBSbatOutputFileUtil dlFileObj = null;

	/** CASEファイルオブジェクト*/
	private JBSbatOutputFileUtil caseFileObj = null;

	/** メール送信defファイルオブジェクト*/
	private JBSbatDefFileUtil mailSendFileDef = null;

	/** ダウンロードdefファイルオブジェクト*/
	private JBSbatDefFileUtil dlFileDef = null;

	/** CASEdefファイルオブジェクト*/
	private JBSbatDefFileUtil caseFileDef = null;

	/** メール本文変換用マップ */
	private HashMap<String, String> mailTmpChgeMap = null;

	/** メール情報リスト */
	private JBSbatCommonDBInterface mailList = null;

	/** 業務パラメータ.受付者、担当者 */
	private String taioRrkAddUser = null;

	/** 振替予定年 */
	private String hriRsvY = null;

	/** 振替予定月 */
	private String hriRsvM = null;

	/** ダウンロード用振替予定年月 */
	private String dlHriRsvYm = null;

	/** 問合せ履歴の本文 */
	private String tawsRkText = null;

	/** データ件数 */
	private long dataCount = 0;

// IT1-2015-0000116 ADD START
	/** CASEデータ件数 */
	private long caseCount = 0;
// IT1-2015-0000116 ADD END

	/** データ出力数 */
	private long outCount = 0;

	/**
	 * 初期処理
	 * @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_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		db_CC_M_MAIL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL);
		db_KK_T_KOZA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KOZA);
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		// メール送信ファイルに出力するタイトル・本文・送信元アドレス等の情報を取得
		String[] mailKey = {MAIL_CD,
							super.opeDate,
							super.opeDate,
							super.opeDate
							};
		this.executeCC_M_MAIL_KK_SELECT_005(mailKey);
		this.mailList = db_CC_M_MAIL.selectNext();
		
		// メールの取得に失敗した場合
		if (this.mailList == null)
		{
			// メッセージ内容 %1%の取得に失敗しました。%2%
			throw new JBSbatBusinessException("EKKB0740CE", new String[] {"メール", "メールコード(" + MAIL_CD + ")"});
		}
		
		// 受付者、担当者用の文字列を取得
		this.taioRrkAddUser = JKKBatCommon.getWorkParamSetteValue(super.commonItem, KK_TAIORRK_ADD_USER);
		
		// フリー項目を取得
		getFreeKmk();
		
		// 送信ファイルの配置先情報を取得
		this.sendDirKk = JBSbatAplConst.getAplConstValue(GAIBU_SEND_DIR_KK) + JKKBatConst.S_HALF_SLASH + SEND_PATH;
	}
	
	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		fileTimeStamp = JCCBatCommon.getSysDateTime();
		
		// データファイルオブジェクト
		JBSbatInputFileUtil inFileObj = null;
		
// IT1-2015-0000116 DEL START
//		// ケースファイル作成
//		createCaseFile();
// IT1-2015-0000116 DEL END
		
		// メール送信ファイル作成
		createFile(KHRIUK_DAT_FILE_ID, KHRIUK_DAT_ID);
		
		// ダウンロードファイル作成
		createFile(KHRIUK_DATA_FILE_ID, KHRIUK_DATA_ID);
		
		// 請求契約リスト名
		String seikyKeiListNm = midDirKk + JKKBatConst.S_HALF_SLASH + SEIKYKEI_DATA_FILE_CSV;
		
		try
		{
			// ファイルオープン
			inFileObj = new JBSbatInputFileUtil(seikyKeiListNm);
			
			// ファイル定義オブジェクト作成
			JBSbatDefFileUtil defFileUtl =
				new JBSbatDefFileUtil(JBSbatAplConst.getAplConstValue(JKKStrConst.KK_DIR_IND) + SEIKYKEI_DATA_ID + def, inFileObj);
			inFileObj.setEncode(JKKStrConst.ENCODE_SJIS);
			inFileObj.createReader();
			
			// レコードカウント
			int recCnt = 0;
			
			// レコードデータ
			String lineDate = null;
			
			// 請求契約の繰り返し処理
			while((lineDate = inFileObj.readLine()) != null)
			{
				recCnt++;
				
				// DEFファイルを使用し、入力データを分割
				JBSbatServiceInterfaceMap inMap = defFileUtl.lineToObject(lineDate, inFileObj, recCnt);
				
				JBSbatCommonDBInterface seikyKeiMap = null;
				
				// 請求契約リストの請求契約番号に紐付く、最新の請求契約情報を取得
				String[] seikyKeiKey = {JBSbatDateUtil.adjustDate(super.opeDate, -1),
									inMap.getString(JBSbatKKIFM669.SEIKY_KEI_NO)
									};
				this.executeKK_T_SEIKY_KEI_KK_SELECT_065(seikyKeiKey);
				seikyKeiMap = db_KK_T_SEIKY_KEI.selectNext();
				
				// 最新の請求契約情報で以後の処理が必要ない場合
				if (seikyKeiMap == null)
				{
					// 次の請求契約へ
					continue;
				}
				
				// 請求契約情報を取得
				String seikyKeiNo         = seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO);
				String seikyWayCd         = seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CD);
				String seikyWayNoKoza     = seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_KOZA);
				String seikyWayAplyAdjYmd = seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_APLY_ADJ_YMD);
				String rscAplyYmd         = seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.RSV_APLY_YMD);
				
				// サービス提供中以降フラグ
				boolean svctkIkouFlg = false;
				
				// 未解約フラグ
				boolean miDslkZmFlg = false;
				
				// メール本文変換用マップ
				this.mailTmpChgeMap = null;
				
				// 請求方法コードが「預金口座振替」または、「郵便自動振込」以外の場合
				if(!(JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(seikyWayCd) || JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(seikyWayCd)))
				{
					// 支払方法通知メール制御コードを「対象外」に更新
					insertPaywaytcmlCtlCd(seikyKeiNo, rscAplyYmd, JKKStrConst.CD01677_TGG);
					
					// 次の請求契約へ
					continue;
				}
				
				// 加工用予約適用年月日
				String kakouRscAplyYmd = rscAplyYmd;
				
				// 請求契約.予約適用年月日が過去日付の場合
				if(kakouRscAplyYmd.compareTo(super.opeDate) <= 0)
				{
					// 加工用予約適用年月日にバッチ運用日付を設定
					kakouRscAplyYmd = super.opeDate;
				}
				
				// 請求契約番号に紐付く、口座・金融機関の情報を取得
				String[] kozaKey = {kakouRscAplyYmd,
									seikyWayNoKoza
									};
				this.executeKK_T_KOZA_KK_SELECT_001(kozaKey);
				
				JBSbatCommonDBInterface kozaMap = db_KK_T_KOZA.selectNext();
				
				// 口座・金融機関の情報取得に失敗した場合
				if (kozaMap == null)
				{
					// ログ出力 %1%テーブルに%2%が存在しません。（key：%3%）
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0630NW,
															new String[] {"口座・金融機関", 
																			"レコード",
																			"予約適用年月日(" + kakouRscAplyYmd + ")," +
																			" 請求方法番号(口座)(" + seikyWayNoKoza + ")"});
					
					// 次の請求契約へ
					continue;
				}
				
				// 支払い審査結果コードを取得
				String paySkekkaCd = kozaMap.getString(JBSbatKK_T_KOZA.PAY_SKEKKA_CD);
				
				// 請求方法コード + 支払い審査結果コードの判定
				if ((JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(seikyWayCd) && JKKStrConst.PAY_SKEKKA_CD_KHRI_SHINSEI_NG.equals(paySkekkaCd)) ||
					(JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(seikyWayCd) && JKKStrConst.PAY_SKEKKA_CD_YJHRI_SHINSEI_NG.equals(paySkekkaCd)))
				{
					// 支払方法通知メール制御コードを「対象外」に更新
					insertPaywaytcmlCtlCd(seikyKeiNo, rscAplyYmd, JKKStrConst.CD01677_TGG);
					
					// 次の請求契約へ
					continue;
				}
				
				// 振替予定年月の算出
				if (!hriRsvYmSnst(kakouRscAplyYmd, seikyWayAplyAdjYmd, seikyKeiNo))
				{
					// 振替予定年月の算出に失敗した場合、次の請求契約レコードへ
					continue;
				}
				
				// サービス契約情報の取得
				String[] svcKeiKey  =  {super.opeDate,
										super.opeDate,
										seikyKeiNo,
										super.opeDate,
										super.opeDate,
										super.opeDate,
										super.opeDate
										};
				this.executeKK_T_SVC_KEI_KK_SELECT_320(svcKeiKey);
				
				// サービス契約数カウント
				int svckeiCnt = 0;
				
				// サービス契約リスト
				ArrayList<HashMap<String, String>> svcKeiList = new ArrayList<HashMap<String, String>>();
				
				// サービス契約メールアドレスリスト
				ArrayList<HashMap<String, String>> svcKeiMladList = new ArrayList<HashMap<String, String>>();
				
				JBSbatCommonDBInterface svcKeiMap = null;
				
				while ((svcKeiMap = db_KK_T_SVC_KEI.selectNext()) != null)
				{
					svckeiCnt++;
					
					HashMap<String, String> dbMaps = new HashMap<String, String>();
					
					// サービス契約情報を取得
					dbMaps.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO,   svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
					dbMaps.put(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT, svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT));
					dbMaps.put(JBSbatKK_T_SVC_KEI.SYSID,        svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SYSID));
					dbMaps.put(JBSbatKK_T_OPSVKEI_ISP.MLAD,     svcKeiMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD));
					dbMaps.put("PRC_GRP_NM",                    svcKeiMap.getString("PRC_GRP_NM"));
					dbMaps.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD,   svcKeiMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));
					dbMaps.put("SVC_KEI_STAT_NM",               svcKeiMap.getString("SVC_KEI_STAT_NM"));
					dbMaps.put("TOKUSOKU_STAT",                 svcKeiMap.getString("TOKUSOKU_STAT"));
					
					svcKeiList.add(dbMaps);
					
					// サービス契約.サービス契約ステータスを取得
					String svcKeiStat = svcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
					
					// サービス契約.メールアドレスを取得
					String mlad =  JBSbatStringUtil.Rtrim(svcKeiMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD));
					
					// 「サービス提供中」〜「解約済」未満の場合
					if (JKKStrConst.CD00037_SVCTK_CHU.compareTo(svcKeiStat) <=  0 && JKKStrConst.CD00037_DSL_ZM.compareTo(svcKeiStat) > 0)
					{
						svctkIkouFlg = true;
					}
					
					// 「解約済」または「キャンセル済」ではない場合
					if (!(JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat)))
					{
						miDslkZmFlg = true;
					}
					
					// サービス契約.メールアドレスが存在し、サービス契約ステータスが「サービス提供中」場合
					if (!JKKCommonUtil.isNull(mlad) && JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStat))
					{
						// サービス契約メールアドレス情報リストに追加
						svcKeiMladList.add(dbMaps);
					}
				}
				
				// サービス契約が存在しない場合
				if (svckeiCnt == 0)
				{
					// 支払方法通知メール制御コードを「対象外」に更新
					insertPaywaytcmlCtlCd(seikyKeiNo, rscAplyYmd, JKKStrConst.CD01677_TGG);
					
					// 次の請求契約へ
					continue;
				}
				
				// 全ステータスが「解約済」または「キャンセル済」の場合
				if (svctkIkouFlg == false && miDslkZmFlg == false)
				{
					// 支払方法通知メール制御コードを「対象外」に更新
					insertPaywaytcmlCtlCd(seikyKeiNo, rscAplyYmd, JKKStrConst.CD01677_TGG);
					
					// 次の請求契約へ
					continue;
				}
				
				// 全ステータスが「サービス提供中」未満の場合
				if (svctkIkouFlg == false && miDslkZmFlg == true)
				{
					// 次の請求契約へ
					continue;
				}
				
				// サービス契約にメールアドレスが存在する場合
				if (svcKeiMladList.size() > 0)
				{
					// サービス契約メールアドレスリストの繰り返し処理
					for(int j = 0; j < svcKeiMladList.size(); j++)
					{
						// サービス契約メールアドレスリスト情報を取得
						HashMap<String, String> svcKeiMladMap = svcKeiMladList.get(j);
						
						// メール本文の変換用マップ作成
						if (!setChgeMap(kozaMap, seikyWayCd, seikyKeiNo, svcKeiMladMap.get("SVC_KEI_NO")))
						{
							// 変換用マップ作成に失敗した場合、次のサービス契約へ
							continue;
						}
						
						// 口座振替受付対象メール送信ファイルを出力
						if (!putKKIFM664File(svcKeiMladMap, seikyKeiNo))
						{
							// 口座振替受付対象メール送信ファイル出力に失敗した場合、次のサービス契約へ
							continue;
						}
						
						// ファイル出力レコードカウント
						outCount++;
					}
				}
				// サービス契約にメールアドレスが存在しない場合
				else
				{
					// サービス契約リストの繰り返し処理
					for(int j = 0; j < svcKeiList.size(); j++)
					{
						JBSbatServiceInterfaceMap caseMap = new JBSbatServiceInterfaceMap();
						
						// サービス契約リスト情報を取得
						HashMap<String, String> svcKeiListMap = svcKeiList.get(j);
						
						String svcKeiStat = svcKeiListMap.get("SVC_KEI_STAT");
						
						// サービス契約ステータスが「解約済」または、「キャンセル済」の場合
						if (JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat))
						{
							// 次のサービス契約へ
							continue;
						}
						
						// 口座振替受付対象情報リストを作成
						createKKIFM667List(svcKeiListMap, kozaMap, seikyKeiNo, seikyWayCd);
						
						// ファイル登録用データカウント
						dataCount++;
						
// IT1-2015-0000116 ADD START
						if (caseFileObj == null)
						{
							// ケースファイル作成
							createCaseFile();
						}
// IT1-2015-0000116 ADD END
						
						// 問合せ履歴の本文を作成
						createTawsRkText(kozaMap, seikyWayCd);
						
						// 口座振替受付対象CASEファイル情報を作成
						caseMap = createCaseMap(svcKeiListMap.get("SVC_KEI_NO"));
						
						// 口座振替受付対象CASEファイル情報をCASEファイルに出力
						caseFileObj.print(caseMap, caseFileDef);
						
// IT1-2015-0000116 ADD START
						// CASEファイル登録用データカウント
						caseCount++;
// IT1-2015-0000116 ADD END
					
					}
				}
				
				// 支払方法通知メール制御コードを「送信済」に更新
				insertPaywaytcmlCtlCd(seikyKeiNo, rscAplyYmd, JKKStrConst.CD01677_SND_ZM);
			}
		}
		catch (IOException e)
		{
			// メッセージ内容 %1%の取得に失敗しました。%2%
			throw new JBSbatBusinessException("EKKB0740CE", new String[] {"請求契約情報リスト", seikyKeiListNm});
		}
		finally
		{
			// ファイルオープンしている場合
			if (inFileObj != null)
			{
				// ファイルを閉じる
				inFileObj.close();
			}
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVC_KEI.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_CK_T_CUST.close();
		db_CH_M_PRC_SCHDL_TEIGI.close();
		db_CC_M_MAIL.close();
		db_KK_T_KOZA.close();
		db_KK_T_SEIKY_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
		// テーブルアクセスクラス(ダウンロードファイル管理)
		JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		
		// ファイルが存在する場合、ファイルを閉じる
		closeFileObj();
		
		// ファイル登録
		JKKBatCommon.createFile(commonItem,
								TRNKANRINO,
								dataCount,
								null,
								midDirKk,
								KHRIUK_DATA_FILE_ID + JKKStrConst.FILE_NM_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp),
								JBSbatDateUtil.adjustMonth(super.opeDate, 1),
								db_ZM_T_DL_FILE_KANRI,
								false);
		
		// テーブルアクセスクラス(ダウンロードファイル管理)をクローズ
		db_ZM_T_DL_FILE_KANRI.close();
		
		// 口座振替受付対象メール送信件数ファイルを出力
// IT1-2015-0000116 DEL START
//		createCntFile();
// IT1-2015-0000116 DEL END

// IT1-2015-0000116 ADD START
		createCntFile(KHRIUK_CNT_FILE_ID);
		
		// 口座振替受付対象CASEファイルが存在する場合
		if (caseFileObj != null)
		{
			// 口座振替受付対象CASE件数ファイルを出力
			createCntFile(CASE_KHRIUK_FILE_ID);
		}
// IT1-2015-0000116 ADD END

// IT1-2015-0000116 DEL START		
//		// 口座振替受付対象メール送信フラグファイルを出力
//		createFlgFile();
// IT1-2015-0000116 DEL END

// IT1-2015-0000116 ADD START
		createFlgFile(FTP_KHRIUK_FILE_ID);
		
		// 口座振替受付対象CASEファイルが存在する場合
		if (caseFileObj != null)
		{
			// 口座振替受付対象CASEフラグファイルを出力
			createFlgFile(CASE_KHRIUK_FILE_ID);
		}
// IT1-2015-0000116 ADD END
	}
	
	
	/**
	 * ファイルを閉じる
	 * @throws Exception 
	 */
	private void closeFileObj() throws Exception
	{
		// ダウンロードファイルが存在する場合
		if (dlFileObj != null)
		{
			// ファイルを閉じる
			dlFileObj.close();
		}
		
		// メール送信ファイルが存在する場合
		if (mailSendFileObj != null)
		{
			// ファイルを閉じる
			mailSendFileObj.close();
		}
	}
	
	/**
	 * フリー項目よりデータを取得
	 * @throws Exception 
	 */
	private void getFreeKmk() throws Exception
	{
		// フリー項目を取得
		String[] fileItem = super.freeItem.split(JKKBatConst.S_PARAM_DELIM);
		
		// 取得した項目を設定
		midDirKk = fileItem[0];
	}
	
	/**
	 * メール本文引数変換用マップの設定
	 * @param kozaMap    口座情報
	 * @param seikyWayCd 請求方法コード
	 * @param seikyKeiNo 請求契約番号
	 * @param svcKeiNo   サービス契約番号
	 * @return boolean trueの場合、エラー無。falseの場合、エラー有。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private boolean setChgeMap(JBSbatCommonDBInterface kozaMap, String seikyWayCd, String seikyKeiNo, String svcKeiNo) throws Exception
	{
		boolean runFlg = true;
		
		this.mailTmpChgeMap = new HashMap<String, String>();
		
		// 金融機関.金融機関名を取得
		String bankNm = JBSbatStringUtil.Rtrim(kozaMap.getString(JBSbatKK_M_BANK.BANK_NM));
		// 金融機関.支店名を取得
		String shitenNm = JBSbatStringUtil.Rtrim(kozaMap.getString(JBSbatKK_M_BANK.BANK_SHITEN_NM));
		
		// 金融機関.金融機関名がnull値の場合
		if (JKKCommonUtil.isNull(bankNm))
		{
			// エラーメッセージ出力
			errorMsgOutPut(MAP_KMK_1, seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			this.mailTmpChgeMap.put(MAP_KEY_1, bankNm);
		}
		
		// 請求方法が「預金口座振替」の場合
		if (JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(seikyWayCd))
		{
			// 金融機関.支店名がnull値の場合
			if (JKKCommonUtil.isNull(shitenNm))
			{
				// エラーメッセージ出力
				errorMsgOutPut(MAP_KMK_2, seikyKeiNo, svcKeiNo);
				
				runFlg = false;
			}
			else
			{
				// 金融機関.支店名
				this.mailTmpChgeMap.put(MAP_KEY_2, "支店名　　　　" + shitenNm);
			}
		}
		// 請求方法が「郵便自動振込」の場合
		else if (JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(seikyWayCd))
		{
			// 金融機関.支店名を空白に設定
			this.mailTmpChgeMap.put(MAP_KEY_2, "");
		}
		
		// 振替予定年(4桁：ＹＹＹＹ)
		this.mailTmpChgeMap.put(MAP_KEY_3, hriRsvY);
		
		// 振替予定月(2桁：ＭＭ ※ゼロサプレス)
		this.mailTmpChgeMap.put(MAP_KEY_4, hriRsvM);
		
		return runFlg;
	}
	
	/**
	 * 口座振替受付対象メール送信ファイルのエラーメッセージ出力
	 * @param trgtKmk    対象項目
	 * @param seikyKeiNo 請求契約番号
	 * @param svcKeiNo   サービス契約番号
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void errorMsgOutPut(String trgtKmk, String seikyKeiNo, String svcKeiNo) throws Exception
	{
		// ログ出力 %1%の%2%に不正があります。（%3%）
// IT1-2015-0000118 MOD START
//		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0630NW,
//												new String[]{"口座振替受付対象メール送信ファイル",
//															trgtKmk,
//															"null値,請求契約番号(" + seikyKeiNo + ")," + 
//															"サービス契約番号(" + svcKeiNo + ")"});
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0310JW,
												new String[]{"口座振替受付対象メール送信ファイル",
															trgtKmk,
															"左記項目がnull,請求契約番号(" + seikyKeiNo + ")," + 
															"サービス契約番号(" + svcKeiNo + ")"});
// IT1-2015-0000118 MOD END
	}
	
	/**
	 * 口座振替受付対象メール送信ファイルの出力
	 * @param svcKeiMladMap サービス契約メールアドレスリスト情報
	 * @param seikyKeiNo    請求契約番号
	 * @return boolean trueの場合、エラー無。falseの場合、エラー有。
	 * @throws Exception 例外
	 */
	private boolean putKKIFM664File(HashMap<String, String> svcKeiMladMap, String seikyKeiNo) throws Exception
	{
		boolean runFlg = true;
		
		// サービス契約番号を取得
		String svcKeiNo = svcKeiMladMap.get("SVC_KEI_NO");
		
		// メール情報を取得
		String mailSenderNm  = JBSbatStringUtil.Rtrim(mailList.getString(JBSbatCC_M_MAIL.SENDM_MLAD_DSP_NM));
		String mailSender    = JBSbatStringUtil.Rtrim(mailList.getString(JBSbatCC_M_MAIL.SENDM_MLAD));
		String mlHnsinSk     = JBSbatStringUtil.Rtrim(mailList.getString(JBSbatCC_M_MAIL.HNSIN_MLAD));
		String errMlHnsinSk  = JBSbatStringUtil.Rtrim(mailList.getString(JBSbatCC_M_MAIL.ERR_MLAD));
		String mlDaimei      = JBSbatStringUtil.Rtrim(mailList.getString(JBSbatCC_M_MAIL.MAIL_TITLE));
		String mlText        = JBSbatStringUtil.Rtrim(mailList.getString(JBSbatCC_M_MAIL.MAIL_TEXT));
		
		JBSbatServiceInterfaceMap dataMap = new JBSbatServiceInterfaceMap();
		
		// お客さまＩＤ
		dataMap.set(JBSbatKKIFM664.CUST_ID, svcKeiNo);
		
		// メール宛先
		dataMap.set(JBSbatKKIFM664.MAIL_ATE_SAKI, svcKeiMladMap.get("MLAD"));
		
		// メール送信者名
		if (JKKCommonUtil.isNull(mailSenderNm))
		{
			// エラーメッセージ出力
			errorMsgOutPut("メール送信者名", seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			dataMap.set(JBSbatKKIFM664.MAIL_SENDER_NM, mailList.getString(JBSbatCC_M_MAIL.SENDM_MLAD_DSP_NM));
		}
		
		// メール送信者
		if (JKKCommonUtil.isNull(mailSender))
		{
			// エラーメッセージ出力
			errorMsgOutPut("メール送信者", seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			dataMap.set(JBSbatKKIFM664.MAIL_SENDER, mailList.getString(JBSbatCC_M_MAIL.SENDM_MLAD));
		}
		
		// メール返信先
		if (JKKCommonUtil.isNull(mlHnsinSk))
		{
			// エラーメッセージ出力
			errorMsgOutPut("メール返信先", seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			dataMap.set(JBSbatKKIFM664.ML_HNSIN_SK, mailList.getString(JBSbatCC_M_MAIL.HNSIN_MLAD));
		}
		
		// エラーメール返信先
		if (JKKCommonUtil.isNull(errMlHnsinSk))
		{
			// エラーメッセージ出力
			errorMsgOutPut("エラーメール返信先", seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			dataMap.set(JBSbatKKIFM664.ERR_ML_HNSIN_SK,  mailList.getString(JBSbatCC_M_MAIL.ERR_MLAD));
		}
		
		// ＢＣＣ 
		dataMap.set(JBSbatKKIFM664.BCC, " ");
		
		// メール題名
		if (JKKCommonUtil.isNull(mlDaimei))
		{
			// エラーメッセージ出力
			errorMsgOutPut("メール題名", seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			dataMap.set(JBSbatKKIFM664.ML_DAIMEI, mailList.getString(JBSbatCC_M_MAIL.MAIL_TITLE));
		}
		
		// メール本文
		if (JKKCommonUtil.isNull(mlText))
		{
			// エラーメッセージ出力
			errorMsgOutPut("メール本文", seikyKeiNo, svcKeiNo);
			
			runFlg = false;
		}
		else
		{
			dataMap.set(JBSbatKKIFM664.ML_TEXT, ckanUmeMojiHanyo(mailList.getString(JBSbatCC_M_MAIL.MAIL_TEXT), this.mailTmpChgeMap));
		}
		
		// 対応記録タイトル
		dataMap.set(JBSbatKKIFM664.TIOKRK_TITLE, TAIOKRK_TITLE);
		
		// エラーがない場合
		if (runFlg == true)
		{
			// ファイルを作成
			putFile(dataMap, mailSendFileObj, mailSendFileDef, KHRIUK_DAT_FILE_JAPANESE_NM, "請求契約番号(" + seikyKeiNo + ")");
		}
		
		return runFlg;
	}
	
	/**
	 * 埋め込み文字を指定されたマップにて置き換え
	 * <br>
	 * @param arg0 対象文字列
	 * @param map 変換用マップ
	 * @return String 編集後の文字列
	 */
	private String ckanUmeMojiHanyo(String arg0, HashMap<String, String>map) 
	{
		String str = arg0;
		
		// 文字列変換処理
		for(Map.Entry<String, String> etry : map.entrySet())
		{
			str = str.replace(etry.getKey(), etry.getValue());
		}
		
		return str;
	}
	
	/**
	 * 口座振替受付対象情報リストの作成
	 * @param svcKeiList サービス契約リスト
	 * @param kozaMap    口座情報
	 * @param seikyKeiNo 請求契約番号
	 * @param seikyWayCd 請求方法コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void createKKIFM667List(HashMap<String,String> svcKeiList, JBSbatCommonDBInterface kozaMap, String seikyKeiNo, String seikyWayCd) throws Exception
	{
		// サービス契約情報を取得
		String sysId        = svcKeiList.get("SYSID");
		String svcKeiNo     = svcKeiList.get("SVC_KEI_NO");
		String prcGrpCd     = svcKeiList.get("PRC_GRP_CD");
		String tokusokuStat = JBSbatStringUtil.Rtrim(svcKeiList.get("TOKUSOKU_STAT"));
		
		// サービス契約回線内訳の回線場所情報を取得
		String[] svkeiKaisenKey = {super.opeDate,
									super.opeDate,
									svcKeiNo
							};
		this.executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_052(svkeiKaisenKey);
		JBSbatCommonDBInterface svkeiKaisenMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		
		// お客様情報を取得
		String[] custKey = {super.opeDate,
							sysId
							};
		this.executeCK_T_CUST_KK_SELECT_065(custKey);
		JBSbatCommonDBInterface custMap = db_CK_T_CUST.selectNext();
		
		JBSbatServiceInterfaceMap dataMap = new JBSbatServiceInterfaceMap();
		
		// 請求先番号
		dataMap.set(JBSbatKKIFM667.SEIKY_KEI_NO, seikyKeiNo);
		
		// お客さまID
		dataMap.set(JBSbatKKIFM667.CUST_ID, svcKeiNo);
		
		// 契約サービス名
		dataMap.set(JBSbatKKIFM667.KEI_SVC_NM, svcKeiList.get("PRC_GRP_NM"));
		
		// 契約状態
		dataMap.set(JBSbatKKIFM667.KEI_STAT, svcKeiList.get("SVC_KEI_STAT_NM"));
		
		// 督促状態を取得
		if (JKKCommonUtil.isNull(tokusokuStat))
		{
			dataMap.set(JBSbatKKIFM667.TOKUSOKU_STAT, "督促なし");
		}
		else
		{
			dataMap.set(JBSbatKKIFM667.TOKUSOKU_STAT, svcKeiList.get("TOKUSOKU_STAT"));
		}
		
		// 金融機関名
		dataMap.set(JBSbatKKIFM667.BANK_NM, JBSbatStringUtil.Rtrim(kozaMap.getString(JBSbatKK_M_BANK.BANK_NM)));
		
		// 支店名
		// 請求方法が「郵便自動振込」の場合
		if (JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(seikyWayCd))
		{
			dataMap.set(JBSbatKKIFM667.SHITEN_NM, null);
		}
		else
		{
			dataMap.set(JBSbatKKIFM667.SHITEN_NM, JBSbatStringUtil.Rtrim(kozaMap.getString(JBSbatKK_M_BANK.BANK_SHITEN_NM)));
		}
		
		// 振替予定月
		dataMap.set(JBSbatKKIFM667.HRI_RSV_GETU, dlHriRsvYm);
		
		// 料金グループコードフラグ
		boolean prcGrpCdFlg = (JKKStrConst.CD00133_07.equals(prcGrpCd) || JKKStrConst.CD00133_08.equals(prcGrpCd) ||
				JKKStrConst.CD00133_09.equals(prcGrpCd) || JKKStrConst.CD00133_16.equals(prcGrpCd) || svkeiKaisenMap == null);
		
		// 料金グループコードがeoモバイルまたは、回線内訳情報が取得できない場合、利用場所情報を未設定にする。
		// ｅｏモバイル（Ｗｉ−Ｆｉ）
		// ｅｏモバイル（３Ｇ）
		// ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
		// ｅｏモバイル（メールアドレス）
		if(prcGrpCdFlg)
		{
			// 利用場所郵便番号
			dataMap.set(JBSbatKKIFM667.UEPC_PCD, null);
			
			// 利用場所都道府県名
			dataMap.set(JBSbatKKIFM667.UEPC_STATE_NM, null);
			
			// 利用場所市町村名
			dataMap.set(JBSbatKKIFM667.UEPC_CITY_NM, null);
			
			// 利用場所大字通称名
			dataMap.set(JBSbatKKIFM667.UEPC_OAZTSU_NM, null);
			
			// 利用場所字丁名目
			dataMap.set(JBSbatKKIFM667.UEPC_AZCHO_NM, null);
			
			// 利用場所番地号
			dataMap.set(JBSbatKKIFM667.UEPC_BNCHIGO, null);
			
			// 利用場所住所補記_建物名
			dataMap.set(JBSbatKKIFM667.UEPC_ADRTTM, null);
			
			// 利用場所住所補記_部屋番号
			dataMap.set(JBSbatKKIFM667.UEPC_ADRRM, null);
		}
		else
		{
			// 利用場所郵便番号
			dataMap.set(JBSbatKKIFM667.UEPC_PCD, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD));
			
			// 利用場所都道府県名
			dataMap.set(JBSbatKKIFM667.UEPC_STATE_NM, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM));
			
			// 利用場所市町村名
			dataMap.set(JBSbatKKIFM667.UEPC_CITY_NM, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM));
			
			// 利用場所大字通称名
			dataMap.set(JBSbatKKIFM667.UEPC_OAZTSU_NM, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM));
			
			// 利用場所字丁名目
			dataMap.set(JBSbatKKIFM667.UEPC_AZCHO_NM, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM));
			
			// 利用場所番地号
			dataMap.set(JBSbatKKIFM667.UEPC_BNCHIGO, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO));
			
			// 利用場所住所補記_建物名
			dataMap.set(JBSbatKKIFM667.UEPC_ADRTTM, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM));
			
			// 利用場所住所補記_部屋番号
			dataMap.set(JBSbatKKIFM667.UEPC_ADRRM, svkeiKaisenMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM));
		}
		
		// お客様情報を取得できない場合
		if(custMap == null)
		{
			// 契約者名
			dataMap.set(JBSbatKKIFM667.KEISHA_NM, null);
			
			// 契約者郵便番号
			dataMap.set(JBSbatKKIFM667.KEISHA_PCD, null);
			
			// 契約者都道府県名
			dataMap.set(JBSbatKKIFM667.KEISHA_STATE_NM, null);
			
			// 契約者市町村名
			dataMap.set(JBSbatKKIFM667.KEISHA_CITY_NM, null);
			
			// 契約者大字通称名
			dataMap.set(JBSbatKKIFM667.KEISHA_OAZTSU_NM, null);
			
			// 契約者字丁名目
			dataMap.set(JBSbatKKIFM667.KEISHA_AZCHO_NM, null);
			
			// 契約者番地号
			dataMap.set(JBSbatKKIFM667.KEISHA_BNCHIGO, null);
			
			// 契約者住所補記_建物名
			dataMap.set(JBSbatKKIFM667.KEISHA_ADRTTM, null);
			
			// 契約者住所補記_部屋番号
			dataMap.set(JBSbatKKIFM667.KEISHA_ADRRM, null);
		}
		else
		{
			// 契約者名
			dataMap.set(JBSbatKKIFM667.KEISHA_NM, custMap.getString(JBSbatCK_T_CUST.CUST_NM));
			
			// 契約者郵便番号
			dataMap.set(JBSbatKKIFM667.KEISHA_PCD, custMap.getString(JBSbatCK_T_CUST.KEISHA_PCD));
			
			// 契約者都道府県名
			dataMap.set(JBSbatKKIFM667.KEISHA_STATE_NM, custMap.getString(JBSbatCK_T_CUST.KEISHA_STATE_NM));
			
			// 契約者市町村名
			dataMap.set(JBSbatKKIFM667.KEISHA_CITY_NM, custMap.getString(JBSbatCK_T_CUST.KEISHA_CITY_NM));
			
			// 契約者大字通称名
			dataMap.set(JBSbatKKIFM667.KEISHA_OAZTSU_NM, custMap.getString(JBSbatCK_T_CUST.KEISHA_OAZTSU_NM));
			
			// 契約者字丁名目
			dataMap.set(JBSbatKKIFM667.KEISHA_AZCHO_NM, custMap.getString(JBSbatCK_T_CUST.KEISHA_AZCHO_NM));
			
			// 契約者番地号
			dataMap.set(JBSbatKKIFM667.KEISHA_BNCHIGO, custMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO));
			
			// 契約者住所補記_建物名
			dataMap.set(JBSbatKKIFM667.KEISHA_ADRTTM, custMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM));
			
			// 契約者住所補記_部屋番号
			dataMap.set(JBSbatKKIFM667.KEISHA_ADRRM, custMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM));
		}
		
		// ファイルを作成
		putFile(dataMap, dlFileObj, dlFileDef, KHRIUK_DATA_JAPANESE_NM, "請求契約番号(" + seikyKeiNo + ")");
	}
	
	/**
	 * ファイル作成
	 * @param  filePathId ファイルパスID
	 * @param  fileId     ファイルID
	 * @throws Exception
	 */
	private void createFile(String filePathId, String fileId) throws Exception
	{
		JBSbatOutputFileUtil fileObj = null;
// IT1-2015-0000116 DEL START
//		JBSbatDefFileUtil fileDef    = null;
//		
//		// ファイルパス + ファイル名を作成
//		String fileName = createOutFileTypeFilePath(filePathId);
// IT1-2015-0000116 DEL END

// IT1-2015-0000116 ADD START
		JBSbatDefFileUtil    fileDef = null;
		String              fileName = null;
		
		// ファイルパス＋ファイル名作成
		// 口座振替受付対象メール送信ファイルの場合
		if (KHRIUK_DAT_FILE_ID.equals(filePathId))
		{
			fileName = sendDirKk + JKKBatConst.S_HALF_SLASH + KHRIUK_DAT_FILE_ID 
						+ JKKStrConst.FILE_NM_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		}
		// 口座振替受付対象情報リストファイルの場合
		else if (KHRIUK_DATA_FILE_ID.equals(filePathId))
		{
			fileName = midDirKk + JKKBatConst.S_HALF_SLASH + KHRIUK_DATA_FILE_ID
						+ JKKStrConst.FILE_NM_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		}
// IT1-2015-0000116 ADD END
		
		// ファイルオブジェクトを作成
		fileObj = new JBSbatOutputFileUtil(fileName);
		
		fileObj.setJobID(commonItem.getJobid());
		
		fileObj.setEncode(JKKStrConst.ENCODE_SJIS);
		
		// defファイル名を取得
		String dfFileNm = this.rnktPath(JBSbatAplConst.getAplConstValue(JKKStrConst.KK_DIR_IND), fileId + def);
		
		// defファイルオブジェクトを作成
		fileDef = new JBSbatDefFileUtil(dfFileNm, fileObj);
		
		try
		{
			// Writerオブジェクトを作成。
			fileObj.createWriter();
		}
		catch (IOException e)
		{
			// ファイルが存在する場合、ファイルを閉じる
			closeFileObj();
			
			// メッセージ内容 ファイルの作成に失敗しました。%1%
			throw new JBSbatBusinessException("EKKB0500CE", new String[] {fileName});
		}
		
		// 口座振替受付対象メール送信ファイルの場合
		if (KHRIUK_DAT_ID.equals(fileId))
		{
			fileObj.setLine(JKKStrConst.LINE_LF);
			mailSendFileObj = fileObj;
			mailSendFileDef = fileDef;
		}
		// ダウンロード用ファイルの場合
		else if (KHRIUK_DATA_ID.equals(fileId))
		{
			// ヘッダーデータをファイルに書き込む
			putFile(headerDataMap(), fileObj, fileDef, KHRIUK_DATA_JAPANESE_NM, "ヘッダー部");
			fileObj.setLine(LINE_CRL);
			dlFileObj = fileObj;
			dlFileDef = fileDef;
		}
	}
	
	/**
	 * ケースファイル作成
	 * @throws Exception
	 */
	private void createCaseFile() throws Exception
	{
// IT1-2015-0000116 DEL START
//		// ファイルパス + ファイル名を作成
//		String caseFileName = JBSbatAplConst.getAplConstValue(CASE_FAILE_PATH) + JKKBatConst.S_HALF_SLASH + CASE_KHRIUK_FILE_ID
//								+ JKKStrConst.FILE_NM_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
// IT1-2015-0000116 DEL END

// IT1-2015-0000116 ADD START
		// ファイルパス + ファイル名を作成
		String caseFileName = JBSbatAplConst.getAplConstValue(CASE_FAILE_PATH) + JKKBatConst.S_HALF_SLASH + CASE_KHRIUK_FILE_ID
								+ CASE_CSV_FILE_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
// IT1-2015-0000116 ADD END
		
		// CASEファイルオブジェクトを作成
		caseFileObj = new JBSbatOutputFileUtil(caseFileName);
		
		caseFileObj.setJobID(commonItem.getJobid());
		
		caseFileObj.setEncode(JKKStrConst.ENCODE_SJIS);
		
		caseFileObj.setLine(JKKStrConst.LINE_LF);
		
		// defファイル名を取得
		String caseDefFileNm = JBSbatAplConst.getAplConstValue(JKKStrConst.KK_DIR_IND) + CASE_KHRIUK_ID + def;
		
		// defファイルオブジェクトを作成
		caseFileDef = new JBSbatDefFileUtil(caseDefFileNm, caseFileObj);
		
		try
		{
			//Writerオブジェクトを作成
			caseFileObj.createWriter();
		}
		catch (IOException e)
		{
			// メッセージ内容 ファイルの作成に失敗しました。%1%
			throw new JBSbatBusinessException("EKKB0500CE", new String[] {caseFileName});
		}
	}
	
	/**
	 * ダウンロードリストのヘッダ
	 * @return headerDataMap
	 * @throws Exception 
	 */
	private JBSbatServiceInterfaceMap headerDataMap() throws Exception
	{
		JBSbatServiceInterfaceMap headerDataMap =  new JBSbatServiceInterfaceMap();
		
		headerDataMap.set(JBSbatKKIFM667.SEIKY_KEI_NO,      "請求先番号");
		headerDataMap.set(JBSbatKKIFM667.CUST_ID,           "お客さまID");
		headerDataMap.set(JBSbatKKIFM667.KEI_SVC_NM,        "契約サービス名");
		headerDataMap.set(JBSbatKKIFM667.KEI_STAT,          "契約状態");
		headerDataMap.set(JBSbatKKIFM667.TOKUSOKU_STAT,     "督促状態");
		headerDataMap.set(JBSbatKKIFM667.BANK_NM,           "金融機関名");
		headerDataMap.set(JBSbatKKIFM667.SHITEN_NM,         "支店名");
		headerDataMap.set(JBSbatKKIFM667.HRI_RSV_GETU,      "振替予定月");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_NM,         "契約者名");
		headerDataMap.set(JBSbatKKIFM667.UEPC_PCD,          "利用場所郵便番号");
		headerDataMap.set(JBSbatKKIFM667.UEPC_STATE_NM,     "利用場所都道府県名");
		headerDataMap.set(JBSbatKKIFM667.UEPC_CITY_NM,      "利用場所市町村名");
		headerDataMap.set(JBSbatKKIFM667.UEPC_OAZTSU_NM,    "利用場所大字通称名");
		headerDataMap.set(JBSbatKKIFM667.UEPC_AZCHO_NM,     "利用場所字丁名目");
		headerDataMap.set(JBSbatKKIFM667.UEPC_BNCHIGO,      "利用場所番地号");
		headerDataMap.set(JBSbatKKIFM667.UEPC_ADRTTM,       "利用場所住所補記_建物名");
		headerDataMap.set(JBSbatKKIFM667.UEPC_ADRRM,        "利用場所住所補記_部屋番号");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_PCD,        "契約者郵便番号");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_STATE_NM,   "契約者都道府県名");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_CITY_NM,    "契約者市町村名");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_OAZTSU_NM,  "契約者大字通称名");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_AZCHO_NM,   "契約者字丁名目");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_BNCHIGO,    "契約者番地号");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_ADRTTM,     "契約者住所補記_建物名");
		headerDataMap.set(JBSbatKKIFM667.KEISHA_ADRRM,      "契約者住所補記_部屋番号");
	
		return headerDataMap;
	}
	
	/**
	 * 口座振替受付対象CASEファイルの出力
	 * @param svcKeiNo   サービス契約番号
	 * @return outMap    CASEファイル登録情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap createCaseMap(String svcKeiNo) throws Exception
	{
		// 出力データ作成
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 顧客タイプ
		outMap.setString(JBSbatKKIFM668.KOKYAKU_TYPE, "加入者");
		// お客様ID
		outMap.setString(JBSbatKKIFM668.CUST_ID, svcKeiNo);
		// 顧客氏名
		outMap.setString(JBSbatKKIFM668.KOKYAKU_NM, null);
		// 顧客氏名（カナ）
		outMap.setString(JBSbatKKIFM668.KOKYAKU_NM_KANA, null);
		// 電話番号
		outMap.setString(JBSbatKKIFM668.TEL_NO, null);
		// 電話番号2
		outMap.setString(JBSbatKKIFM668.TEL_NO_2, null);
		// 郵便番号
		outMap.setString(JBSbatKKIFM668.YUBIN_NO, null);
		// 住所1
		outMap.setString(JBSbatKKIFM668.JUSHO_1, null);
		// 住所2
		outMap.setString(JBSbatKKIFM668.JUSHO_2, null);
		// 住所3
		outMap.setString(JBSbatKKIFM668.JUSHO_3, null);
		// 性別
		outMap.setString(JBSbatKKIFM668.SEIBETSU, null);
		// 生年月日
		outMap.setString(JBSbatKKIFM668.SEINEN_GAPPI, null);
		// 状態
		outMap.setString(JBSbatKKIFM668.JYOUTAI, "クローズ");
		// ステータス
		outMap.setString(JBSbatKKIFM668.STATUS, "処理中");
		// 作成日時
		outMap.setString(JBSbatKKIFM668.SAKUSEI_DATE, JKKBatCommon.formatDatetimeSS(JKKBatCommon.getSysDateTime()));
		// 受付者
		outMap.setString(JBSbatKKIFM668.UKETSUKE, taioRrkAddUser);
		// 担当者
		outMap.setString(JBSbatKKIFM668.TANTOU, taioRrkAddUser);
		// キュー名
		outMap.setString(JBSbatKKIFM668.QUE_NM, null);
		// 受付種別
		outMap.setString(JBSbatKKIFM668.UKETSUKE_SBT, null);
		// タイトル
		outMap.setString(JBSbatKKIFM668.TITLE, "口座振替申込書受付対象者");
		// カテゴリ１
		outMap.setString(JBSbatKKIFM668.CTGR_1, "口座振替申込書受付");
		// カテゴリ２
		outMap.setString(JBSbatKKIFM668.CTGR_2, null);
		// カテゴリ３
		outMap.setString(JBSbatKKIFM668.CTGR_3, null);
		// カテゴリ４
		outMap.setString(JBSbatKKIFM668.CTGR_4, null);
		// カテゴリ５
		outMap.setString(JBSbatKKIFM668.CTGR_5, null);
		// カテゴリ６
		outMap.setString(JBSbatKKIFM668.CTGR_6, null);
		// カテゴリ７
		outMap.setString(JBSbatKKIFM668.CTGR_7, null);
		// カテゴリ８
		outMap.setString(JBSbatKKIFM668.CTGR_8, null);
		// カテゴリ９
		outMap.setString(JBSbatKKIFM668.CTGR_9, null);
		// カテゴリ１０
		outMap.setString(JBSbatKKIFM668.CTGR_10, null);
		// カテゴリ１１
		outMap.setString(JBSbatKKIFM668.CTGR_11, null);
		// 問合せ履歴
		outMap.setString(JBSbatKKIFM668.TOIAWASE_RIREKI, tawsRkText);
		// 問合せ客ID
		outMap.setString(JBSbatKKIFM668.TOIAWASE_KYAKU_ID, null);
		// eoID
		outMap.setString(JBSbatKKIFM668.EO_ID, null);
		// 申込書番号
		outMap.setString(JBSbatKKIFM668.MSKMSHO_NO, null);
		// エスカレーション日時
		outMap.setString(JBSbatKKIFM668.ESCLA_DATE, null);
		// コールバック時間指定タイプ
		outMap.setString(JBSbatKKIFM668.CALLBK_SHITEI_TYPE_CD, null);
		// 業務個別設定組織コード
		outMap.setString(JBSbatKKIFM668.WKKBT_ORG_CD, null);
		
		return outMap;
	}
	
	/**
	 * 口座振替受付対象CASEファイルの問合せ履歴本文を作成
	 * @param kozaMap    口座情報
	 * @param seikyWayCd 請求方法コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void createTawsRkText(JBSbatCommonDBInterface kozaMap, String seikyWayCd) throws Exception
	{
		// 支店名
		String shitenNm = "";
		
		// 請求方法が「預金口座振替」の場合
		if (JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(seikyWayCd))
		{
			shitenNm = "支店名　　　　" + JBSbatStringUtil.Rtrim(kozaMap.getString(JBSbatKK_M_BANK.BANK_SHITEN_NM));
		}
		
		// 問い合せ履歴本文を設定
		tawsRkText = "口座振替申込書を受付（登録）した対象者です。" + JKKStrConst.LINE_SEPARATOR +
					"メール送信対象外のため、メール送信していません。" + JKKStrConst.LINE_SEPARATOR +
					JKKStrConst.LINE_SEPARATOR +
					"登録内容は以下のとおりです。" + JKKStrConst.LINE_SEPARATOR +
					"--------------------------------------------------------------------" + JKKStrConst.LINE_SEPARATOR +
					JKKStrConst.LINE_SEPARATOR +
					"　金融機関名　　" +  JBSbatStringUtil.Rtrim(kozaMap.getString(JBSbatKK_M_BANK.BANK_NM)) + JKKStrConst.LINE_SEPARATOR +
					"　" + shitenNm + JKKStrConst.LINE_SEPARATOR +
					"　振替予定年月　" + hriRsvY + JKKStrConst.DATE_JAPANESE_YEAR + hriRsvM + JKKStrConst.DATE_JAPANESE_MONTH + JKKStrConst.LINE_SEPARATOR +
					JKKStrConst.LINE_SEPARATOR +
					"　振替日（払込日）は毎月26日（土日祝日の場合は翌営業日）となります。" + JKKStrConst.LINE_SEPARATOR +
					JKKStrConst.LINE_SEPARATOR +
					"--------------------------------------------------------------------";
	}
	
	/**
	 * 振替予定年月の算出
	 * @param rscAplyYmd         予約適用年月日
	 * @param seikyWayAplyAdjYmd 請求方法適用調整年月日
	 * @param seikyKeiNo         請求契約番号
	 * @return boolean trueの場合、振替予定年月を設定。falseの場合、振替予定年月はnull値。
	 * @throws Exception 
	 */
	private boolean hriRsvYmSnst(String rscAplyYmd, String seikyWayAplyAdjYmd, String seikyKeiNo) throws Exception
	{
		// 振替予定年月の初期化
		hriRsvY = null;
		hriRsvM = null;
		
		// ダウンロード用振替予定年月の初期化
		dlHriRsvYm = null;
		
		// 料金スケジュール定義より予約適用年月日から直近の請求年月を取得
		String[] schdlTeigiKey = {rscAplyYmd};
		this.executeCH_M_PRC_SCHDL_TEIGI_KK_SELECT_020(schdlTeigiKey);
		JBSbatCommonDBInterface schdlTeigiMap = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
		
		// 料金スケジュール定義より取得結果がない場合
		if (schdlTeigiMap == null)
		{
			// ログ出力 %1%テーブルに%2%が存在しません。（key：%3%）
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0630NW,
													new String[] {"料金スケジュール定義",
																	"レコード",
																	"予約適用年月日(" + rscAplyYmd + ")," +
																	" 請求契約番号(" + seikyKeiNo + ")"});
			return false;
		}
		
		//  請求年月を取得
		String seikyYm = schdlTeigiMap.getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM);
		
		// 請求年月の26日を設定
		String seikyYmd = seikyYm + "26";
		
		// 請求年月の26日 <= 請求方法適用調整年月日の場合
		if (seikyWayAplyAdjYmd != null && seikyYmd.compareTo(seikyWayAplyAdjYmd) <= 0)
		{
			// 請求年月の翌月を設定
			seikyYmd = JBSbatDateUtil.adjustMonth(seikyYmd, 1);
		}
		
		// 振替予定請求年月の翌月を設定
		seikyYmd = JBSbatDateUtil.adjustMonth(seikyYmd, 1);
		
		// 振替予定年(yyyy)と振替予定年(mm) を設定
		hriRsvY = seikyYmd.substring(0, 4);
		hriRsvM = seikyYmd.substring(4, 6);
		
		// ダウンロード用振替予定年月(yyyy年mm月) を設定
		dlHriRsvYm = hriRsvY + hriRsvM;
		
		// 振替予定月のゼロサプレス処理
		if ("0".equals(hriRsvM.substring(0, 1)))
		{
			hriRsvM = hriRsvM.substring(1, 2);
		}
		
		return true;
	}
	
	/**
	 * パス文字列の連結
	 * 連結するパス文字列にパス区切り文字の設定
	 * @param path1 パス文字列
	 * @param path2 パス文字列
	 * @return 連結したパス文字列
	 */
	private String rnktPath(String path1, String path2)
	{
		String pathDlmt = JKKStrConst.PATH_DLMT_UNIX;
		if (path1.indexOf(JKKStrConst.PATH_DLMT_WIN) > -1 || path2.indexOf(JKKStrConst.PATH_DLMT_WIN) > -1)
		{
			pathDlmt = JKKStrConst.PATH_DLMT_WIN;
		}
		
		if (!path1.endsWith(pathDlmt))
		{
			return path1 + pathDlmt + path2;
		}
		
		return path1 + path2;
	}
	
// IT1-2015-0000116 DEL START
//	/**
//	 * ファイルパスを作成
//	 * @param  filePath ファイルパス
//	 * @return 出力先ファイルパス
//	 * @throws Exception 例外
//	 */
//	private String createOutFileTypeFilePath(String filePath) throws Exception
//	{
//		String outPutFile = null;
//		
//		// フラグファイルの場合
//		if (FTP_KHRIUK_FILE_ID.equals(filePath))
//		{
//			outPutFile = sendDirKk + JKKBatConst.S_HALF_SLASH + filePath + FLG_FILE_TIMESTAMP;
//		}
//		// メール送信・件数ファイルの場合
//		else if (KHRIUK_DAT_FILE_ID.equals(filePath) || KHRIUK_CNT_FILE_ID.equals(filePath))
//		{
//			outPutFile = sendDirKk + JKKBatConst.S_HALF_SLASH + filePath + JKKStrConst.FILE_NM_TIMESTAMP;
//		}
//		else
//		{
//			outPutFile = midDirKk + JKKBatConst.S_HALF_SLASH + filePath + JKKStrConst.FILE_NM_TIMESTAMP;
//		}
//		
//		// ファイルパスの作成
//		outPutFile = outPutFile.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
//		
//		return outPutFile;
//	}
// IT1-2015-0000116 DEL END
	
	/**
	 * ファイルの出力処理
	 * @param dataMap    出力データ
	 * @param fileObj    出力ファイル
	 * @param defFileObj defファイル
	 * @param fileName   出力ファイル名
	 * @param fileTg     出力対象(請求契約番号または、"ヘッダー部")
	 * @throws Exception 例外
	 */
	private void putFile(JBSbatServiceInterfaceMap dataMap, JBSbatOutputFileUtil fileObj,
							JBSbatDefFileUtil defFileObj, String fileName, String fileTg) throws Exception
	{
		try
		{
			// 出力データをファイルに書き込む
			fileObj.print(dataMap, defFileObj);
		}
		catch (IOException e)
		{
			// ファイルが存在する場合、ファイルを閉じる
			closeFileObj();
			
			// メッセージ内容 %1%ファイルの出力に失敗しました。(%2%)
			throw new JBSbatBusinessException("EKKB0250CE", new String[] {fileName, fileTg});
		}
	}
	
	/**
	 *支払方法通知メール制御コードを登録
	 * @param seikyKeiNo      請求契約番号
	 * @param rscAplyYmd      予約適用年月日
	 * @param paywaytcmlCtlCd 支払方法通知メール制御コード
	 * @throws Exception 
	 */
	private void insertPaywaytcmlCtlCd(String seikyKeiNo, String rscAplyYmd, String paywaytcmlCtlCd) throws Exception
	{
		// 請求契約番号に紐付く最新世代のレコードを取得
		String[] seikyKeiKey = {rscAplyYmd,
								seikyKeiNo
								};
		this.executeKK_T_SEIKY_KEI_KK_SELECT_063(seikyKeiKey);
		JBSbatCommonDBInterface seikyKeiMap = db_KK_T_SEIKY_KEI.selectNext();
		
		// 登録内容を設定
		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();
		// 1.請求契約番号
		param.setValue(seikyKeiNo);
		// 2.世代登録年月日時分秒
		param.setValue(JCCBatCommon.getSysDateTimeStamp());
		// 3.請求契約ステータス
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_STAT));
		// 4.ＳＹＳＩＤ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SYSID));
		// 5.マンションオーナーＩＤ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.MANSION_OWNR_ID));
		// 6.申込明細番号
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.MSKM_DTL_NO));
		// 7.請求方法コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CD));
		// 8.次回請求方法コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.NEXT_SEIKY_WAY_DIV));
		// 9.契約締結年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.KEI_CNC_YMD));
		// 10.請求契約解約年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DSL_YMD));
		// 11.請求契約解約理由コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DLRE_CD));
		// 12.請求契約解約理由メモ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_DLRE_MEMO));
		// 13.請求サイクルコード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_CYCLE_CD));
		// 14.請求方法変更年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_CHGE_YMD));
		// 15.請求契約カナ名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_KANA));
		// 16.請求方法番号（口座）
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_KOZA));;
		// 17.請求方法番号（クレジットカード）
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_NO_CRECARD));
		// 18.情報表示コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.INFO_DSP_CD));
		// 19.請求書発行要否
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKYUS_HAKKO_YH));
		// 20.請求書送付先＿契約者住所差異フラグ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SKS_SHS_KSH_AD_SAI_FLG));
		// 21.請求書送付先名＿お客様名差異フラグ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SKS_SHS_NM_CUST_NM_SAI_FLG));
		// 22.送付先法人格種別コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SHS_HOJIN_SBT_CD));
		// 23.送付先法人格前後指定コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SHS_HOJIN_ZENGO_SHITEI_CD));
		// 24.送付先カナ名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SHS_KANA));
		// 25.送付先名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_NM));
		// 26.送付先部課名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_BKM));
		// 27.送付先担当者名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_TNTSHA_NM));
		// 28.送付先住所コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_AD_CD));
		// 29.送付先郵便番号
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_PCD));
		// 30.送付先都道府県名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_STATE_NM));
		// 31.送付先市区町村名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_CITY_NM));
		// 32.送付先大字通称名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_OAZTSU_NM));
		// 33.送付先字丁目名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_AZCHO_NM));
		// 34.送付先住所補記・建物名
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRTTM));
		// 35.送付先住所補記・部屋番号
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRRM));
		// 36.送付先番地号
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_BNCHIGO));
		// 37.送付先住所手動入力フラグ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_AD_MAN_INPUT_FLG));
		// 38.送付先電話番号
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_TELNO));
		// 39.送付先ＦＡＸ番号
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_FAX_NO));
		// 40.送付先メールアドレス
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_MLAD));
		// 41.請求書送付先変更年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKYUS_SOHUS_CHGE_YMD));
		// 42.請求方法適用調整年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_WAY_APLY_ADJ_YMD));
		// 43.強制窓口フラグ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.KYOSEI_MADOGUCHI_FLG));
		// 44.予約適用開始希望年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.RSV_TSTA_KIBO_YMD));
		// 45.予約適用年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.RSV_APLY_YMD));
		// 46.予約取消年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.RSV_CL_YMD));
		// 47.予約適用コード
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.RSV_APLY_CD));
		// 48.異動区分
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.IDO_DIV));
		// 49.初回請求年月
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.FIRST_SEIKY_YM));
		// 50.初回支払申込書送付要否
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_SOHU_YH));
		// 51.初回支払申込書送付年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_SOHU_YMD));
		// 52.初回支払申込書受領年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.FIRST_PAY_MSKMSHO_RCP_YMD));
		// 53.登録年月日時分秒
		param.setValue(JKKBatCommon.getOpeDateTimeStamp(commonItem));
		// 54.登録オペレータアカウント
		param.setValue(commonItem.getBatchUserId());
		// 55.更新年月日時分秒
		param.setValue(JKKBatCommon.getOpeDateTimeStamp(commonItem));
		// 56.更新オペレータアカウント
		param.setValue(commonItem.getBatchUserId());
		// 57.削除年月日時分秒
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.DEL_DTM));
		// 58.削除オペレータアカウント
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.DEL_OPEACNT));
		// 59.無効フラグ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.MK_FLG));
		// 60.登録運用年月日
		param.setValue(super.opeDate);
		// 61.登録処理ＩＤ
		param.setValue(super.jobid);
		// 62.更新運用年月日
		param.setValue(super.opeDate);
		// 63.更新処理ＩＤ
		param.setValue(super.jobid);
		// 64.削除運用年月日
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.DEL_UNYO_YMD));
		// 65.削除処理ＩＤ
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.DEL_TRN_ID));
		// 66.支払方法通知メール制御コード
		param.setValue(paywaytcmlCtlCd);
		// 67.支払方法通知メール制御コード変更年月日
		param.setValue(super.opeDate);
// ANK-3396-00-00対応 2019/02/04 星野 ADD START
		// 68.強制解約予告回数
		param.setValue(seikyKeiMap.getString(JBSbatKK_T_SEIKY_KEI.KYOSEI_DSL_YKK_CNT));
// ANK-3396-00-00対応 2019/02/04 星野 ADD END
		
		// PK全項目登録を実行
		executeKK_T_SEIKY_KEI_PKINSERT(param.getList().toArray());
	}
	
	/**
	 * 件数ファイルを作成
	 * @param filePathId   ファイルパスID
	 * @throws Exception
	 */
// IT1-2015-0000116 MOD START
//	private void createCntFile() throws Exception
	private void createCntFile(String filePathId) throws Exception
// IT1-2015-0000116 MOD END
	{
// IT1-2015-0000116 DEL START
//		String cnt = String.valueOf(outCount);
//		String fileName = createOutFileTypeFilePath(KHRIUK_CNT_FILE_ID);
// IT1-2015-0000116 DEL END
	
// IT1-2015-0000116 ADD START
		String fileName = null;
		
		// ファイルパス＋ファイル名作成
		// 口座振替受付対象メール送信件数ファイルの場合
		if (KHRIUK_CNT_FILE_ID.equals(filePathId))
		{
			fileName = sendDirKk + JKKBatConst.S_HALF_SLASH + KHRIUK_CNT_FILE_ID 
						+ JKKStrConst.FILE_NM_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		}
		// 口座振替受付対象ＣＡＳＥ件数ファイルの場合
		else if (CASE_KHRIUK_FILE_ID.equals(filePathId))
		{
			fileName = JBSbatAplConst.getAplConstValue(CASE_FAILE_PATH) + JKKBatConst.S_HALF_SLASH + CASE_KHRIUK_FILE_ID
						+ CASE_CNT_FILE_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		}
// IT1-2015-0000116 ADD END
		
		JBSbatOutputFileUtil cntFile = new JBSbatOutputFileUtil(fileName);
		
		try
		{
			cntFile.setEncode(JKKStrConst.ENCODE_SJIS);
// IT1-2015-0000116 DEL START
//			cntFile.setLine(JKKStrConst.LINE_LF);
// IT1-2015-0000116 DEL END
			cntFile.createWriter();
// IT1-2015-0000116 DEL START
//			cntFile.write(JKKBatConst.S_DBL_QUOT + JBSbatStringUtil.padNumFormString(cnt, 5) + JKKBatConst.S_DBL_QUOT);
// IT1-2015-0000116 DEL END
			
// IT1-2015-0000116 ADD START
			// 口座振替受付対象メール送信件数ファイルの場合
			if (KHRIUK_CNT_FILE_ID.equals(filePathId))
			{
				cntFile.setLine(JKKStrConst.LINE_LF);
				// 0埋め5桁で出力
				cntFile.write(JKKBatConst.S_DBL_QUOT + JBSbatStringUtil.padNumFormString(String.valueOf(outCount), 5) + JKKBatConst.S_DBL_QUOT);
			}
			// 口座振替受付対象ＣＡＳＥ件数ファイルの場合
			else if (CASE_KHRIUK_FILE_ID.equals(filePathId))
			{
				cntFile.setLine(LINE_CRL);
				cntFile.write(JKKBatConst.S_DBL_QUOT + String.valueOf(caseCount) + JKKBatConst.S_DBL_QUOT);
			}
// IT1-2015-0000116 ADD END
		}
		catch (IOException e)
		{
			// ファイルが存在する場合、ファイルを閉じる
			closeFileObj();
			
			// メッセージ内容 ファイルの作成に失敗しました。%1%
			throw new JBSbatBusinessException("EKKB0500CE", new String[] {fileName});
		}
		finally
		{
			// 件数ファイルが存在する場合
			if (cntFile != null)
			{
				// ファイルを閉じる
				cntFile.close();
			}
		}
	}
	
	/**
	 * フラグファイルを作成
	 * @param filePathId   ファイルパスID
	 * @throws Exception
	 */
// IT1-2015-0000116 MOD START
//	private void createFlgFile() throws Exception
	private void createFlgFile(String filePathId) throws Exception
// IT1-2015-0000116 MOD END
	{
// IT1-2015-0000116 DEL START
//		String fileName = createOutFileTypeFilePath(FTP_KHRIUK_FILE_ID);
// IT1-2015-0000116 DEL END
		
// IT1-2015-0000116 ADD START
		String fileName = null;
		
		// ファイルパス＋ファイル名作成
		// 口座振替受付対象メール送信フラグの場合
		if (FTP_KHRIUK_FILE_ID.equals(filePathId))
		{
			fileName = sendDirKk + JKKBatConst.S_HALF_SLASH + FTP_KHRIUK_FILE_ID 
						+ MIAL_FLG_FILE_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		}
		// 口座振替受付対象ＣＡＳＥフラグファイルの場合
		else if (CASE_KHRIUK_FILE_ID.equals(filePathId))
		{
			fileName = JBSbatAplConst.getAplConstValue(CASE_FAILE_PATH) + JKKBatConst.S_HALF_SLASH + CASE_KHRIUK_FILE_ID
						+ CASE_FLG_FILE_TIMESTAMP.replaceAll(JKKStrConst.FILE_TIMESTAMP_FORMAT, fileTimeStamp);
		}
// IT1-2015-0000116 ADD END
		JBSbatOutputFileUtil flgFile = new JBSbatOutputFileUtil(fileName);
		
		try
		{
			flgFile.setEncode(JKKStrConst.ENCODE_SJIS);
// IT1-2015-0000116 DEL START
//			flgFile.setLine(JKKStrConst.LINE_LF);
// IT1-2015-0000116 DEL END
			flgFile.createWriter();
		}
		catch (IOException e)
		{
			// ファイルが存在する場合、ファイルを閉じる
			closeFileObj();
			
			// メッセージ内容 ファイルの作成に失敗しました。%1%
			throw new JBSbatBusinessException("EKKB0500CE", new String[] {fileName});
		}
		finally
		{
			// フラグファイルが存在する場合
			if (flgFile != null)
			{
				// ファイルを閉じる
				flgFile.close();
			}
		}
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_065)で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_SEIKY_KEI_KK_SELECT_065(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_065);
	}
	
	/**
	 * SQLKEY(KK_SELECT_320)で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_320(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_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_320);
	}

	/**
	 * SQLKEY(KK_SELECT_052)で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_SVKEI_KAISEN_UW_KK_SELECT_052(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_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_052);
	}

	/**
	 * SQLKEY(KK_SELECT_065)で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_KK_SELECT_065(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_065);
	}

	/**
	 * SQLKEY(KK_SELECT_020)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_SCHDL_TEIGI_KK_SELECT_020(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_KK_SELECT_020);
	}

	/**
	 * SQLKEY(KK_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		 	メールコード
	 *		 	運用日
	 *		 	運用日
	 *		 	運用日
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_M_MAIL_KK_SELECT_005(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());

		// DBアクセスを実行します
		db_CC_M_MAIL.selectBySqlDefine(paramList, CC_M_MAIL_KK_SELECT_005);
	}

	/**
	 * SQLKEY(KK_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 executeKK_T_KOZA_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KOZA.selectBySqlDefine(paramList, KK_T_KOZA_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_063)で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_SEIKY_KEI_KK_SELECT_063(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_063);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	請求契約番号				SEIKY_KEI_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	請求契約ステータス				SEIKY_KEI_STAT
	 *		 	ＳＹＳＩＤ				SYSID
	 *		 	マンションオーナーＩＤ				MANSION_OWNR_ID
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	請求方法コード				SEIKY_WAY_CD
	 *		 	次回請求方法コード				NEXT_SEIKY_WAY_DIV
	 *		 	契約締結年月日				KEI_CNC_YMD
	 *		 	請求契約解約年月日				SEIKY_KEI_DSL_YMD
	 *		 	請求契約解約理由コード				SEIKY_KEI_DLRE_CD
	 *		 	請求契約解約理由メモ				SEIKY_KEI_DLRE_MEMO
	 *		 	請求サイクルコード				SEIKY_CYCLE_CD
	 *		 	請求方法変更年月日				SEIKY_WAY_CHGE_YMD
	 *		 	請求契約カナ名				SEIKY_KEI_KANA
	 *		 	請求方法番号（口座）				SEIKY_WAY_NO_KOZA
	 *		 	請求方法番号（クレジットカード）				SEIKY_WAY_NO_CRECARD
	 *		 	情報表示コード				INFO_DSP_CD
	 *		 	請求書発行要否				SEIKYUS_HAKKO_YH
	 *		 	請求書送付先＿契約者住所差異フラグ				SKS_SHS_KSH_AD_SAI_FLG
	 *		 	請求書送付先名＿お客様名差異フラグ				SKS_SHS_NM_CUST_NM_SAI_FLG
	 *		 	送付先法人格種別コード				SHS_HOJIN_SBT_CD
	 *		 	送付先法人格前後指定コード				SHS_HOJIN_ZENGO_SHITEI_CD
	 *		 	送付先カナ名				SHS_KANA
	 *		 	送付先名				SOHUS_NM
	 *		 	送付先部課名				SOHUS_BKM
	 *		 	送付先担当者名				SOHUS_TNTSHA_NM
	 *		 	送付先住所コード				SOHUS_AD_CD
	 *		 	送付先郵便番号				SOHUS_PCD
	 *		 	送付先都道府県名				SOHUS_STATE_NM
	 *		 	送付先市区町村名				SOHUS_CITY_NM
	 *		 	送付先大字通称名				SOHUS_OAZTSU_NM
	 *		 	送付先字丁目名				SOHUS_AZCHO_NM
	 *		 	送付先住所補記・建物名				SOHUS_ADRTTM
	 *		 	送付先住所補記・部屋番号				SOHUS_ADRRM
	 *		 	送付先番地号				SOHUS_BNCHIGO
	 *		 	送付先住所手動入力フラグ				SOHUS_AD_MAN_INPUT_FLG
	 *		 	送付先電話番号				SOHUS_TELNO
	 *		 	送付先ＦＡＸ番号				SOHUS_FAX_NO
	 *		 	送付先メールアドレス				SOHUS_MLAD
	 *		 	請求書送付先変更年月日				SEIKYUS_SOHUS_CHGE_YMD
	 *		 	請求方法適用調整年月日				SEIKY_WAY_APLY_ADJ_YMD
	 *		 	強制窓口フラグ				KYOSEI_MADOGUCHI_FLG
	 *		 	予約適用開始希望年月日				RSV_TSTA_KIBO_YMD
	 *		 	予約適用年月日				RSV_APLY_YMD
	 *		 	予約取消年月日				RSV_CL_YMD
	 *		 	予約適用コード				RSV_APLY_CD
	 *		 	異動区分				IDO_DIV
	 *		 	初回請求年月				FIRST_SEIKY_YM
	 *		 	初回支払申込書送付要否				FIRST_PAY_MSKMSHO_SOHU_YH
	 *		 	初回支払申込書送付年月日				FIRST_PAY_MSKMSHO_SOHU_YMD
	 *		 	初回支払申込書受領年月日				FIRST_PAY_MSKMSHO_RCP_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 *		 	支払方法通知メール制御コード				PAYWAYTCML_CTL_CD
	 *		 	支払方法通知メール制御コード変更年月日				PAYWAYTCML_CTL_CD_CHG_YMD
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SEIKY_KEI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("SEIKY_KEI_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("SEIKY_KEI_STAT", setParam[2]);
		setMap.setValue("SYSID", setParam[3]);
		setMap.setValue("MANSION_OWNR_ID", setParam[4]);
		setMap.setValue("MSKM_DTL_NO", setParam[5]);
		setMap.setValue("SEIKY_WAY_CD", setParam[6]);
		setMap.setValue("NEXT_SEIKY_WAY_DIV", setParam[7]);
		setMap.setValue("KEI_CNC_YMD", setParam[8]);
		setMap.setValue("SEIKY_KEI_DSL_YMD", setParam[9]);
		setMap.setValue("SEIKY_KEI_DLRE_CD", setParam[10]);
		setMap.setValue("SEIKY_KEI_DLRE_MEMO", setParam[11]);
		setMap.setValue("SEIKY_CYCLE_CD", setParam[12]);
		setMap.setValue("SEIKY_WAY_CHGE_YMD", setParam[13]);
		setMap.setValue("SEIKY_KEI_KANA", setParam[14]);
		setMap.setValue("SEIKY_WAY_NO_KOZA", setParam[15]);
		setMap.setValue("SEIKY_WAY_NO_CRECARD", setParam[16]);
		setMap.setValue("INFO_DSP_CD", setParam[17]);
		setMap.setValue("SEIKYUS_HAKKO_YH", setParam[18]);
		setMap.setValue("SKS_SHS_KSH_AD_SAI_FLG", setParam[19]);
		setMap.setValue("SKS_SHS_NM_CUST_NM_SAI_FLG", setParam[20]);
		setMap.setValue("SHS_HOJIN_SBT_CD", setParam[21]);
		setMap.setValue("SHS_HOJIN_ZENGO_SHITEI_CD", setParam[22]);
		setMap.setValue("SHS_KANA", setParam[23]);
		setMap.setValue("SOHUS_NM", setParam[24]);
		setMap.setValue("SOHUS_BKM", setParam[25]);
		setMap.setValue("SOHUS_TNTSHA_NM", setParam[26]);
		setMap.setValue("SOHUS_AD_CD", setParam[27]);
		setMap.setValue("SOHUS_PCD", setParam[28]);
		setMap.setValue("SOHUS_STATE_NM", setParam[29]);
		setMap.setValue("SOHUS_CITY_NM", setParam[30]);
		setMap.setValue("SOHUS_OAZTSU_NM", setParam[31]);
		setMap.setValue("SOHUS_AZCHO_NM", setParam[32]);
		setMap.setValue("SOHUS_ADRTTM", setParam[33]);
		setMap.setValue("SOHUS_ADRRM", setParam[34]);
		setMap.setValue("SOHUS_BNCHIGO", setParam[35]);
		setMap.setValue("SOHUS_AD_MAN_INPUT_FLG", setParam[36]);
		setMap.setValue("SOHUS_TELNO", setParam[37]);
		setMap.setValue("SOHUS_FAX_NO", setParam[38]);
		setMap.setValue("SOHUS_MLAD", setParam[39]);
		setMap.setValue("SEIKYUS_SOHUS_CHGE_YMD", setParam[40]);
		setMap.setValue("SEIKY_WAY_APLY_ADJ_YMD", setParam[41]);
		setMap.setValue("KYOSEI_MADOGUCHI_FLG", setParam[42]);
		setMap.setValue("RSV_TSTA_KIBO_YMD", setParam[43]);
		setMap.setValue("RSV_APLY_YMD", setParam[44]);
		setMap.setValue("RSV_CL_YMD", setParam[45]);
		setMap.setValue("RSV_APLY_CD", setParam[46]);
		setMap.setValue("IDO_DIV", setParam[47]);
		setMap.setValue("FIRST_SEIKY_YM", setParam[48]);
		setMap.setValue("FIRST_PAY_MSKMSHO_SOHU_YH", setParam[49]);
		setMap.setValue("FIRST_PAY_MSKMSHO_SOHU_YMD", setParam[50]);
		setMap.setValue("FIRST_PAY_MSKMSHO_RCP_YMD", setParam[51]);
		setMap.setValue("ADD_DTM", setParam[52]);
		setMap.setValue("ADD_OPEACNT", setParam[53]);
		setMap.setValue("UPD_DTM", setParam[54]);
		setMap.setValue("UPD_OPEACNT", setParam[55]);
		setMap.setValue("DEL_DTM", setParam[56]);
		setMap.setValue("DEL_OPEACNT", setParam[57]);
		setMap.setValue("MK_FLG", setParam[58]);
		setMap.setValue("ADD_UNYO_YMD", setParam[59]);
		setMap.setValue("ADD_TRN_ID", setParam[60]);
		setMap.setValue("UPD_UNYO_YMD", setParam[61]);
		setMap.setValue("UPD_TRN_ID", setParam[62]);
		setMap.setValue("DEL_UNYO_YMD", setParam[63]);
		setMap.setValue("DEL_TRN_ID", setParam[64]);
		setMap.setValue("PAYWAYTCML_CTL_CD", setParam[65]);
		setMap.setValue("PAYWAYTCML_CTL_CD_CHG_YMD", setParam[66]);
// ANK-3396-00-00対応 2019/02/04 星野 ADD START
		setMap.setValue("KYOSEI_DSL_YKK_CNT", setParam[67]);
// ANK-3396-00-00対応 2019/02/04 星野 ADD END
	
		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
