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 5cf8399..a6fdae7 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 @@ -276,7 +276,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl dates = getDateRange(vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1)); + List dates = getDateRangeByDay(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 orderInfoEntities = playOrderInfoService.listByTime("", vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1), Stream.of("2", "3").collect(Collectors.toList())); + List orderInfoEntities = playOrderInfoService.listByTime("", vo.getEndOrderTime().get(0), vo.getEndOrderTime().get(1), new ArrayList<>()); 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("orderToTal", getTotalInfo(orderInfoEntities)); + resultMap.put("list", orders); + return R.ok(resultMap); + } + + + @PostMapping("/listByMonth") + public R listByMonth(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) { + String startTime = LocalDate.of(Integer.parseInt(vo.getEndOrderTime().get(0).split("-")[0]), Integer.parseInt(vo.getEndOrderTime().get(0).split("-")[1]), 1).toString() + " 00:00:00"; + LocalDate endDate = LocalDate.of(Integer.parseInt(vo.getEndOrderTime().get(1).split("-")[0]), Integer.parseInt(vo.getEndOrderTime().get(1).split("-")[1]), 1); + String endTime = endDate.with(TemporalAdjusters.lastDayOfMonth()) + " 23:59:59"; + + + List dates = getDateRangeByMonth(startTime, endTime); + //指定时间内所有订单 +// List orderInfoEntities = playOrderInfoService.listByTime("", startTime, endTime, Stream.of("4").collect(Collectors.toList())); + List orderInfoEntities = playOrderInfoService.listByTime("", startTime, endTime, new ArrayList<>()); + 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("orderToTal", getTotalInfo(orderInfoEntities)); resultMap.put("list", orders); return R.ok(resultMap); } @@ -94,7 +117,7 @@ public class PlayClerkPerformanceController { * @param endTime 结束时间 * @return 时间范围 */ - public List getDateRange(String startTime, String endTime) { + public List getDateRangeByDay(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")); @@ -107,40 +130,41 @@ public class PlayClerkPerformanceController { } /** - * 组装统计数据 + * 根据订单开始时间和结束时间,组装订单统计信息的查询时间范围 * - * @param performanceDate 统计时间 - * @param orderInfoEntities 订单列表 - * @return 统计数据 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 时间范围 */ + public List getDateRangeByMonth(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.getYear() + "-" + date1.getMonthValue()); + date1 = date1.plusMonths(1); - 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); - } } + return dates; + } + public PlayClerkPerformanceInfoReturnVo getTotalInfo(List orderInfoEntities) { Set customIds = new HashSet<>(); int orderContinueNumber = 0; int orderRefundNumber = 0; int ordersExpiredNumber = 0; + BigDecimal orderMoney = BigDecimal.ZERO; 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) { + for (PlayOrderInfoEntity orderInfoEntity : orderInfoEntities) { customIds.add(orderInfoEntity.getPurchaserBy()); finalAmount = finalAmount.add(orderInfoEntity.getFinalAmount()); + orderMoney = orderMoney.add(orderInfoEntity.getOrderMoney()); if ("1".equals(orderInfoEntity.getFirstOrder())) { orderFirstAmount = orderFirstAmount.add(orderInfoEntity.getFinalAmount()); } else { @@ -159,7 +183,6 @@ public class PlayClerkPerformanceController { } } PlayClerkPerformanceInfoReturnVo returnVo = new PlayClerkPerformanceInfoReturnVo(); - returnVo.setOrderNumber(orderInfoEntities.size()); returnVo.setOrderContinueNumber(orderContinueNumber); returnVo.setOrderRefundNumber(orderRefundNumber); @@ -171,6 +194,76 @@ public class PlayClerkPerformanceController { returnVo.setOrderRefundAmount(orderRefundAmount); returnVo.setCustomNumber(customIds.size()); returnVo.setEstimatedRevenue(estimatedRevenue); + returnVo.setOrderMoney(estimatedRevenue); + return returnVo; + } + /** + * 组装统计数据 + * + * @param performanceDate 统计时间 + * @param orderInfoEntities 订单列表 + * @return 统计数据 + */ + + public PlayClerkPerformanceInfoReturnVo getPerformanceInfo(String performanceDate, List orderInfoEntities) { + + + + 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 orderMoney = BigDecimal.ZERO; + 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()); + orderMoney = orderMoney.add(orderInfoEntity.getOrderMoney()); + 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.setPerformanceDate(performanceDate); + returnVo.setOrderNumber(itemOrderInfo.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); + returnVo.setOrderMoney(estimatedRevenue); return returnVo; } 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 ce2b62b..e0b4c70 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 @@ -58,10 +58,21 @@ public class PlayClerkPerformanceInfoReturnVo { * 超时未接单数 */ private Integer ordersExpiredNumber = 0; + /** * 订单金额 */ + private BigDecimal orderMoney; + + /** + * 订单最终金额(支付金额) + */ private BigDecimal finalAmount = BigDecimal.ZERO; + + /** + * 充值金额 + */ + private BigDecimal rechargeAmount = BigDecimal.ZERO; /** * 首单金额 */ @@ -86,7 +97,7 @@ public class PlayClerkPerformanceInfoReturnVo { /** * 连续用户数 */ - private final Integer continuousCustomNumber = 0; + private final Integer continuousCustomNumber = 0; /** * 续单比例 */