diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java index 464563c..410323b 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java @@ -88,6 +88,16 @@ public interface SaleOrderMapper extends BaseMapperX { List selectListByPayTimeBetweenAndGroupByDay(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); + /** + * 按照支付时间统计订单(按月分组) + * + * @param beginTime 支付起始时间 + * @param endTime 支付截止时间 + * @return 订单统计列表 + */ + List selectListByPayTimeBetweenAndGroupByWeek(@Param("beginTime") LocalDateTime beginTime, + @Param("endTime") LocalDateTime endTime); + /** * 按照支付时间统计订单(按月分组) * @@ -97,6 +107,17 @@ public interface SaleOrderMapper extends BaseMapperX { */ List selectListByPayTimeBetweenAndGroupByMonth(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); + /** + * 按照支付时间统计订单(按年分组) + * + * @param beginTime 支付起始时间 + * @param endTime 支付截止时间 + * @return 订单统计列表 + */ + List selectListByPayTimeBetweenAndGroupByYear(@Param("beginTime") LocalDateTime beginTime, + @Param("endTime") LocalDateTime endTime); + + /** * 更新汇总销售订单总数量,总金额 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index ca6db66..a751332 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -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 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 reference = new ArrayList<>(); + List> collect = new ArrayList<>(); if(reqVO.getType()>1){ - reference = getOrderCountTrend(reqVO.getType(), referenceBeginTime, referenceEndTime); + List reference = getOrderCountTrend(reqVO.getType(), referenceBeginTime, referenceEndTime); + // 顺序对比返回 + collect = IntStream.range(0, value.size()) + .mapToObj(index -> new DataComparisonRespVO() + .setValue(CollUtil.get(value, index)) + .setReference(CollUtil.get(reference, index))) + .collect(Collectors.toList()); } - // 顺序对比返回 - List> collect = IntStream.range(0, value.size()) - .mapToObj(index -> new DataComparisonRespVO() - .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 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); diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml index 73376cf..f85d1ac 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml @@ -79,11 +79,23 @@ GROUP BY date + + + +