mmsuserstatisticsserviceimpl.java

来自「移动彩信管理平台」· Java 代码 · 共 514 行 · 第 1/2 页

JAVA
514
字号
			ws.addCell(lb_1);
			Label lb_2 = new Label(2, 0, "注册用户");
			ws.addCell(lb_2);
			Label lb_3 = new Label(3, 0, "体验用户");
			ws.addCell(lb_3);
			Label lb_4 = new Label(4, 0, "退订用户");
			ws.addCell(lb_4);
			
			// 明细数据
			MmsUserStatisticsBean value = null;
			for (int i = 0; i < list.size(); i++)
			{
				value = list.get(i);
				if (value == null)
					continue;
				
				// 定制用户总量累加
				totalOrderNum += value.getOrderUserNum();
				// 体验用户总量累加
				totalTasteNum += value.getTasteUserNum();
				// 退订用户总量累加
				totalUnOrderNum += value.getUnOrderUserNum();
				
				// 填充栏目
				ws.addCell(new Label(0, i + 1, value.getCondition()));
				// 填充时间
				ws.addCell(new Label(1, i + 1, value.getEndTime()));
				// 填充定制
				ws.addCell(new Label(2, i + 1, String.valueOf(value.getOrderUserNum())));
				// 填充体验
				ws.addCell(new Label(3, i + 1, String.valueOf(value.getTasteUserNum())));
				// 填充退订
				ws.addCell(new Label(4, i + 1, String.valueOf(value.getUnOrderUserNum())));
			}
			
			// 保存
			wwb.write();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (wwb != null) {
				try	{
					wwb.close();
				} catch (WriteException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	public List<MmsUserStatisticsBean> getUserStatisticsListFromHistory(String conditions,
			String time, int flag) {
		List statisticsList_Order = null;
		List statisticsList_UnOrder = null;
		List<MmsUserStatisticsBean> reList= new ArrayList<MmsUserStatisticsBean>();
		
		String[] hql = null;
		boolean isArea = true;
		if(flag == 11 || flag == 12 || flag == 31 || flag == 32)
			isArea = false;
		
		hql = getQueryHQLForHistory(conditions,time,flag);
		if(hql == null)
			return null;
		//System.out.println("业务用户数统计->获得HQL[0]="+hql[0]);
		//System.out.println("业务用户数统计->获得HQL[1]="+hql[1]);
		
		// 存在问题 ************************ 没有用户时的判断处理 **************************
		statisticsList_Order = this.jdbcTemplatePlatform.queryForList(hql[0]);
		statisticsList_UnOrder = this.jdbcTemplatePlatform.queryForList(hql[1]);
		
		// 整理成存放MmsUserStatisticsBean的Map
		HashMap<String,MmsUserStatisticsBean> beanMap = new HashMap<String,MmsUserStatisticsBean>();
		
		String condtions = null;
		short type_id = 0;
		int total = 0;
		
		MmsUserStatisticsBean value = null;
		Map obj = null;
		
		// 整理定制用户
		for(int i=0;i< statisticsList_Order.size();i++)
		{
			obj = (Map) statisticsList_Order.get(i);
			if(obj == null)
			{
				System.out.println("业务用户数统计->(定制)列Map对象为空!");
				return null;
			}

			total = (Integer) obj.get("total");
			condtions = String.valueOf(obj.get("condtions")).trim();
			type_id = Short.valueOf(String.valueOf(obj.get("type_id")));
			
			// 若map中不存在相应记录 增加一条新的 /////individuality 目前是 索引 不是类型代码////////
			if(!beanMap.containsKey(condtions))
			{
				if(isArea)
					beanMap.put(condtions, new MmsUserStatisticsBean(Constant.areaMap.get(condtions),time,0,0,0));
				else
					beanMap.put(condtions, new MmsUserStatisticsBean(Constant.typeMap.get(condtions),time,0,0,0));
			}
			value = beanMap.get(condtions);

			if(value == null)
			{
				System.out.println("业务用户数统计->(定制)从beanMap对象取出对象为空!");
				return null;
			}
			
			//System.out.println("业务用户数统计->(定制)从beanMap对象取出对象="+value);
			
			if(type_id == 2)//注册
				value.setOrderUserNum(value.getUnOrderUserNum()+total);
			else if(type_id == 4)//体验
				value.setTasteUserNum(value.getTasteUserNum()+total);
			else// 目前只有两种定制用户
				System.out.println("业务用户数统计->(定制)从beanMap对象取出对象类型异常type_id="+type_id);
		}
		// 整理退订用户
		for(int i=0;i< statisticsList_UnOrder.size();i++)
		{
			obj = (Map) statisticsList_UnOrder.get(i);
			if(obj == null)
			{
				System.out.println("业务用户数统计->(退订)列Map对象为空!");
				return null;
			}

			total = (Integer) obj.get("total");
			condtions = String.valueOf(obj.get("condtions")).trim();
			type_id = Short.valueOf(String.valueOf(obj.get("type_id")));
			
			// 若map中不存在相应记录 增加一条新的 /////individuality 目前是 索引 不是类型代码////////
			if(!beanMap.containsKey(condtions))
			{
				if(isArea)
					beanMap.put(condtions, new MmsUserStatisticsBean(Constant.areaMap.get(condtions),time,0,0,0));
				else
					beanMap.put(condtions, new MmsUserStatisticsBean(Constant.typeMap.get(condtions),time,0,0,0));
			}
			value = beanMap.get(condtions);

			if(value == null)
			{
				System.out.println("业务用户数统计->(退订)从beanMap对象取出对象为空!");
				return null;
			}
			
			//System.out.println("业务用户数统计->(退订)从beanMap对象取出对象="+value);
			
			if(type_id == 2 || type_id == 4)//注册 体验用户 退订
				value.setUnOrderUserNum(value.getUnOrderUserNum()+total);
			else// 目前只有两种定制用户
				System.out.println("业务用户数统计->(退订)从beanMap对象取出对象类型异常type_id="+type_id);
		}
		
		// 整理成存放MmsUserStatisticsBean的List
		Iterator itor = beanMap.values().iterator();
		MmsUserStatisticsBean bean = null;
		int totalOrderNum = 0;
		int totalTasteNum = 0;
		int totalUnOrderNum = 0;
		
		while(itor.hasNext())
		{
			bean =(MmsUserStatisticsBean) itor.next();
			// 定制用户总量累加
			totalOrderNum += bean.getOrderUserNum();
			// 体验用户总量累加
			totalTasteNum += bean.getTasteUserNum();
			// 退订用户总量累加
			totalUnOrderNum += bean.getUnOrderUserNum();
			reList.add(bean);
		}
		reList.add(new MmsUserStatisticsBean("总计",time,totalOrderNum,totalTasteNum,totalUnOrderNum));
		
		return reList;
	}
	/**
	 * 从历史表中获取统计信息
	 * */
	private String[] getQueryHQLForHistory(String conditions,String endTime,int flag)
	{
		String[] strHql = {"",""};//0=读取定制用户 1=读取退订用户
		
		String strParamHql_start = "select count(*) as total, ";
		String strParamHql_mid0 = " as condtions,type_id  from tb_cjdx_user_history where id in(select max(id) from tb_cjdx_user_history where open_date <= '"+endTime+"' and (destory_date>='"+endTime+"' or destory_date is null) "+conditions+" group by phone)";
		String strParamHql_mid1 = " as condtions,type_id  from tb_cjdx_user_history where id in(select max(id) from tb_cjdx_user_history where open_date <= '"+endTime+"' "+conditions+" group by phone) and destory_date<='"+endTime+"'";
		String strParamHql_end1 = " group by individuality,type_id";
		String strParamHql_end2 = " group by city_id,type_id";

		if(flag == 11)
		{
			// cp 用户首次进入查询页面 返回相对应所有栏目的统计信息 对应HQL
			strHql[0] = strParamHql_start + "individuality" + strParamHql_mid0+strParamHql_end1;
			strHql[1] = strParamHql_start + "individuality" + strParamHql_mid1+strParamHql_end1;
		}
		else if(flag == 12)
		{
			// cp 用户已经进入查询页面并选择了相应栏目 返回选择栏目的统计信息 对应HQL
			strHql[0] = strParamHql_start + "individuality" + strParamHql_mid0+strParamHql_end1;
			strHql[1] = strParamHql_start + "individuality" + strParamHql_mid1+strParamHql_end1;
		}
		else if(flag == 21)
		{
			// cp 用户首次进入查询页面 返回所有地市的统计信息 对应HQL
			strHql[0] = strParamHql_start + "city_id" + strParamHql_mid0+strParamHql_end2;
			strHql[1] = strParamHql_start + "city_id" + strParamHql_mid1+strParamHql_end2;
		}
		else if(flag == 22)
		{
			// cp 用户已经进入查询页面并选择了相应地市 返回选择地市的统计信息 对应HQL
			strHql[0] = strParamHql_start + "city_id" + strParamHql_mid0+strParamHql_end2;
			strHql[1] = strParamHql_start + "city_id" + strParamHql_mid1+strParamHql_end2;
		}
		else if(flag == 31)
		{
			// ad 用户首次进入查询页面 返回所有栏目的统计信息 对应HQL
			strHql[0] = strParamHql_start + "individuality" + strParamHql_mid0+strParamHql_end1;
			strHql[1] = strParamHql_start + "individuality" + strParamHql_mid1+strParamHql_end1;
		}
		else if(flag == 32)
		{
			// ad 用户已经进入查询页面并选择了相应栏目 返回选择栏目的统计信息 对应HQL
			strHql[0] = strParamHql_start + "individuality" + strParamHql_mid0+strParamHql_end1;
			strHql[1] = strParamHql_start + "individuality" + strParamHql_mid1+strParamHql_end1;
		}
		else if(flag == 41)
		{
			// ad 用户首次进入查询页面 返回所有地市的统计信息 对应HQL
			strHql[0] = strParamHql_start + "city_id" + strParamHql_mid0+strParamHql_end2;
			strHql[1] = strParamHql_start + "city_id" + strParamHql_mid1+strParamHql_end2;
		}
		else if(flag == 42)
		{
			// ad 用户已经进入查询页面并选择了相应地市 返回选择地市的统计信息 对应HQL
			strHql[0] = strParamHql_start + "city_id" + strParamHql_mid0+strParamHql_end2;
			strHql[1] = strParamHql_start + "city_id" + strParamHql_mid1+strParamHql_end2;
		}
		else
		{
			// 类型标识有误
			System.out.println("业务用户数统计->类型标识有误!flag="+flag);
		}
		if(strHql == null || strHql[0].length()<50 || strHql[1].length()<50)
		{
			System.out.println("业务用户数统计->获取检索HQL语句有误!flag="+flag);
			strHql = null;
		}
		return strHql;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?