Commit 0d1d172f authored by unset's avatar unset

Merge branch 'dev-tiande-member' into dev-tiande

parents af552369 cb47c6f8
...@@ -220,9 +220,9 @@ public class BaseOrder implements Serializable { ...@@ -220,9 +220,9 @@ public class BaseOrder implements Serializable {
private Integer version; private Integer version;
/** /**
* 下单来源 1--app;2--小程序 * 下单来源 1--app;2--小程序 3--后台
*/ */
@ApiModelProperty(value = "下单来源 1--app;2--小程序") @ApiModelProperty(value = "下单来源 1--app;2--小程序, 3--后台")
@Column(name = "order_origin") @Column(name = "order_origin")
private Integer orderOrigin; private Integer orderOrigin;
......
...@@ -12,21 +12,8 @@ import java.math.BigDecimal; ...@@ -12,21 +12,8 @@ import java.math.BigDecimal;
*/ */
@Data @Data
public class MemberOrderStatisticsBo { public class MemberOrderStatisticsBo {
//0为全部,其他为会员等级
private Integer type;
private Integer orderNum; private Integer orderNum;
private BigDecimal totalAmount; private BigDecimal totalAmount;
/**
* 钻石
*/
private Integer diamondOrderNum;
private BigDecimal totalDiamondAmount;
/**
* 黄金
*/
private Integer goldOrderNum;
private BigDecimal totalGoldAmount;
/**
* 普通
*/
private Integer generalOrderNum;
private BigDecimal totalGeneralAmount;
} }
...@@ -5,6 +5,8 @@ import com.xxfc.platform.order.pojo.dto.MemberOrderBo; ...@@ -5,6 +5,8 @@ import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderStatisticsBo; import com.xxfc.platform.order.pojo.dto.MemberOrderStatisticsBo;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @author libin * @author libin
* @version 1.0 * @version 1.0
...@@ -13,6 +15,6 @@ import lombok.Data; ...@@ -13,6 +15,6 @@ import lombok.Data;
*/ */
@Data @Data
public class MemberOrderPageVo { public class MemberOrderPageVo {
private MemberOrderStatisticsBo memberOrderStatisticsBo; private List<MemberOrderStatisticsBo> memberOrderStatisticsBo;
private PageDataVO<MemberOrderBo> memberOrderPage; private PageDataVO<MemberOrderBo> memberOrderPage;
} }
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderMemberDetail; import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.mapper.OrderMemberDetailMapper; import com.xxfc.platform.order.mapper.OrderMemberDetailMapper;
import com.xxfc.platform.order.pojo.order.add.AddMemberDTO; import com.xxfc.platform.order.pojo.order.add.AddMemberDTO;
import com.xxfc.platform.universal.feign.MQSenderFeign;
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.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
...@@ -24,7 +38,8 @@ import java.util.concurrent.atomic.AtomicReference; ...@@ -24,7 +38,8 @@ import java.util.concurrent.atomic.AtomicReference;
* @date 2019-06-19 17:00:35 * @date 2019-06-19 17:00:35
*/ */
@Service @Service
public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderMemberDetail> { @Slf4j
public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderMemberDetail> implements UserRestInterface {
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
...@@ -32,23 +47,107 @@ public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderM ...@@ -32,23 +47,107 @@ public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderM
@Autowired @Autowired
BaseOrderBiz baseOrderBiz; BaseOrderBiz baseOrderBiz;
@Autowired
MQSenderFeign mqSenderFeign;
@Autowired
OrderItemBiz orderItemBiz;
@Autowired
OrderAccountBiz orderAccountBiz;
/** /**
* 后台创建订单 * 后台创建订单
* @param dto * @param dto
*/ */
public void createOrder(AddMemberDTO dto) { public void createOrder(AddMemberDTO dto) {
UserDTO userDTO = getAdminUserInfo();
if (userDTO == null) {
throw new BaseException(ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
AppUserLogin appUserLogin = userFeign.one(dto.getPhone()); AppUserLogin appUserLogin = userFeign.one(dto.getPhone());
if (appUserLogin != null) { if (appUserLogin != null) {
List<BaseUserMemberLevel> baseUserMemberLevelList = userFeign.levels(); List<BaseUserMemberLevel> baseUserMemberLevelList = userFeign.levels();
if (baseUserMemberLevelList != null && baseUserMemberLevelList.size() > 0) { if (baseUserMemberLevelList != null && baseUserMemberLevelList.size() > 0) {
BaseOrder baseOrder = new BaseOrder(); BaseOrder baseOrder = new BaseOrder();
AtomicReference<BaseUserMemberLevel> currentLevel = null; AtomicReference<BaseUserMemberLevel> currentLevel = new AtomicReference<>();
baseUserMemberLevelList.parallelStream().forEach(baseUserMemberLevel -> { baseUserMemberLevelList.parallelStream().forEach(baseUserMemberLevel -> {
if (dto.getMemberLevel().equals(baseUserMemberLevel.getLevel())) { if (dto.getMemberLevel().equals(baseUserMemberLevel.getLevel())) {
currentLevel.set(baseUserMemberLevel); currentLevel.set(baseUserMemberLevel);
} }
}); });
if (currentLevel != null && currentLevel.get() != null) { if (currentLevel != null && currentLevel.get() != null) {
BaseUserMemberLevel baseUserMemberLevel = currentLevel.get();
baseOrder.setNo(OrderUtil.GetOrderNumber("", OrderUtil.APP_MID));
baseOrder.setUserId(appUserLogin.getId());
baseOrder.setGoodsAmount(dto.getOrderAmount());
baseOrder.setOrderAmount(dto.getOrderAmount());
baseOrder.setRealAmount(dto.getOrderAmount());
baseOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode());
baseOrder.setName(baseUserMemberLevel.getName());
if (dto.getPayTime() != null) {
baseOrder.setPayTime(dto.getPayTime());
} else {
baseOrder.setPayTime(System.currentTimeMillis());
}
baseOrder.setType(OrderTypeEnum.MEMBER.getCode());
baseOrder.setHasPay(1);
baseOrder.setOrderOrigin(3);
baseOrder.setCrtUser(userDTO.getUsername());
baseOrder.setCrtName(userDTO.getName());
baseOrder.setVersion(1);
baseOrderBiz.insertSelectiveRe(baseOrder);
OrderMemberDetail orderMemberDetail = new OrderMemberDetail();
orderMemberDetail.setOrderId(baseOrder.getId());
orderMemberDetail.setMemberLevel(baseUserMemberLevel.getLevel());
orderMemberDetail.setMemberLevelId(baseUserMemberLevel.getId());
orderMemberDetail.setName(baseUserMemberLevel.getName());
orderMemberDetail.setRebate(baseUserMemberLevel.getDiscount());
orderMemberDetail.setRentFreeNum(baseUserMemberLevel.getNumber());
insertSelectiveRe(orderMemberDetail);
baseOrder.setDetailId(orderMemberDetail.getId());
baseOrderBiz.updateSelectiveByIdRe(baseOrder);
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(baseOrder.getId());
orderItem.setName(baseOrder.getName());
orderItem.setBuyNum(1);
orderItem.setAwardNum(1);
orderItem.setType(6);
orderItem.setMetaUnitPrice(baseUserMemberLevel.getPrice());
orderItem.setUnitPrice(baseUserMemberLevel.getPrice());
orderItem.setTotalNum(1);
orderItem.setBuyNum(1);
orderItem.setAwardNum(0);
orderItem.setCutNum(0);
orderItem.setGoodId(baseUserMemberLevel.getId());
orderItemBiz.insertSelectiveRe(orderItem);
OrderAccount orderAccount = new OrderAccount();
orderAccount.setAccountAmount(baseOrder.getOrderAmount());
orderAccount.setOrderId(baseOrder.getId());
orderAccount.setTradeNo(baseOrder.getNo());
orderAccount.setAccountTime(System.currentTimeMillis());
orderAccount.setAccountType(101);
orderAccount.setAccountStatus(1);
orderAccount.setAccountDesc("会员订单支付");
orderAccount.setAccountDesc("{\"depositAmount\":0,\"orderAmount\":"+ baseOrder.getOrderAmount() + ",\"originDepositAmount\":0,\"originOrderAmount\":"+ baseOrder.getOrderAmount() + ",\"deductions\":[]}");
orderAccount.setOriginalAmount(baseOrder.getOrderAmount());
orderAccount.setDeductAmount(BigDecimal.ZERO);
orderAccountBiz.insertSelectiveRe(orderAccount);
//触发会员效益
UserMemberDTO userMemberDTO = new UserMemberDTO() {{
setUserId(baseOrder.getUserId());
setIsBind(ISBIND_BIND);
}};
userMemberDTO.setMemberLevel(orderMemberDetail.getMemberLevel());
userMemberDTO.setRentFreeDays(orderMemberDetail.getRentFreeNum());
userMemberDTO.setTotalNumber(orderMemberDetail.getRentFreeNum());
userMemberDTO.setDiscount(orderMemberDetail.getRebate());
ObjectRestResponse orr = userFeign.buyMember(userMemberDTO);
log.info("orr.getStatus() : " + orr.getStatus());
//发送消息队列到admin,进行分成计算
mqSenderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, RabbitConstant.KEY_MEMBER_SHARE, JSONUtil.toJsonStr(orderMemberDetail));
} }
...@@ -60,4 +159,8 @@ public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderM ...@@ -60,4 +159,8 @@ public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderM
} }
} }
@Override
public UserFeign getUserFeign() {
return userFeign;
}
} }
\ No newline at end of file
package com.xxfc.platform.order.service; package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.github.wxiaoqi.security.admin.bo.UserBo; import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign; 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.enumconstant.LevelEnum;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
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;
...@@ -199,74 +199,94 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -199,74 +199,94 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
/** /**
* 导出数据 * 导出数据
*
* @param memberOrderFindDTO * @param memberOrderFindDTO
*/ */
public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO,String name,OutputStream outputStream) throws Exception{ public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO, String name, OutputStream outputStream) throws Exception {
MemberOrderPageVo memberOrderPageVo = listMemberOrderPage(memberOrderFindDTO); MemberOrderPageVo memberOrderPageVo = listMemberOrderPage(memberOrderFindDTO);
List<MemberOrderBo> memberOrderBoList = memberOrderPageVo.getMemberOrderPage().getData(); List<MemberOrderBo> memberOrderBoList = memberOrderPageVo.getMemberOrderPage().getData();
MemberOrderStatisticsBo memberOrderStatisticsBo = memberOrderPageVo.getMemberOrderStatisticsBo(); List<MemberOrderStatisticsBo> memberOrderStatisticsBo = memberOrderPageVo.getMemberOrderStatisticsBo();
XSSFWorkbook hssfWorkbook = new XSSFWorkbook(); XSSFWorkbook hssfWorkbook = new XSSFWorkbook();
XSSFSheet sheet = hssfWorkbook.createSheet(name+"会员订单列表"); XSSFSheet sheet = hssfWorkbook.createSheet(name + "会员订单列表");
CellStyle headerCellStyle = createHeaderCellStyle(hssfWorkbook); CellStyle headerCellStyle = createHeaderCellStyle(hssfWorkbook);
CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook); CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook);
Row row1 = sheet.createRow(0); Row row1 = sheet.createRow(0);
createHeader(row1,0,new String[]{name+"会员订单列表"},headerCellStyle); createHeader(row1, 0, new String[]{name + "会员订单列表"}, headerCellStyle);
CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0,11); CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, 11);
sheet.addMergedRegion(cellRangeAddress); sheet.addMergedRegion(cellRangeAddress);
Row row2 = sheet.createRow(1); Row row2 = sheet.createRow(1);
Cell row2_cell1 = row2.createCell(0); Cell row2_cell1 = row2.createCell(0);
row2_cell1.setCellValue("统计"); row2_cell1.setCellValue("统计");
row2_cell1.setCellStyle(headerCellStyle); row2_cell1.setCellStyle(headerCellStyle);
CellRangeAddress cellRangeAddress2 = new CellRangeAddress(1,2,0,0); CellRangeAddress cellRangeAddress2 = new CellRangeAddress(1, 2, 0, 0);
sheet.addMergedRegion(cellRangeAddress2); sheet.addMergedRegion(cellRangeAddress2);
String[] header2 = new String[]{"会员订单总数(单)","会员订单总额(元)","钻石会员订单(单)","钻石会员订单总额(元)","黄金会员订单(单)","黄金会员订单总额(元)","普通会员订单(单)","普通会员订单总额(元)"}; String[] header2 = new String[1];
createHeader(row2,1,header2,headerCellStyle); List<Integer> levelIds = memberOrderStatisticsBo.stream().map(MemberOrderStatisticsBo::getType).collect(Collectors.toList());
if (levelIds != null && levelIds.size() > 0) {
List<BaseUserMemberLevel> list = new ArrayList<>();
List<BaseUserMemberLevel> levelList = userFeign.levels();
Map<Integer, List<BaseUserMemberLevel>> map = levelList.stream().collect(Collectors.groupingBy(BaseUserMemberLevel::getLevel));
if (MapUtil.isNotEmpty(map)) {
levelIds.parallelStream().forEach(integer -> {
if (map.get(integer) != null) {
list.addAll(map.get(integer));
}
});
List<BaseUserMemberLevel> newList = list.stream().sorted(Comparator.comparing(BaseUserMemberLevel::getLevel)).collect(Collectors.toList());
header2 = new String[newList.size() + 1];
for (int i = 0; i < newList.size(); i ++) {
header2[2*i + 2] = newList.get(i).getName() + "订单(单)";
header2[2*i + 3] = newList.get(i).getName() + "订单总额(元)";
}
}
}
createHeader(row2, 1, header2, headerCellStyle);
String[] countData = getData(memberOrderStatisticsBo); String[] countData = getData(memberOrderStatisticsBo);
Row row4 = sheet.createRow(2); Row row4 = sheet.createRow(2);
createCellCount(row4,1,countData,generalCellStyle); createCellCount(row4, 1, countData, generalCellStyle);
Row row5 = sheet.createRow(4); Row row5 = sheet.createRow(4);
String[] header3 = new String[]{"订单号","创建时间","订单状态","名称","用户姓名","手机号","上级姓名/手机号","促成人姓名/手机号","订单价格(元)","优惠金额(元)","实付金额(元)","支付时间"}; String[] header3 = new String[]{"订单号", "创建时间", "订单状态", "名称", "用户姓名", "手机号", "上级姓名/手机号", "促成人姓名/手机号", "订单价格(元)", "优惠金额(元)", "实付金额(元)", "支付时间"};
CellRangeAddress cellRangeAddress3 = new CellRangeAddress(3,3,0,header3.length); CellRangeAddress cellRangeAddress3 = new CellRangeAddress(3, 3, 0, header3.length);
sheet.addMergedRegion(cellRangeAddress3); sheet.addMergedRegion(cellRangeAddress3);
createHeader(row5,0,header3,headerCellStyle); createHeader(row5, 0, header3, headerCellStyle);
for(int i=0;i<header3.length;i++){ for (int i = 0; i < header3.length; i++) {
sheet.setColumnWidth(i,24*256); sheet.setColumnWidth(i, 24 * 256);
} }
List<String[]> orderDataList = getMemberOrderDataList(memberOrderBoList, 12); List<String[]> orderDataList = getMemberOrderDataList(memberOrderBoList, 12);
createMemberOrderCellData(sheet,5,generalCellStyle,orderDataList); createMemberOrderCellData(sheet, 5, generalCellStyle, orderDataList);
hssfWorkbook.write(outputStream); hssfWorkbook.write(outputStream);
hssfWorkbook.close(); hssfWorkbook.close();
} }
private List<String[]> getMemberOrderDataList(List<MemberOrderBo> memberOrderBoList,Integer size){ private List<String[]> getMemberOrderDataList(List<MemberOrderBo> memberOrderBoList, Integer size) {
List<String[]> memerOrderData = new ArrayList<>(); List<String[]> memerOrderData = new ArrayList<>();
String[] data; String[] data;
for (MemberOrderBo memberOrderBo : memberOrderBoList) { for (MemberOrderBo memberOrderBo : memberOrderBoList) {
data = new String[size]; data = new String[size];
data[0]=memberOrderBo.getOrderNo(); data[0] = memberOrderBo.getOrderNo();
data[1]=simleFormatter.format(memberOrderBo.getCreatTime()); data[1] = simleFormatter.format(memberOrderBo.getCreatTime());
data[2]=memberOrderBo.getStatus()==2?"取消":memberOrderBo.getStatus()==3?"待支付":memberOrderBo.getStatus()==6?"已完成":""; data[2] = memberOrderBo.getStatus() == 2 ? "取消" : memberOrderBo.getStatus() == 3 ? "待支付" : memberOrderBo.getStatus() == 6 ? "已完成" : "";
data[3]=memberOrderBo.getName(); data[3] = memberOrderBo.getName();
data[4]=memberOrderBo.getUserName(); data[4] = memberOrderBo.getUserName();
data[5]=memberOrderBo.getPhone()==null?"":memberOrderBo.getPhone(); data[5] = memberOrderBo.getPhone() == null ? "" : memberOrderBo.getPhone();
data[6]=String.format("%s/%s",memberOrderBo.getLeaderName()==null?"":memberOrderBo.getLeaderName(),memberOrderBo.getLeaderPhone()==null?"":memberOrderBo.getLeaderPhone()); data[6] = String.format("%s/%s", memberOrderBo.getLeaderName() == null ? "" : memberOrderBo.getLeaderName(), memberOrderBo.getLeaderPhone() == null ? "" : memberOrderBo.getLeaderPhone());
data[7]=String.format("%s/%s",memberOrderBo.getFacilitateName()==null?"":memberOrderBo.getFacilitateName(),memberOrderBo.getFacilitatePhone()==null?"":memberOrderBo.getFacilitatePhone()); data[7] = String.format("%s/%s", memberOrderBo.getFacilitateName() == null ? "" : memberOrderBo.getFacilitateName(), memberOrderBo.getFacilitatePhone() == null ? "" : memberOrderBo.getFacilitatePhone());
data[8]=memberOrderBo.getOrderAmount().toString(); data[8] = memberOrderBo.getOrderAmount().toString();
data[9]=memberOrderBo.getCouponAmount().toString(); data[9] = memberOrderBo.getCouponAmount().toString();
data[10]=memberOrderBo.getRealAmount().toString(); data[10] = memberOrderBo.getRealAmount().toString();
data[11]=memberOrderBo.getPayTime()==null?"":simleFormatter.format(new Date(memberOrderBo.getPayTime())); data[11] = memberOrderBo.getPayTime() == null ? "" : simleFormatter.format(new Date(memberOrderBo.getPayTime()));
memerOrderData.add(data); memerOrderData.add(data);
} }
return memerOrderData; return memerOrderData;
} }
private CellStyle createGeneralCellStyle(XSSFWorkbook hssfWorkbook){ private CellStyle createGeneralCellStyle(XSSFWorkbook hssfWorkbook) {
CellStyle cellStyleGeneral = createHeaderCellStyle(hssfWorkbook); CellStyle cellStyleGeneral = createHeaderCellStyle(hssfWorkbook);
cellStyleGeneral.setWrapText(true); cellStyleGeneral.setWrapText(true);
XSSFFont generalFont = createFont(hssfWorkbook); XSSFFont generalFont = createFont(hssfWorkbook);
...@@ -275,7 +295,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -275,7 +295,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
return cellStyleGeneral; return cellStyleGeneral;
} }
private CellStyle createHeaderCellStyle(XSSFWorkbook hssfWorkbook){ private CellStyle createHeaderCellStyle(XSSFWorkbook hssfWorkbook) {
XSSFCellStyle cellStyleHeader = hssfWorkbook.createCellStyle(); XSSFCellStyle cellStyleHeader = hssfWorkbook.createCellStyle();
cellStyleHeader.setAlignment(HorizontalAlignment.CENTER); cellStyleHeader.setAlignment(HorizontalAlignment.CENTER);
cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER); cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER);
...@@ -285,42 +305,40 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -285,42 +305,40 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
return cellStyleHeader; return cellStyleHeader;
} }
private XSSFFont createFont(XSSFWorkbook hssfWorkbook){ private XSSFFont createFont(XSSFWorkbook hssfWorkbook) {
XSSFFont font = hssfWorkbook.createFont(); XSSFFont font = hssfWorkbook.createFont();
font.setFontName("黑体"); font.setFontName("黑体");
font.setBold(true); font.setBold(true);
return font; return font;
} }
private String[] getData(MemberOrderStatisticsBo memberOrderStatisticsBo){ private String[] getData(List<MemberOrderStatisticsBo> memberOrderStatisticsBoList) {
String orderNum = String.valueOf(memberOrderStatisticsBo.getOrderNum()); String[] strings = new String[memberOrderStatisticsBoList.size() * 2];
String totalAmount = String.valueOf(memberOrderStatisticsBo.getTotalAmount()); for (int i = 0; i < memberOrderStatisticsBoList.size(); i ++ ) {
String diamondOrderNum = String.valueOf(memberOrderStatisticsBo.getDiamondOrderNum()); strings[2*i] = String.valueOf(memberOrderStatisticsBoList.get(i).getOrderNum());
String totalDiamondAmount = String.valueOf(memberOrderStatisticsBo.getDiamondOrderNum()); strings[2*i + 1] = String.valueOf(memberOrderStatisticsBoList.get(i).getTotalAmount());
String goldOrderNum = String.valueOf(memberOrderStatisticsBo.getGoldOrderNum()); }
String totalGoldAmount = String.valueOf(memberOrderStatisticsBo.getTotalGoldAmount()); return strings;
String generalOrderNum = String.valueOf(memberOrderStatisticsBo.getGeneralOrderNum());
String totalGeneralAmount = String.valueOf(memberOrderStatisticsBo.getTotalGeneralAmount());
return new String[]{orderNum,totalAmount,diamondOrderNum,totalDiamondAmount,goldOrderNum,totalGoldAmount,generalOrderNum,totalGeneralAmount};
} }
private void createHeader(Row row, int cellStartIndex, String[] header, CellStyle cellStyle){ private void createHeader(Row row, int cellStartIndex, String[] header, CellStyle cellStyle) {
for (int i =0 ;i<header.length;i++){ for (int i = 0; i < header.length; i++) {
Cell cell = row.createCell(cellStartIndex); Cell cell = row.createCell(cellStartIndex);
cell.setCellValue(header[i]); cell.setCellValue(header[i]);
cell.setCellStyle(cellStyle); cell.setCellStyle(cellStyle);
cellStartIndex+=1; cellStartIndex += 1;
} }
} }
private void createMemberOrderCellData(Sheet sheet,int startRowIndex,CellStyle cellStyle,List<String[]> memberOrderList){ private void createMemberOrderCellData(Sheet sheet, int startRowIndex, CellStyle cellStyle, List<String[]> memberOrderList) {
for (String[] data : memberOrderList) { for (String[] data : memberOrderList) {
Row row = sheet.createRow(startRowIndex++); Row row = sheet.createRow(startRowIndex++);
createCellCount(row,0,data,cellStyle); createCellCount(row, 0, data, cellStyle);
} }
} }
private void createCellCount(Row row,int CellStartIndex,String[] data,CellStyle cellStyle){
for(int i=CellStartIndex,y=0;y<data.length;i++,y++){ private void createCellCount(Row row, int CellStartIndex, String[] data, CellStyle cellStyle) {
for (int i = CellStartIndex, y = 0; y < data.length; i++, y++) {
Cell cell = row.createCell(i); Cell cell = row.createCell(i);
cell.setCellStyle(cellStyle); cell.setCellStyle(cellStyle);
cell.setCellValue(data[y]); cell.setCellValue(data[y]);
...@@ -330,28 +348,28 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -330,28 +348,28 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
public MemberOrderPageVo listMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO) { public MemberOrderPageVo listMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO) {
MemberOrderPageVo memberOrderPageVo = new MemberOrderPageVo(); MemberOrderPageVo memberOrderPageVo = new MemberOrderPageVo();
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo(); List<MemberOrderStatisticsBo> memberOrderStatisticsBo = new ArrayList<>();
List<Integer> userIds = new ArrayList<>(); List<Integer> userIds = new ArrayList<>();
PageDataVO<MemberOrderBo> pageDataVO= new PageDataVO<>(); PageDataVO<MemberOrderBo> pageDataVO = new PageDataVO<>();
pageDataVO.setPageNum(memberOrderFindDTO.getPage()); pageDataVO.setPageNum(memberOrderFindDTO.getPage());
pageDataVO.setPageSize(memberOrderFindDTO.getLimit()); pageDataVO.setPageSize(memberOrderFindDTO.getLimit());
pageDataVO.setData(Collections.EMPTY_LIST); pageDataVO.setData(Collections.EMPTY_LIST);
if (Objects.nonNull(memberOrderFindDTO.getEndPayTime())){ if (Objects.nonNull(memberOrderFindDTO.getEndPayTime())) {
Long payEndTime = memberOrderFindDTO.getEndPayTime()+(1000*60*60*24); Long payEndTime = memberOrderFindDTO.getEndPayTime() + (1000 * 60 * 60 * 24);
memberOrderFindDTO.setEndPayTime(payEndTime); memberOrderFindDTO.setEndPayTime(payEndTime);
} }
boolean isNoNullUserName = StringUtils.isNotEmpty(memberOrderFindDTO.getName()) && memberOrderFindDTO.getName().trim().length() > 0; boolean isNoNullUserName = StringUtils.isNotEmpty(memberOrderFindDTO.getName()) && memberOrderFindDTO.getName().trim().length() > 0;
boolean isNoNullPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getPhone()) && memberOrderFindDTO.getPhone().trim().length() > 0; boolean isNoNullPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getPhone()) && memberOrderFindDTO.getPhone().trim().length() > 0;
boolean isNoNullLeaderPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getLeaderPhone()) && memberOrderFindDTO.getLeaderPhone().trim().length() > 0; boolean isNoNullLeaderPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getLeaderPhone()) && memberOrderFindDTO.getLeaderPhone().trim().length() > 0;
if (isNoNullLeaderPhone || isNoNullPhone || isNoNullUserName) { if (isNoNullLeaderPhone || isNoNullPhone || isNoNullUserName) {
userIds = userFeign.findAppUserIds(memberOrderFindDTO.getPhone(),memberOrderFindDTO.getLeaderPhone(),memberOrderFindDTO.getName()); userIds = userFeign.findAppUserIds(memberOrderFindDTO.getPhone(), memberOrderFindDTO.getLeaderPhone(), memberOrderFindDTO.getName());
if (CollectionUtils.isEmpty(userIds)){ if (CollectionUtils.isEmpty(userIds)) {
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo); memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
memberOrderPageVo.setMemberOrderPage(pageDataVO); memberOrderPageVo.setMemberOrderPage(pageDataVO);
return memberOrderPageVo; return memberOrderPageVo;
} }
} }
if (memberOrderFindDTO.getPage() == 1){ if (memberOrderFindDTO.getPage() == 1) {
memberOrderFindDTO.setUserIds(userIds); memberOrderFindDTO.setUserIds(userIds);
memberOrderFindDTO.setIsPay(true); memberOrderFindDTO.setIsPay(true);
List<MemberOrderBo> baseOrders = baseOrderBiz.findMemberOrders(memberOrderFindDTO); List<MemberOrderBo> baseOrders = baseOrderBiz.findMemberOrders(memberOrderFindDTO);
...@@ -361,16 +379,16 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -361,16 +379,16 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo); memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
List<MemberOrderBo> memberOrderBoList; List<MemberOrderBo> memberOrderBoList;
if (!memberOrderFindDTO.getIsExport()){ if (!memberOrderFindDTO.getIsExport()) {
memberOrderFindDTO.setUserIds(userIds); memberOrderFindDTO.setUserIds(userIds);
pageDataVO = baseOrderBiz.findMemberOrderPage(memberOrderFindDTO); pageDataVO = baseOrderBiz.findMemberOrderPage(memberOrderFindDTO);
memberOrderBoList = pageDataVO.getData(); memberOrderBoList = pageDataVO.getData();
if (CollectionUtils.isEmpty(memberOrderBoList)){ if (CollectionUtils.isEmpty(memberOrderBoList)) {
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo); memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
memberOrderPageVo.setMemberOrderPage(pageDataVO); memberOrderPageVo.setMemberOrderPage(pageDataVO);
return memberOrderPageVo; return memberOrderPageVo;
} }
}else { } else {
memberOrderFindDTO.setUserIds(userIds); memberOrderFindDTO.setUserIds(userIds);
memberOrderBoList = baseOrderBiz.findMemberOrders(memberOrderFindDTO); memberOrderBoList = baseOrderBiz.findMemberOrders(memberOrderFindDTO);
} }
...@@ -392,7 +410,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -392,7 +410,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
Map<String, UserBo> userBoMap = userDTOList.stream().collect(Collectors.toMap(UserBo::getOrderNo, Function.identity())); Map<String, UserBo> userBoMap = userDTOList.stream().collect(Collectors.toMap(UserBo::getOrderNo, Function.identity()));
for (MemberOrderBo memberOrderBo : memberOrderBoList) { for (MemberOrderBo memberOrderBo : memberOrderBoList) {
UserBo userBo = userBoMap.get(memberOrderBo.getOrderNo()); UserBo userBo = userBoMap.get(memberOrderBo.getOrderNo());
if(Objects.nonNull(userBo)) { if (Objects.nonNull(userBo)) {
memberOrderBo.setUserName(userBo.getName()); memberOrderBo.setUserName(userBo.getName());
memberOrderBo.setPhone(userBo.getPhone()); memberOrderBo.setPhone(userBo.getPhone());
memberOrderBo.setLeaderName(userBo.getLeaderName()); memberOrderBo.setLeaderName(userBo.getLeaderName());
...@@ -405,35 +423,32 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -405,35 +423,32 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
return memberOrderBoList; return memberOrderBoList;
} }
private MemberOrderStatisticsBo getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders){ private List<MemberOrderStatisticsBo> getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders) {
List<MemberOrderStatisticsBo> list = new ArrayList<>();
Map<Integer, List<MemberOrderBo>> map = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel));//按照c1分组
if (MapUtil.isEmpty(map)) {
return list;
}
MemberOrderStatisticsBo total = new MemberOrderStatisticsBo();
total.setType(0);
total.setOrderNum(baseOrders.size());
total.setTotalAmount(new BigDecimal(baseOrders.stream().mapToDouble(n -> n.getOrderAmount()!=null ?n.getOrderAmount().doubleValue()
: 0.00).summaryStatistics().getSum()).setScale(2, BigDecimal.ROUND_HALF_UP));
list.add(total);
for (Map.Entry<Integer, List<MemberOrderBo>> entry : map.entrySet()) {
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo(); MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
Map<Integer, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel, Collectors.toList())); memberOrderStatisticsBo.setType(entry.getKey());
Map<Integer, List<MemberOrderBo>> baseOrderHasPayMap = baseOrders.stream().filter(x->x.getHasPay()==1).collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel, Collectors.toList())); List<MemberOrderBo> memberOrderBoList = entry.getValue();
memberOrderStatisticsBo.setOrderNum(baseOrders.size()); if (memberOrderBoList != null) {
BigDecimal totalAmount = baseOrders.stream().filter(x->x.getHasPay()==1).map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); memberOrderStatisticsBo.setOrderNum(memberOrderBoList.size());
memberOrderStatisticsBo.setTotalAmount(totalAmount); memberOrderStatisticsBo.setTotalAmount(new BigDecimal(memberOrderBoList.stream().mapToDouble(n -> n.getOrderAmount()!=null ?n.getOrderAmount().doubleValue()
: 0.00).summaryStatistics().getSum()).setScale(2, BigDecimal.ROUND_HALF_UP));
List<MemberOrderBo> diamondOrders = baseOrderMap.get(LevelEnum.DIAMOND.getLevel()); } else {
memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders==null?0:diamondOrders.size()); memberOrderStatisticsBo.setOrderNum(0);
List<MemberOrderBo> diamondHashPayOrders = baseOrderHasPayMap.get(LevelEnum.DIAMOND.getLevel()); memberOrderStatisticsBo.setTotalAmount(BigDecimal.ZERO);
diamondHashPayOrders = diamondHashPayOrders==null?Collections.EMPTY_LIST:diamondHashPayOrders; }
BigDecimal diamondAmount = diamondHashPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); list.add(memberOrderStatisticsBo);
memberOrderStatisticsBo.setTotalDiamondAmount(diamondAmount); }
return list.stream().sorted(Comparator.comparing(MemberOrderStatisticsBo::getType)).collect(Collectors.toList());
List<MemberOrderBo> goldOrders = baseOrderMap.get(LevelEnum.GOLD.getLevel());
memberOrderStatisticsBo.setGoldOrderNum(goldOrders==null?0:goldOrders.size());
List<MemberOrderBo> goldHasPayOrders = baseOrderHasPayMap.get(LevelEnum.GOLD.getLevel());
goldHasPayOrders = goldHasPayOrders==null?Collections.EMPTY_LIST:goldHasPayOrders;
BigDecimal goldAmount = goldHasPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGoldAmount(goldAmount);
List<MemberOrderBo> generalOrders = baseOrderMap.get(LevelEnum.GENERAL.getLevel());
memberOrderStatisticsBo.setGeneralOrderNum(generalOrders==null?0:generalOrders.size());
List<MemberOrderBo> generalHasPayOrders = baseOrderHasPayMap.get(LevelEnum.GENERAL.getLevel());
generalHasPayOrders = generalHasPayOrders==null?Collections.EMPTY_LIST:generalHasPayOrders;
BigDecimal generalAmount = generalHasPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGeneralAmount(generalAmount);
return memberOrderStatisticsBo;
} }
} }
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