/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNSV0026_CNSV0026OPDBMapper
*	ソースファイル名：CNSV0026_CNSV0026OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年11月10日
*＜機能概要＞
*	BP（コンテンツサービス毎最新累計参照(検索ボタン押下)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/10	FJ		新規作成
*	v3.00.00	2012/10/22	FJ)小林		【ST4-2012-0000046】性能対応
*	v8.00.00	2014/03/17	FJ)味岡		【OM-2014-0000858】当日データを集計対象外とする対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JPCDateUtil;
import eo.web.webview.CNW01001SF.CNW01001SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CNSV0026_CNSV0026OPDBMapper {
	
	// eoIDサービスコード
	private static final String EOID_SVC_CD = "zzzz";
	private static final String EOID_SVC_CD_TITLE = "zzzzz";
	// 選択項目・日別
	private static final String HIBETU_CHOICE = "1";
	// 選択項目・月別
//	private static final String TSUKIBETU_CHOICE = "2";

	// スキーマ項目名:集計総数
//	private static final String TOTAL_COUNT = "ruikei_member_su";
	// スキーマ項目名：コンテンツサービスコード
//	private static final String CONT_SVC_CD = "cont_svc_cd";
	// スキーマ項目名：表示順
//	private static final String DSP_JUN = "dsp_jun";
	// スキーマ項目名：コンテンツサービス識別コード
	private static final String CONT_SVC_SKBT_CD = "cont_svc_skbt_cd";
	// スキーマ項目名：累計件数
	private static final String RUIKEI_CNT = "ruikei_cnt";
	// スキーマ項目名：増分件数
	private static final String ZOUBUN_CNT = "zoubun_cnt";
	// スキーマ項目名：新規件数
	private static final String NEW_CNT = "new_cnt";
	// スキーマ項目名：解約件数
	private static final String DSL_CNT = "dsl_cnt";
	// スキーマ項目名：売上件数
	private static final String SALES_CNT = "sales_cnt";
	// スキーマ項目名：売上金額
	private static final String SALES_AMNT = "sales_amnt";
	// スキーマ項目名：購入者数
	private static final String KNSHA_CNT = "knsha_cnt";
	// スキーマ項目名：コンテンツ課金訂正通番
//	private static final String CONT_CHRG_TEISE_SEQ = "cont_chrg_teise_seq";
	// スキーマ項目名：SYSID
//	private static final String SYSID = "sysid";
	// スキーマ項目名：コンテンツ契約有料無料フラグ
//	private static final String CONT_KEI_YRYO_MRYO_FLG = "cont_kei_yryo_mryo_flg";
	// スキーマ項目名：コンテンツ単価
//	private static final String CONT_TANKA = "cont_tanka";
	// スキーマ項目名：コンテンツ購入数量
//	private static final String CONT_BUY_CNT = "cont_buy_cnt";
	// スキーマ項目名：税率
//	private static final String TAX_RT = "tax_rt";
	// スキーマ項目名：課金額
//	private static final String CHRG_AMNT = "chrg_amnt";
	// スキーマ項目名：課金状態コード
//	private static final String CHRG_STAT_CD = "chrg_stat_cd";
	// スキーマ項目名：売上減額
//	private static final String SALES_GEN_AMNT = "sales_gen_amnt";
	// スキーマ項目名：コンテンツ課金訂正区分
//	private static final String CONTCHRGTESEI_DIV = "contCHRGTESEI_DIV";
	// スキーマ項目名：赤黒区分
//	private static final String PLMIN_DIV = "plmin_div";

	// コンテンツ課金識別コード：通常課金データ
//	private static final String KAKIN = "0";
	// コンテンツ課金識別コード：売上減
//	private static final String URIAGE_GEN = "1";
	// コンテンツ課金識別コード：補償費
//	private static final String HOSYO_HI = "2";
	// コンテンツ課金識別コード：取消
//	private static final String TORIKESHI = "3";
	// 赤黒区分：赤伝
//	private static final String AKA = "1";
	// 赤黒区分：黒伝
//	private static final String KURO = "0";
	// 課金状態コード：課金中
//	private static final String KAKIN_CYU = "0";
	// 課金状態コード：課金停止中
//	private static final String KAKIN_TEISI_CYU = "1";
	// 課金状態コード：強制課金停止中
//	private static final String KYOSEI_KAKIN_TEISI_CYU = "2";
	// 課金状態コード：課金取消済
//	private static final String KAKIN_CANSEL = "3";
	
	/**
	 * コンストラクタ
	 */
	public CNSV0026_CNSV0026OPDBMapper(){
	}
	

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：コンテンツサービス毎最新累計参照
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002601SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → お客様会員数集計累計マップ.ＫＥＹ＿システム年月日
//		parentMap.put("key_sys_ymd", JCCWebCommon.getSysDate());
//
//		outputMap.put("CNSV002601SC", parentMap);
//						
//		return outputMap;
//	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：コンテンツサービス毎最新累計参照
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002602SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → お客様会員数集計新規マップ.ＫＥＹ＿システム年月日
//		parentMap.put("key_sys_ymd", JCCWebCommon.getSysDate());
//
//		outputMap.put("CNSV002602SC", parentMap);
//						
//		return outputMap;
//	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：コンテンツサービス毎最新累計参照
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002603SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → お客様会員数集計解約マップ.ＫＥＹ＿システム年月日
//		parentMap.put("key_sys_ymd", JCCWebCommon.getSysDate());
//
//		outputMap.put("CNSV002603SC", parentMap);
//						
//		return outputMap;
//	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：コンテンツサービス毎最新累計参照
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002604SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → コンテンツ契約サービス別会員数集計累計マップ.ＫＥＹ＿システム年月日
//		parentMap.put("key_sys_ymd", JCCWebCommon.getSysDate());
//		// 部品呼び出し → コンテンツ契約サービス別会員数集計累計マップ.ＫＥＹ＿システム年月日時分秒
//		parentMap.put("key_sys_dtm", JCCWebCommon.getSysDateTimeStamp().substring(0, 14));
//
//		outputMap.put("CNSV002604SC", parentMap);
//						
//		return outputMap;
//	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：コンテンツサービス毎最新累計参照
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002605SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → コンテンツ契約サービス別会員数集計新規マップ.ＫＥＹ＿システム年月日
//		parentMap.put("key_sys_ymd", JCCWebCommon.getSysDate());
//		// 部品呼び出し → コンテンツ契約サービス別会員数集計新規マップ.ＫＥＹ＿システム年月日時分秒
//		parentMap.put("key_sys_dtm", JCCWebCommon.getSysDateTimeStamp().substring(0, 14));
//
//		outputMap.put("CNSV002605SC", parentMap);
//						
//		return outputMap;
//	}

//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：コンテンツサービス毎最新累計参照
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002606SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → コンテンツ契約サービス別会員数集計解約マップ.ＫＥＹ＿システム年月日
//		parentMap.put("key_sys_ymd", JCCWebCommon.getSysDate());
//		// 部品呼び出し → コンテンツ契約サービス別会員数集計解約マップ.ＫＥＹ＿システム年月日時分秒
//		parentMap.put("key_sys_dtm", JCCWebCommon.getSysDateTimeStamp().substring(0, 14));
//
//		outputMap.put("CNSV002606SC", parentMap);
//						
//		return outputMap;
//	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：コンテンツサービス毎最新累計参照
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV002607SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 総括日別サマリー一覧照会マップ.ＫＥＹ＿総括日別集計対象年月日（前日）
		parentMap.put("key_sokt_hibt_sktgd", JPCDateUtil.addDay(JCCWebCommon.getSysDate(), -1));
		// 集計単位 → 総括日別サマリー一覧照会マップ.ＫＥＹ＿実行種別
		parentMap.put("key_run_sbt", bean[0].sendMessageString("集計単位", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CNSV002607SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：コンテンツサービス毎最新累計参照
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV002608SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 総括月別サマリー一覧照会前月マップ.ＫＥＹ＿総括月別集計対象年月
		try
		{
			parentMap.put("key_sokt_tkbt_sktgm", JPCDateUtil.addMonth(JCCWebCommon.getSysDate(), -1).substring(0, 6));
		}
		catch (ParseException e)
		{
			e.printStackTrace();
		}
		// 集計単位 → 総括月別サマリー一覧照会前月マップ.ＫＥＹ＿実行種別
		parentMap.put("key_run_sbt", bean[0].sendMessageString("集計単位", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CNSV002608SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：コンテンツサービス毎最新累計参照
	 * @param outputMap
	 * @param func_code　機能コード
	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setCNSV002609SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
//		
//		if(bean == null){
//			return null;
//		}
//		
//		if(bean.length != 1){
//			return null;
//		}
//
//
//		HashMap<String, Object> parentMap = new HashMap<String, Object>();
//
//		// 共通情報のマッピング
//		parentMap.put("func_code", func_code);
//
//		// 部品呼び出し → ワーク売上情報一覧照会マップ.ＫＥＹ＿売上情報取得対象年月日
//		parentMap.put("key_sales_info_stku_ymd", JCCWebCommon.getSysDate());
//
//		outputMap.put("CNSV002609SC", parentMap);
//						
//		return outputMap;
//	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：コンテンツサービス毎最新累計参照
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV002610SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 総括月別サマリー一覧照会当月マップ.ＫＥＹ＿総括月別集計対象年月
		parentMap.put("key_sokt_tkbt_sktgm", JCCWebCommon.getSysDate().substring(0, 6));
		// 集計単位 → 総括月別サマリー一覧照会当月マップ.ＫＥＹ＿実行種別
		parentMap.put("key_run_sbt", bean[0].sendMessageString("集計単位", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CNSV002610SC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：コンテンツサービス毎最新累計参照
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCNSV002601SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		// お客様会員数集計（累計）
//		HashMap parentMap01 = null;
//		if (outputMap.containsKey("CNSV002601SC"))
//		{
//			parentMap01 = (HashMap)outputMap.get("CNSV002601SC");
//		}
		// お客様会員数集計（新規）
//		HashMap parentMap02 = null;
//		if (outputMap.containsKey("CNSV002602SC"))
//		{
//			parentMap02 = (HashMap)outputMap.get("CNSV002602SC");
//		}
		// お客様会員数集計（解約）
//		HashMap parentMap03 = null;
//		if (outputMap.containsKey("CNSV002603SC"))
//		{
//			parentMap03 = (HashMap)outputMap.get("CNSV002603SC");
//		}
		// コンテンツ契約サービス別会員数集計（累計）
//		HashMap parentMap04 = null;
//		if (outputMap.containsKey("CNSV002604SC"))
//		{
//			parentMap04 = (HashMap)outputMap.get("CNSV002604SC");
//		}
		// コンテンツ契約サービス別会員数集計（新規）
//		HashMap parentMap05 = null;
//		if (outputMap.containsKey("CNSV002605SC"))
//		{
//			parentMap05 = (HashMap)outputMap.get("CNSV002605SC");
//		}
		// コンテンツ契約サービス別会員数集計（解約）
//		HashMap parentMap06 = null;
//		if (outputMap.containsKey("CNSV002606SC"))
//		{
//			parentMap06 = (HashMap)outputMap.get("CNSV002606SC");
//		}
		// 総括日別サマリー一覧照会（前日分）
		HashMap parentMap07 = null;
		if (outputMap.containsKey("CNSV002607SC"))
		{
			parentMap07 = (HashMap)outputMap.get("CNSV002607SC");
		}
		// 総括月別サマリー一覧照会（前月分）
		HashMap parentMap08 = null;
		if (outputMap.containsKey("CNSV002608SC"))
		{
			parentMap08 = (HashMap)outputMap.get("CNSV002608SC");
		}
		// ワーク売上情報一覧照会（当日分）
//		HashMap parentMap09 = null;
//		if (outputMap.containsKey("CNSV002609SC"))
//		{
//			parentMap09 = (HashMap)outputMap.get("CNSV002609SC");
//		}
		// 総括月別サマリー一覧照会（当月分）
		HashMap parentMap10 = null;
		if (outputMap.containsKey("CNSV002610SC"))
		{
			parentMap10 = (HashMap)outputMap.get("CNSV002610SC");
		}
		
		// 集計単位
		String tani = bean[0].sendMessageString(CNW01001SFConst.SHUK_TANI, X31CWebConst.DATABEAN_GET_VALUE);
		// 購入者数の算出
		boolean buyFlag = bean[0].sendMessageBoolean(CNW01001SFConst.KNSHA_CNT, X31CWebConst.DATABEAN_GET_VALUE);

		// 選択されているサービスの取得
		X31SDataBeanAccessArray svcNameArray = bean[0].getDataBeanArray("コンテンツサービス名");
		ArrayList selectSvcCd = new ArrayList();
		HashMap<String, String> svcNmMap = new HashMap<String, String>();
		// 1行目はeoID
		selectSvcCd.add(EOID_SVC_CD);
		svcNmMap.put(EOID_SVC_CD, "eoID");
		for (int i = 0; i < svcNameArray.getCount(); i++)
		{
			X31SDataBeanAccess subbean = svcNameArray.getDataBean(i);
			if (subbean.sendMessageBoolean(CNW01001SFConst.SELECT_VALUE_01, X31CWebConst.DATABEAN_GET_VALUE))
			{
				// サービスコードとサービス名を取得
				selectSvcCd.add(subbean.sendMessageString(CNW01001SFConst.CONT_SVC_CD_01,X31CWebConst.DATABEAN_GET_VALUE));
				svcNmMap.put(subbean.sendMessageString(CNW01001SFConst.CONT_SVC_CD_01,X31CWebConst.DATABEAN_GET_VALUE),
						subbean.sendMessageString(CNW01001SFConst.CONT_SVC_NM_01,X31CWebConst.DATABEAN_GET_VALUE));
			}
		}
		
		// 検索データの取得
		// お客様会員数集計（累計）
//		ArrayList childList01 = setCustData(parentMap01);
		// お客様会員数集計（新規）
//		ArrayList childList02 = setCustData(parentMap02);
		// お客様会員数集計（解約）
//		ArrayList childList03 = setCustData(parentMap03);
		// コンテンツ契約サービス別会員数集計（累計）
//		HashMap<String, Object> childMap04 = setContKeiData(selectSvcCd, parentMap04);
		// コンテンツ契約サービス別会員数集計（新規）
//		HashMap<String, Object> childMap05 = setContKeiData(selectSvcCd, parentMap05);
		// コンテンツ契約サービス別会員数集計（解約）
//		HashMap<String, Object> childMap06 = setContKeiData(selectSvcCd, parentMap06);
		// 総括日別サマリー（前日分）
		HashMap<String, Object> childMap07 = setDaySmrData(selectSvcCd, parentMap07);
		// 総括月別サマリー（前月分）
		HashMap<String, Object> childMap08 = setMonSmrData(selectSvcCd, parentMap08);
		// ワーク売上情報
//		HashMap<String, Object> childMap09 = setWorkData(selectSvcCd, parentMap09, buyFlag);
		// 総括月別サマリー（当月）
		HashMap<String, Object> childMap10 = setMonSmrData(selectSvcCd, parentMap10);
		
		HashMap workMap = null;
		// 明細行Beanの作成
		X31SDataBeanAccessArray detailArray = bean[0].getDataBeanArray("コンテンツサービス個別");
		for (int idx = 0; idx < selectSvcCd.size(); idx++)
		{
			String currentSvcCd = (String)selectSvcCd.get(idx);
			// 画面表示に使用する値を格納する変数
			String sosu = "0";				// 累計件数格納用
			String Member = "0";			// 前日、前月時点会員数格納用(画面表示用)
			String sinki = "0";				// 新規件数格納用(画面表示用)
			String kaiyaku = "0";			// 解約件数格納用(画面表示用)
			String zougen = "0";			// 増減件数格納用(画面表示用)
			String sales_cnt = "0";			// 売上件数格納用(画面表示用)
			String sales_amnt = "0";		// 売上金額格納用(画面表示用)
			String buy_cnt = "0";			// 購入者数格納用(画面表示用)
			
			// 総括日別サマリーより取得した前日件数を格納する変数
			String dayMember = "0";			// 会員数格納用(前日)
			String daysinki = "0";			// 新規件数格納用(前日)
			String daykaiyaku = "0";		// 解約件数格納用(前日)
			String dayzougen = "0";			// 増減件数格納用(前日)
			String daysales_cnt = "0";		// 売上件数格納用(前日)
			String daysales_amnt = "0";		// 売上金額格納用(前日)
			String daybuy_cnt = "0";		// 購入者数格納用(前日)
			
			// 総括月別サマリーより取得した当月件数を格納する変数
			String monthMember = "0";		// 会員数格納用(当月)
			String monthsinki = "0";		// 新規件数格納用(当月)
			String monthkaiyaku = "0";		// 解約件数格納用(当月)
			String monthzougen = "0";		// 増減件数格納用(当月)
			String monthsales_cnt = "0";	// 売上件数格納用(当月)
			String monthsales_amnt = "0";	// 売上金額格納用(当月)
			String monthbuy_cnt = "0";		// 購入者数格納用(当月)
			
			// 総括月別サマリーより取得した当月件数を格納する変数
			String bmonthMember = "0";		// 会員数格納用(前月)
			
			// 前日データ取得(総括日別サマリー)
			workMap = (HashMap)childMap07.get(currentSvcCd);
			dayMember = (String)workMap.get(RUIKEI_CNT);
			daysinki = (String)workMap.get(NEW_CNT);
			daykaiyaku = (String)workMap.get(DSL_CNT);
			dayzougen = (String)workMap.get(ZOUBUN_CNT);
			daysales_cnt = (String)workMap.get(SALES_CNT);
			daysales_amnt = (String)workMap.get(SALES_AMNT);
			daybuy_cnt = (String)workMap.get(KNSHA_CNT);
			
			// 前月データ取得(総括月別サマリー)
			workMap = (HashMap)childMap08.get(currentSvcCd);
			bmonthMember = (String)workMap.get(RUIKEI_CNT);
			
			// 当月データ取得(総括月別サマリー)
			workMap = (HashMap)childMap10.get(currentSvcCd);
			monthMember = (String)workMap.get(RUIKEI_CNT);
			monthsinki = (String)workMap.get(NEW_CNT);
			monthkaiyaku = (String)workMap.get(DSL_CNT);
			monthzougen = (String)workMap.get(ZOUBUN_CNT);
			monthsales_cnt = (String)workMap.get(SALES_CNT);
			monthsales_amnt = (String)workMap.get(SALES_AMNT);
			monthbuy_cnt = (String)workMap.get(KNSHA_CNT);
			
//			if (!HIBETU_CHOICE.equalsIgnoreCase(tani))
//			{
//			}
			
			// 表示用変数には日別、月別のフラグに応じて値を設定する
			if (HIBETU_CHOICE.equals(tani))
			{
				sosu = dayMember;				// 現時点会員数を設定(前日集計分)
												// 前々日会員数を設定(前日会員数 - 増減件数)
				Member = String.valueOf(Long.valueOf(dayMember) - Long.valueOf(dayzougen));
				sinki = daysinki;				// 前日新規契約数を設定
				kaiyaku = daykaiyaku;			// 前日解約件数を設定
				zougen = dayzougen;				// 前日増減数を設定
				sales_cnt = daysales_cnt;		// 前日売上件数を設定
				sales_amnt = daysales_amnt;		// 前日売上額を設定
				buy_cnt = daybuy_cnt;			// 前日購入件数を設定
			}
			else
			{
				sosu = monthMember;				// 現時点会員数を設定(前日集計分)
				Member = bmonthMember;			// 前月会員数を設定
				sinki = monthsinki;				// 当月新規契約数を設定
				kaiyaku = monthkaiyaku;			// 当月解約件数を設定
				zougen = monthzougen;			// 当月増減数を設定
				sales_cnt = monthsales_cnt;		// 当月売上件数を設定
				sales_amnt = monthsales_amnt;	// 当月売上額を設定
				buy_cnt = monthbuy_cnt;			// 当月購入件数を設定
			}
			
			// 売上件数
//			workMap = (HashMap)childMap09.get(currentSvcCd);
//			String sales_cnt = (String)workMap.get(SALES_CNT);
			// 売上金額
//			String sales_amnt = (String)workMap.get(SALES_AMNT);
			// 購入者数
//			String buy_cnt = (String)workMap.get(KNSHA_CNT);
			
			X31SDataBeanAccess subbean = null;
			subbean = detailArray.addDataBean();
			// 累計会員数
			subbean.sendMessageString(CNW01001SFConst.RUIKEI_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, sosu);
			// 前月末・前日末会員数
			subbean.sendMessageString(CNW01001SFConst.ZNKI_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, Member);
			// 新規
			subbean.sendMessageString(CNW01001SFConst.NEW_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, sinki);
			// 解約
			subbean.sendMessageString(CNW01001SFConst.DSL_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, kaiyaku);
			// 増減
			subbean.sendMessageString(CNW01001SFConst.ZOUBUN_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, zougen);
			// 売上件数
			subbean.sendMessageString(CNW01001SFConst.SALES_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, sales_cnt);
			// 売上金額
			subbean.sendMessageString(CNW01001SFConst.SALES_AMNT_02, X31CWebConst.DATABEAN_SET_VALUE, sales_amnt);
			// 購入者数
			if (buyFlag)
			{
				subbean.sendMessageString(CNW01001SFConst.KNSHA_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, buy_cnt);
			}
			else
			{
				subbean.sendMessageString(CNW01001SFConst.KNSHA_CNT_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			// CSSクラス名
			if (idx % 2 == 1) {
				subbean.sendMessageString(CNW01001SFConst.CSS_CLASS_NM_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			} else {
				subbean.sendMessageString(CNW01001SFConst.CSS_CLASS_NM_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			// サービス名称
			subbean.sendMessageString(CNW01001SFConst.CONT_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, svcNmMap.get(currentSvcCd));
			// コンテンツサービスコード
			if (EOID_SVC_CD.equals(currentSvcCd))
			{
				subbean.sendMessageString(CNW01001SFConst.CONT_SVC_CD_02, X31CWebConst.DATABEAN_SET_VALUE, EOID_SVC_CD_TITLE);
			}
			else
			{
				subbean.sendMessageString(CNW01001SFConst.CONT_SVC_CD_02, X31CWebConst.DATABEAN_SET_VALUE, "0" + currentSvcCd);
			}
		}
		
		// 見出し設定
		if (HIBETU_CHOICE.equals(tani))
		{
			// 日別用見出し設定
			bean[0].sendMessageString(CNW01001SFConst.NEW_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（前日分）");
			bean[0].sendMessageString(CNW01001SFConst.DSL_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（前日分）");
			bean[0].sendMessageString(CNW01001SFConst.ZOUGEN_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（前日分）");
			bean[0].sendMessageString(CNW01001SFConst.SALES_CNT_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（前日分）");
			bean[0].sendMessageString(CNW01001SFConst.SALES_AMNT_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（前日分）");
			bean[0].sendMessageString(CNW01001SFConst.KNSHA_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（前日分）");
			bean[0].sendMessageString(CNW01001SFConst.MEMBER_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "前々日");
		}
		else
		{
			// 月別用見出し設定
			bean[0].sendMessageString(CNW01001SFConst.NEW_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（当月分）");
			bean[0].sendMessageString(CNW01001SFConst.DSL_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（当月分）");
			bean[0].sendMessageString(CNW01001SFConst.ZOUGEN_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（当月分）");
			bean[0].sendMessageString(CNW01001SFConst.SALES_CNT_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（当月分）");
			bean[0].sendMessageString(CNW01001SFConst.SALES_AMNT_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（当月分）");
			bean[0].sendMessageString(CNW01001SFConst.KNSHA_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "（当月分）");
			bean[0].sendMessageString(CNW01001SFConst.MEMBER_TITLE, X31CWebConst.DATABEAN_SET_VALUE, "前月末");
		}

		return bean;
	}

	/**
	 * お客様会員数集計
	 * @param svcCd
	 * @param array
	 */
//	private static ArrayList<Object> setCustData(HashMap map)
//	{
//		ArrayList<Object> list = new ArrayList<Object>();
//		if (map != null && map.containsKey("ECK0011B505CBSMsg1List"))
//		{
//			list = (ArrayList)map.get("ECK0011B505CBSMsg1List");
//		}
//		else
//		{
//			HashMap<String, String> workMap = new HashMap<String, String>();
//			workMap.put(TOTAL_COUNT, "0");
//			list.add(workMap);
//		}
//		return list;
//	}

	/**
	 * コンテンツ契約サービス別会員数集計
	 * @param svcCd
	 * @param array
	 */
//	private static HashMap<String, Object> setContKeiData(ArrayList svcCd, HashMap parentMap)
//	{
//		ArrayList childList = new ArrayList();
//		HashMap<String, Object> map = new HashMap<String, Object>();
//		if (parentMap != null && parentMap.containsKey("ECN0021B006CBSMsg1List"))
//		{
//			childList = (ArrayList)parentMap.get("ECN0021B006CBSMsg1List");
//		}
//
//		for (int i = 0; i < svcCd.size(); i++)
//		{
//			boolean flg = false;
//			String targetSvcCd = (String)svcCd.get(i);
//			for (int j = 0; j < childList.size(); j++)
//			{
//				HashMap child = (HashMap)childList.get(j);
//				if (child != null && targetSvcCd.equals((String)child.get("cont_svc_cd")))
//				{
//					map.put(targetSvcCd, child);
//					flg = true;
//					break;
//				}
//			}
//			if (!flg)
//			{
//				// 空のマップを作成
//				HashMap child = createContKeiData(targetSvcCd);
//				map.put(targetSvcCd, child);
//			}
//		}
//		
//		return map;
//	}
	
	/**
	 * 空のコンテンツ契約サービス別会員数集計マップを作成する
	 * 
	 * @param svcCd
	 * @return
	 */
//	private static HashMap<String, String> createContKeiData(String svcCd)
//	{
//		HashMap<String, String> map = new HashMap<String, String>();
//		map.put(TOTAL_COUNT, "0");
//		map.put(CONT_SVC_CD, svcCd);
//		map.put(DSP_JUN, "0");
//		return map;
//	}

	/**
	 * 日別サマリー集計
	 * @param svcCd
	 * @param array
	 */
	@SuppressWarnings("unchecked")
	private static HashMap<String, Object>  setDaySmrData(ArrayList svcCd, HashMap parentMap)
	{
		ArrayList childList = new ArrayList();
		HashMap<String, Object> map = new HashMap<String, Object>();
		if (parentMap != null && parentMap.containsKey("ECN0231B001CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECN0231B001CBSMsg1List");
		}

		for (int i = 0; i < svcCd.size(); i++)
		{
			boolean flg = false;
			String targetSvcCd = (String)svcCd.get(i);
			for (int j = 0; j < childList.size(); j++)
			{
				HashMap child = (HashMap)childList.get(j);
				if (child != null && targetSvcCd.equals((String)child.get(CONT_SVC_SKBT_CD).toString().substring(1)))
				{
					map.put(targetSvcCd, child);
					flg = true;
					break;
				}
			}
			if (!flg)
			{
				// 空のマップを作成
				HashMap child = createSmrData(targetSvcCd);
				map.put(targetSvcCd, child);
			}
		}
		return map;
	}

	/**
	 * 月別サマリー集計
	 * @param svcCd
	 * @param array
	 */
	@SuppressWarnings("unchecked")
	private static HashMap<String, Object>  setMonSmrData(ArrayList svcCd, HashMap parentMap)
	{
		ArrayList childList = new ArrayList();
		HashMap<String, Object> map = new HashMap<String, Object>();
		if (parentMap != null && parentMap.containsKey("ECN0251B001CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECN0251B001CBSMsg1List");
		}

		for (int i = 0; i < svcCd.size(); i++)
		{
			boolean flg = false;
			String targetSvcCd = (String)svcCd.get(i);
			for (int j = 0; j < childList.size(); j++)
			{
				HashMap child = (HashMap)childList.get(j);
				if (child != null && targetSvcCd.equals((String)child.get(CONT_SVC_SKBT_CD).toString().substring(1)))
				{
					map.put(targetSvcCd, child);
					flg = true;
					break;
				}
			}
			if (!flg)
			{
				// 空のマップを作成
				HashMap child = createSmrData(targetSvcCd);
				map.put(targetSvcCd, child);
			}
		}
		return map;
	}

	/**
	 * 空のコンテンツ契約サービス別会員数集計マップを作成する
	 * 
	 * @param svcCd
	 * @return
	 */
	private static HashMap<String, String> createSmrData(String svcCd)
	{
		HashMap<String, String> map = new HashMap<String, String>();
		map.put(CONT_SVC_SKBT_CD, svcCd);
		map.put(RUIKEI_CNT, "0");
		map.put(ZOUBUN_CNT, "0");
		map.put(NEW_CNT, "0");
		map.put(DSL_CNT, "0");
		map.put(SALES_CNT, "0");
		map.put(SALES_AMNT, "0");
		map.put(KNSHA_CNT, "0");
		return map;
	}

	/**
	 * ワーク売上情報
	 * @param svcCd
	 * @param array
	 * @param flag
	 */
//	private static HashMap<String, Object>  setWorkData(ArrayList svcCd, HashMap parentMap, boolean flag)
//	{
//		ArrayList childList = new ArrayList();
//		HashMap<String, Object> map = new HashMap<String, Object>();
//		if (parentMap != null && parentMap.containsKey("ECN0281B001CBSMsg1List"))
//		{
//			childList = (ArrayList)parentMap.get("ECN0281B001CBSMsg1List");
//		}
//
//		for (int i = 0; i < svcCd.size(); i++)
//		{
//			int sales_cnt = 0;		// 売上件数
//			long sales_amnt = 0;		// 売上金額
//			int buy_cnt = 0;		// 購入者数
//			int new_record = 0;		// 新規レコード
//			int cansel_record = 0;	// 取消レコード
//			boolean flg = false;
//
//			String targetSvcCd = (String)svcCd.get(i);
//			for (int j = 0; j < childList.size(); j++)
//			{
//				HashMap child = (HashMap)childList.get(j);
//				if (child != null && targetSvcCd.equals((String)child.get("cont_svc_cd")))
//				{
//					for (int k = j; k < childList.size(); k++)
//					{
//						HashMap nextChild = null;
//						HashMap workMap = (HashMap)childList.get(k);
//						if ((k+1) != childList.size())
//						{
//							nextChild = (HashMap)childList.get(k+1);
//						}
//						String currentSysid = (String)child.get("sysid");
//						String nextSysid = "";
//						String nextSvcCd = "";
//						if (nextChild != null)
//						{
//							nextSysid = (String)nextChild.get("sysid");
//							nextSvcCd = (String)nextChild.get("cont_svc_cd");
//						}
//						// 売上件数
//						if (TORIKESHI.equals(workMap.get("contchrgtesei_div")) && KURO.equals(workMap.get("plmin_div")))
//						{
//							// 取消かつ黒伝の場合、1件減算
//							sales_cnt = sales_cnt - 1;
//						}
//						else if (TORIKESHI.equals(workMap.get("contchrgtesei_div")) && AKA.equals(workMap.get("plmin_div")))
//						{
//							// 取消かつ赤伝の場合、1件加算
//							sales_cnt = sales_cnt + 1;
//						}
//						else if (KAKIN.equals(workMap.get("contchrgtesei_div")) && KURO.equals(workMap.get("plmin_div")))
//						{
//							// 課金訂正データ以外かつ黒伝の場合、1件加算
//							sales_cnt = sales_cnt + 1;
//						}
//						else if (KAKIN.equals(workMap.get("contchrgtesei_div")) && AKA.equals(workMap.get("plmin_div")))
//						{
//							// 課金訂正データ以外かつ赤伝の場合、1件減算
//							sales_cnt = sales_cnt - 1;
//						}
//						// 売上金額
//						if (!KAKIN_TEISI_CYU.equals(workMap.get("chrg_stat_cd")) && !KYOSEI_KAKIN_TEISI_CYU.equals(workMap.get("chrg_stat_cd")))
//						{
//							long kakin = 0;
//							String workValue = "";
//							if (KAKIN.equals(workMap.get("contchrgtesei_div")) || TORIKESHI.equals(workMap.get("contchrgtesei_div")))
//							{
//								workValue = (String)workMap.get("chrg_amnt");
//								kakin = Long.valueOf(workValue);
//							}
//							else if (URIAGE_GEN.equals(workMap.get("contchrgtesei_div")))
//							{
//								workValue = (String)workMap.get("chrg_amnt");
//								kakin = -Long.valueOf(workValue);
//							}
//							sales_amnt = sales_amnt + kakin;
//						}
//						if (flag)
//						{
//							// 購入者数
//							if ("0".equals(workMap.get("cont_chrg_teise_seq")) && KAKIN.equals(workMap.get("contchrgtesei_div")))
//							{
//								new_record = new_record + 1;
//							}
//							else if (TORIKESHI.equals(workMap.get("contchrgtesei_div")) && KURO.equals(workMap.get("plmin_div")))
//							{
//								cansel_record = cansel_record + 1;
//							}
//							if (currentSysid.equals(nextSysid))
//							{
//								if (0 < (new_record - cansel_record))
//								{
//									buy_cnt = buy_cnt + 1;
//									new_record = 0;
//									cansel_record = 0;
//								}
//							}
//						}
//						if (!targetSvcCd.equals(nextSvcCd))
//						{
//							HashMap<String, String> retMap = new HashMap<String, String>();
//							// 売上件数
//							retMap.put(SALES_CNT, Integer.toString(sales_cnt));
//							// 売上金額
//							retMap.put(SALES_AMNT, Long.toString(sales_amnt));
//							// 購入者数
//							retMap.put(KNSHA_CNT, Integer.toString(buy_cnt));
//							// 返却用マップにPUTする
//							map.put(targetSvcCd, retMap);
//							j = j + k;
//							break;
//						}
//					}
//					flg = true;
//				}
//			}
//			if (!flg)
//			{
//				HashMap workMap = createWorkData(targetSvcCd);
//				map.put(targetSvcCd, workMap);
//			}
//		}
//		
//		return map;
//	}
	
	/**
	 * 空のワーク売上情報マップを作成する
	 * 
	 * @param svcCd
	 * @return
	 */
//	private static HashMap<String, String> createWorkData(String svcCd)
//	{
//		HashMap<String, String> map = new HashMap<String, String>();
//		map.put(SALES_CNT, "0");
//		map.put(SALES_AMNT, "0");
//		map.put(KNSHA_CNT, "0");
//		map.put(CONT_SVC_CD, svcCd);
//		return map;
//	}

}