mmsuserstatisticsserviceimpl.java
来自「移动彩信管理平台」· Java 代码 · 共 514 行 · 第 1/2 页
JAVA
514 行
package com.my7g.zj.mobile.mms.business.service;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.springframework.jdbc.core.JdbcTemplate;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import com.my7g.zj.mobile.mms.bean.MmsSelectBean;
import com.my7g.zj.mobile.mms.bean.MmsUserStatisticsBean;
import com.my7g.zj.mobile.mms.business.IMmsUserStatisticsService;
import com.my7g.zj.mobile.mms.sys.BasicDao;
import com.my7g.zj.mobile.mms.sys.Constant;
public class MmsUserStatisticsServiceImpl extends BasicDao implements IMmsUserStatisticsService {
private JdbcTemplate jdbcTemplatePlatform;
public JdbcTemplate getJdbcTemplatePlatform() {
return jdbcTemplatePlatform;
}
public void setJdbcTemplatePlatform(JdbcTemplate jdbcTemplatePlatform) {
this.jdbcTemplatePlatform = jdbcTemplatePlatform;
}
public List<MmsUserStatisticsBean> getUserStatisticsList(String conditions,
String time, int flag) {
List statisticsList = 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 = getQueryHQL(conditions,time,flag);
if(hql == null)
return null;
//System.out.println("业务用户数统计->获得HQL="+hql);
// 存在问题 ************************ 没有用户时的判断处理 **************************
statisticsList = this.jdbcTemplatePlatform.queryForList(hql);
// 整理成存放MmsUserStatisticsBean的Map
HashMap<String,MmsUserStatisticsBean> beanMap = new HashMap<String,MmsUserStatisticsBean>();
String condtions = null;
short state = 0;
int total = 0;
MmsUserStatisticsBean value = null;
Map obj = null;
for(int i=0;i< statisticsList.size();i++)
{
obj = (Map) statisticsList.get(i);
if(obj == null)
{
System.out.println("业务用户数统计->列数组对象为空!");
return null;
}
total = (Integer) obj.get("total");
condtions = String.valueOf(obj.get("condtions")).trim();
state = Short.valueOf(String.valueOf(obj.get("state")));
// 若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(condtions,time,0,0,0));
}
value = beanMap.get(condtions);
if(value == null)
{
System.out.println("业务用户数统计->从beanMap对象取出对象为空!");
return null;
}
System.out.println("业务用户数统计->从beanMap对象取出对象="+value);
if(state == 0)//退订
value.setUnOrderUserNum(value.getUnOrderUserNum()+total);
else if(state == 2)//注册
value.setOrderUserNum(value.getOrderUserNum()+total);
else//体验
value.setTasteUserNum(value.getTasteUserNum()+total);
}
// 整理成存放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;
}
/**
* 获得地市列表
* */
public List<MmsSelectBean> getAreaList() {
List<MmsSelectBean> areaList = new ArrayList<MmsSelectBean>();
// 获得所有地市的列表
Iterator itor = Constant.areaMap_Obj.values().iterator();
MmsSelectBean value = null;
while(itor.hasNext())
{
value = (MmsSelectBean) itor.next();
areaList.add(value);
}
if(areaList == null || areaList.isEmpty())
System.out.println("获得地市列表为空!请核实!");
return areaList;
}
/**
* 获得用户身份对应的栏目列表
* */
public List<MmsSelectBean> getClassifyList(String userID, int flag) {
List<MmsSelectBean> classifyList = new ArrayList<MmsSelectBean>();
if(flag == 1)
{
// 获得 cp 对应的栏目列表 ************************ 等待补充 ********************************
//List list = this.find("select sortId,sortName from TbMmsType where sortIndex in (select typeIndex from TbMmsCpProvider where userId = "+userID+")");
List list = this.jdbcTemplatePlatform.queryForList("select sort_index,sort_name from platform.dbo.tb_mms_type where sort_index in (select type_index from supermms_cp.dbo.tb_mms_cp_provider where user_id = "+userID+")");
//Object[] obj = null;
Map obj = null;
for(int i=0;i<list.size();i++)
{
obj = (Map)list.get(i);
classifyList.add(new MmsSelectBean(String.valueOf(obj.get("sort_index")),String.valueOf(obj.get("sort_name"))));
}
}
else
{
// 获得所有栏目的列表
Iterator itor = Constant.typeMap_Obj.values().iterator();
MmsSelectBean value = null;
while(itor.hasNext())
{
value = (MmsSelectBean) itor.next();
classifyList.add(value);
}
}
if(classifyList == null || classifyList.isEmpty())
System.out.println("获得栏目列表为空,userID="+userID+" flag="+flag);
return classifyList;
}
private String getQueryHQL(String conditions,String endTime,int flag)
{
String strHql = null;
String strParamHql_start = "select count(*) as total, ";
String strParamHql_mid = " as condtions,state from tb_cjdx_user_info where datediff(dd,'"+endTime+"',register_date)<=0 ";
String strParamHql_end1 = " group by individuality,state";
String strParamHql_end2 = " group by cityid,state";
if(flag == 11)
{
// cp 用户首次进入查询页面 返回相对应所有栏目的统计信息 对应HQL
strHql = strParamHql_start + "individuality" + strParamHql_mid + conditions+strParamHql_end1;
}
else if(flag == 12)
{
// cp 用户已经进入查询页面并选择了相应栏目 返回选择栏目的统计信息 对应HQL
strHql = strParamHql_start + "individuality" + strParamHql_mid + conditions+strParamHql_end1;
}
else if(flag == 21)
{
// cp 用户首次进入查询页面 返回所有地市的统计信息 对应HQL
strHql = strParamHql_start + "cityid" + strParamHql_mid + strParamHql_end2;
}
else if(flag == 22)
{
// cp 用户已经进入查询页面并选择了相应地市 返回选择地市的统计信息 对应HQL
strHql = strParamHql_start + "cityid" + strParamHql_mid + conditions+strParamHql_end2;
}
else if(flag == 31)
{
// ad 用户首次进入查询页面 返回所有栏目的统计信息 对应HQL
strHql = strParamHql_start + "individuality" + strParamHql_mid + strParamHql_end1;
}
else if(flag == 32)
{
// ad 用户已经进入查询页面并选择了相应栏目 返回选择栏目的统计信息 对应HQL
strHql = strParamHql_start + "individuality" + strParamHql_mid + conditions+strParamHql_end1;
}
else if(flag == 41)
{
// ad 用户首次进入查询页面 返回所有地市的统计信息 对应HQL
strHql = strParamHql_start + "cityid" + strParamHql_mid + strParamHql_end2;
}
else if(flag == 42)
{
// ad 用户已经进入查询页面并选择了相应地市 返回选择地市的统计信息 对应HQL
strHql = strParamHql_start + "cityid" + strParamHql_mid + conditions+strParamHql_end2;
}
else
{
// 类型标识有误
System.out.println("业务用户数统计->类型标识有误!flag="+flag);
}
if(strHql == null)
System.out.println("业务用户数统计->获取检索HQL语句有误!flag="+flag);
return strHql;
}
/**
* 创建统计报表
* */
//生成报表
public void createWorkbook(List<MmsUserStatisticsBean> list, OutputStream out) {
WritableWorkbook wwb = null;
try {
wwb = Workbook.createWorkbook(out);
WritableSheet ws = wwb.createSheet("用户统计报表", 0);
// 总计计数器
int totalOrderNum = 0;
int totalTasteNum = 0;
int totalUnOrderNum = 0;
// 字段名
Label lb_0 = new Label(0, 0, "标题");
ws.addCell(lb_0);
Label lb_1 = new Label(1, 0, "截至时间");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?