This commit is contained in:
parent
6a1c4a7b10
commit
2eb8736140
|
|
@ -88,6 +88,16 @@ public interface SaleOrderMapper extends BaseMapperX<SaleOrderDO> {
|
|||
List<TradeOrderTrendRespVO> selectListByPayTimeBetweenAndGroupByDay(@Param("beginTime") LocalDateTime beginTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
|
||||
/**
|
||||
* 按照支付时间统计订单(按月分组)
|
||||
*
|
||||
* @param beginTime 支付起始时间
|
||||
* @param endTime 支付截止时间
|
||||
* @return 订单统计列表
|
||||
*/
|
||||
List<TradeOrderTrendRespVO> selectListByPayTimeBetweenAndGroupByWeek(@Param("beginTime") LocalDateTime beginTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
|
||||
/**
|
||||
* 按照支付时间统计订单(按月分组)
|
||||
*
|
||||
|
|
@ -97,6 +107,17 @@ public interface SaleOrderMapper extends BaseMapperX<SaleOrderDO> {
|
|||
*/
|
||||
List<TradeOrderTrendRespVO> selectListByPayTimeBetweenAndGroupByMonth(@Param("beginTime") LocalDateTime beginTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
/**
|
||||
* 按照支付时间统计订单(按年分组)
|
||||
*
|
||||
* @param beginTime 支付起始时间
|
||||
* @param endTime 支付截止时间
|
||||
* @return 订单统计列表
|
||||
*/
|
||||
List<TradeOrderTrendRespVO> selectListByPayTimeBetweenAndGroupByYear(@Param("beginTime") LocalDateTime beginTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 更新汇总销售订单总数量,总金额
|
||||
|
|
|
|||
|
|
@ -822,40 +822,46 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
reqVO.setBeginTime(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(),-30)).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfDay(new Date()).toLocalDateTime());
|
||||
}else if(reqVO.getType() == 7){//周
|
||||
reqVO.setBeginTime(DateUtil.beginOfWeek(new Date()).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfWeek(new Date()).toLocalDateTime());
|
||||
Date beginTime = DateUtil.offsetWeek(new Date(),-12);
|
||||
Date endTime = new Date();
|
||||
reqVO.setBeginTime(DateUtil.beginOfWeek(beginTime).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfWeek(endTime).toLocalDateTime());
|
||||
}else if(reqVO.getType() == 30){//月
|
||||
reqVO.setBeginTime(DateUtil.beginOfMonth(new Date()).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfMonth(new Date()).toLocalDateTime());
|
||||
Date beginTime = DateUtil.offsetMonth(new Date(),-12);
|
||||
Date endTime = new Date();
|
||||
reqVO.setBeginTime(DateUtil.beginOfMonth(beginTime).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfMonth(endTime).toLocalDateTime());
|
||||
}else if(reqVO.getType() == 365){//年
|
||||
reqVO.setBeginTime(DateUtil.beginOfYear(new Date()).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfYear(new Date()).toLocalDateTime());
|
||||
Date beginTime = DateUtil.offset(new Date(),DateField.YEAR,-12);
|
||||
Date endTime = new Date();
|
||||
reqVO.setBeginTime(DateUtil.beginOfYear(beginTime).toLocalDateTime());
|
||||
reqVO.setEndTime(DateUtil.endOfYear(endTime).toLocalDateTime());
|
||||
}
|
||||
List<TradeOrderTrendRespVO> value = getOrderCountTrend(reqVO.getType(),reqVO.getBeginTime() , reqVO.getEndTime());
|
||||
// 查询对照数据
|
||||
LocalDateTime referenceEndTime = reqVO.getBeginTime().minusDays(1);
|
||||
LocalDateTime referenceBeginTime = referenceEndTime.minus(Duration.between(reqVO.getBeginTime(), reqVO.getEndTime()));
|
||||
if(reqVO.getType() == 7){//周
|
||||
referenceEndTime = DateUtil.beginOfWeek(DateUtil.offsetWeek(new Date(),-1)).toLocalDateTime();
|
||||
referenceBeginTime = DateUtil.endOfWeek(DateUtil.offsetWeek(new Date(),-1)).toLocalDateTime();
|
||||
referenceEndTime = DateUtil.beginOfWeek(DateUtil.offsetWeek(LocalDateTimeUtils.toDate(reqVO.getBeginTime()),-1)).toLocalDateTime();
|
||||
referenceBeginTime = DateUtil.endOfWeek(DateUtil.offsetWeek(LocalDateTimeUtils.toDate(reqVO.getBeginTime()),-1)).toLocalDateTime();
|
||||
}else if(reqVO.getType() == 30){//月
|
||||
referenceEndTime = DateUtil.beginOfMonth(DateUtil.offsetMonth(new Date(),-1)).toLocalDateTime();
|
||||
referenceBeginTime = DateUtil.endOfMonth(DateUtil.offsetMonth(new Date(),-1)).toLocalDateTime();
|
||||
referenceEndTime = DateUtil.beginOfMonth(DateUtil.offsetMonth(LocalDateTimeUtils.toDate(reqVO.getBeginTime()),-1)).toLocalDateTime();
|
||||
referenceBeginTime = DateUtil.endOfMonth(DateUtil.offsetMonth(LocalDateTimeUtils.toDate(reqVO.getBeginTime()),-1)).toLocalDateTime();
|
||||
}else if(reqVO.getType() == 365){//年
|
||||
referenceEndTime = DateUtil.beginOfYear(DateUtil.offset(new Date(), DateField.YEAR,-1)).toLocalDateTime();
|
||||
referenceBeginTime = DateUtil.endOfYear(DateUtil.offset(new Date(), DateField.YEAR,-1)).toLocalDateTime();
|
||||
referenceEndTime = DateUtil.beginOfYear(DateUtil.offset(LocalDateTimeUtils.toDate(reqVO.getBeginTime()), DateField.YEAR,-1)).toLocalDateTime();
|
||||
referenceBeginTime = DateUtil.endOfYear(DateUtil.offset(LocalDateTimeUtils.toDate(reqVO.getBeginTime()), DateField.YEAR,-1)).toLocalDateTime();
|
||||
}
|
||||
List<TradeOrderTrendRespVO> reference = new ArrayList<>();
|
||||
List<DataComparisonRespVO<TradeOrderTrendRespVO>> collect = new ArrayList<>();
|
||||
if(reqVO.getType()>1){
|
||||
reference = getOrderCountTrend(reqVO.getType(), referenceBeginTime, referenceEndTime);
|
||||
List<TradeOrderTrendRespVO> reference = getOrderCountTrend(reqVO.getType(), referenceBeginTime, referenceEndTime);
|
||||
// 顺序对比返回
|
||||
collect = IntStream.range(0, value.size())
|
||||
.mapToObj(index -> new DataComparisonRespVO<TradeOrderTrendRespVO>()
|
||||
.setValue(CollUtil.get(value, index))
|
||||
.setReference(CollUtil.get(reference, index)))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 顺序对比返回
|
||||
List<DataComparisonRespVO<TradeOrderTrendRespVO>> collect = IntStream.range(0, value.size())
|
||||
.mapToObj(index -> new DataComparisonRespVO<TradeOrderTrendRespVO>()
|
||||
.setValue(CollUtil.get(value, index))
|
||||
.setReference(CollUtil.get(reference, index)))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 降序排序
|
||||
if(!collect.isEmpty()){
|
||||
|
|
@ -864,12 +870,22 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
if(StringUtils.isNotBlank(date) && date.length()>7){
|
||||
flag = false;
|
||||
}
|
||||
if(flag) {//年
|
||||
if(reqVO.getType() == 7){//周
|
||||
collect.sort(Comparator.comparing(
|
||||
vo -> DateUtil.parseDate(vo.getValue().getDate()+"-01"), // 根据实际字段调整
|
||||
vo -> Integer.valueOf(vo.getValue().getDate()), // 根据实际字段调整
|
||||
Comparator.reverseOrder()
|
||||
));
|
||||
}else {
|
||||
} else if(reqVO.getType() == 30) {//周
|
||||
collect.sort(Comparator.comparing(
|
||||
vo -> Integer.valueOf(vo.getValue().getDate()), // 根据实际字段调整
|
||||
Comparator.reverseOrder()
|
||||
));
|
||||
} else if(reqVO.getType() == 365) {//周
|
||||
collect.sort(Comparator.comparing(
|
||||
vo -> Integer.valueOf(vo.getValue().getDate()), // 根据实际字段调整
|
||||
Comparator.reverseOrder()
|
||||
));
|
||||
} else {
|
||||
collect.sort(Comparator.comparing(
|
||||
vo -> DateUtil.parseDate(vo.getValue().getDate()), // 根据实际字段调整
|
||||
Comparator.reverseOrder()
|
||||
|
|
@ -1243,7 +1259,11 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
private List<TradeOrderTrendRespVO> getOrderCountTrend(Integer timeRangeType, LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
// 情况一:按年统计时,以月份分组
|
||||
if (TimeRangeTypeEnum.YEAR.getType().equals(timeRangeType)) {
|
||||
return saleOrderMapper.selectListByPayTimeBetweenAndGroupByYear(beginTime, endTime);
|
||||
}else if (TimeRangeTypeEnum.MONTH.getType().equals(timeRangeType)) {
|
||||
return saleOrderMapper.selectListByPayTimeBetweenAndGroupByMonth(beginTime, endTime);
|
||||
}else if (TimeRangeTypeEnum.WEEK.getType().equals(timeRangeType)) {
|
||||
return saleOrderMapper.selectListByPayTimeBetweenAndGroupByWeek(beginTime, endTime);
|
||||
}
|
||||
// 情况二:其它以天分组(天、周、月)
|
||||
return saleOrderMapper.selectListByPayTimeBetweenAndGroupByDay(beginTime, endTime);
|
||||
|
|
|
|||
|
|
@ -79,11 +79,23 @@
|
|||
GROUP BY date
|
||||
</select>
|
||||
|
||||
<select id="selectListByPayTimeBetweenAndGroupByWeek"
|
||||
resultType="cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO">
|
||||
SELECT DATE_FORMAT(DATE_SUB(create_time, INTERVAL WEEKDAY(create_time) DAY), '%Y%m%d') AS date,
|
||||
COUNT(1) AS orderCount,
|
||||
SUM(order_amount) AS orderAmount
|
||||
FROM oms_saleorder
|
||||
WHERE bill_status = 'C'
|
||||
AND create_time BETWEEN #{beginTime} AND #{endTime}
|
||||
AND deleted = FALSE
|
||||
GROUP BY date
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectListByPayTimeBetweenAndGroupByMonth"
|
||||
resultType="cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO">
|
||||
|
||||
SELECT DATE_FORMAT(create_time, '%Y-%m') AS date,
|
||||
SELECT DATE_FORMAT(create_time, '%Y%m') AS date,
|
||||
COUNT(1) AS orderCount,
|
||||
SUM(order_amount) AS orderAmount
|
||||
FROM oms_saleorder
|
||||
|
|
@ -94,6 +106,19 @@
|
|||
</select>
|
||||
|
||||
|
||||
<select id="selectListByPayTimeBetweenAndGroupByYear"
|
||||
resultType="cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO">
|
||||
|
||||
SELECT DATE_FORMAT(create_time, '%Y') AS date,
|
||||
COUNT(1) AS orderCount,
|
||||
SUM(order_amount) AS orderAmount
|
||||
FROM oms_saleorder
|
||||
WHERE bill_status = 'C'
|
||||
AND create_time BETWEEN #{beginTime} AND #{endTime}
|
||||
AND deleted = FALSE
|
||||
GROUP BY date
|
||||
</select>
|
||||
|
||||
<select id="querySumTotalQty" resultType="Long" >
|
||||
select COALESCE(sum(b.qty),0) from oms_saleorder a
|
||||
left join oms_saleorder_entry b on a.id = b.parent_id
|
||||
|
|
|
|||
|
|
@ -75,9 +75,9 @@ const timeRange = new Map()
|
|||
const eChartOptions = reactive<EChartsOption>({
|
||||
grid: {
|
||||
left: 20,
|
||||
right: 20,
|
||||
right: '10%',
|
||||
bottom: 20,
|
||||
top: 80,
|
||||
top: 50,
|
||||
containLabel: true
|
||||
},
|
||||
legend: {
|
||||
|
|
@ -118,13 +118,20 @@ const eChartOptions = reactive<EChartsOption>({
|
|||
case TimeRangeTypeEnum.DAY30:
|
||||
return formatDate(date, 'MM-DD')
|
||||
case TimeRangeTypeEnum.WEEK:
|
||||
let weekDay = formatDate(date, 'DDD')
|
||||
if (weekDay == '0') weekDay = '日'
|
||||
return '周' + weekDay
|
||||
let weekDay = formatDate(date, 'ddd')
|
||||
if (weekDay == 'Sun') weekDay = '日'
|
||||
if (weekDay == 'Mon') weekDay = '一'
|
||||
if (weekDay == 'Tue') weekDay = '二'
|
||||
if (weekDay == 'Wed') weekDay = '三'
|
||||
if (weekDay == 'Thu') weekDay = '四'
|
||||
if (weekDay == 'Fri') weekDay = '五'
|
||||
if (weekDay == 'Sat') weekDay = '六'
|
||||
//return '周' + weekDay
|
||||
return formatDate(date, 'YYYYMMDD')
|
||||
case TimeRangeTypeEnum.MONTH:
|
||||
return formatDate(date, 'D')
|
||||
return formatDate(date, 'YYYYMM')
|
||||
case TimeRangeTypeEnum.YEAR:
|
||||
return formatDate(date, 'M') + '月'
|
||||
return formatDate(date, 'YYYY')
|
||||
default:
|
||||
return date
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue