Commit b35fb148 authored by libin's avatar libin

Merge branch 'master' into master_member_level_feature

parents 2d9da75c 5d6e7f02
...@@ -281,7 +281,7 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -281,7 +281,7 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
BigDecimal balnece=sumDto.getBalance(); BigDecimal balnece=sumDto.getBalance();
//到账金额 //到账金额
BigDecimal realAmount=amount; BigDecimal realAmount=amount;
if (amount.compareTo(realAmount)>0){ if ((realAmount.add(commission)).compareTo(balnece)>0){
realAmount=balnece.subtract(commission); realAmount=balnece.subtract(commission);
} }
log.info("-----提现申请-----proceduReates==="+sumDto.getProceduReates()+"----commission===="+commission+"---realAmount==="+realAmount); log.info("-----提现申请-----proceduReates==="+sumDto.getProceduReates()+"----commission===="+commission+"---realAmount==="+realAmount);
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
<if test=" userId!=null and userId!=''"> <if test=" userId!=null and userId!=''">
user_id=#{userId}, user_id=#{userId},
</if> </if>
<if test="balance!=null and balance!='' "> <if test="balance!=null ">
balance=#{balance}, balance=#{balance},
</if> </if>
<if test="balance!=null and balance!='' "> <if test="withdrawals!=null and withdrawals!='' ">
withdrawals=#{withdrawals}, withdrawals=#{withdrawals},
</if> </if>
<if test="totalAmount!=null and totalAmount!='' "> <if test="totalAmount!=null and totalAmount!='' ">
......
package com.xxfc.platform.order.Utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class OrderDateUtils {
public static String getFirstDayOfMonth(int year, int month) {
String monthStr = 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);
}
public static String timeStampConversionToString(Long time) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(time);
return simpleDateFormat.format(date);
}
public static Long ConvertingStringsToTimestamps(String time) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.parse(time).getTime();
}
public static Integer getTodayOfWeek() {
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTimeInMillis(System.currentTimeMillis());
return cal.get(Calendar.WEEK_OF_YEAR);
}
public static Integer getTodayOfMonth() {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
return cal.get(Calendar.MONTH)+1;
}
public static Integer getThisYear() {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
return cal.get(Calendar.YEAR);
}
}
package com.xxfc.platform.order.contant.enumerate;
import lombok.NoArgsConstructor;
@NoArgsConstructor
public enum OrderInquiryType {
DAY(1,"按天分类"),WEEK(2,"按周分类"),MONTH(3,"按月分类");
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
OrderInquiryType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
package com.xxfc.platform.order.entity;
import com.xxfc.platform.order.pojo.Member;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author Administrator
*/
@Data
public class MembersOrder {
/**
* 时间段按日(yyyy-MM-dd)/周(yyyy-ww) /月(yyyy-MM)
*/
private String period;
List<Member> members;
}
...@@ -21,7 +21,7 @@ public class OrderStatistics { ...@@ -21,7 +21,7 @@ public class OrderStatistics {
/** /**
* 历史交总金额 * 历史交总金额
*/ */
@ApiModelProperty(value = "历史交总金额") @ApiModelProperty(value = "历史交总金额")
private BigDecimal totalGmv; private BigDecimal totalGmv;
/** /**
......
package com.xxfc.platform.order.pojo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 每日、每周或每月不同会员的总数据
* @author Administrator
*/
@Data
public class Member {
/**
* 金额
*/
private BigDecimal amount;
/**
* 会员等级
*/
private Integer level;
/**
* 购买次数
*/
private Integer number;
/**
* 会员名
*/
private String memberName;
}
package com.xxfc.platform.order.pojo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 每日、每周、每月会员购买数据
* @author Administrator
*/
@Data
public class MembersOrderDto {
/**
* 时间段
*/
private String timeSlot;
/**
* 时间段总数据
*
*/
private BigDecimal totalPayment;
/**
* 时间段内不同会员数据
*/
private List<Member> members;
}
package com.xxfc.platform.order.pojo;
import lombok.Data;
/**
* 会员订单统计条件
* @author Administrator
*/
@Data
public class OrderQuery {
private Integer page=1;
private Integer limit=10;
/**
* 查询开始时间
*/
private Long startTime;
/**
* 查询结束时间
*/
private Long endTime;
/**
* 1.按每日统计,2.按每周统计,3.按每月统计
*/
private Integer type=1;
}
...@@ -2,17 +2,17 @@ package com.xxfc.platform.order.biz; ...@@ -2,17 +2,17 @@ package com.xxfc.platform.order.biz;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
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.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.DailyMembersOrderStatistics; import com.xxfc.platform.order.entity.DailyMembersOrderStatistics;
import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper; import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.OrderQuery;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO; import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
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.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -21,12 +21,12 @@ import org.springframework.stereotype.Service; ...@@ -21,12 +21,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 每日购买会员订单统计 * 每日购买会员订单统计
...@@ -64,17 +64,45 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -64,17 +64,45 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
orderStatistics.setBranchCompanyId(OMPANY_ID); orderStatistics.setBranchCompanyId(OMPANY_ID);
orderStatistics.setOneDay(accountList.get(0).getOneDay()); orderStatistics.setOneDay(accountList.get(0).getOneDay());
} }
log.info("Members:统计完成");
if (JudgmentOfExistence(orderStatistics)) {
insertSelectiveRe(orderStatistics); insertSelectiveRe(orderStatistics);
} else {
mapper.updateByExampleSelective(orderStatistics, Example.builder(DailyMembersOrderStatistics.class)
.where(WeekendSqls.<DailyMembersOrderStatistics>custom()
.andEqualTo(DailyMembersOrderStatistics::getOneDay, orderStatistics.getOneDay())
.andEqualTo(DailyMembersOrderStatistics::getBranchCompanyId, orderStatistics.getBranchCompanyId()))
.build());
}
log.info("Members:保存成功");
} }
return true; return true;
} catch (Exception e) { } catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace(); log.error("Members:"+ e.getMessage());
return false; return false;
} }
} }
/**
* 添加前查询是否存在这条数据
* @param orderStatistic
* @return
*/
private boolean JudgmentOfExistence(DailyMembersOrderStatistics orderStatistic) {
List<DailyMembersOrderStatistics> statistics = selectByExample(Example.builder(DailyMembersOrderStatistics.class)
.where(WeekendSqls.<DailyMembersOrderStatistics>custom()
.andEqualTo(DailyMembersOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyMembersOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
if (CollectionUtils.isNotEmpty(statistics)) {
return false;
}
return true;
}
/** /**
* 获取押金和 * 获取押金和
* *
...@@ -120,4 +148,13 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -120,4 +148,13 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
public OrderStatistics findAll(Integer companyId) { public OrderStatistics findAll(Integer companyId) {
return mapper.monthOrderTotal(companyId); return mapper.monthOrderTotal(companyId);
} }
/**
* 根据时间按年月日分组
* @param query
* @return
*/
public List<MembersOrder> getMemberOrderStatistics(OrderQuery query) {
return mapper.getMemberOrderStatistics(query);
}
} }
...@@ -31,10 +31,11 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper, ...@@ -31,10 +31,11 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
boolean travelFlag = travelStatisticsBiz.saveDailyTravelOrderRecord(); boolean travelFlag = travelStatisticsBiz.saveDailyTravelOrderRecord();
boolean membersFlag= membersStatisticsBiz.saveDailyMembersOrderRecord(); boolean membersFlag= membersStatisticsBiz.saveDailyMembersOrderRecord();
if (vehicleFlag&&travelFlag&&membersFlag){ if (vehicleFlag&&travelFlag&&membersFlag){
log.info("----statisticalOrder:成功-----"); log.info("----statisticalOrder:成功-----");
return true; return true;
} }
log.info("----statisticalOrder:失败-----"); log.info("statisticalOrder:失败!(vehicleFlag="+vehicleFlag+"/travelFlag="+travelFlag+"membersFlag="+membersFlag+")");
return false; return false;
} }
......
...@@ -7,12 +7,10 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -7,12 +7,10 @@ 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.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xxfc.platform.order.contant.enumerate.AccountTypeEnum;
import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum; import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.entity.DailyTravelOrderStatistics;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper; import com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO; import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction; import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
...@@ -27,6 +25,7 @@ import org.springframework.stereotype.Service; ...@@ -27,6 +25,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
...@@ -113,19 +112,47 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -113,19 +112,47 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
try { try {
//获取每日订单统计 //获取每日订单统计
List<DailyTravelOrderStatistics> orderStatistics = getDailyTravelOrderStatistics(); List<DailyTravelOrderStatistics> orderStatistics = getDailyTravelOrderStatistics();
log.info("Travel:统计完成");
if (CollectionUtils.isNotEmpty(orderStatistics)) { if (CollectionUtils.isNotEmpty(orderStatistics)) {
for (DailyTravelOrderStatistics orderStatistic : orderStatistics) { for (DailyTravelOrderStatistics orderStatistic : orderStatistics) {
//保存统计 if (JudgmentOfExistence(orderStatistic)) {
insertSelectiveRe(orderStatistic); insertSelectiveRe(orderStatistic);
} else {
mapper.updateByExampleSelective(orderStatistic, Example.builder(DailyTravelOrderStatistics.class)
.where(WeekendSqls.<DailyTravelOrderStatistics>custom()
.andEqualTo(DailyTravelOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyTravelOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
} }
} }
}
log.info("Travel:保存成功");
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
log.error("Travel:"+e.getMessage());
return false; return false;
} }
} }
/**
* 添加前查询是否存在这条数据
* @param orderStatistic
* @return
*/
private boolean JudgmentOfExistence(DailyTravelOrderStatistics orderStatistic) {
List<DailyTravelOrderStatistics> statistics = selectByExample(Example.builder(DailyTravelOrderStatistics.class)
.where(WeekendSqls.<DailyTravelOrderStatistics>custom()
.andEqualTo(DailyTravelOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyTravelOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
if (CollectionUtils.isNotEmpty(statistics)) {
return false;
}
return true;
}
private List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics() { private List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics() {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.TOUR.getCode(), day); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.TOUR.getCode(), day);
...@@ -154,7 +181,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -154,7 +181,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
List<OrderAccountDTO> list = typeMap.get(orderAccountDTO.getAccountType()); List<OrderAccountDTO> list = typeMap.get(orderAccountDTO.getAccountType());
if (list == null) { if (list == null) {
list = new ArrayList<>(); list = new ArrayList<>();
companyIdmap.put(orderAccountDTO.getAccountType(), list); typeMap.put(orderAccountDTO.getAccountType(), list);
} }
list.add(orderAccountDTO); list.add(orderAccountDTO);
} }
...@@ -194,7 +221,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -194,7 +221,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyTravelOrderStatistics orderStatistics) { private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyTravelOrderStatistics orderStatistics) {
ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList();
for (Integer key : map.keySet()) { for (Integer key : map.keySet()) {
if (!key.equals(RefundTypeEnum.ORDER_FUND.getCode())) { if (!key.equals(AccountTypeEnum.IN_ORDER_PAY.getCode())) {
arrayList.addAll(map.get(key)); arrayList.addAll(map.get(key));
} }
} }
...@@ -207,10 +234,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -207,10 +234,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
add(DeductionTypeEnum.VIOLATE_CANCEL.getCode()); add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
}}); }});
orderStatistics.setDefaultMoney(bigDecimal); orderStatistics.setDefaultMoney(bigDecimal);
//订单退还总额 //订单退还总额
orderStatistics.setReturnGmv(orderStatistics.getGmv().subtract(bigDecimal)); orderStatistics.setReturnGmv(orderStatistics.getGmv().subtract(bigDecimal));
} }
} }
} }
...@@ -219,7 +244,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -219,7 +244,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
private DailyTravelOrderStatistics getGmvAndSecurityDeposit(Map<Integer, List<OrderAccountDTO>> map) { private DailyTravelOrderStatistics getGmvAndSecurityDeposit(Map<Integer, List<OrderAccountDTO>> map) {
DailyTravelOrderStatistics orderStatistics = new DailyTravelOrderStatistics(); DailyTravelOrderStatistics orderStatistics = new DailyTravelOrderStatistics();
List<OrderAccountDTO> orderAccountDTOS = map.get(RefundTypeEnum.ORDER_FUND.getCode()); List<OrderAccountDTO> orderAccountDTOS = map.get(AccountTypeEnum.IN_ORDER_PAY.getCode());
if (CollectionUtils.isNotEmpty(orderAccountDTOS)) { if (CollectionUtils.isNotEmpty(orderAccountDTOS)) {
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS); ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS);
...@@ -273,9 +298,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -273,9 +298,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
*/ */
private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) { private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) {
ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList();
for (OrderAccountDetail orderAccountDetail : orderAccountDetails) { orderAccountDetails.parallelStream().map(OrderAccountDetail::getDeductions).forEach(e->arrayList.addAll(e));
arrayList.addAll(orderAccountDetail.getDeductions());
}
return arrayList; return arrayList;
} }
...@@ -283,14 +306,14 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -283,14 +306,14 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
/** /**
* 根据type获取对应的金额总和 * 根据type获取对应的金额总和
* *
* @param OrderAccountDeduction * @param list
* @param type 金额类型 * @param type 金额类型
* @return * @return
*/ */
private BigDecimal get(List<OrderAccountDeduction> OrderAccountDeduction, List<Integer> type) { private BigDecimal get(List<OrderAccountDeduction> list, List<Integer> type) {
return OrderAccountDeduction.parallelStream() return list.parallelStream()
.filter(el -> el.getType().equals(type)) .filter(el ->type.contains(el.getType()))
.map(com.xxfc.platform.order.pojo.account.OrderAccountDeduction::getAmount) .map(OrderAccountDeduction::getAmount)
.reduce(BigDecimal.ZERO,BigDecimal::add); .reduce(BigDecimal.ZERO,BigDecimal::add);
} }
......
...@@ -4,9 +4,10 @@ import cn.hutool.json.JSONUtil; ...@@ -4,9 +4,10 @@ import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xxfc.platform.order.contant.enumerate.AccountTypeEnum;
import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum; import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum; import com.xxfc.platform.order.entity.DailyOrderStatistics;
import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics; import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
...@@ -22,6 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -22,6 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.common.example.UpdateByExampleSelectiveMapper;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
...@@ -207,15 +212,15 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -207,15 +212,15 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
/** /**
* 根据type获取对应的金额总和 * 根据type获取对应的金额总和
* *
* @param OrderAccountDeduction * @param list
* @param types 金额类型 * @param types 金额类型
* @return * @return
*/ */
private BigDecimal get(List<OrderAccountDeduction> OrderAccountDeduction, List<Integer> types) { private BigDecimal get(List<OrderAccountDeduction> list, List<Integer> types) {
return OrderAccountDeduction.parallelStream() return list.parallelStream()
.filter(el -> types.contains(el)) .filter(el -> types.contains(el.getType()))
.map(com.xxfc.platform.order.pojo.account.OrderAccountDeduction::getAmount) .map(OrderAccountDeduction::getAmount)
.reduce(BigDecimal.ZERO,BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
} }
...@@ -237,30 +242,55 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -237,30 +242,55 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
/** /**
* 统计订单并保存到数据库当中 * 统计订单并保存到数据库当中
*
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveDailyVehicleOrderRecord() { public boolean saveDailyVehicleOrderRecord() {
try { try {
//获取每日订单统计 //获取每日订单统计
List<DailyVehicleOrderStatistics> orderStatistics = getDailyVehicleOrderRecord(); List<DailyVehicleOrderStatistics> orderStatistics = getDailyVehicleOrderRecord();
log.info("Vehicle:统计完成");
if (CollectionUtils.isNotEmpty(orderStatistics)) { if (CollectionUtils.isNotEmpty(orderStatistics)) {
for (DailyVehicleOrderStatistics orderStatistic : orderStatistics) { for (DailyVehicleOrderStatistics orderStatistic : orderStatistics) {
//保存统计 //保存统计
if (JudgmentOfExistence(orderStatistic)) {
insertSelectiveRe(orderStatistic); insertSelectiveRe(orderStatistic);
} else {
mapper.updateByExampleSelective(orderStatistic, Example.builder(DailyVehicleOrderStatistics.class)
.where(WeekendSqls.<DailyVehicleOrderStatistics>custom()
.andEqualTo(DailyVehicleOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyVehicleOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
} }
} }
}
log.info("Vehicle:保存成功");
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
log.error("Vehicle:" + e.getMessage());
return false;
}
}
private boolean JudgmentOfExistence(DailyVehicleOrderStatistics orderStatistic) {
List<DailyVehicleOrderStatistics> statistics = selectByExample(Example.builder(DailyVehicleOrderStatistics.class)
.where(WeekendSqls.<DailyVehicleOrderStatistics>custom()
.andEqualTo(DailyVehicleOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyVehicleOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
if (CollectionUtils.isNotEmpty(statistics)) {
return false; return false;
} }
return true;
} }
/** /**
* 获取所有分公司每日统计记录 * 获取所有分公司每日统计记录
*
* @return * @return
*/ */
private List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord() { private List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord() {
...@@ -292,7 +322,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -292,7 +322,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
List<OrderAccountDTO> list = typeMap.get(orderAccountDTO.getAccountType()); List<OrderAccountDTO> list = typeMap.get(orderAccountDTO.getAccountType());
if (list == null) { if (list == null) {
list = new ArrayList<>(); list = new ArrayList<>();
companyIdmap.put(orderAccountDTO.getAccountType(), list); typeMap.put(orderAccountDTO.getAccountType(), list);
} }
list.add(orderAccountDTO); list.add(orderAccountDTO);
...@@ -318,6 +348,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -318,6 +348,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
/** /**
* 获取该分公司的统计数据 * 获取该分公司的统计数据
*
* @param map * @param map
* @return * @return
*/ */
...@@ -339,7 +370,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -339,7 +370,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyVehicleOrderStatistics orderStatistics) { private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyVehicleOrderStatistics orderStatistics) {
ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList();
for (Integer key : map.keySet()) { for (Integer key : map.keySet()) {
if (!key.equals(RefundTypeEnum.ORDER_FUND.getCode())) { if (!key.equals(AccountTypeEnum.IN_ORDER_PAY.getCode())) {
arrayList.addAll(map.get(key)); arrayList.addAll(map.get(key));
} }
} }
...@@ -354,22 +385,22 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -354,22 +385,22 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
orderStatistics.setRefundSecurityDeposit(refundSecurityDeposit); orderStatistics.setRefundSecurityDeposit(refundSecurityDeposit);
List<OrderAccountDeduction> OrderAccountDeductions = gettDeductions(orderAccountDetail); List<OrderAccountDeduction> OrderAccountDeductions = gettDeductions(orderAccountDetail);
//获取违章总额 //获取违章总额
orderStatistics.setViolationMoney(get(OrderAccountDeductions, new ArrayList<Integer>(){{ orderStatistics.setViolationMoney(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getCode()); add(DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getCode());
}})); }}));
//获取损坏赔偿总额 //获取损坏赔偿总额
orderStatistics.setCompensation(get(OrderAccountDeductions,new ArrayList<Integer>(){{ orderStatistics.setCompensation(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.DAMAGES.getCode()); add(DeductionTypeEnum.DAMAGES.getCode());
}} )); }}));
//获取违约总额 //获取违约总额
ArrayList<Integer> types = Lists.newArrayList(); ArrayList<Integer> types = Lists.newArrayList();
types.add(DeductionTypeEnum.VIOLATE_ADVANCE.getCode()); types.add(DeductionTypeEnum.VIOLATE_ADVANCE.getCode());
types.add(DeductionTypeEnum.VIOLATE_CANCEL.getCode()); types.add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
types.add(DeductionTypeEnum.VIOLATE_DELAY.getCode()); types.add(DeductionTypeEnum.VIOLATE_DELAY.getCode());
orderStatistics.setDefaultMoney(get(OrderAccountDeductions,types)); orderStatistics.setDefaultMoney(get(OrderAccountDeductions, types));
//消费金额 //消费金额
orderStatistics.setTotalExpenditure(get(OrderAccountDeductions,new ArrayList<Integer>(){{ orderStatistics.setTotalExpenditure(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.CONSUME.getCode()); add(DeductionTypeEnum.CONSUME.getCode());
}})); }}));
} }
...@@ -384,7 +415,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -384,7 +415,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private DailyVehicleOrderStatistics getGmvAndSecurityDeposit(Map<Integer, List<OrderAccountDTO>> map) { private DailyVehicleOrderStatistics getGmvAndSecurityDeposit(Map<Integer, List<OrderAccountDTO>> map) {
DailyVehicleOrderStatistics orderStatistics = new DailyVehicleOrderStatistics(); DailyVehicleOrderStatistics orderStatistics = new DailyVehicleOrderStatistics();
List<OrderAccountDTO> orderAccountDTOS = map.get(RefundTypeEnum.ORDER_FUND.getCode()); List<OrderAccountDTO> orderAccountDTOS = map.get(AccountTypeEnum.IN_ORDER_PAY.getCode());
if (CollectionUtils.isNotEmpty(orderAccountDTOS)) { if (CollectionUtils.isNotEmpty(orderAccountDTOS)) {
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS); ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS);
...@@ -434,9 +465,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -434,9 +465,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) { private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) {
ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList();
for (OrderAccountDetail orderAccountDetail : orderAccountDetails) { orderAccountDetails.parallelStream().map(OrderAccountDetail::getDeductions).forEach(e -> arrayList.addAll(e));
arrayList.addAll(orderAccountDetail.getDeductions());
}
return arrayList; return arrayList;
} }
......
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.DailyMembersOrderStatistics; import com.xxfc.platform.order.entity.DailyMembersOrderStatistics;
import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.pojo.OrderQuery;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
...@@ -18,4 +20,7 @@ public interface DailyMembersOrderStatisticsMapper extends Mapper<DailyMembersOr ...@@ -18,4 +20,7 @@ public interface DailyMembersOrderStatisticsMapper extends Mapper<DailyMembersOr
OrderStatistics monthOrderTotal(@Param("companyId") Integer companyId); OrderStatistics monthOrderTotal(@Param("companyId") Integer companyId);
List<MembersOrder> getMemberOrderStatistics(OrderQuery query);
} }
package com.xxfc.platform.order.rest.background; package com.xxfc.platform.order.rest.background;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
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.dto.UserDTO;
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.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.biz.DailyMembersOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyMembersOrderStatisticsBiz;
import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz;
import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz;
import com.xxfc.platform.order.biz.OrderStatisticsBiz; import com.xxfc.platform.order.biz.OrderStatisticsBiz;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.pojo.HomePageOrderData; import com.xxfc.platform.order.pojo.HomePageOrderData;
import com.xxfc.platform.order.pojo.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.*;
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.io.IOException;
import java.lang.reflect.Array;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author Administrator * @author Administrator
...@@ -33,6 +52,9 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -33,6 +52,9 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
@Autowired @Autowired
private UserAuthConfig userAuthConfig; private UserAuthConfig userAuthConfig;
@Autowired
private HttpServletResponse response;
/** /**
* 租车订单 * 租车订单
*/ */
...@@ -56,7 +78,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -56,7 +78,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
/** /**
* 数据权限 * 数据权限
*/ */
private final Integer DATA_AUTHORITY=1; private final Integer DATA_AUTHORITY = 1;
@Autowired @Autowired
private DailyVehicleOrderStatisticsBiz vehicleBiz; private DailyVehicleOrderStatisticsBiz vehicleBiz;
...@@ -68,6 +90,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -68,6 +90,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
@Autowired @Autowired
private DailyMembersOrderStatisticsBiz membersBiz; private DailyMembersOrderStatisticsBiz membersBiz;
@ApiOperation("获取订单统计数据") @ApiOperation("获取订单统计数据")
@GetMapping("/findAll/{type}") @GetMapping("/findAll/{type}")
public ObjectRestResponse findAll(@PathVariable Integer type) { public ObjectRestResponse findAll(@PathVariable Integer type) {
...@@ -83,13 +106,13 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -83,13 +106,13 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
UserDTO user = userDTOObjectRestResponse.getData(); UserDTO user = userDTOObjectRestResponse.getData();
Integer companyId = user.getCompanyId(); Integer companyId = user.getCompanyId();
if (DATA_AUTHORITY.equals(user.getDataAll())){ if (DATA_AUTHORITY.equals(user.getDataAll())) {
companyId=null; companyId = null;
} }
if (TYPE_VEHICLE.equals(type)) { if (TYPE_VEHICLE.equals(type)) {
OrderStatistics vehicle = vehicleBiz.findAll(companyId); OrderStatistics vehicle = vehicleBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData(){{ return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv())); setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv()));
setAdditionalIndemnity(vehicle.getTotalCompensation() setAdditionalIndemnity(vehicle.getTotalCompensation()
.add(vehicle.getTotalForfeit()) .add(vehicle.getTotalForfeit())
...@@ -100,14 +123,14 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -100,14 +123,14 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
} }
if (TYPE_TOUR.equals(type)) { if (TYPE_TOUR.equals(type)) {
OrderStatistics tour = TravelBiz.findAll(companyId); OrderStatistics tour = TravelBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData(){{ return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv())); setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv()));
setAdditionalIndemnity(tour.getTotalDefaultMoney()); setAdditionalIndemnity(tour.getTotalDefaultMoney());
}}); }});
} }
if (TYPE_MEMBER.equals(type)) { if (TYPE_MEMBER.equals(type)) {
OrderStatistics member = membersBiz.findAll(companyId); OrderStatistics member = membersBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData(){{ return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(member.getTotalGmv()); setTotalOrders(member.getTotalGmv());
}}); }});
...@@ -125,5 +148,43 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -125,5 +148,43 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
} }
@PostMapping("/order")
@ApiOperation(value = "会员统计")
public ObjectRestResponse<List<MembersOrderDto>> getMemberOrderStatisticsData(@RequestBody OrderQuery query) throws ParseException {
//获取会员等级信息
List<BaseUserMemberLevel> memberLevels = userFeign.levels();
//获取会员订单统计信息
return ObjectRestResponse.succ(baseBiz.getMemberOrderStatistics(memberLevels, query));
}
@PostMapping("/excel")
@ApiOperation(value = "下载excel表")
public void downloadExcel(@RequestBody OrderQuery query) throws Exception {
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter(true);
List<BaseUserMemberLevel> memberLevels = userFeign.levels();
List<MembersOrderDto> list = baseBiz.getMemberOrderStatistics(memberLevels, query);
List<HashMap<Object, Object>> rows =baseBiz.getRows(list,memberLevels);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
//out为OutputStream,需要写出到的目标流
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=hwddtj.xls");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
} }
...@@ -38,4 +38,55 @@ ...@@ -38,4 +38,55 @@
<!-- DATE_FORMAT(one_day,'%Y-%c')=DATE_FORMAT(DATE_SUB(NOW(),interval 1 day),'%Y-%c')--> <!-- DATE_FORMAT(one_day,'%Y-%c')=DATE_FORMAT(DATE_SUB(NOW(),interval 1 day),'%Y-%c')-->
<!-- </select>--> <!-- </select>-->
<select id="getMemberOrderStatistics" parameterType="com.xxfc.platform.order.pojo.OrderQuery"
resultMap="order">
SELECT
<if test="type==2">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%x-%v') AS period,
</if>
<if test="type==3">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%m') AS period,
</if>
<if test="type==1">
date( FROM_UNIXTIME( a.account_time / 1000 ) ) AS period,
</if>
count( a.id ) AS number,
SUM( a.account_amount ) AS amount,
d.member_level AS level
FROM
order_account a
LEFT JOIN base_order b ON a.order_id = b.id
LEFT JOIN order_member_detail d ON d.order_id = b.id
WHERE
a.account_status = 1
AND a.account_type = 101
AND b.type = 3
<if test="startTime != null">
AND a.crt_time &gt;= #{startTime}
</if>
<if test="endTime != null">
AND a.crt_time &lt;= #{endTime}
</if>
GROUP BY
<if test="type==2">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%x-%v'),
</if>
<if test="type==3">
DATE_FORMAT(date( FROM_UNIXTIME( a.account_time / 1000 ) ),'%Y-%m'),
</if>
<if test="type==1">
date( FROM_UNIXTIME( a.account_time / 1000 ) ),
</if>
d.member_level
</select>
<resultMap id="order" type="com.xxfc.platform.order.entity.MembersOrder">
<result column="period" property="period"></result>
<collection property="members" ofType="com.xxfc.platform.order.pojo.Member">
<result column="number" property="number"></result>
<result column="amount" property="amount"></result>
<result column="level" property="level"></result>
</collection>
</resultMap>
</mapper> </mapper>
\ No newline at end of file
...@@ -67,7 +67,7 @@ public class AliYunSmsBiz { ...@@ -67,7 +67,7 @@ public class AliYunSmsBiz {
public static final String TEMPLATE_ID_CANCEL_E = "SMS_173345667"; public static final String TEMPLATE_ID_CANCEL_E = "SMS_173345667";
//租车押金退还 22 //租车押金退还 22
//public static final String TEMPLATE_ID_FINISH_A = "460772"; //public static final String TEMPLATE_ID_FINISH_A = "460772";
public static final String TEMPLATE_ID_FINISH_A = "SMS_173340710"; public static final String TEMPLATE_ID_FINISH_A = "SMS_175240587";
//违章押金退还 23 //违章押金退还 23
//public static final String TEMPLATE_ID_FINISH_B = "460773"; //public static final String TEMPLATE_ID_FINISH_B = "460773";
public static final String TEMPLATE_ID_FINISH_B = "SMS_173340712"; public static final String TEMPLATE_ID_FINISH_B = "SMS_173340712";
......
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