Files
nuttyreading-java/src/main/java/com/peanut/modules/master/controller/StatisticsController.java
2025-10-12 21:48:40 +08:00

357 lines
17 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.peanut.modules.master.controller;
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.master.service.UserCourseBuyService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
/**
* 报表管理
*/
@Slf4j
@RestController("masterStatistics")
@RequestMapping("master/statistics")
public class StatisticsController {
@Autowired
private UserVipLogService userVipLogService;
@Autowired
private BuyOrderService buyOrderService;
@Autowired
private TransactionDetailsService transactionDetailsService;
@Autowired
private UserCourseBuyService userCourseBuyService;
@Autowired
private UserCourseBuyLogService userCourseBuyLogService;
@RequestMapping("/getUserCourseBuyInfoTotal")
public R getUserCourseBuyInfoTotal(@RequestBody Map<String, Object> params) {
List<Map<String,Object>> tanxiaoTotal = userCourseBuyService.getUserCourseBuyInfoTotal(params.get("date").toString());
List<Map<String,Object>> income = userCourseBuyLogService.getIncome(params.get("date").toString().substring(0,7));
return R.ok().put("tanxiaoTotal", tanxiaoTotal).put("income", income);
}
//课程明细
@RequestMapping("/getUserCourseBuyInfo")
public void getUserCourseBuyInfo(HttpServletResponse response, @RequestBody Map<String,Object> params){
List<Map<String,Object>> maps = userCourseBuyService.getUserCourseBuyInfo(params.get("date").toString());
XSSFWorkbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("课程明细");
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("本期天数");
titleRow.createCell(18).setCellValue("已摊销金额");
titleRow.createCell(19).setCellValue("本期摊销金额");
titleRow.createCell(20).setCellValue("剩余金额");
int cell = 1;
for (Map<String,Object> map : maps) {
Row row = sheet.createRow(cell);
row.createCell(0).setCellValue(map.get("name").toString());
row.createCell(1).setCellValue(map.get("tel").toString());
row.createCell(2).setCellValue(map.get("ctitle").toString());
row.createCell(3).setCellValue(map.get("cctitle").toString());
row.createCell(4).setCellValue(map.get("startTime").toString());
row.createCell(5).setCellValue(map.get("endTime").toString());
row.createCell(6).setCellValue(map.get("totalDays").toString());
row.createCell(7).setCellValue(map.get("type").toString());
row.createCell(8).setCellValue(map.get("payType").toString());
row.createCell(9).setCellValue(map.get("payTime").toString());
row.createCell(10).setCellValue(map.get("orderSn").toString());
row.createCell(11).setCellValue(map.get("zfbOrder")==null?"":map.get("zfbOrder").toString());
row.createCell(12).setCellValue(map.get("days").toString());
row.createCell(13).setCellValue(map.get("fee").toString());
row.createCell(14).setCellValue(map.get("remark").toString());
row.createCell(15).setCellValue(map.get("dayAmount").toString());
row.createCell(16).setCellValue(map.get("alreadyDay").toString());
row.createCell(17).setCellValue(map.get("currentDay").toString());
row.createCell(18).setCellValue(map.get("alreadyTanxiao").toString());
row.createCell(19).setCellValue(map.get("currentTanxiao").toString());
row.createCell(20).setCellValue(map.get("surplusTanxiao").toString());
//序号自增
cell++;
}
String fileName = "课程明细.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("/getTransactionDetailsTotal")
public R getTransactionDetailsTotal(@RequestBody Map<String, Object> params) {
Map<String,Object> map = transactionDetailsService.getUserSurplusPeanutCoin(params.get("date").toString()+" 23:59:59");
List<Map<String,Object>> list = transactionDetailsService.getTransactionDetailsTotal(params.get("date").toString()+" 23:59:59");
return R.ok().put("total", list).put("surplus", map);
}
//导出实物订单明细
@RequestMapping("/getTransactionDetailsInfo")
public void getTransactionDetailsInfo(HttpServletResponse response, @RequestBody Map<String,Object> params){
List<Map<String,Object>> maps = transactionDetailsService.getTransactionDetailsInfo(params.get("date").toString());
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("商品名称");
//序号默认为1
int cell = 1;
//遍历
for (Map<String,Object> map : maps) {
Row row = sheet.createRow(cell);
row.createCell(0).setCellValue(map.get("createTime").toString());
row.createCell(1).setCellValue(map.get("name").toString());
row.createCell(2).setCellValue(map.get("tel").toString());
row.createCell(3).setCellValue(map.get("type").toString());
row.createCell(4).setCellValue(map.get("payMethod").toString());
row.createCell(5).setCellValue(map.get("payNo").toString());
row.createCell(6).setCellValue(map.get("zfbOrder")==null?"":map.get("zfbOrder").toString());
row.createCell(7).setCellValue(map.get("changeAmount").toString());
row.createCell(8).setCellValue(map.get("note").toString());
row.createCell(9).setCellValue(map.get("goodsType").toString());
row.createCell(10).setCellValue(map.get("productName").toString());
//序号自增
cell++;
}
String fileName = "天医币明细.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("/getPhysicalBuyOrderInfoTotal")
public R getPhysicalBuyOrderInfoTotal(@RequestBody Map<String, Object> params) {
List<Map<String,Object>> list = buyOrderService.getPhysicalBuyOrderTotal(params.get("date").toString());
return R.ok().put("total", list);
}
//导出实物订单明细
@RequestMapping("/exportPhysicalBuyOrderInfo")
public void exportPhysicalBuyOrderInfo(HttpServletResponse response, @RequestBody Map<String,Object> params){
List<Map<String,Object>> maps = buyOrderService.exportPhysicalBuyOrderInfo(params.get("date").toString());
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("备注");
//序号默认为1
int cell = 1;
//遍历
for (Map<String,Object> map : maps) {
Row row = sheet.createRow(cell);
row.createCell(0).setCellValue(map.get("createTime").toString());
row.createCell(1).setCellValue(map.get("name").toString());
row.createCell(2).setCellValue(map.get("tel").toString());
row.createCell(3).setCellValue(map.get("orderSn").toString());
row.createCell(4).setCellValue(map.get("zfbOrder")==null?"":map.get("zfbOrder").toString());
row.createCell(5).setCellValue(map.get("orderStatus").toString());
row.createCell(6).setCellValue(map.get("payType").toString());
row.createCell(7).setCellValue(map.get("orderPrice").toString());
row.createCell(8).setCellValue(map.get("price").toString());
row.createCell(9).setCellValue(map.get("productName").toString());
row.createCell(10).setCellValue(map.get("remark").toString());
//序号自增
cell++;
}
String fileName = "实物订单明细.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("/getUserVipLogInfoTotal")
public R getUserVipLogInfoTotal(@RequestBody Map<String, Object> params) {
Map<String,Object> map = userVipLogService.getUserVipLogInfoTotal(params.get("date").toString());
return R.ok().put("total", map);
}
//导出vip记录明细
@RequestMapping("/exportUserVipLogInfo")
public void exportUserVipLogInfo(HttpServletResponse response, @RequestBody Map<String,Object> params){
List<Map<String,Object>> maps = userVipLogService.getUserVipLogInfo(params.get("date").toString());
XSSFWorkbook wb = new XSSFWorkbook();
//创建一张表
Sheet sheet = wb.createSheet("vip记录明细");
//创建第一行起始为0
Row titleRow = sheet.createRow(0);
titleRow.createCell(0).setCellValue("姓名");
titleRow.createCell(1).setCellValue("电话");
titleRow.createCell(2).setCellValue("VIP类型");
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("已摊销金额");
titleRow.createCell(18).setCellValue("当月摊销金额");
titleRow.createCell(19).setCellValue("剩余摊销金额");
//序号默认为1
int cell = 1;
//遍历
for (Map<String,Object> map : maps) {
Row row = sheet.createRow(cell);
row.createCell(0).setCellValue(map.get("name").toString());
row.createCell(1).setCellValue(map.get("tel").toString());
row.createCell(2).setCellValue(map.get("type").toString());
row.createCell(3).setCellValue(map.get("startTime").toString());
row.createCell(4).setCellValue(map.get("endTime").toString());
row.createCell(5).setCellValue(map.get("payTime").toString());
row.createCell(6).setCellValue(map.get("orderSn").toString());
row.createCell(7).setCellValue(map.get("zfbOrder")==null?"":map.get("zfbOrder").toString());
row.createCell(8).setCellValue(map.get("payType").toString());
row.createCell(9).setCellValue(map.get("remark").toString());
row.createCell(10).setCellValue(map.get("price").toString());
row.createCell(11).setCellValue(map.get("fee").toString());
row.createCell(12).setCellValue(map.get("totalDays").toString());
row.createCell(13).setCellValue(map.get("dayAmount").toString());
row.createCell(14).setCellValue(map.get("alreadyDays").toString());
row.createCell(15).setCellValue(map.get("currentDays").toString());
row.createCell(16).setCellValue(map.get("notyetDays").toString());
row.createCell(17).setCellValue(map.get("alreadyTanxiao").toString());
row.createCell(18).setCellValue(map.get("currentTanxiao").toString());
row.createCell(19).setCellValue(map.get("notyetTanxiao").toString());
//序号自增
cell++;
}
String fileName = "vip记录明细.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();
}
}
}
}