Commit c91fc91e authored by hanfeng's avatar hanfeng

修改订单统计

parent ef31d8fa
package com.xxfc.platform.order.Utils;
import java.util.Calendar;
public class OrderDateUtils {
public static String getFirstDayOfMonth(int year, int month) {
String monthStr = month < 10 ? "0" + month : String.valueOf(month);
return year + "-" + monthStr + "-" + "01";
}
/**
* get the last date of given month and year
* @param year
* @param month
* @return
*     
*/
public static String getLastDayOfMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DATE, 1);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" +
calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* get Calendar of given year
* @param year
* @return
*     
*/
private static Calendar getCalendarFormYear(int year) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.YEAR, year);
return cal;
}
/**
* get start date of given week no of a year
* @param year
* @param weekNo
* @return
*     
*/
public static String getStartDayOfWeekNo(int year, int weekNo) {
Calendar cal = getCalendarFormYear(year);
cal.set(Calendar.WEEK_OF_YEAR, weekNo);
return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
cal.get(Calendar.DAY_OF_MONTH);
}
/**
* get the end day of given week no of a year.
* @param year
* @param weekNo
* @return
*     
*/
public static String getEndDayOfWeekNo(int year, int weekNo) {
Calendar cal = getCalendarFormYear(year);
cal.set(Calendar.WEEK_OF_YEAR, weekNo);
cal.add(Calendar.DAY_OF_WEEK, 6);
return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
cal.get(Calendar.DAY_OF_MONTH);
}
}
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
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.msg.ObjectRestResponse;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import com.xxfc.platform.order.Utils.OrderDateUtils;
import com.xxfc.platform.order.contant.enumerate.OrderInquiryType; import com.xxfc.platform.order.contant.enumerate.OrderInquiryType;
import com.xxfc.platform.order.entity.MembersOrder; import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
...@@ -15,11 +17,14 @@ import com.xxfc.platform.order.pojo.HomePageOrderData; ...@@ -15,11 +17,14 @@ import com.xxfc.platform.order.pojo.HomePageOrderData;
import com.xxfc.platform.order.pojo.Member; import com.xxfc.platform.order.pojo.Member;
import com.xxfc.platform.order.pojo.MembersOrderDto; import com.xxfc.platform.order.pojo.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery; import com.xxfc.platform.order.pojo.OrderQuery;
import org.apache.commons.lang3.StringUtils;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
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.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -74,13 +79,11 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat ...@@ -74,13 +79,11 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
} }
result.setTotalOrders(orderStatistics.stream().map(HomePageOrderData::getTotalOrders).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setTotalOutstandingDeposit(orderStatistics.stream().map(HomePageOrderData::getTotalOutstandingDeposit).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setTotalOrders(orderStatistics.stream().map(HomePageOrderData::getTotalOrders).filter(o-> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add)); result.setAdditionalIndemnity(orderStatistics.stream().map(HomePageOrderData::getAdditionalIndemnity).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setTotalOutstandingDeposit(orderStatistics.stream().map(HomePageOrderData::getTotalOutstandingDeposit).filter(o-> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setAdditionalIndemnity(orderStatistics.stream().map(HomePageOrderData::getAdditionalIndemnity).filter(o-> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
return result; return result;
} }
...@@ -94,43 +97,89 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat ...@@ -94,43 +97,89 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
} }
//按每天分类 //按每天分类
if (CollectionUtil.isEmpty(memberLevels)) { if (CollectionUtil.isEmpty(memberLevels)) {
throw new BaseException("获取不到会员信息"); throw new BaseException("获取不到会员信息");
} }
//获取会员等级对应的名称 //获取会员等级对应的名称
HashMap<Integer, String> map = Maps.newHashMap(); HashMap<Integer, String> map = Maps.newHashMap();
for (BaseUserMemberLevel memberLevel : memberLevels) { for (BaseUserMemberLevel memberLevel : memberLevels) {
map.put(memberLevel.getLevel(),memberLevel.getName()); map.put(memberLevel.getLevel(), memberLevel.getName());
} }
//按查询条件获取统计信息 //按查询条件获取统计信息
ArrayList<MembersOrderDto> arrayList = Lists.newArrayList();
if (OrderInquiryType.DAY.getCode().equals(query.getType())) { if (OrderInquiryType.DAY.getCode().equals(query.getType())) {
ArrayList<MembersOrderDto> arrayList = Lists.newArrayList();
for (MembersOrder mb : membersOrderList) { for (MembersOrder mb : membersOrderList) {
MembersOrderDto mbdto = new MembersOrderDto(); MembersOrderDto mbdto = new MembersOrderDto();
//设置时间段
mbdto.setTimeSlot(mb.getPeriod()); mbdto.setTimeSlot(mb.getPeriod());
BigDecimal totalPayment = mbdto.getTotalPayment(); TotalPaymentAndMemberName(map, mb, mbdto);
List<Member> members = mb.getMembers(); arrayList.add(mbdto);
if (CollectionUtil.isNotEmpty(members)) { }
mbdto.setMembers(members); } else {
for (Member member : members) { if (membersOrderList.size() == 1) {
member.setMemberName(map.get(member.getLevel())); MembersOrder mb = membersOrderList.get(0);
totalPayment=totalPayment.add(member.getAmount()); MembersOrderDto mbdto = new MembersOrderDto();
//设置时间段
mbdto.setTimeSlot(query.getStartTime() + "-" + query.getEndTime());
TotalPaymentAndMemberName(map, mb, mbdto);
arrayList.add(mbdto);
} else {
for (int i = 0; i < membersOrderList.size(); i++) {
MembersOrder mb = membersOrderList.get(i);
String period = mb.getPeriod();
if (StringUtils.isBlank(period)) {
continue;
}
MembersOrderDto mbdto = new MembersOrderDto();
String[] periods = mb.getPeriod().split("-");
String startDay = null;
String endDay = null;
if (OrderInquiryType.WEEK.getCode().equals(query.getType())) {
startDay = OrderDateUtils.getEndDayOfWeekNo(Integer.parseInt(periods[0]), Integer.parseInt(periods[1]));
endDay = OrderDateUtils.getStartDayOfWeekNo(Integer.parseInt(periods[0]), Integer.parseInt(periods[1]));
}
if (OrderInquiryType.MONTH.getCode().equals(query.getType())) {
startDay = OrderDateUtils.getFirstDayOfMonth(Integer.parseInt(periods[0]), Integer.parseInt(periods[1]));
endDay = OrderDateUtils.getLastDayOfMonth(Integer.parseInt(periods[0]), Integer.parseInt(periods[1]));
} }
}
} if (i == 0) {
return arrayList;
}
if (OrderInquiryType.WEEK.getCode().equals(query.getType())){
ArrayList<MembersOrderDto> arrayList = Lists.newArrayList();
for (int i = 0; i < membersOrderList.size(); i++) {
startDay = timeStampConversionToString(query.getStartTime());
}
if (i == (membersOrderList.size() - 1)) {
endDay = timeStampConversionToString(query.getEndTime());
}
if (StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)) {
mbdto.setTimeSlot(startDay + "-" + endDay);
} else {
mbdto.setTimeSlot("");
}
arrayList.add(mbdto);
}
} }
} }
return arrayList;
}
private String timeStampConversionToString(Long startTime) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(startTime);
return simpleDateFormat.format(date);
}
return null; private void TotalPaymentAndMemberName(HashMap<Integer, String> map, MembersOrder mb, MembersOrderDto mbdto) {
BigDecimal totalPayment = mbdto.getTotalPayment();
List<Member> members = mb.getMembers();
//设置时间段购买会员总金额和不同的会员名称
if (CollectionUtil.isNotEmpty(members)) {
mbdto.setMembers(members);
for (Member member : members) {
member.setMemberName(map.get(member.getLevel()));
totalPayment = totalPayment.add(member.getAmount());
}
}
} }
} }
...@@ -133,6 +133,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -133,6 +133,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
} }
@GetMapping("/order") @GetMapping("/order")
@ApiOperation(value = "获取会员订单信息")
public ObjectRestResponse getMemberOrderStatisticsData(@RequestBody OrderQuery query) { public ObjectRestResponse getMemberOrderStatisticsData(@RequestBody OrderQuery query) {
//获取会员等级信息 //获取会员等级信息
......
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