From 12c7422908af5abd861c4202e22de9f1af6ef247 Mon Sep 17 00:00:00 2001 From: admin <1752476835@qq.com> Date: Wed, 26 Jun 2024 01:37:46 +0800 Subject: [PATCH] fix --- .../impl/PlayClerkUserInfoServiceImpl.java | 6 +- .../controller/PlayOrderInfoController.java | 18 --- .../impl/PlayOrderInfoServiceImpl.java | 10 +- .../PlayClerkPerformanceController.java | 115 +++++++++++++++++- .../vo/PlayClerkPerformanceInfoQueryVo.java | 5 +- .../vo/PlayClerkPerformanceInfoReturnVo.java | 5 + 6 files changed, 132 insertions(+), 27 deletions(-) diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java index 0a21b6f..14ab6fc 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java @@ -280,9 +280,9 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl list = orderInfoService.listByTime("", startTime, nedTime, Stream.of("2","3").collect(Collectors.toList())); - return R.ok(list); - } - /** * 订单退款 diff --git a/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java index 756c6d0..83189d6 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java @@ -39,7 +39,10 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Random; import java.util.stream.Collectors; import static com.starry.admin.modules.order.module.constant.OrderConstant.ORDER_STATUS_2; @@ -275,10 +278,9 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl()); + lambdaQueryWrapper.in(PlayOrderInfoEntity::getOrderStatus, orderStatus); } - lambdaQueryWrapper.between(PlayOrderInfoEntity::getAcceptTime, startTime, endTime); - + lambdaQueryWrapper.between(PlayOrderInfoEntity::getPurchaserTime, startTime, endTime); return this.baseMapper.selectList(lambdaQueryWrapper); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java index af7dd02..20b8d6b 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java @@ -20,7 +20,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.List; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 店员业绩查询对 @@ -61,4 +66,112 @@ public class PlayClerkPerformanceController { }); return R.ok(voPage); } + + + @PostMapping("/listByTime") + public R listByTime(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) { + vo.getEndOrderTime().get(1); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + //时间范围 + List dates = getDateRange(vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1)); + //指定时间内所有订单 + List orderInfoEntities = playOrderInfoService.listByTime("", vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1), Stream.of("2", "3").collect(Collectors.toList())); + List orders = new ArrayList<>(dates.size()); + for (String date : dates) { + orders.add(getPerformanceInfo(date, orderInfoEntities)); + } + Map resultMap = new HashMap<>(orders.size()); + resultMap.put("dates", dates); + resultMap.put("list", orders); + return R.ok(resultMap); + } + + + /** + * 根据订单开始时间和结束时间,组装订单统计信息的查询时间范围 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 时间范围 + */ + public List getDateRange(String startTime, String endTime) { + List dates = new ArrayList<>(); + LocalDateTime date1 = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + LocalDateTime date2 = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + while (!date1.isAfter(date2)) { + dates.add(date1.toLocalDate().toString()); + date1 = date1.plusDays(1); + + } + return dates; + } + + /** + * 组装统计数据 + * + * @param performanceDate 统计时间 + * @param orderInfoEntities 订单列表 + * @return 统计数据 + */ + + public PlayClerkPerformanceInfoReturnVo getPerformanceInfo(String performanceDate, List orderInfoEntities) { + PlayClerkPerformanceInfoReturnVo vo = new PlayClerkPerformanceInfoReturnVo(); + vo.setPerformanceDate(performanceDate); + + + List itemOrderInfo = new ArrayList<>(); + for (PlayOrderInfoEntity orderInfoEntity : orderInfoEntities) { + //接单时间,在指定日期的 00:00:00点到23:59:59之间 + if (orderInfoEntity.getPurchaserTime().isAfter(LocalDateTime.parse(performanceDate + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) && orderInfoEntity.getPurchaserTime().isBefore(LocalDateTime.parse(performanceDate + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))) { + itemOrderInfo.add(orderInfoEntity); + } + } + + + Set customIds = new HashSet<>(); + int orderContinueNumber = 0; + int orderRefundNumber = 0; + int ordersExpiredNumber = 0; + BigDecimal finalAmount = BigDecimal.ZERO; + BigDecimal orderFirstAmount = BigDecimal.ZERO; + BigDecimal orderTotalAmount = BigDecimal.ZERO; + BigDecimal orderRewardAmount = BigDecimal.ZERO; + BigDecimal orderRefundAmount = BigDecimal.ZERO; + BigDecimal estimatedRevenue = BigDecimal.ZERO; + for (PlayOrderInfoEntity orderInfoEntity : itemOrderInfo) { + customIds.add(orderInfoEntity.getPurchaserBy()); + finalAmount = finalAmount.add(orderInfoEntity.getFinalAmount()); + if ("1".equals(orderInfoEntity.getFirstOrder())) { + orderFirstAmount = orderFirstAmount.add(orderInfoEntity.getFinalAmount()); + } else { + orderContinueNumber++; + orderTotalAmount = orderTotalAmount.add(orderInfoEntity.getFinalAmount()); + } + if ("2".equals(orderInfoEntity.getPlaceType())) { + orderRewardAmount = orderRewardAmount.add(orderInfoEntity.getFinalAmount()); + } + if ("1".equals(orderInfoEntity.getRefundType())) { + orderRefundNumber++; + orderRefundAmount = orderRefundAmount.add(orderInfoEntity.getRefundAmount()); + } + if ("1".equals(orderInfoEntity.getOrdersExpiredState())) { + ordersExpiredNumber++; + } + } + PlayClerkPerformanceInfoReturnVo returnVo = new PlayClerkPerformanceInfoReturnVo(); + + returnVo.setOrderNumber(orderInfoEntities.size()); + returnVo.setOrderContinueNumber(orderContinueNumber); + returnVo.setOrderRefundNumber(orderRefundNumber); + returnVo.setOrdersExpiredNumber(ordersExpiredNumber); + returnVo.setFinalAmount(finalAmount); + returnVo.setOrderFirstAmount(orderFirstAmount); + returnVo.setOrderTotalAmount(orderTotalAmount); + returnVo.setOrderRewardAmount(orderRewardAmount); + returnVo.setOrderRefundAmount(orderRefundAmount); + returnVo.setCustomNumber(customIds.size()); + returnVo.setEstimatedRevenue(estimatedRevenue); + return returnVo; + } + } diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java index 06266d7..1d749bb 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java @@ -37,7 +37,10 @@ public class PlayClerkPerformanceInfoQueryVo extends BasePageEntity { */ private String listingState; - + /** + * 订单状态ID + */ + private List orderStatus; /** * 完成订单时间 */ diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java index 14acb2f..ce2b62b 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java @@ -113,5 +113,10 @@ public class PlayClerkPerformanceInfoReturnVo { */ private BigDecimal estimatedRevenue = BigDecimal.ZERO; + /** + * 统计时间 + */ + private String performanceDate; + }