/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACTsushinRyoUppTchInfSks
*	ソースファイル名	：JBSbatACTsushinRyoUppTchInfSks.java
*	作成者				：富士通　
*	作成日				：2012年03月09日
*＜機能概要＞
*　通信量上限通知情報作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/09   富士通		新規作成
*	v3.00		2012/08/31   FJ）冨井	【ST2-2012-0001602】埋め込み文字変換対応
*	v3.01.00	2012/09/02   FJ）成田	【TG1-2012-0000145】パラメータ取得部品の共通化、それに伴う不要な初期化削除、クローズ処理を追加。
*	v3.02.00	2012/10/17   FJ）垣内	【ST1-2012-0000741】メール通知文の文章内に規約違反
*	v4.00.00	2013/03/07   FJ) 早崎	【KT1-2013-0000307】メール本文項目置き換え文字取得スキーマ変更
*	v4.01.00	2013/03/14   FJ) 浜口	【KT1-2013-0000306】通信量上限超過通知の出力単位不正対応
*	v4.02.00	2013/03/20   FJ) 浜口	【KT1-2013-0000305】BCCにスペースを設定
*	v4.03.00	2013/04/11   FJ) 浜口	【残課題一覧No.5】ファイル生成制御上書き対応
*	v4.04.00	2013/05/25   FJ) 早崎	【KT1-2013-0000490】オプションサービス契約スキーマ参照条件修正
*	v4.05.00	2013/06/07   FJ) 早崎	【ST4-2013-0000448】KK_T_SVC_KEI(AC_SELECT_015)修正に伴いパラメータを修正
*	v4.06.00	2013/06/15   FJ) 垣内	【KT1-2013-0000670】住所結合項目不足対応
*	v5.00.00	2013/07/11   FJ) 桑島	【TG1-2013-0000662】請求年月対応
*	v5.01.00	2013/08/07   FJ) 早崎	【TG1-2013-0000806】文字化け対応
*	v5.02.00	2013/08/18   FJ) 小柴	【OM-2013-0000124】サービス契約検索処理の引数を追加
*	v5.03.00	2013/09/05   FJ) 伊藤	【OM-2013-0001567】メールPFによる送信日がバッチ運用日になっているのを送信日（運用日＋１日）に修正。
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatRknBusinessUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM134;
import eo.business.util.table.JBSbatCC_M_MAIL;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_M_PPLAN;
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.business.util.table.JBSbatZM_M_TCHI_MAIL_SENDS;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCHUtilCommon;
import eo.common.util.JPCUtilCommon;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACTsushinRyoUppTchInfSks extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(メール)*/
	private static final String D_TBL_NAME_CC_M_MAIL = "CC_M_MAIL";

	/** テーブル(オプションサービス契約＜ＩＳＰ＞)*/
	private static final String D_TBL_NAME_KK_T_OPSVKEI_ISP = "KK_T_OPSVKEI_ISP";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";

	/** SQL定義キー(AC_SELECT_002)*/
	private static final String CC_M_MAIL_AC_SELECT_002 = "AC_SELECT_002";

	/** SQL定義キー(AC_SELECT_002)*/
	private static final String KK_T_OPSVKEI_ISP_AC_SELECT_002 = "AC_SELECT_002";

	/** SQL定義キー(AC_SELECT_015)*/
	private static final String KK_T_SVC_KEI_AC_SELECT_015 = "AC_SELECT_015";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String KK_M_PPLAN_AC_SELECT_001 = "AC_SELECT_001";

	/** テーブルアクセスクラス(メール)*/
	private JBSbatSQLAccess db_CC_M_MAIL = null;

	/** テーブルアクセスクラス(オプションサービス契約＜ＩＳＰ＞)*/
	private JBSbatSQLAccess db_KK_T_OPSVKEI_ISP = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** ハガキ用通話料上限通知メッセージマップ */
	private HashMap<String, String> upplTchMsgMap 			= null;
	
	/** ファイルID(上限通知メール情報) */
	private String 				uplMailInfId 			= null;
	/** 上限通知メール情報ファイル */
	private JBSbatBusinessFileUtil uplMailInfFile 		= null;
	/** 上限通知メール情報ファイルパス */
	private String 				uplMailInfFilePath 	= null;
	/** 上限通知メール件数 */
	private int 					uplMailCnt 				= 0;
	
	/** ファイルID(上限通知件数) */
	private String 				upplTchCntId 			= null;
	/** 上限通知件数ファイル */
	private JBSbatBusinessFileUtil upplTchCntFile 			= null;
	/** 上限通知件数ファイルパス */
	private String 				upplTchCntFilePath 		= null;
	/** 上限通知件数件数 */
	private int 					upplTchCntCnt 			= 0;
	
	/** ファイルID(上限通知フラグ) */
	private String 				upplTchFlgId 			= null;
	/** 上限通知フラグファイル */
	private JBSbatBusinessFileUtil upplTchFlgFile 			= null;
	/** 上限通知フラグファイルパス */
	private String 				upplTchFlgFilePath 		= null;
	
	/** ファイルID(ハガキ用通信量上限通知情報) */
	private String 				hgkTshUplId 		= null;
	/** ハガキ用通信量上限通知情報ファイル */
	private JBSbatBusinessFileUtil hgkTshUplFile 		= null;
	/** ハガキ用通信量上限通知情報ファイルパス */
	private String 				hgkTshUplFilePath 	= null;
	/** ハガキ用通信量上限通知件数 */
	private int 					hgkTshUplTchCnt 			= 0;
	
	/** メールアドレス */
	private ArrayList<JBSbatCommonDBInterface> mailAddList 	= null;
	/** メール情報マップ */
	private HashMap<String, JBSbatCommonDBInterface> mailInfoMap 	= null;
	
	/** 退避．料金プランマップ */
	private HashMap<String, String> tmpPrcPlanMap = null;
	
	/** 退避．変換用マップ */
	private HashMap<String, String> tmpChgeMap = null;
	
	/** パラメータ取得部品 */
	private JACbatParamUtil paramUtil = null;
	
	/** 変換用マップキー：%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%";
	
	/** 変換用マップキー：%5% */
	private static final String MAP_KEY_5 = "%5%";
	
	/** 変換用マップキー：%6% */
	private static final String MAP_KEY_6 = "%6%";
	
	/** 編集用 バイト数制限値（90） */
	private static final int BYTE_SIZE_90 = 90;
	
	/** 編集用 バイト数制限値（210） */
	private static final int BYTE_SIZE_210 = 210;

	/** 編集用 バイト数制限値（64） */
	private static final int BYTE_SIZE_64 = 64;

	/** 編集用 バイト数制限値（100） */
	private static final int BYTE_SIZE_100 = 100;

	/** 編集用 バイト数制限値（500） */
	private static final int BYTE_SIZE_500 = 500;

	/** 編集用 バイト数制限値（80） */
	private static final int BYTE_SIZE_80 = 80;

	/** 編集用 バイト数制限値（4200） */
	private static final int BYTE_SIZE_4200 = 4200;
	
	/** 群締め日 */
	private String wk_GunEnd 	= null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CC_M_MAIL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL);
		db_KK_T_OPSVKEI_ISP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OPSVKEI_ISP);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		
		// 業務パラメータ取得
		// パラメータ取得部品の初期処理
		paramUtil = new JACbatParamUtil(commonItem);
		this.uplMailInfId 		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_UPPL_TCHI_INF_FID); 	// ファイルID(上限通知メール情報)
		this.upplTchCntId 		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_UPPL_TCHI_CNT_FID); 	// ファイルID(上限通知件数)
		this.upplTchFlgId 		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_UPPL_TCHI_FLG_FID); 	// ファイルID(上限通知フラグ)
		this.hgkTshUplId 		= paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_HGK_TUSN_UPTC_FID); 	// ファイルID(ハガキ用通信量上限通知情報)
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][uplMailInfId=" + this.uplMailInfId + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][upplTchCntId=" + this.upplTchCntId + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][upplTchFlgId=" + this.upplTchFlgId + "]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][hgkTshUplId=" + this.hgkTshUplId + "]");
		
		// 請求年月取得
		JACbatSchdlUtil schdUtil = new JACbatSchdlUtil(commonItem);
		
		
		try
		{
			// 料金スケジュール定義アクセス部品を使用する。
			String wk_SkyuYM = schdUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);
			
			// 群月初日、群締め日　←　JACbatSchdlUtil.getUseStrEnd(請求年月, イベントコード("01"（利用開始日））, イベントコード（"02"（利用終了日））)
			String[] rtn = schdUtil.getUseStrEnd(wk_SkyuYM, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
			
			this.wk_GunEnd = rtn[1];
		}
		finally
		{
			// クローズ
			schdUtil.close();
		}		
		
		// 上限通知メール情報取得
		searchMail();
		
		// ファイル作成
		makeFile();
		
		// 料金プラン情報マップ作成
		this.makePrcPlanMap();
		
		//メール送信日（バッチ運用日＋1日）
		String sendDate = JCCBatCommon.addDay(super.opeDate, 1);
		
		// 変換用マップ共通箇所設定
		this.tmpChgeMap = new HashMap<String, String>();
		this.tmpChgeMap.put(MAP_KEY_2, sendDate.substring(0, 4));								// メール送信日の年
		this.tmpChgeMap.put(MAP_KEY_3, sendDate.substring(4, 6));								// メール送信日の月
		this.tmpChgeMap.put(MAP_KEY_4, sendDate.substring(6, 8));								// メール送信日の日
		this.tmpChgeMap.put(MAP_KEY_5, JCCBatCommon.addDay(sendDate, -1).substring(4, 6));		// メール送信日の前日の月
		
		// ハガキ用通話料上限通知メッセージマップ初期化
		this.upplTchMsgMap = new HashMap<String, String>();
		
		assert 	this.tmpChgeMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial][this.tmpChgeMap=" + this.tmpChgeMap.toString() + "]") : true;
		assert 	this.tmpPrcPlanMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial][this.tmpPrcPlanMap=" + this.tmpPrcPlanMap.toString() + "]") : true;
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		assert 	inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 出力用情報リスト
		ArrayList<ArrayList<String>> outList = null;
		
		// オプションサービス契約＜ISP＞スキーマ検索
		boolean optSvcFlg = searchOptSvc(inMap.getString(JBSbatACIFM134.SVKEI_NO));
		if(optSvcFlg)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][上限通知メール情報出力処理]");

			if(this.mailInfoMap.containsKey(inMap.getString(JBSbatACIFM134.MAIL_CD)))
			{
				
				// 料金サービス管理情報マップ情報取得
				// 入力情報．料金コースコード ＋ 入力情報．料金サービスコード(空白をトリム処理)
				String key = makeStr(inMap.getString(JBSbatACIFM134.PCRS_CD), inMap.getString(JBSbatACIFM134.PRC_SVC_CD).trim());
				// 存在チェック
				if(!this.tmpPrcPlanMap.containsKey(key))
				{
					// 対象項目未存在エラー
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][対象項目未存在エラー]");

					String key1 = key.substring(0, 3);
					String key2 = key.substring(3, 9);
					
					String[] outCntMsg = {key1 + "," + key2};
					// エラーログ出力（エラーコード："EACB0880AW"（対象項目未存在エラー））
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0880AW, outCntMsg);
					
					// 出力対象外
					return null;
				}
				
				// ID通知書印字用料金プラン名
				String idTchishoPrtYoPplanNm = this.tmpPrcPlanMap.get(key);
				
				// ID通知書印字用料金プラン名が設定されていなかった場合
				if(null == idTchishoPrtYoPplanNm || idTchishoPrtYoPplanNm.equals(JACStrConst.KARA_MOJI))
				{
					// 対象項目未存在エラー
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][対象項目未存在エラー]");

					String key1 = key.substring(0, 3);
					String key2 = key.substring(3, 9);
					
					String[] outCntMsg = {key1 + "," + key2};
					// エラーログ出力（エラーコード："EACB0880AW"（対象項目未存在エラー））
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0880AW, outCntMsg);
					
					// 出力対象外
					return null;
				}
				
				outList 	= new ArrayList<ArrayList<String>>();
				// 上限通知メール情報作成
				outList 	= makeUpplTchMailInfo(inMap.getString(JBSbatACIFM134.SVKEI_NO)
																, idTchishoPrtYoPplanNm
																, this.mailInfoMap.get(inMap.getString(JBSbatACIFM134.MAIL_CD)));
				// リスト件数分出力
				for(int i = 0; outList.size() > i; i++)
				{
					// ファイル出力処理
					JCCBatCommon.printDoubleQuoteBusinessFileUtil(this.uplMailInfFile, outList.get(i));
					// 上限通知メール件数カウント
					this.uplMailCnt++;
				}
			}
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][上限通知ハガキ情報出力処理]");

			JBSbatCommonDBInterface resultMap = new JBSbatCommonDBInterface();
			// ハガキ用通話料上限通知メッセージマップのキーに入力.はがき用業務パラメータＩＤが含まれていない場合
			if(!this.upplTchMsgMap.containsKey(inMap.getString(JBSbatACIFM134.HAGAKI_YO_WORK_PARAM_ID)))
			{
				// 業務パラメータ取得
				// パラメータ取得部品の初期処理
				this.upplTchMsgMap.put(inMap.getString(JBSbatACIFM134.HAGAKI_YO_WORK_PARAM_ID)
									, paramUtil.getGyoumuParameter(inMap.getString(JBSbatACIFM134.HAGAKI_YO_WORK_PARAM_ID))); 		// ハガキ用通話料上限通入メッセージ
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint
						, "[L][upplTchMsgMap：key  ][=" + inMap.getString(JBSbatACIFM134.HAGAKI_YO_WORK_PARAM_ID) + "]");
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint
						, "[L][upplTchMsgMap：Value][=" + paramUtil.getGyoumuParameter(inMap.getString(JBSbatACIFM134.HAGAKI_YO_WORK_PARAM_ID)) + "]");
			}
			// サービス契約スキーマ検索
			resultMap = searchSvcKei(inMap.getString(JBSbatACIFM134.SVKEI_NO));
			// ハガキ用通信量上限通知情報ファイル出力処理
			JCCBatCommon.printDoubleQuoteBusinessFileUtil(this.hgkTshUplFile, makeUpplTchHgkInfo(inMap, resultMap));
			//  ハガキ用通信量上限通知情報件数カウントアップ
			this.hgkTshUplTchCnt++;
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CC_M_MAIL.close();
		db_KK_T_OPSVKEI_ISP.close();
		db_KK_T_SVC_KEI.close();
		db_KK_M_PPLAN.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		
		// 上限通知メール情報出力件数ログ出力
		String[] msgParam = new String[]{"上限通知メール：" + this.uplMailInfFilePath, Integer.toString(this.uplMailCnt)};
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0780AI, msgParam);
		// 上限通知件数ファイル書き込み
		JCCBatCommon.printDoubleQuoteBusinessFileUtil(this.upplTchCntFile, makeUpplTchCnt());
		// 件数カウントアップ
		this.upplTchCntCnt++;
		// 上限通知件数出力件数ログ出力
		msgParam = new String[]{"上限通知件数：" + this.upplTchCntFilePath, Integer.toString(this.upplTchCntCnt)};
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0780AI, msgParam);
		// 上限通知フラグ出力件数ログ出力
		msgParam = new String[]{"上限通知フラグ：" + this.upplTchFlgFilePath, "0"};
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0780AI, msgParam);
		// ハガキ用通信量上限通知情報出力件数ログ出力
		msgParam = new String[]{"ハガキ用通信量上限通知情報：" + this.hgkTshUplFilePath, Integer.toString(this.hgkTshUplTchCnt)};
		super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EACB0780AI, msgParam);

		// パラメータ取得部品クローズ
		paramUtil.close();
		// 上限通知メール情報ファイルクローズ
		JCCBatCommon.closeBusinessFileUtil(this.uplMailInfFile);
		// 上限通知件数ファイルクローズ
		JCCBatCommon.closeBusinessFileUtil(this.upplTchCntFile);
		// 上限通知フラグファイルクローズ
		JCCBatCommon.closeBusinessFileUtil(this.upplTchFlgFile);
		// ハガキ用通信量上限通知情報ファイルクローズ
		JCCBatCommon.closeBusinessFileUtil(this.hgkTshUplFile);
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(AC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	メール適用開始年月日
	 *		 	メール適用終了年月日
	 *		 	通知メール送信先適用開始年月日
	 *		 	通知メール送信先適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_M_MAIL_AC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CC_M_MAIL.selectBySqlDefine(paramList, CC_M_MAIL_AC_SELECT_002);
	}

	/**
	 * SQLKEY(AC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 *			オプションサービス契約ステータス
	 *		 	予約適用年月日
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_OPSVKEI_ISP_AC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_KK_T_OPSVKEI_ISP.selectBySqlDefine(paramList, KK_T_OPSVKEI_ISP_AC_SELECT_002);
	}

	/**
	 * SQLKEY(AC_SELECT_015)で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_AC_SELECT_015(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());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_AC_SELECT_015);
	}

	/**
	 * SQLKEY(AC_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_M_PPLAN_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_PPLAN.selectBySqlDefine(paramList, KK_M_PPLAN_AC_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	
	/**
	 * 上限通知メール情報取得
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void searchMail() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchMail]");
		
		this.mailInfoMap = new HashMap<String, JBSbatCommonDBInterface>();
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(super.opeDate); 	// バッチ運用日
		paramList.setValue(super.opeDate); 	// バッチ運用日
		paramList.setValue(super.opeDate); 	// バッチ運用日
		paramList.setValue(super.opeDate); 	// バッチ運用日
		paramList.setValue(super.opeDate); 	// バッチ運用日
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchMail][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeCC_M_MAIL_AC_SELECT_002(paramList.getList().toArray());
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_CC_M_MAIL.selectNext();
		if(dbMap != null)
		{
			while(dbMap != null)
			{
				this.mailInfoMap.put(dbMap.getString(JBSbatCC_M_MAIL.MAIL_CD), dbMap);
				assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchMail][mailInfoMap:Key  =" + dbMap.getString(JBSbatCC_M_MAIL.MAIL_CD) + "]");
				assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchMail][mailInfoMap:Value=" + dbMap.getMap().toString() + "]");
				dbMap = db_CC_M_MAIL.selectNext();
			}
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][searchMail]");
	}
	
	/**
	 * オプションサービス契約＜ISP＞スキーマ検索
	 * @param  svKeiNo   サービス契約番号
	 * @return 検索結果フラグ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean searchOptSvc(String svKeiNo) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchOptSvc]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(svKeiNo); 		// サービス契約番号
		paramList.setValue(super.opeDate); 	// バッチ運用日
		paramList.setValue(JACStrConst.SKHK_SVKEI_STAT_CD_SVC_TK); 	// オプションサービス契約ステータス
		paramList.setValue(super.opeDate); 	// バッチ運用日
		paramList.setValue(super.opeDate); 	// バッチ運用日

		// SQL実行
		executeKK_T_OPSVKEI_ISP_AC_SELECT_002(paramList.getList().toArray());
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_KK_T_OPSVKEI_ISP.selectNext();
		// 検索結果≠null
		if(dbMap != null)
		{
			this.mailAddList = new ArrayList<JBSbatCommonDBInterface>();
			// 取得件数分リストに格納
			while(dbMap != null)
			{
				this.mailAddList.add(dbMap);
				dbMap = db_KK_T_OPSVKEI_ISP.selectNext();
			}
			assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchOptSvc][mailAddList=" + mailAddList.toArray().toString() + "]");
			assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][searchOptSvc][return true]");
			return true;
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][searchOptSvc][return false]");
		return false;
	}
	
	/**
	 * サービス契約スキーマ検索
	 * @param  svKeiNo   サービス契約番号
	 * @return dbMap     取得結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface searchSvcKei(String svKeiNo) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSvcKei]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
	

		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(svKeiNo); 		// サービス契約番号
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日
		paramList.setValue(super.opeDate);	// バッチ運用日

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][searchSvcKei][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeKK_T_SVC_KEI_AC_SELECT_015(paramList.getList().toArray());
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_KK_T_SVC_KEI.selectNext();
		if(dbMap == null)
		{
			// ワーニング出力
			// DB未存在エラー
			String[] msgParam = new String[]
			{ JBSbatKK_T_SVC_KEI.TABLE_NAME, svKeiNo };
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0240CW, msgParam);
		}
		assert 	dbMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][searchSvcKei][dbMap=" + dbMap.getMap().toString() + "]") : true;
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][searchSvcKei]");
		return dbMap;
	}

	/**
	 * ファイル作成
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeFile() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeFile]");
		
		// ファイル用年月日時分秒作成
		String fileYmd = super.opeDate.concat(JCCBatCommon.getSysDateTime().substring(8, 14));
		// （引数：バッチ共通パラメータ, ファイルID, ファイル分割有無, ファイル連番, 請求年月, 自由設定, 文字コード, 変換前改行コード）
		ArrayList<Object> fileInf = JACBatCommon.geneFile(commonItem
														, this.uplMailInfId
														, JACStrConst.FILE_DIV_SKBT_CD_MLS_TS
														, JACStrConst.TRIPLE_O
														, JACStrConst.KARA_MOJI
														, fileYmd, JACStrConst.KARA_MOJI
														, JACStrConst.ENCODE_SJIS
														, JACStrConst.LINE_LF);
		this.uplMailInfFilePath 	= (String)fileInf.get(0); 					// 上限通知メール情報ファイル
		this.uplMailInfFile 		= (JBSbatBusinessFileUtil)fileInf.get(2); 	// 上限通知メール情報ファイルパス

		// （引数：バッチ共通パラメータ, ファイルID, ファイル分割有無, ファイル連番, 請求年月, 自由設定, 文字コード, 変換前改行コード）
		fileInf = JACBatCommon.geneFile(commonItem
										, this.upplTchCntId
										, JACStrConst.FILE_DIV_SKBT_CD_MLS_TS
										, JACStrConst.TRIPLE_O
										, JACStrConst.KARA_MOJI
										, fileYmd
										, JACStrConst.KARA_MOJI
										, JACStrConst.ENCODE_SJIS
										, JACStrConst.LINE_LF);
		this.upplTchCntFilePath 	= (String)fileInf.get(0); 					// 上限通知件数ファイル
		this.upplTchCntFile 		= (JBSbatBusinessFileUtil)fileInf.get(2); 	// 上限通知件数ファイルパス
		
		// （引数：バッチ共通パラメータ, ファイルID, ファイル分割有無, ファイル連番, 請求年月, 自由設定, 文字コード, 変換前改行コード）
		fileInf = JACBatCommon.geneFile(commonItem
										, this.upplTchFlgId
										, JACStrConst.FILE_DIV_SKBT_CD_MLS_TS
										, JACStrConst.TRIPLE_O
										, JACStrConst.KARA_MOJI
										, fileYmd
										, JACStrConst.KARA_MOJI
										, JACStrConst.ENCODE_SJIS
										, JACStrConst.LINE_LF);
		this.upplTchFlgFilePath 	= (String)fileInf.get(0); 	// 上限通知フラグファイル
		this.upplTchFlgFile 		= (JBSbatBusinessFileUtil)fileInf.get(2); 	// 上限通知フラグファイルパス
		
		// （引数：バッチ共通パラメータ, ファイルID, ファイル分割有無, ファイル連番, 請求年月, 自由設定, 文字コード, 変換前改行コード）
		fileInf = JACBatCommon.geneFile(commonItem
										, this.hgkTshUplId
										, JACStrConst.FILE_DIV_SKBT_CD_MLS_TS
										, JACStrConst.TRIPLE_O
										, JACStrConst.KARA_MOJI
										, fileYmd
										, JACStrConst.KARA_MOJI
										, JACStrConst.ENCODE_SJIS
										, JACStrConst.LINE_CRLF);
		this.hgkTshUplFilePath 		= (String)fileInf.get(0); 	// ハガキ用通信量上限通知情報ファイル
		this.hgkTshUplFile 			= (JBSbatBusinessFileUtil)fileInf.get(2); 	// ハガキ用通信量上限通知情報ファイルパス
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeFile]");
	}
	
	/**
	 * 上限通知メール情報作成
	 * @param  svcKeiNo     サービス契約番号
	 * @param  prcSvcFormalNm  料金サービス正式名
	 * @param  dbMap        上限通知メール情報
	 * @return tempInfoList 上限通知メール情報リスト
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private ArrayList<ArrayList<String>> makeUpplTchMailInfo(String svcKeiNo, String prcSvcFormalNm, JBSbatCommonDBInterface dbMap) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUpplTchMailInfo]");
		
		// 上限通知メール情報リスト
		ArrayList<ArrayList<String>> tempInfoList 	= new ArrayList<ArrayList<String>>();
		// 上限通知メール情報の生成
		ArrayList<String> tempInfo  	= null;
		for(int i = 0; this.mailAddList.size() > i; i++)
		{
			tempInfo  	= new ArrayList<String>();
			JBSbatCommonDBInterface mailAddMap = this.mailAddList.get(i);
			
			this.tmpChgeMap.put(MAP_KEY_1, mailAddMap.getString(JBSbatCK_T_CUST.CUST_NM));		// お客様．お客様名
			this.tmpChgeMap.put(MAP_KEY_6, prcSvcFormalNm);										// 料金サービス管理．料金サービス正式名
			
			// 上限通知メール情報に値を設定
			tempInfo.add(svcKeiNo); 																								// サービス契約番号
			tempInfo.add(JCHUtilCommon.getBcutStr(mailAddMap.getString(JBSbatKK_T_OPSVKEI_ISP.MLAD), BYTE_SIZE_64));				// メール宛先
			tempInfo.add(JCHUtilCommon.getBcutStr(dbMap.getString(JBSbatCC_M_MAIL.SENDM_MLAD_DSP_NM), BYTE_SIZE_100)); 				// メール送信者名
			tempInfo.add(JCHUtilCommon.getBcutStr(dbMap.getString(JBSbatCC_M_MAIL.SENDM_MLAD), BYTE_SIZE_64)); 						// メール送信者
			tempInfo.add(JCHUtilCommon.getBcutStr(dbMap.getString(JBSbatCC_M_MAIL.HNSIN_MLAD), BYTE_SIZE_64)); 						// メール返信先
			tempInfo.add(JCHUtilCommon.getBcutStr(dbMap.getString(JBSbatCC_M_MAIL.ERR_MLAD), BYTE_SIZE_64)); 						// エラーメール返信先
			tempInfo.add(JACStrConst.SPACE_1); 																						// BCC
			tempInfo.add(JCHUtilCommon.getBcutStr(dbMap.getString(JBSbatCC_M_MAIL.MAIL_TITLE), BYTE_SIZE_500)); 					// メール題名
			tempInfo.add(JCHUtilCommon.getBcutStr(JACbatRknBusinessUtil.ckanUmeMojiHanyo(dbMap.getString(JBSbatCC_M_MAIL.MAIL_TEXT)
					, this.tmpChgeMap), BYTE_SIZE_4200)); 																			// メール本文
			tempInfo.add(JCHUtilCommon.getBcutStr(dbMap.getString(JBSbatZM_M_TCHI_MAIL_SENDS.TAIO_KIROK_TITLE), BYTE_SIZE_80)); 	// 対応記録タイトル
			
			assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeUpplTchMailInfo][tempInfo=" + tempInfo.toString() + "]");
			
			tempInfoList.add(tempInfo);
		}
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeUpplTchMailInfo]");
		return tempInfoList;
	}
	
	/**
	 * ハガキ用通信量上限通知情報作成
	 * @param  inMap        入力電文
	 * @param  resultMap    サービス契約取得結果
	 * @return tempInfoList ハガキ用通信量上限通知情報リスト
	 * @throws Exception    業務サービス内で発生した例外全般。
	 */
	private ArrayList<String> makeUpplTchHgkInfo(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface resultMap) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUpplTchHgkInfo]");

		String keishAdd = JACStrConst.KARA_MOJI; // 契約者住所
		String seikyAdd = JACStrConst.KARA_MOJI; // 請求書送付先住所
		String riyouAdd = JACStrConst.KARA_MOJI; // 利用場所住所

		// ハガキ用通信量上限通知情報の生成
		ArrayList<String> tempInfo  	= new ArrayList<String>();
		
		this.tmpChgeMap.put(MAP_KEY_1, JACStrConst.KARA_MOJI);		// ""（空文字）
		this.tmpChgeMap.put(MAP_KEY_6, JACStrConst.KARA_MOJI);		// ""（空文字）
		
		if(resultMap != null)
		{
			// 分割された住所の各項目(右空白は除去する)を結合する
			keishAdd = makeStr(JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.STATE_NM_CUST)) 			// 都道府県
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.CITY_NM_CUST)) 			// 市区町村
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.OAZTSU_NM_CUST)) 			// 大字通称
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.AZCHO_NM_CUST)) 			// 字丁目
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_BNCHIGO))		// 番地号
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_ADRTTM))		// 住所補記・建物名
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatCK_T_CUST.KEISHA_ADRRM)));		// 住所補記・部屋番号
			
			seikyAdd = makeStr(JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.STATE_NM_SEIKY)) 			// 都道府県
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.CITY_NM_SEIKY)) 			// 市区町村
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.OAZTSU_NM_SEIKY))		 	// 大字通称
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.AZCHO_NM_SEIKY)) 			// 字丁目
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_BNCHIGO))	// 番地号
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRTTM))	// 住所補記・建物名
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_ADRRM)));	// 住所補記・部屋番号

			riyouAdd = makeStr(JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.STATE_NM_RIYOU)) 						// 都道府県
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.CITY_NM_RIYOU)) 						// 市区町村
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.OAZTSU_NM_RIYOU)) 						// 大字通称
							, JBSbatStringUtil.Rtrim(resultMap.getString(JACStrConst.AZCHO_NM_RIYOU)) 						// 字丁目
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO))	// 番地号
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM))	// 住所補記・建物名
							, JBSbatStringUtil.Rtrim(resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM)));	// 住所補記・部屋番号
		}
		
		tempInfo.add(inMap.getString(JBSbatACIFM134.SVKEI_NO)); 									// サービス契約番号
		if(resultMap != null)
		{
			this.tmpChgeMap.put(MAP_KEY_1, resultMap.getString(JBSbatCK_T_CUST.CUST_NM));				// お客様．お客様名
			tempInfo.add(resultMap.getString(JBSbatKK_T_SVC_KEI.SYSID)); 								// SYSID
			tempInfo.add(resultMap.getString(JBSbatKK_T_SEIKY_KEI.SEIKY_KEI_NO)); 						// 請求契約番号
			tempInfo.add(JCHUtilCommon.getBcutStr(resultMap.getString(JBSbatCK_T_CUST.CUST_NM), BYTE_SIZE_90)); 		// 契約者氏名
			tempInfo.add(resultMap.getString(JBSbatCK_T_CUST.KEISHA_PCD)); 								// 契約者郵便番号
			tempInfo.add(JBSbatStringUtil.Rtrim(JCHUtilCommon.getBcutStr(keishAdd, BYTE_SIZE_90))); 					// 契約者住所(結合後、右空白を除去)
			tempInfo.add(JCHUtilCommon.getBcutStr(resultMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_NM), BYTE_SIZE_90));	// 請求書送付先氏名
			tempInfo.add(resultMap.getString(JBSbatKK_T_SEIKY_KEI.SOHUS_PCD)); 							// 請求書送付先郵便番号
			tempInfo.add(JBSbatStringUtil.Rtrim(JCHUtilCommon.getBcutStr(seikyAdd, BYTE_SIZE_90))); 					// 請求書送付先住所(結合後、右空白を除去)
			tempInfo.add(resultMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD)); 			// 利用場所郵便番号
			tempInfo.add(JBSbatStringUtil.Rtrim(JCHUtilCommon.getBcutStr(riyouAdd, BYTE_SIZE_210))); 					// 利用場所住所(結合後、右空白を除去)
		}
		else
		{
			tempInfo.add(JACStrConst.KARA_MOJI); 	// SYSID
			tempInfo.add(JACStrConst.KARA_MOJI); 	// 請求契約番号
			tempInfo.add(JACStrConst.KARA_MOJI); 	// 契約者氏名
			tempInfo.add(JACStrConst.KARA_MOJI);	// 契約者郵便番号
			tempInfo.add(JACStrConst.KARA_MOJI);	// 契約者住所
			tempInfo.add(JACStrConst.KARA_MOJI); 	// 請求書送付先氏名
			tempInfo.add(JACStrConst.KARA_MOJI);	// 請求書送付先郵便番号
			tempInfo.add(JACStrConst.KARA_MOJI);	// 請求書送付先住所
			tempInfo.add(JACStrConst.KARA_MOJI);	// 利用場所郵便番号
			tempInfo.add(JACStrConst.KARA_MOJI);	// 利用場所住所
		}
		tempInfo.add(JACStrConst.TEL_ONLY_FLG); 						// 電話単独フラグ
		tempInfo.add(JACbatRknBusinessUtil.ckanUmeMojiHanyo(
				this.upplTchMsgMap.get(inMap.getString(JBSbatACIFM134.HAGAKI_YO_WORK_PARAM_ID)), this.tmpChgeMap)); // 通話料上限通知メッセージ
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeUpplTchHgkInfo]");
		return tempInfo;
	}
	
	/**
	 * 上限通知件数ファイル作成
	 * @return tempInfo  
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private ArrayList<Object> makeUpplTchCnt() throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeUpplTchCnt]");
		
		// 上限通知件数情報の生成
		ArrayList<Object> tempInfo = new ArrayList<Object>();
		// 上限通知件数情報に値を設定（ゼロパディング（左詰め））
		tempInfo.add(JPCUtilCommon.fillZero(String.valueOf(this.uplMailCnt), 5, false)); 	// 件数

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeUpplTchCnt]");
		return tempInfo;
	}
	
	/**
	 * 文字を連結します
	 * @param  string 文字
	 * @return strBuf 連結した文字列
	 */
	private String makeStr(String ...string)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeStr]");
		
		StringBuffer strBuf = new StringBuffer();
		for(String str:string)
		{
			if(str == null)
			{
				strBuf.append(JACStrConst.KARA_MOJI);
			}
			else
			{
				strBuf.append(str);
			}
		}
		
		assert strBuf != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][strBuf][strBuf = " + strBuf.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeStr]");
		
		return strBuf.toString();
	}
	
	/**
	 * 料金サービス管理情報マップを作成する。
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void makePrcPlanMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makePrcPlanMap]");

		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
	
		// 料金プラン適用開始年月日、料金プラン適用終了年月日
		paramList.setValue(this.wk_GunEnd);		// 群締め日

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makePrcPlanMap][paramList=" + paramList.getList().toString() + "]");

		// SQL実行
		executeKK_M_PPLAN_AC_SELECT_001(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_KK_M_PPLAN.selectNext();
		
		this.tmpPrcPlanMap = new HashMap<String, String>();
		
		// 取得件数分処理を繰り返す
		while(dbMap != null)
		{
			// KEY作成：料金コースコード ＋ 料金プランコード
			String key = makeStr(dbMap.getString(JBSbatKK_M_PPLAN.PCRS_CD), dbMap.getString(JBSbatKK_M_PPLAN.PPLAN_CD));
			
			// value設定 : ID通知書印字用料金プラン名
			this.tmpPrcPlanMap.put(key, dbMap.getString(JBSbatKK_M_PPLAN.ID_TCHISHO_PRT_YO_PPLAN_NM));

			dbMap = db_KK_M_PPLAN.selectNext();
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makePrcPlanMap]");
		return;
	}
}
