357 lines
17 KiB
Java
357 lines
17 KiB
Java
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();
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|