Commit db9fd770 authored by libin's avatar libin

会员订单列表

parent c3e616a4
...@@ -36,4 +36,5 @@ public class MemberOrderFindDTO extends PageParam { ...@@ -36,4 +36,5 @@ public class MemberOrderFindDTO extends PageParam {
private String facilitatePhone; private String facilitatePhone;
private Boolean isExport; private Boolean isExport;
private List<Integer> userIds; private List<Integer> userIds;
private Boolean isPay;
} }
...@@ -69,6 +69,6 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz, ...@@ -69,6 +69,6 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,
@PostMapping("/export") @PostMapping("/export")
@ResponseBody @ResponseBody
public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){ public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){
orderMemberService.exportMemberOrderData(memberOrderFindDTO); // orderMemberService.exportMemberOrderData(memberOrderFindDTO);
} }
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign; ...@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface; import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.excel.ExcelExport;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
...@@ -34,13 +35,21 @@ import com.xxfc.platform.vehicle.feign.VehicleFeign; ...@@ -34,13 +35,21 @@ import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.log4j.Log4j; import lombok.extern.log4j.Log4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
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.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.FileOutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -188,13 +197,74 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -188,13 +197,74 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
* 导出数据 * 导出数据
* @param memberOrderFindDTO * @param memberOrderFindDTO
*/ */
public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO){ public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO) throws Exception{
MemberOrderPageVo memberOrderPageVo = listMemberOrderPage(memberOrderFindDTO); MemberOrderPageVo memberOrderPageVo = listMemberOrderPage(memberOrderFindDTO);
List<MemberOrderBo> memberOrderBoList = memberOrderPageVo.getMemberOrderPage().getData(); List<MemberOrderBo> memberOrderBoList = memberOrderPageVo.getMemberOrderPage().getData();
ExcelWriter excelWriter = ExcelUtil.getWriter(); MemberOrderStatisticsBo memberOrderStatisticsBo = memberOrderPageVo.getMemberOrderStatisticsBo();
FileOutputStream fileOutputStream = new FileOutputStream("ts.xlsx");
ExcelExport excelExport = new ExcelExport();
Workbook workbook = excelExport.getWorkbook();
Sheet sheet = workbook.createSheet();
CellStyle cellStyleHeader01 = workbook.createCellStyle();
cellStyleHeader01.setAlignment(HorizontalAlignment.CENTER);
sheet.autoSizeColumn(9);
Row row1 = sheet.createRow(0);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
createHeader(row1,0,new String[]{dateTimeFormatter.format(LocalDateTime.now())+"会员订单列表"},cellStyleHeader01);
CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0,9);
sheet.addMergedRegion(cellRangeAddress);
Row row2 = sheet.createRow(1);
Cell row2_cell1 = row2.createCell(0);
row2_cell1.setCellValue("统计");
row2_cell1.setCellStyle(cellStyleHeader01);
CellRangeAddress cellRangeAddress2 = new CellRangeAddress(1,2,0,0);
sheet.addMergedRegion(cellRangeAddress2);
String[] header2 = new String[]{"会员订单总数(单)","会员订单总额(元)","钻石会员订单(单)","钻石会员订单总额(元)","黄金会员订单(单)","黄金会员订单总额(元)","普通会员订单(单)","普通会员订单总额(元)"};
createHeader(row2,1,header2,cellStyleHeader01);
String[] countData = getData(memberOrderStatisticsBo);
createCellCount(row2,1,countData,cellStyleHeader01);
Row row3 = sheet.createRow(4);
String[] header3 = new String[]{"订单号","创建时间","订单状态","名称","用户姓名","手机号","上级姓名/手机号","促成人姓名/手机号","订单价格(元)","优惠金额(元)","实付金额(元)","支付时间"};
CellRangeAddress cellRangeAddress3 = new CellRangeAddress(3,3,0,header3.length);
sheet.addMergedRegion(cellRangeAddress3);
createHeader(row3,0,header3,cellStyleHeader01);
workbook.write(fileOutputStream);
fileOutputStream.close();
workbook.close();
} }
private String[] getData(MemberOrderStatisticsBo memberOrderStatisticsBo){
String totalAmount = String.valueOf(memberOrderStatisticsBo.getTotalAmount());
String totalDiamondAmount = String.valueOf(memberOrderStatisticsBo.getDiamondOrderNum());
String totalGoldAmount = String.valueOf(memberOrderStatisticsBo.getTotalGoldAmount());
String totalGeneralAmount = String.valueOf(memberOrderStatisticsBo.getTotalGeneralAmount());
return new String[]{totalAmount,totalDiamondAmount,totalGoldAmount,totalGeneralAmount};
}
private void createHeader(Row row, int cellStartIndex, String[] header, CellStyle cellStyle){
for (int i =0 ;i<header.length;i++){
Cell cell = row.createCell(cellStartIndex);
cell.setCellValue(header[i]);
cell.setCellStyle(cellStyle);
cellStartIndex+=1;
}
}
private void createCellCount(Row row,int CellStartIndex,String[] data,CellStyle cellStyle){
for(int i=CellStartIndex,y=0;i<data.length;i++,y++){
Cell cell = row.createCell(i);
cell.setCellValue(Objects.toString(data[y]));
cell.setCellStyle(cellStyle);
}
}
public MemberOrderPageVo listMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO) { public MemberOrderPageVo listMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO) {
MemberOrderPageVo memberOrderPageVo = new MemberOrderPageVo(); MemberOrderPageVo memberOrderPageVo = new MemberOrderPageVo();
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo(); MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
...@@ -217,14 +287,16 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -217,14 +287,16 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
} }
if (memberOrderFindDTO.getPage() == 1){ if (memberOrderFindDTO.getPage() == 1){
memberOrderFindDTO.setUserIds(userIds); memberOrderFindDTO.setUserIds(userIds);
memberOrderFindDTO.setIsPay(true);
List<MemberOrderBo> baseOrders = baseOrderBiz.findMemberOrders(memberOrderFindDTO); List<MemberOrderBo> baseOrders = baseOrderBiz.findMemberOrders(memberOrderFindDTO);
if (CollectionUtils.isEmpty(baseOrders)){ /* if (CollectionUtils.isEmpty(baseOrders)){
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo); memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
memberOrderPageVo.setMemberOrderPage(pageDataVO); memberOrderPageVo.setMemberOrderPage(pageDataVO);
return memberOrderPageVo; return memberOrderPageVo;
} }*/
memberOrderStatisticsBo = getMemberOrderStatisticsBo(baseOrders); memberOrderStatisticsBo = getMemberOrderStatisticsBo(baseOrders);
} }
memberOrderFindDTO.setIsPay(false);
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo); memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
List<MemberOrderBo> memberOrderBoList; List<MemberOrderBo> memberOrderBoList;
...@@ -274,24 +346,24 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -274,24 +346,24 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
private MemberOrderStatisticsBo getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders){ private MemberOrderStatisticsBo getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders){
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo(); MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
Map<Integer, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel, Collectors.toList())); Map<BigDecimal, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getOrderAmount, Collectors.toList()));
memberOrderStatisticsBo.setOrderNum(baseOrders.size()); memberOrderStatisticsBo.setOrderNum(baseOrders.size());
BigDecimal totalAmount = baseOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = baseOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalAmount(totalAmount); memberOrderStatisticsBo.setTotalAmount(totalAmount);
List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getLevel()); List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getPrice());
diamondOrders = diamondOrders ==null?Collections.EMPTY_LIST:diamondOrders; diamondOrders = diamondOrders ==null?Collections.EMPTY_LIST:diamondOrders;
memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders.size()); memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders.size());
BigDecimal diamondAmount = diamondOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal diamondAmount = diamondOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
memberOrderStatisticsBo.setTotalDiamondAmount(diamondAmount); memberOrderStatisticsBo.setTotalDiamondAmount(diamondAmount);
List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getLevel()); List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getPrice());
goldOrders = goldOrders==null?Collections.EMPTY_LIST:goldOrders; goldOrders = goldOrders==null?Collections.EMPTY_LIST:goldOrders;
memberOrderStatisticsBo.setGoldOrderNum(goldOrders.size()); memberOrderStatisticsBo.setGoldOrderNum(goldOrders.size());
BigDecimal goldAmount = goldOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal goldAmount = goldOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGoldAmount(goldAmount); memberOrderStatisticsBo.setTotalGoldAmount(goldAmount);
List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getLevel()); List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getPrice());
generalOrders = generalOrders==null?Collections.EMPTY_LIST:generalOrders; generalOrders = generalOrders==null?Collections.EMPTY_LIST:generalOrders;
memberOrderStatisticsBo.setGeneralOrderNum(generalOrders.size()); memberOrderStatisticsBo.setGeneralOrderNum(generalOrders.size());
BigDecimal generalAmount = generalOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal generalAmount = generalOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
...@@ -300,24 +372,24 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -300,24 +372,24 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
return memberOrderStatisticsBo; return memberOrderStatisticsBo;
} }
private enum levelEnum{ private enum levelEnum{
DIAMOND(3,"钻石会员"), DIAMOND(new BigDecimal("0.20"),"钻石会员"),
GOLD(2,"黄金会员"), GOLD(new BigDecimal("0.10"),"黄金会员"),
GENERAL(1,"普通会员"); GENERAL(new BigDecimal("0.05"),"普通会员");
levelEnum(Integer level, String desc) { levelEnum(BigDecimal price, String desc) {
this.level = level; this.price = price;
this.desc = desc; this.desc = desc;
} }
private Integer level; private BigDecimal price;
private String desc; private String desc;
public Integer getLevel() { public BigDecimal getPrice() {
return level; return price;
} }
public void setLevel(Integer level) { public void setPrice(BigDecimal price) {
this.level = level; this.price = price;
} }
public String getDesc() { public String getDesc() {
......
...@@ -303,7 +303,7 @@ ...@@ -303,7 +303,7 @@
FROM FROM
`base_order` `base_order`
WHERE WHERE
type = 3 and <![CDATA[`member_level`<>0]]> type = 3
<if test="orderNo!=null and orderNo!=''"> <if test="orderNo!=null and orderNo!=''">
and `no`=#{orderNo} and `no`=#{orderNo}
</if> </if>
...@@ -334,6 +334,9 @@ ...@@ -334,6 +334,9 @@
<if test="endPayTime!=null and startPayTime==null"> <if test="endPayTime!=null and startPayTime==null">
and `pay_time` <![CDATA[<=#{endPayTime}]]> and `pay_time` <![CDATA[<=#{endPayTime}]]>
</if> </if>
<if test="isPay == true">
and `has_pay`=1
</if>
<if test="userIds!=null and userIds.size()>0"> <if test="userIds!=null and userIds.size()>0">
and `user_id` IN and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")"> <foreach collection="userIds" item="userId" separator="," open="(" close=")">
......
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