完成营业数据导出execl功能
This commit is contained in:
parent
613e15c19d
commit
4bd9370f34
@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@ -87,4 +88,15 @@ public class ReportController {
|
|||||||
log.info("销量排名数据统计:{}-{}", begin, end);
|
log.info("销量排名数据统计:{}-{}", begin, end);
|
||||||
return Result.success(reportService.getSalesTop10(begin,end));
|
return Result.success(reportService.getSalesTop10(begin,end));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据导出
|
||||||
|
* @param response
|
||||||
|
*/
|
||||||
|
@GetMapping("/export")
|
||||||
|
@ApiOperation("运营数据导出")
|
||||||
|
public void export(HttpServletResponse response) {
|
||||||
|
log.info("数据导出");
|
||||||
|
reportService.exportBusinessData(response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.sky.vo.SalesTop10ReportVO;
|
|||||||
import com.sky.vo.TurnoverReportVO;
|
import com.sky.vo.TurnoverReportVO;
|
||||||
import com.sky.vo.UserReportVO;
|
import com.sky.vo.UserReportVO;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public interface ReportService {
|
public interface ReportService {
|
||||||
@ -40,4 +41,10 @@ public interface ReportService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end);
|
SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出营业额数据
|
||||||
|
* @param response
|
||||||
|
*/
|
||||||
|
void exportBusinessData(HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
@ -6,15 +6,20 @@ import com.sky.mapper.OrderMapper;
|
|||||||
import com.sky.mapper.UserMapper;
|
import com.sky.mapper.UserMapper;
|
||||||
import com.sky.service.ReportService;
|
import com.sky.service.ReportService;
|
||||||
import com.sky.service.UserService;
|
import com.sky.service.UserService;
|
||||||
import com.sky.vo.OrderReportVO;
|
import com.sky.service.WorkspaceService;
|
||||||
import com.sky.vo.SalesTop10ReportVO;
|
import com.sky.vo.*;
|
||||||
import com.sky.vo.TurnoverReportVO;
|
|
||||||
import com.sky.vo.UserReportVO;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.servlet.ServletOutputStream;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
@ -31,9 +36,9 @@ public class ReportServiceImpl implements ReportService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private OrderMapper orderMapper;
|
private OrderMapper orderMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
|
||||||
@Autowired
|
|
||||||
private UserMapper userMapper;
|
private UserMapper userMapper;
|
||||||
|
@Autowired
|
||||||
|
private WorkspaceService workspaceService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取营业额统计数据
|
* 获取营业额统计数据
|
||||||
@ -201,6 +206,60 @@ public class ReportServiceImpl implements ReportService {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出30天营业数据
|
||||||
|
* @param response
|
||||||
|
*/
|
||||||
|
public void exportBusinessData(HttpServletResponse response) {
|
||||||
|
LocalDate begin = LocalDate.now().minusDays(30);
|
||||||
|
LocalDate end = LocalDate.now().minusDays(1);
|
||||||
|
|
||||||
|
//查询概览运营数据,提供给Excel模板文件
|
||||||
|
BusinessDataVO businessData = workspaceService.getBusinessData(
|
||||||
|
LocalDateTime.of(begin,LocalTime.MIN), LocalDateTime.of(end, LocalTime.MAX));
|
||||||
|
|
||||||
|
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");
|
||||||
|
try {
|
||||||
|
//基于提供好的模板文件创建一个新的Excel表格对象
|
||||||
|
XSSFWorkbook excel = new XSSFWorkbook(inputStream);
|
||||||
|
//获得Excel文件中的一个Sheet页
|
||||||
|
XSSFSheet sheet = excel.getSheet("Sheet1");
|
||||||
|
|
||||||
|
sheet.getRow(1).getCell(1).setCellValue(begin + "至" + end);
|
||||||
|
//获得第4行
|
||||||
|
XSSFRow row = sheet.getRow(3);
|
||||||
|
//获取单元格
|
||||||
|
row.getCell(2).setCellValue(businessData.getTurnover());
|
||||||
|
row.getCell(4).setCellValue(businessData.getOrderCompletionRate());
|
||||||
|
row.getCell(6).setCellValue(businessData.getNewUsers());
|
||||||
|
row = sheet.getRow(4);
|
||||||
|
row.getCell(2).setCellValue(businessData.getValidOrderCount());
|
||||||
|
row.getCell(4).setCellValue(businessData.getUnitPrice());
|
||||||
|
for (int i = 0; i < 30; i++) {
|
||||||
|
LocalDate date = begin.plusDays(i);
|
||||||
|
//准备明细数据
|
||||||
|
businessData = workspaceService.getBusinessData(LocalDateTime.of(date,LocalTime.MIN), LocalDateTime.of(date, LocalTime.MAX));
|
||||||
|
row = sheet.getRow(7 + i);
|
||||||
|
row.getCell(1).setCellValue(date.toString());
|
||||||
|
row.getCell(2).setCellValue(businessData.getTurnover());
|
||||||
|
row.getCell(3).setCellValue(businessData.getValidOrderCount());
|
||||||
|
row.getCell(4).setCellValue(businessData.getOrderCompletionRate());
|
||||||
|
row.getCell(5).setCellValue(businessData.getUnitPrice());
|
||||||
|
row.getCell(6).setCellValue(businessData.getNewUsers());
|
||||||
|
}
|
||||||
|
//通过输出流将文件下载到客户端浏览器中
|
||||||
|
ServletOutputStream out = response.getOutputStream();
|
||||||
|
excel.write(out);
|
||||||
|
//关闭资源
|
||||||
|
out.flush();
|
||||||
|
out.close();
|
||||||
|
excel.close();
|
||||||
|
|
||||||
|
}catch (IOException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据时间区间统计指定状态的订单数量
|
* 根据时间区间统计指定状态的订单数量
|
||||||
*
|
*
|
||||||
|
@ -14,6 +14,7 @@ import com.sky.vo.SetmealOverViewVO;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -34,6 +35,7 @@ public class WorkspaceServiceImpl implements WorkspaceService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据时间段统计营业数据
|
* 根据时间段统计营业数据
|
||||||
|
*
|
||||||
* @param begin
|
* @param begin
|
||||||
* @param end
|
* @param end
|
||||||
* @return
|
* @return
|
||||||
@ -48,8 +50,8 @@ public class WorkspaceServiceImpl implements WorkspaceService {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
Map map = new HashMap();
|
Map map = new HashMap();
|
||||||
map.put("begin",begin);
|
map.put("begin", begin);
|
||||||
map.put("end",end);
|
map.put("end", end);
|
||||||
|
|
||||||
//查询总订单数
|
//查询总订单数
|
||||||
Integer totalOrderCount = orderMapper.countByMap(map);
|
Integer totalOrderCount = orderMapper.countByMap(map);
|
||||||
@ -57,7 +59,7 @@ public class WorkspaceServiceImpl implements WorkspaceService {
|
|||||||
map.put("status", Orders.COMPLETED);
|
map.put("status", Orders.COMPLETED);
|
||||||
//营业额
|
//营业额
|
||||||
Double turnover = orderMapper.sumByMap(map);
|
Double turnover = orderMapper.sumByMap(map);
|
||||||
turnover = turnover == null? 0.0 : turnover;
|
turnover = turnover == null ? 0.0 : turnover;
|
||||||
|
|
||||||
//有效订单数
|
//有效订单数
|
||||||
Integer validOrderCount = orderMapper.countByMap(map);
|
Integer validOrderCount = orderMapper.countByMap(map);
|
||||||
@ -65,7 +67,7 @@ public class WorkspaceServiceImpl implements WorkspaceService {
|
|||||||
Double unitPrice = 0.0;
|
Double unitPrice = 0.0;
|
||||||
|
|
||||||
Double orderCompletionRate = 0.0;
|
Double orderCompletionRate = 0.0;
|
||||||
if(totalOrderCount != 0 && validOrderCount != 0){
|
if (totalOrderCount != 0 && validOrderCount != 0) {
|
||||||
//订单完成率
|
//订单完成率
|
||||||
orderCompletionRate = validOrderCount.doubleValue() / totalOrderCount;
|
orderCompletionRate = validOrderCount.doubleValue() / totalOrderCount;
|
||||||
//平均客单价
|
//平均客单价
|
||||||
|
BIN
sky-server/src/main/resources/template/运营数据报表模板.xlsx
Normal file
BIN
sky-server/src/main/resources/template/运营数据报表模板.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user