Commit a525b530 authored by libin's avatar libin

订单统计

parent f224b904
......@@ -16,7 +16,7 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36
*/
public enum OrderMemberReceivedStatisticsSignEnum{
MEMBER_TOTAL_AMOUNT("mta","会员订单总额"){
MEMBER_TOTAL_AMOUNT("da_mta","会员订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -32,7 +32,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap;
}
},
COMMON__MEMBER_TOTAL_AMOUNT("cmta","普通会员订单总额"){
COMMON__MEMBER_TOTAL_AMOUNT("db_cmta","普通会员订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -48,7 +48,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap;
}
},
MEMBER_TOTAL_QUANTITY("cmtq","普通会员订单量"){
MEMBER_TOTAL_QUANTITY("dc_cmtq","普通会员订单量"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -64,7 +64,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap;
}
},
GOLD_MEMBER_TOTAL_AMOUNT("gmta","黄金会员订单总额"){
GOLD_MEMBER_TOTAL_AMOUNT("dd_gmta","黄金会员订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -80,7 +80,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap;
}
},
GOLD_MEMBER_TOTAL_QUANTITY("mgtq","黄金会员订单量"){
GOLD_MEMBER_TOTAL_QUANTITY("de_mgtq","黄金会员订单量"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -96,7 +96,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap;
}
},
DIAMOND_MEMBER_TOTAL_AMOUNT("dmta","钻石会员订单总额"){
DIAMOND_MEMBER_TOTAL_AMOUNT("df_dmta","钻石会员订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -112,7 +112,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap;
}
},
DIAMOND_MEMBER_TOTAL_QUANTITY("dmtq","钻石会员订单量"){
DIAMOND_MEMBER_TOTAL_QUANTITY("dg_dmtq","钻石会员订单量"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......
......@@ -16,7 +16,7 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36
*/
public enum OrderReceivedStatisticsSignEnum {
ORDER_TOTAL_AMOUNT("ota","订单总额"){
ORDER_TOTAL_AMOUNT("aa_ota","订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -32,7 +32,7 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap;
}
},
ORDER_TOTAL_QUANTITY("otq","订单量"){
ORDER_TOTAL_QUANTITY("ab_otq","订单量"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -48,7 +48,7 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap;
}
},
ORDER_AVG_QUANTITY("oavgq","订单平均量"){
ORDER_AVG_QUANTITY("ac_oavgq","订单arpu"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -64,7 +64,7 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap;
}
},
ORDER_TOTAL_REAL_AMOUNT("otra","订单实际总额"){
ORDER_TOTAL_REAL_AMOUNT("ad_otra","实际收入"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -80,7 +80,7 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap;
}
},
ORDER_REAL_AVG_AMOUNT("oravga","订单实际平均总额"){
ORDER_REAL_AVG_AMOUNT("ae_oravga","实际arpu"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......
......@@ -17,7 +17,7 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36
*/
public enum OrderRentVehicleReceivedStatisticsSignEnum{
RENT_VEHICLE_TOTAL_AMOUNT("rvta","租车订单总额"){
RENT_VEHICLE_TOTAL_AMOUNT("ba_rvta","租车订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -33,7 +33,7 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap;
}
},
RENT_VEHICLE_TOTAL_QUANTITY("rvtq","租车订单量") {
RENT_VEHICLE_TOTAL_QUANTITY("bb_rvtq","租车订单量") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -49,7 +49,7 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap;
}
},
RENT_VEHICLE_AVG_QUANTITY("rvavgq","租车订单平均量") {
RENT_VEHICLE_AVG_QUANTITY("bc_rvavgq","租车订单arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -65,7 +65,7 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap;
}
},
RENT_VEHICLE_REAL_TOTAL_AMOUNT("rvrta","实际租车金额") {
RENT_VEHICLE_REAL_TOTAL_AMOUNT("bd_rvrta","实际租车金额") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -81,7 +81,7 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap;
}
},
RENT_VEHICLE_REAL_AVG_AMOUNT("rvravga","实际租车平均金额") {
RENT_VEHICLE_REAL_AVG_AMOUNT("be_rvravga","实际租车arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......
......@@ -16,7 +16,7 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36
*/
public enum OrderTourReceivedStatisticsSignEnum {
TOUR_TOTAL_AMOUNT("tta", "旅游订单总额") {
TOUR_TOTAL_AMOUNT("ca_tta", "旅游订单总额") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -32,7 +32,7 @@ public enum OrderTourReceivedStatisticsSignEnum {
return resultMap;
}
},
TOUR_TOTAL_QUANTITY("ttq", "旅游订单量") {
TOUR_TOTAL_QUANTITY("cb_ttq", "旅游订单量") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......@@ -48,7 +48,7 @@ public enum OrderTourReceivedStatisticsSignEnum {
return resultMap;
}
},
TOUR_AVG_QUANTITY("tavgq", "旅游订单平均量") {
TOUR_AVG_QUANTITY("cd_tavgq", "旅游订单arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
......
......@@ -34,7 +34,7 @@ public enum ReceivedStatisticsEnum {
if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) {
return Collections.EMPTY_MAP;
}
return orderReceivedStatisticsBases.stream().peek(x -> ((OrderReceivedStatisticsBase) x).setDate(null)).collect(Collectors.groupingBy(OrderReceivedStatisticsBase::getWeekOfYear, Collectors.toList()));
return orderReceivedStatisticsBases.stream().collect(Collectors.groupingBy(OrderReceivedStatisticsBase::getWeekOfYear, Collectors.toList()));
}
},
MONTH(3, "按月统计") {
......
......@@ -13,7 +13,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = {
"com.xxfc.platform",
"com.github.wxiaoqi.security.common.handler",
"com.github.wxiaoqi.security.common.log"
"com.github.wxiaoqi.security.common.log",
"com.github.wxiaoqi.security.common.support"
})
@EnableDiscoveryClient
@EnableScheduling
......
package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.util.excel.ExcelExport;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*;
......@@ -9,12 +13,19 @@ import com.xxfc.platform.order.mapper.OrderReceivedStatisticsMapper;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
......@@ -36,7 +47,111 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
private List<String> orderMemberSigns;
private List<String> orderRentVehicleSigns;
private List<String> orderTourSigns;
private Map<String, String> signAndDescMap;
/**
* 订单统计数据导出
*
* @param orderReceivedStatisticsFindDTO
* @param outputStream
*/
public void exportOrderReceivedStatisticsData(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, ServletOutputStream outputStream) throws IOException {
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsResult = getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO);
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("订单统计");
Row headerRow = sheet.createRow(0);
//标题样式
CellStyle headerCellStyle = createCellStyle(workbook, true);
//创建标题
createHeader(headerRow,headerCellStyle,orderReceivedStatisticsFindDTO.getStatisticalSigns());
//创建数据样式
CellStyle dataCellStyle = createCellStyle(workbook, false);
createData(orderReceivedStatisticsResult,orderReceivedStatisticsFindDTO.getStatisticalWay(),orderReceivedStatisticsFindDTO.getStatisticalSigns(),sheet,1,dataCellStyle);
workbook.write(outputStream);
workbook.close();
}
private void createData(Map<String,List<OrderReceivedStatisticsVo>> data,Integer statisticalWay, List<String> signs,Sheet sheet,int rowIndex,CellStyle cellStyle){
//自然排序
Collections.sort(signs);
int size = data.get(signs.get(0)).size();
for(int i=0;i<size;i++){
Row dataRow = sheet.createRow(rowIndex++);
Cell firstCell = dataRow.createCell(0);
firstCell.setCellStyle(cellStyle);
for (int cellIndex=1;cellIndex<=signs.size();cellIndex++) {
Cell dataCell = dataRow.createCell(cellIndex);
dataCell.setCellStyle(cellStyle);
String sign = signs.get(cellIndex-1);
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = data.get(sign);
if (CollectionUtils.isEmpty(orderReceivedStatisticsVos) || i>orderReceivedStatisticsVos.size()){
continue;
}
OrderReceivedStatisticsVo orderReceivedStatisticsVo = orderReceivedStatisticsVos.get(i);
if (sign.endsWith("q")){
dataCell.setCellValue(String.valueOf(orderReceivedStatisticsVo.getOrderNum()));
}
if (sign.endsWith("a")){
dataCell.setCellValue(String.valueOf(orderReceivedStatisticsVo.getOrderAmount()));
}
if (cellIndex ==1){
if (ReceivedStatisticsEnum.DAY.getWayCode()==statisticalWay){
firstCell.setCellValue(DateUtil.format(orderReceivedStatisticsVo.getDate(),"yyyy.MM.dd"));
}
if (ReceivedStatisticsEnum.WEEK.getWayCode()==statisticalWay){
Date startDate = orderReceivedStatisticsVo.getDate();
String startDateStr = DateUtil.format(startDate, "yyyy-MM-dd");
String endDateStr = DateUtil.offset(startDate, DateField.DAY_OF_MONTH, 6).toDateStr();
firstCell.setCellValue(String.format("%s~%s",startDateStr,endDateStr));
}
if (ReceivedStatisticsEnum.MONTH.getWayCode()==statisticalWay){
StringBuilder sb = new StringBuilder(orderReceivedStatisticsVo.getMonth());
sb.insert(4,".");
firstCell.setCellValue(sb.toString());
}
}
}
}
}
private void createHeader(Row row, CellStyle cellStyle,List<String> signs){
//自然排序
Collections.sort(signs);
Cell firstCell = row.createCell(0);
firstCell.setCellValue("时间");
firstCell.setCellStyle(cellStyle);
for (int i = 1; i <=signs.size(); i++) {
Cell cell = row.createCell(i);
cell.setCellValue(signAndDescMap.get(signs.get(i-1)));
cell.setCellStyle(cellStyle);
}
}
private CellStyle createCellStyle(Workbook workbook,boolean bold){
CellStyle cellStyle = workbook.createCellStyle();
Font font = createFont(workbook,bold);
cellStyle.setFont(font);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
return cellStyle;
}
private Font createFont(Workbook workbook,boolean bold){
Font font = workbook.createFont();
font.setFontName("黑体");
font.setBold(bold);
font.setBold(true);
return font;
}
/**
* 获取订单统计数据
*
* @param orderReceivedStatisticsFindDTO
* @return
*/
public Map<String, List<OrderReceivedStatisticsVo>> getOrderReceivedStatisticsResult(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<String> statisticalSigns = orderReceivedStatisticsFindDTO.getStatisticalSigns();
......@@ -47,20 +162,10 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderstatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsMap = OrderReceivedStatisticsSignEnum.orderReceivedStatistics(orderstatisticsMap,retainAll(orderSigns, statisticalSigns));
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsMap = OrderReceivedStatisticsSignEnum.orderReceivedStatistics(orderstatisticsMap, retainAll(orderSigns, statisticalSigns));
resultMap.putAll(orderReceivedStatisticsMap);
}
//会员订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderMemberSigns)) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = orderMemberReceivedStatisticsBiz.selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderMemberstatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderMemberReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderMemberReceivedStatisticsMap = OrderMemberReceivedStatisticsSignEnum.orderMemberstatisticsMap(orderMemberstatisticsMap, retainAll(orderMemberSigns, statisticalSigns));
resultMap.putAll(orderMemberReceivedStatisticsMap);
}
//租车订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderRentVehicleSigns)) {
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = orderRentVehicleReceivedStatisticsBiz.selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
......@@ -80,6 +185,16 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
Map<String, List<OrderReceivedStatisticsVo>> orderTourReceivedStatisticsMap = OrderTourReceivedStatisticsSignEnum.orderMemberstatisticsMap(orderTourstatisticsMap, retainAll(orderTourSigns, statisticalSigns));
resultMap.putAll(orderTourReceivedStatisticsMap);
}
//会员订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderMemberSigns)) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = orderMemberReceivedStatisticsBiz.selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderMemberstatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderMemberReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderMemberReceivedStatisticsMap = OrderMemberReceivedStatisticsSignEnum.orderMemberstatisticsMap(orderMemberstatisticsMap, retainAll(orderMemberSigns, statisticalSigns));
resultMap.putAll(orderMemberReceivedStatisticsMap);
}
return resultMap;
}
......@@ -89,11 +204,12 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
/**
* 取两个集合的交集
*
* @param source
* @param target
* @return
*/
private List<String> retainAll(List<String> source,List<String> target){
private List<String> retainAll(List<String> source, List<String> target) {
ArrayList<String> sourceBak = Lists.newArrayList(source);
sourceBak.retainAll(target);
return sourceBak;
......@@ -101,9 +217,20 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
@Override
public void afterPropertiesSet() throws Exception {
signAndDescMap = new HashMap<>();
orderSigns = EnumSet.allOf(OrderReceivedStatisticsSignEnum.class).stream().map(OrderReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderSignAndDescMap = EnumSet.allOf(OrderReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderReceivedStatisticsSignEnum::getSign, OrderReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderSignAndDescMap);
orderMemberSigns = EnumSet.allOf(OrderMemberReceivedStatisticsSignEnum.class).stream().map(OrderMemberReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderMemberSignAndDescMap = EnumSet.allOf(OrderMemberReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderMemberReceivedStatisticsSignEnum::getSign, OrderMemberReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderMemberSignAndDescMap);
orderRentVehicleSigns = EnumSet.allOf(OrderRentVehicleReceivedStatisticsSignEnum.class).stream().map(OrderRentVehicleReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderRentVehicleSignAndDescMap = EnumSet.allOf(OrderRentVehicleReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderRentVehicleReceivedStatisticsSignEnum::getSign, OrderRentVehicleReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderRentVehicleSignAndDescMap);
orderTourSigns = EnumSet.allOf(OrderTourReceivedStatisticsSignEnum.class).stream().map(OrderTourReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderTourSignAndDescMap = EnumSet.allOf(OrderTourReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderTourReceivedStatisticsSignEnum::getSign, OrderTourReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderTourSignAndDescMap);
}
}
\ No newline at end of file
package com.xxfc.platform.order.rest.background;
import com.github.wxiaoqi.security.common.annotation.BeanValid;
import com.github.wxiaoqi.security.common.annotation.SimpleValid;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.OrderReceivedStatisticsBiz;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
......@@ -8,12 +10,18 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
......@@ -23,6 +31,7 @@ import java.util.Map;
* @description 订单统计
* @data 2019/11/11 9:14
*/
@Slf4j
@Api(tags = "订单统计")
@RestController
@RequestMapping("admin/order/received_statistics")
......@@ -36,4 +45,22 @@ public class OrderReceivedStatisticsAdminController {
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsPageVo = orderReceivedStatisticsBiz.getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO);
return ObjectRestResponse.succ(orderReceivedStatisticsPageVo);
}
@ApiOperation("订单统计excel导出下载")
@PostMapping(value = "/export",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ObjectRestResponse<Void> exportOrderReceivedStatistics(@RequestBody @BeanValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, HttpServletResponse response){
try {
String name = DateTimeFormatter.ofPattern("YYYYMMddHHmmss").format(LocalDateTime.now());
response.setContentType("application/vnd.ms-excel;charset=utf-8");
String filename = String.format("%s-OrderReceivedStatistics.xlsx",name);
response.setHeader("Content-Disposition","attachment;filename="+ new String(filename.getBytes(), "iso8859-1"));
ServletOutputStream outputStream = response.getOutputStream();
orderReceivedStatisticsBiz.exportOrderReceivedStatisticsData(orderReceivedStatisticsFindDTO,outputStream);
response.setCharacterEncoding("UTF-8");
return ObjectRestResponse.succ();
}catch (Exception ex){
log.error("导出数据失败【{}】",ex);
throw new BaseException("导出数据失败");
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment