新增培训班报表
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
package com.peanut.modules.master.controller;
|
||||
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.peanut.common.utils.R;
|
||||
import com.peanut.modules.common.entity.UserCourseBuyLog;
|
||||
import com.peanut.modules.common.service.BuyOrderService;
|
||||
import com.peanut.modules.common.service.TransactionDetailsService;
|
||||
import com.peanut.modules.common.service.UserCourseBuyLogService;
|
||||
import com.peanut.modules.common.service.UserVipLogService;
|
||||
import com.peanut.modules.common.entity.*;
|
||||
import com.peanut.modules.common.service.*;
|
||||
import com.peanut.modules.master.service.UserCourseBuyService;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -41,8 +39,220 @@ public class StatisticsController {
|
||||
private UserCourseBuyService userCourseBuyService;
|
||||
@Autowired
|
||||
private UserCourseBuyLogService userCourseBuyLogService;
|
||||
@Autowired
|
||||
private TrainingClassService trainingClassService;
|
||||
@Autowired
|
||||
private TrainingToUserService trainingToUserService;
|
||||
|
||||
|
||||
@RequestMapping("/getTrainingToUserMonthTotal")
|
||||
public R getTrainingToUserMonthTotal(@RequestBody Map<String, Object> params) {
|
||||
Map<String,Object> list = trainingToUserService.getMap(new MPJLambdaWrapper<TrainingToUser>()
|
||||
.select("SUM(case when pay_type = '微信' then fee else 0 end) 微信")
|
||||
.select("SUM(case when pay_type = '支付宝' then fee else 0 end) 支付宝")
|
||||
.select("SUM(case when pay_type = '天医币' then fee else 0 end) 天医币")
|
||||
.select("SUM(case when pay_type = '银行' then fee else 0 end) 银行")
|
||||
.select("SUM(case when pay_type = '海外' then abroad_fee else 0 end) 海外")
|
||||
.select("SUM(case when pay_type = '赠送' then fee else 0 end) 赠送")
|
||||
.apply("DATE_FORMAT(create_time,'%Y-%m') = '"+params.get("date")+"'"));
|
||||
return R.ok().put("list", list);
|
||||
}
|
||||
|
||||
//导出培训班月度明细
|
||||
@RequestMapping("/getTrainingToUserMonthInfo")
|
||||
public void getTrainingToUserMonthInfo(HttpServletResponse response, @RequestBody Map<String,Object> params){
|
||||
List<Map<String,Object>> maps = trainingToUserService.listMaps(new MPJLambdaWrapper<TrainingToUser>()
|
||||
.leftJoin(MyUserEntity.class,MyUserEntity::getId,TrainingToUser::getUserId)
|
||||
.leftJoin(TrainingClass.class,TrainingClass::getId,TrainingToUser::getTrainingId)
|
||||
.leftJoin("pay_wechat_order pwo on pwo.order_sn = t.order_sn")
|
||||
.leftJoin("pay_zfb_order pzo on pzo.relevanceOid = t.order_sn and pzo.trade_no is not null")
|
||||
.select("""
|
||||
t.create_time,t1.name,t1.tel,t1.email,t2.title,t.identity,t.order_sn,pwo.order_id wxNo,pzo.trade_no zfbNo,t.fee+t.abroad_fee+t.jf total,
|
||||
IF(t.pay_type='微信',t.fee,0) 微信,
|
||||
IF(t.pay_type='支付宝',t.fee,0) 支付宝,
|
||||
IF(t.pay_type='天医币',t.fee,0) 天医币,
|
||||
IF(t.pay_type='银行',t.fee,0) 银行,
|
||||
IF(t.pay_type='海外',t.fee,0) 海外,
|
||||
IF(t.pay_type='赠送',t.fee,0) 赠送,t.jf,t.remark
|
||||
""")
|
||||
.apply("DATE_FORMAT(t.create_time,'%Y-%m') = '"+params.get("date")+"'")
|
||||
.orderByAsc(TrainingToUser::getCreateTime));
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
//创建一张表
|
||||
Sheet sheet = wb.createSheet("培训班月度明细");
|
||||
//创建第一行,起始为0
|
||||
Row titleRow = sheet.createRow(0);
|
||||
titleRow.createCell(0).setCellValue("时间");
|
||||
titleRow.createCell(1).setCellValue("姓名");
|
||||
titleRow.createCell(2).setCellValue("电话");
|
||||
titleRow.createCell(3).setCellValue("邮箱");
|
||||
titleRow.createCell(4).setCellValue("培训班");
|
||||
titleRow.createCell(5).setCellValue("购买身份");
|
||||
titleRow.createCell(6).setCellValue("订单编号");
|
||||
titleRow.createCell(7).setCellValue("微信编号");
|
||||
titleRow.createCell(8).setCellValue("支付宝号");
|
||||
titleRow.createCell(9).setCellValue("总金额");
|
||||
titleRow.createCell(10).setCellValue("微信");
|
||||
titleRow.createCell(11).setCellValue("支付宝");
|
||||
titleRow.createCell(12).setCellValue("天医币");
|
||||
titleRow.createCell(13).setCellValue("银行");
|
||||
titleRow.createCell(14).setCellValue("海外");
|
||||
titleRow.createCell(15).setCellValue("赠送");
|
||||
titleRow.createCell(16).setCellValue("积分");
|
||||
titleRow.createCell(17).setCellValue("备注");
|
||||
//序号,默认为1
|
||||
int cell = 1;
|
||||
//遍历
|
||||
for (Map<String,Object> map : maps) {
|
||||
Row row = sheet.createRow(cell);
|
||||
row.createCell(0).setCellValue(map.get("create_time").toString());
|
||||
row.createCell(1).setCellValue(map.get("name").toString());
|
||||
row.createCell(2).setCellValue(map.get("tel").toString());
|
||||
row.createCell(3).setCellValue(map.get("email").toString());
|
||||
row.createCell(4).setCellValue(map.get("title").toString());
|
||||
row.createCell(5).setCellValue(map.get("identity").toString());
|
||||
row.createCell(6).setCellValue(map.get("order_sn").toString());
|
||||
row.createCell(7).setCellValue(map.get("wxNo")==null?"":map.get("wxNo").toString());
|
||||
row.createCell(8).setCellValue(map.get("zfbNo")==null?"":map.get("zfbNo").toString());
|
||||
row.createCell(9).setCellValue(map.get("total").toString());
|
||||
row.createCell(10).setCellValue(map.get("微信").toString());
|
||||
row.createCell(11).setCellValue(map.get("支付宝").toString());
|
||||
row.createCell(12).setCellValue(map.get("天医币").toString());
|
||||
row.createCell(13).setCellValue(map.get("银行").toString());
|
||||
row.createCell(14).setCellValue(map.get("海外").toString());
|
||||
row.createCell(15).setCellValue(map.get("赠送").toString());
|
||||
row.createCell(16).setCellValue(map.get("jf").toString());
|
||||
row.createCell(17).setCellValue(map.get("remark").toString());
|
||||
//序号自增
|
||||
cell++;
|
||||
}
|
||||
String fileName = "培训班"+params.get("date")+"明细.xlsx";
|
||||
OutputStream outputStream =null;
|
||||
try {
|
||||
//文件名编码格式
|
||||
fileName = URLEncoder.encode(fileName,"UTF-8");
|
||||
//设置ContentType请求信息格式
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
//设置标头
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
|
||||
outputStream = response.getOutputStream();
|
||||
wb.write(outputStream);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
try {
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/getTrainingClassTotal")
|
||||
public R getTrainingClassTotal() {
|
||||
List<Map<String,Object>> list = trainingClassService.listMaps(new MPJLambdaWrapper<TrainingClass>()
|
||||
.leftJoin(TrainingToUser.class, TrainingToUser::getTrainingId,TrainingClass::getId)
|
||||
.select(TrainingClass::getTitle)
|
||||
.select("SUM(case when pay_type = '微信' then t1.fee else 0 end) 微信")
|
||||
.select("SUM(case when pay_type = '支付宝' then t1.fee else 0 end) 支付宝")
|
||||
.select("SUM(case when pay_type = '天医币' then t1.fee else 0 end) 天医币")
|
||||
.select("SUM(case when pay_type = '银行' then t1.fee else 0 end) 银行")
|
||||
.select("SUM(case when pay_type = '海外' then t1.abroad_fee else 0 end) 海外")
|
||||
.select("SUM(case when pay_type = '赠送' then t1.fee else 0 end) 赠送")
|
||||
.groupBy(TrainingClass::getId));
|
||||
return R.ok().put("list", list);
|
||||
}
|
||||
|
||||
//导出培训班报表明细
|
||||
@RequestMapping("/getTrainingClassInfo")
|
||||
public void getTrainingClassInfo(HttpServletResponse response, @RequestBody Map<String,Object> params){
|
||||
String className = trainingClassService.getById(params.get("trainingId").toString()).getTitle();
|
||||
List<Map<String,Object>> maps = trainingToUserService.listMaps(new MPJLambdaWrapper<TrainingToUser>()
|
||||
.leftJoin(MyUserEntity.class,MyUserEntity::getId,TrainingToUser::getUserId)
|
||||
.leftJoin("pay_wechat_order pwo on pwo.order_sn = t.order_sn")
|
||||
.leftJoin("pay_zfb_order pzo on pzo.relevanceOid = t.order_sn and pzo.trade_no is not null")
|
||||
.select("""
|
||||
t.create_time,t1.name,t1.tel,t1.email,t.identity,t.order_sn,pwo.order_id wxNo,pzo.trade_no zfbNo,t.fee+t.abroad_fee+t.jf total,
|
||||
IF(t.pay_type='微信',t.fee,0) 微信,
|
||||
IF(t.pay_type='支付宝',t.fee,0) 支付宝,
|
||||
IF(t.pay_type='天医币',t.fee,0) 天医币,
|
||||
IF(t.pay_type='银行',t.fee,0) 银行,
|
||||
IF(t.pay_type='海外',t.fee,0) 海外,
|
||||
IF(t.pay_type='赠送',t.fee,0) 赠送,t.jf,t.remark
|
||||
""")
|
||||
.eq(TrainingToUser::getTrainingId,params.get("trainingId"))
|
||||
.orderByAsc(TrainingToUser::getCreateTime));
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
//创建一张表
|
||||
Sheet sheet = wb.createSheet(className+"报表明细");
|
||||
//创建第一行,起始为0
|
||||
Row titleRow = sheet.createRow(0);
|
||||
titleRow.createCell(0).setCellValue("时间");
|
||||
titleRow.createCell(1).setCellValue("姓名");
|
||||
titleRow.createCell(2).setCellValue("电话");
|
||||
titleRow.createCell(3).setCellValue("邮箱");
|
||||
titleRow.createCell(4).setCellValue("购买身份");
|
||||
titleRow.createCell(5).setCellValue("订单编号");
|
||||
titleRow.createCell(6).setCellValue("微信编号");
|
||||
titleRow.createCell(7).setCellValue("支付宝号");
|
||||
titleRow.createCell(8).setCellValue("总金额");
|
||||
titleRow.createCell(9).setCellValue("微信");
|
||||
titleRow.createCell(10).setCellValue("支付宝");
|
||||
titleRow.createCell(11).setCellValue("天医币");
|
||||
titleRow.createCell(12).setCellValue("银行");
|
||||
titleRow.createCell(13).setCellValue("海外");
|
||||
titleRow.createCell(14).setCellValue("赠送");
|
||||
titleRow.createCell(15).setCellValue("积分");
|
||||
titleRow.createCell(16).setCellValue("备注");
|
||||
//序号,默认为1
|
||||
int cell = 1;
|
||||
//遍历
|
||||
for (Map<String,Object> map : maps) {
|
||||
Row row = sheet.createRow(cell);
|
||||
row.createCell(0).setCellValue(map.get("create_time").toString());
|
||||
row.createCell(1).setCellValue(map.get("name").toString());
|
||||
row.createCell(2).setCellValue(map.get("tel").toString());
|
||||
row.createCell(3).setCellValue(map.get("email").toString());
|
||||
row.createCell(4).setCellValue(map.get("identity").toString());
|
||||
row.createCell(5).setCellValue(map.get("order_sn").toString());
|
||||
row.createCell(6).setCellValue(map.get("wxNo")==null?"":map.get("wxNo").toString());
|
||||
row.createCell(7).setCellValue(map.get("zfbNo")==null?"":map.get("zfbNo").toString());
|
||||
row.createCell(8).setCellValue(map.get("total").toString());
|
||||
row.createCell(9).setCellValue(map.get("微信").toString());
|
||||
row.createCell(10).setCellValue(map.get("支付宝").toString());
|
||||
row.createCell(11).setCellValue(map.get("天医币").toString());
|
||||
row.createCell(12).setCellValue(map.get("银行").toString());
|
||||
row.createCell(13).setCellValue(map.get("海外").toString());
|
||||
row.createCell(14).setCellValue(map.get("赠送").toString());
|
||||
row.createCell(15).setCellValue(map.get("jf").toString());
|
||||
row.createCell(16).setCellValue(map.get("remark").toString());
|
||||
//序号自增
|
||||
cell++;
|
||||
}
|
||||
String fileName = className+"报表明细.xlsx";
|
||||
OutputStream outputStream =null;
|
||||
try {
|
||||
//文件名编码格式
|
||||
fileName = URLEncoder.encode(fileName,"UTF-8");
|
||||
//设置ContentType请求信息格式
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
//设置标头
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
|
||||
outputStream = response.getOutputStream();
|
||||
wb.write(outputStream);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
try {
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping("/getUserCourseBuyInfoTotal")
|
||||
public R getUserCourseBuyInfoTotal(@RequestBody Map<String, Object> params) {
|
||||
List<Map<String,Object>> tanxiaoTotal = userCourseBuyService.getUserCourseBuyInfoTotal(params.get("date").toString());
|
||||
|
||||
Reference in New Issue
Block a user