/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：料金管理
*   モジュール名    ：NHK視聴課金確認画面
*   ソースファイル名：ACW00202SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月23日
*＜機能概要＞
*  NHK視聴課金情報の取込・チェックを行う画面です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/06/23   FJ）富士通  新規作成
* ｖ12.00.00	2014.10.06   鈴木        【ANK-2248-00-00】CSV出力に請求先番号を追加
*
**********************************************************************/
package eo.web.webview.ACW00202SF;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.mapping.ACSV0010_ACSV0010OPDBMapper;
import eo.web.webview.mapping.ACSV0011_ACSV0011OPDBMapper;

/**
 * NHK視聴課金確認画面用ビューロジック
 * 
 * @author FJ
 * @since 2011-06-01
 */
@SuppressWarnings("serial")
public class ACW00202SFLogic extends JCCWebBusinessLogic
{
	/** SCタイトル(NHK視聴課金明細正常検索マップ) */
	private static final String TITLE_ACSV001001SC = "ACSV001001SC";
	
	/** SCタイトル(NHK視聴課金明細エラー検索マップ) */
	private static final String TITLE_ACSV001002SC = "ACSV001002SC";
	
	/** ＮＨＫ視聴課金明細検索・サービスID */
	private static final String SERVICE_ID_ACSV0010 = "ACSV0010";
	
	/** ＮＨＫ視聴課金明細CSV出力・サービスID */
	private static final String SERVICE_ID_ACSV0011 = "ACSV0011";
	
	/** 表示件数・NHK視聴課金明細一覧検索(正常データ)(デフォルト) */
	private static final String DFLT_NHK_DTL_DISPLAY_NUM = "100";
	
	/** 表示件数・NHK視聴課金明細一覧検索(異常データ)(デフォルト) */
	private static final String DFLT_NHK_DTL_ERR_DISPLAY_NUM = "10";
	
	/** 表示ページ数(デフォルト) */
	private static final String DFLT_PAGE_NUM = "1";
	
	/** 検索処理パターン */
	private static final String SEARCH_TYPE = "1";
	
	/** ＮＨＫ視聴課金情報(ページング情報) */
	private static final String NHK_DTL_PAGE_INFO = "0";
	
	/** ＮＨＫ視聴課金エラー情報(ページング情報) */
	private static final String NHK_DTL_ERR_PAGE_INFO = "1";
	
	/**
	 * NHK視聴課金確認画面 初期表示処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		try
		{
			// NHK視聴課金明細検索
			this.getNhkDtlSearch(paramMap, inputMap, outputMap, "init");

		}
		finally
		{
			// HashMapの解放
			paramMap = null;
			inputMap = null;
			outputMap = null;
			
		}
		
		// 処理結果を返す
		return true;
	}

	/**
	 * NHK視聴課金確認画面 検索ボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean search() throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		try
		{
			// NHK視聴課金明細検索
			this.getNhkDtlSearch(paramMap, inputMap, outputMap, "search");

		}
		finally
		{
			// HashMapの解放
			paramMap = null;
			inputMap = null;
			outputMap = null;
		}
		
		// 処理結果を返す
		return true;
	}
	
	/**
	 * NHK視聴課金確認画面 ページリンクボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean paging() throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		try
		{
			// サービスフォームBean アクセスクラスの取得
			X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
			
			// 共有フォームBean アクセスクラスの取得
			X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

			// 選択エラーコード
			String funcCd = JPCModelConstant.FUNC_CD_2;
			String errCd = svcFormBean.sendMessageString(ACW00202SFConst.CHOICE_ERR_CD, X31CWebConst.DATABEAN_GET_VALUE);
			// エラー内容が選択されている場合
			if (!"".equals(errCd))
			{
				// エラー内容指定あり
				funcCd = JPCModelConstant.FUNC_CD_3;
				
			}				
			
			// マッピングクラスに渡すため、配列に作り変える
			X31SDataBeanAccess[] paramBean = {svcFormBean};
			
			// ユースケースID設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SERVICE_ID_ACSV0010);
			// マッピングクラスのインスタンス作成
			ACSV0010_ACSV0010OPDBMapper mapper = new ACSV0010_ACSV0010OPDBMapper();

			// ページング共通設定(NHK視聴課金情報)
			this.setCommonInfo(inputMap, TITLE_ACSV001001SC);
			// ページング設定(NHK視聴課金情報)
			JCCWebCommon.upmapperPageLinkInfo(this, NHK_DTL_PAGE_INFO, TITLE_ACSV001001SC, inputMap);
			// 上がりマッピング サービスフォームBean ⇒ サービス(NHK視聴課金明細正常検索マップ)
			mapper.setACSV001001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

			// ページング共通設定(NHK視聴課金情報)
			this.setCommonInfo(inputMap, TITLE_ACSV001002SC);
			// ページング設定(NHK視聴課金エラー情報)
			JCCWebCommon.upmapperPageLinkInfo(this, NHK_DTL_ERR_PAGE_INFO, TITLE_ACSV001002SC, inputMap);
			// 上がりマッピング サービスフォームBean ⇒ サービス(NHK視聴課金明細エラー検索マップ)
			mapper.setACSV001002SC(paramBean, inputMap, funcCd);
			
			// 上がりマッピング サービスフォームBean ⇒ サービス(NHK視聴課金エラーコードマップ)
			mapper.setACSV001003SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// SQL呼出し
			X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
			
			// エラーメッセージが存在する場合
			if(msgResult != null)
			{
				JCCWebCommon.setMessageInfo(this, msgResult);
				
			}
			
			// 下りマッピング サービス(NHK視聴課金明細正常検索マップ) ⇒ サービスフォームBean
			mapper.getACSV001001SC(paramBean, outputMap);
			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, NHK_DTL_PAGE_INFO, TITLE_ACSV001001SC, outputMap);
			// 検索のコマンドIDを設定する。
			JCCWebCommon.setSearchCommand(this, NHK_DTL_PAGE_INFO, "paging", JACScreenConst.SCREEN_ID_ACW00202);
			
			// 下りマッピング サービス(NHK視聴課金明細エラー検索マップ) ⇒ サービスフォームBean
			mapper.getACSV001002SC(paramBean, outputMap);
			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, NHK_DTL_ERR_PAGE_INFO, TITLE_ACSV001002SC, outputMap);
			// 検索のコマンドIDを設定する。
			JCCWebCommon.setSearchCommand(this, NHK_DTL_ERR_PAGE_INFO, "paging", JACScreenConst.SCREEN_ID_ACW00202);
			
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW00202);

		}
		finally
		{
			// HashMapの解放
			paramMap = null;
			inputMap = null;
			outputMap = null;
		}
		
		// 処理結果を返す
		return true;
	}
	
	/**
	 * NHK視聴課金確認画面 CSV出力ボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean outputCsv() throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		try
		{
			// サービスフォームBean アクセスクラスの取得
			X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
			// マッピングクラスに渡すため、配列に作り変える
			X31SDataBeanAccess[] paramBean = {svcFormBean};
			
			// 選択エラーコード
			String errCd = paramBean[0].sendMessageString(ACW00202SFConst.CHOICE_ERR_CD, X31CWebConst.DATABEAN_GET_VALUE);
			// エラー内容が選択されている場合
			String funcCd = JPCModelConstant.FUNC_CD_2;
			if (!"".equals(errCd))
			{
				// エラー内容指定あり
				funcCd = JPCModelConstant.FUNC_CD_3;
				
			}
			
			// ユースケースID設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SERVICE_ID_ACSV0011);
			// マッピングクラスのインスタンス作成
			ACSV0011_ACSV0011OPDBMapper mapper = new ACSV0011_ACSV0011OPDBMapper();

			// 上がりマッピング サービスフォームBean ⇒ サービス
			mapper.setACSV001101SC(paramBean, inputMap, funcCd);

			// SQL呼出し
			X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
			
			// エラーメッセージが存在する場合
			if(msgResult != null)
			{
				JCCWebCommon.setMessageInfo(this, msgResult);
			}

			// CSV出力用にバイト変換を実施
			byte[] downloadData = getCsvData(outputMap);
			
			// ダウンロードファイル名の設定
			String downLoadFileName = "NHKERRDATA_" + JCCWebCommon.getSysDateTime() + ".csv";
			
			JCCWebCommon.setTempDownloadFile(this, downloadData, downLoadFileName);
			
			// 共有フォームBean アクセスクラスの取得
			X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
			
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW00202);

		}
		finally
		{
			//HashMapの解放
			paramMap = null;
			inputMap = null;
			outputMap = null;
		}
		
		// 処理結果を返す
		return true;
	}
	
	/**
	 * NHK視聴課金確認画面 戻るボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBean設定（遷移先画面ID）
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		//共有BeanのSCREEN_ID、SCREEN_NMに遷移先の画面IDをセット
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW00201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW00201);
		
		// 処理結果を返す
		return true;
	}
	
	/**
	 * NHK視聴課金明細の検索を行います。
	 * <br>
	 * @param paramMap ユースケースID
	 * @param inputMap マッピングクラス
	 * @param outputMap サービス呼出結果
	 * @param eventName イベント名
	 */
	public void getNhkDtlSearch(HashMap<String, Object> paramMap,
			HashMap<String, Object> inputMap,
			HashMap<String, Object> outputMap,
			String eventName)
	{
		// 変数宣言
		HashMap<String, Object> beforeMap = new HashMap<String, Object>();
		String funcCd = JPCModelConstant.FUNC_CD_2;;
		
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 共有フォームBean アクセスクラスの取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 初期表示処理の場合
		if ("init".equals(eventName))
		{
			// 引き継ぎ情報の取得
			beforeMap = JCCWebCommon.getScreenInfo(this, JACScreenConst.SCREEN_ID_ACW00201);
			// 引き継ぎ情報の設定
			// 請求年月
			String seikyYm = (String)beforeMap.get(ACW00202SFConst.SEIKY_YM);
			svcFormBean.sendMessageString(ACW00202SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, seikyYm);
			
			// 選択エラーコード
			svcFormBean.sendMessageString(ACW00202SFConst.CHOICE_ERR_CD, X31CWebConst.DATABEAN_SET_VALUE, "");

		}
		else
		{
			// ページング情報の削除
			JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_ACW00202);
			
			// 検索条件の取得
			X31SDataBeanAccessArray nhkErrCdList = svcFormBean.getDataBeanArray(ACW00202SFConst.NHK_ERR_CD_LIST);
			X31SDataBeanAccess subBean = nhkErrCdList.getDataBean(0);
			
			// 選択されたエラー内容(コード)を取得
			String index = subBean.sendMessageString(ACW00202SFConst.SELECT_NHK_ERR_NAIYO_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			String errCd = subBean.sendMessageString(ACW00202SFConst.NHK_ERR_NAIYO_CD_03, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			svcFormBean.sendMessageString(ACW00202SFConst.CHOICE_ERR_CD, X31CWebConst.DATABEAN_SET_VALUE, errCd);
			
			// エラー内容が選択されている場合
			if (!"".equals(errCd))
			{
				// エラー内容指定あり
				funcCd = JPCModelConstant.FUNC_CD_3;
				
			}
		}
				
		// 共通情報の設定
		// 運用日付
		svcFormBean.sendMessageString(ACW00202SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));

		// マッピングクラスに渡すため、配列に作り変える
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		
		// ユースケースID設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SERVICE_ID_ACSV0010);
		// マッピングクラスのインスタンス作成
		ACSV0010_ACSV0010OPDBMapper mapper = new ACSV0010_ACSV0010OPDBMapper();

		// イベント「検索」の場合
		this.setCommonInfo(inputMap, TITLE_ACSV001001SC);
		if ("search".equals(eventName))
		{
			// ページング設定(NHK視聴課金情報)
			JCCWebCommon.upmapperPageLinkInfo(this, NHK_DTL_PAGE_INFO, TITLE_ACSV001001SC, inputMap);
			
		}
		// 上がりマッピング サービスフォームBean ⇒ サービス(NHK視聴課金明細正常検索マップ)
		mapper.setACSV001001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// イベント「検索」の場合
		this.setCommonInfo(inputMap, TITLE_ACSV001002SC);
		if ("search".equals(eventName))
		{
			// ページング設定(NHK視聴課金エラー情報)
			JCCWebCommon.upmapperPageLinkInfo(this, NHK_DTL_ERR_PAGE_INFO, TITLE_ACSV001002SC, inputMap);
			
		}

		// 上がりマッピング サービスフォームBean ⇒ サービス(NHK視聴課金明細エラー検索マップ)
		mapper.setACSV001002SC(paramBean, inputMap, funcCd);
		
		// 上がりマッピング サービスフォームBean ⇒ サービス(NHK視聴課金エラーコードマップ)
		mapper.setACSV001003SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラーメッセージが存在する場合
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			
		}
		
		// 下りマッピング サービス(NHK視聴課金明細正常検索マップ) ⇒ サービスフォームBean
		mapper.getACSV001001SC(paramBean, outputMap);
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, NHK_DTL_PAGE_INFO, TITLE_ACSV001001SC, outputMap);
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, NHK_DTL_PAGE_INFO, "paging", JACScreenConst.SCREEN_ID_ACW00202);

		// 下りマッピング サービス(NHK視聴課金明細エラー検索マップ) ⇒ サービスフォームBean
		mapper.getACSV001002SC(paramBean, outputMap);
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, NHK_DTL_ERR_PAGE_INFO, TITLE_ACSV001002SC, outputMap);
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, NHK_DTL_ERR_PAGE_INFO, "paging", JACScreenConst.SCREEN_ID_ACW00202);
		
		// 下りマッピング サービス(NHK視聴課金エラーコードマップ) ⇒ サービスフォームBean
		mapper.getACSV001003SC(paramBean, outputMap);
		
		// 初期表示処理の場合
		boolean judgeFlg = false;
		if ("init".equals(eventName))
		{
			// 検索件数の取得
			long errCount = Long.parseLong(paramBean[0].sendMessageString(ACW00202SFConst.NHK_ERR_DTL_TOTAL_SEARCH_NUM, X31CWebConst.DATABEAN_GET_VALUE));
			// NHK視聴課金エラー情報が0件の場合
			if (errCount == 0)
			{
				judgeFlg = true;
				
			}
		}

		// エラーリスト判定フラグ
		svcFormBean.sendMessageBoolean(ACW00202SFConst.ERR_LIST_JUDGE_FLG, X31CWebConst.DATABEAN_SET_VALUE, judgeFlg);
		
		// イベント「検索」の場合
		if ("search".equals(eventName))
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW00202);

		}
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW00202);
	}
	
	/**
	 * 共通情報の設定を行います。
	 * <br>
	 * @param paramMap 
	 * @param serviceTitle SCタイトル
	 * @param eventFlg イベントフラグ 0:ページング以外, 1:ページング
	 */
	private void setCommonInfo(HashMap<String, Object> paramMap, String serviceTitle)
	{
		// 変数宣言
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		String displayNum = "";
			
		if (serviceTitle.equals(TITLE_ACSV001001SC))
		{
			displayNum = DFLT_NHK_DTL_DISPLAY_NUM;
			
		}
		else
		{
			displayNum = DFLT_NHK_DTL_ERR_DISPLAY_NUM;
			
		}
		
		// 表示件数
		parentMap.put("display_num", displayNum);
		// 表示ページ数
		parentMap.put("display_page_num", DFLT_PAGE_NUM);
		// 最大検索数
		parentMap.put("max_search_num", "");
		// 検索処理パターン
		parentMap.put("search_type", SEARCH_TYPE);
		
		// 共通情報設定
		paramMap.put(serviceTitle, parentMap);
		
	}
	
	/**
	 * NHK視聴課金エラー情報生成
	 * 
	 * @param outputMap 検索結果
	 * @return 変換されたバイト配列
	 */
	public byte[] getCsvData(HashMap<String, Object> outputMap)
	{

		// 変数宣言
		StringBuffer csvSb = new StringBuffer();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList<Object> childList = new ArrayList<Object>();
		
		// 検索結果の取得
		if(outputMap.containsKey("ACSV001101SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV001101SC");
		}
		
		// NHK視聴課金エラー情報
		if(parentMap.containsKey("EAC0491B010CBSMsg2List"))
		{
			childList = (ArrayList<Object>)parentMap.get("EAC0491B010CBSMsg2List");
			
			HashMap<String, String> headerMap = new HashMap<String, String>();
			
			// ヘッダー部の設定
// ANK-2248-00-00 2014.10.06 add start
			headerMap.put("seiky_kei_no", "請求先番号");
// ANK-2248-00-00 2014.10.06 add start
			headerMap.put("catv_knysha_cd", "契約者コード");
			headerMap.put("keisha_kanji", "氏名");
			headerMap.put("telno_areacd", "");
			headerMap.put("telno_citycd", "");
			headerMap.put("telno_knysha_no", "");
			headerMap.put("nhk_cust_no", "NHKお客様No");
			headerMap.put("pay_way_cd_div_nm", "支払サイクル名称");
			headerMap.put("siky_amnt", "請求金額");
			headerMap.put("nhk_err_cd_div_nm", "エラー内容");
			
			// リスト(先頭)への格納
			childList.add(0, headerMap);
			int dataCount = childList.size();

			// CSV出力するための生成
			for(int i = 0; i < dataCount; i++)
			{
				
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(i);

// ANK-2248-00-00 2014.10.06 add start
				csvSb.append((String)childMap.get("seiky_kei_no"));	// 請求契約番号
				csvSb.append(",");
// ANK-2248-00-00 2014.10.06 add end

				csvSb.append((String)childMap.get("catv_knysha_cd"));	// 契約者コード
				csvSb.append(",");
				csvSb.append((String)childMap.get("keisha_kanji"));		// 氏名
				csvSb.append(",");
				
				// 電話番号の編集
				StringBuffer sb = new StringBuffer();
				String telno_areacd = (String)childMap.get("telno_areacd");			// 電話番号市外局番
				String telno_citycd = (String)childMap.get("telno_citycd");			// 電話番号市内局番
				String telno_knysha_no = (String)childMap.get("telno_knysha_no");	// 電話番号加入者番号
				// 電話番号の結合
				sb.append(telno_areacd);
				sb.append(telno_citycd);
				sb.append(telno_knysha_no);
				
				if ("".equals(sb.toString()))
				{
					// ヘッダー部の追加
					csvSb.append("TEL");
					
				}
				else
				{
					csvSb.append(sb.toString());	// TEL
					
				}
				csvSb.append(",");
				
				csvSb.append((String)childMap.get("nhk_cust_no"));			// NHKお客様No
				csvSb.append(",");
				csvSb.append((String)childMap.get("pay_way_cd_div_nm"));	// 支払サイクル名称
				csvSb.append(",");
				csvSb.append((String)childMap.get("siky_amnt"));			// 請求金額
				csvSb.append(",");
				csvSb.append((String)childMap.get("nhk_err_cd_div_nm"));	// エラー内容
				csvSb.append(System.getProperty("line.separator"));
			}
			
			
			// データが存在しない場合
			if (dataCount == 1)
			{
				csvSb.append("対象データなし");
				csvSb.append(System.getProperty("line.separator"));
				
			}
		}

		// 生成結果をバイト配列に変換して返す
		return toBytes(csvSb.toString());
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>CSV出力用に渡された値をバイト配列へ変換する。
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param str 変換する文字列
	 * @param encoding 変換するエンコーディング
	 * @return 変換されたバイト配列
	 */
	public byte[] toBytes(String str)
	{
		try
		{
			byte[] fileByte = new byte[0];
			
			fileByte = str.getBytes("Shift_JIS");
			
			// バイト変換
			return fileByte;
			
		}
		catch (UnsupportedEncodingException e)
		{
			return null;
		}
	}
}
