|
@@ -126,13 +126,26 @@ public class StatServiceImpl implements StatService {
|
|
|
.ge(WashOrder::getStartTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
|
.ge(WashOrder::getStartTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
|
|
.list();
|
|
.list();
|
|
|
|
|
|
|
|
- // 今日收入:充值收入 + 跨店收入(按 split_record 创建时间,与日统计表口径一致)
|
|
|
|
|
- var todayIncome = splitRecordService.lambdaQuery()
|
|
|
|
|
|
|
+ // 今日收入:充值收入 + 跨店收入 - 退款 - 跨店支出
|
|
|
|
|
+ var todayRechargeAndCrossIncome = splitRecordService.lambdaQuery()
|
|
|
.eq(SplitRecord::getToStationId, stationId)
|
|
.eq(SplitRecord::getToStationId, stationId)
|
|
|
.in(SplitRecord::getType, SplitRecord.TYPE_RECHARGE, SplitRecord.TYPE_CROSS_INCOME)
|
|
.in(SplitRecord::getType, SplitRecord.TYPE_RECHARGE, SplitRecord.TYPE_CROSS_INCOME)
|
|
|
.ge(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
|
.ge(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
|
|
.lt(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN))
|
|
.lt(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN))
|
|
|
- .list().stream().mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var todayRefund = splitRecordService.lambdaQuery()
|
|
|
|
|
+ .eq(SplitRecord::getFromStationId, stationId)
|
|
|
|
|
+ .eq(SplitRecord::getType, SplitRecord.TYPE_REFUND)
|
|
|
|
|
+ .ge(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
|
|
|
|
+ .lt(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN))
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var todayCrossExpend = splitRecordService.lambdaQuery()
|
|
|
|
|
+ .eq(SplitRecord::getFromStationId, stationId)
|
|
|
|
|
+ .eq(SplitRecord::getType, SplitRecord.TYPE_CROSS_EXPEND)
|
|
|
|
|
+ .ge(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
|
|
|
|
+ .lt(SplitRecord::getCreateTime, LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN))
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var todayIncome = todayRechargeAndCrossIncome - todayRefund - todayCrossExpend;
|
|
|
|
|
|
|
|
// 站点今日注册人数
|
|
// 站点今日注册人数
|
|
|
var todayRegistrations = userService.countDailyRegister(LocalDate.now(), stationId);
|
|
var todayRegistrations = userService.countDailyRegister(LocalDate.now(), stationId);
|
|
@@ -152,12 +165,25 @@ public class StatServiceImpl implements StatService {
|
|
|
.le(WashOrder::getStartTime, LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX))
|
|
.le(WashOrder::getStartTime, LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX))
|
|
|
.list();
|
|
.list();
|
|
|
var monthConsumptionAmount = monthOrders.stream().filter(o -> o.getAmount() != null).mapToInt(WashOrder::getAmount).sum();
|
|
var monthConsumptionAmount = monthOrders.stream().filter(o -> o.getAmount() != null).mapToInt(WashOrder::getAmount).sum();
|
|
|
- var monthIncome = splitRecordService.lambdaQuery()
|
|
|
|
|
|
|
+ var monthRechargeAndCrossIncome = splitRecordService.lambdaQuery()
|
|
|
.eq(SplitRecord::getToStationId, stationId)
|
|
.eq(SplitRecord::getToStationId, stationId)
|
|
|
.in(SplitRecord::getType, SplitRecord.TYPE_RECHARGE, SplitRecord.TYPE_CROSS_INCOME)
|
|
.in(SplitRecord::getType, SplitRecord.TYPE_RECHARGE, SplitRecord.TYPE_CROSS_INCOME)
|
|
|
.ge(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atTime(LocalTime.MIN))
|
|
.ge(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atTime(LocalTime.MIN))
|
|
|
.lt(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).plusMonths(1).atTime(LocalTime.MIN))
|
|
.lt(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).plusMonths(1).atTime(LocalTime.MIN))
|
|
|
- .list().stream().mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var monthRefund = splitRecordService.lambdaQuery()
|
|
|
|
|
+ .eq(SplitRecord::getFromStationId, stationId)
|
|
|
|
|
+ .eq(SplitRecord::getType, SplitRecord.TYPE_REFUND)
|
|
|
|
|
+ .ge(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atTime(LocalTime.MIN))
|
|
|
|
|
+ .lt(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).plusMonths(1).atTime(LocalTime.MIN))
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var monthCrossExpend = splitRecordService.lambdaQuery()
|
|
|
|
|
+ .eq(SplitRecord::getFromStationId, stationId)
|
|
|
|
|
+ .eq(SplitRecord::getType, SplitRecord.TYPE_CROSS_EXPEND)
|
|
|
|
|
+ .ge(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atTime(LocalTime.MIN))
|
|
|
|
|
+ .lt(SplitRecord::getCreateTime, LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).plusMonths(1).atTime(LocalTime.MIN))
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var monthIncome = monthRechargeAndCrossIncome - monthRefund - monthCrossExpend;
|
|
|
var monthRegistrations = userService.countMonthRegister(LocalDate.now());
|
|
var monthRegistrations = userService.countMonthRegister(LocalDate.now());
|
|
|
var monthOrdersMap = washOrderService.countMonthOrders(LocalDate.now());
|
|
var monthOrdersMap = washOrderService.countMonthOrders(LocalDate.now());
|
|
|
|
|
|
|
@@ -165,10 +191,19 @@ public class StatServiceImpl implements StatService {
|
|
|
var allOrders = washOrderService.lambdaQuery()
|
|
var allOrders = washOrderService.lambdaQuery()
|
|
|
.eq(WashOrder::getStationId, stationId)
|
|
.eq(WashOrder::getStationId, stationId)
|
|
|
.list();
|
|
.list();
|
|
|
- var totalIncome = splitRecordService.lambdaQuery()
|
|
|
|
|
|
|
+ var totalRechargeAndCrossIncome = splitRecordService.lambdaQuery()
|
|
|
.eq(SplitRecord::getToStationId, stationId)
|
|
.eq(SplitRecord::getToStationId, stationId)
|
|
|
.in(SplitRecord::getType, SplitRecord.TYPE_RECHARGE, SplitRecord.TYPE_CROSS_INCOME)
|
|
.in(SplitRecord::getType, SplitRecord.TYPE_RECHARGE, SplitRecord.TYPE_CROSS_INCOME)
|
|
|
- .list().stream().mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var totalRefund = splitRecordService.lambdaQuery()
|
|
|
|
|
+ .eq(SplitRecord::getFromStationId, stationId)
|
|
|
|
|
+ .eq(SplitRecord::getType, SplitRecord.TYPE_REFUND)
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var totalCrossExpend = splitRecordService.lambdaQuery()
|
|
|
|
|
+ .eq(SplitRecord::getFromStationId, stationId)
|
|
|
|
|
+ .eq(SplitRecord::getType, SplitRecord.TYPE_CROSS_EXPEND)
|
|
|
|
|
+ .list().stream().filter(r -> r.getAmount() != null).mapToInt(SplitRecord::getAmount).sum();
|
|
|
|
|
+ var totalIncome = totalRechargeAndCrossIncome - totalRefund - totalCrossExpend;
|
|
|
var totalConsumptionAmount = allOrders.stream().filter(o -> o.getAmount() != null).mapToInt(WashOrder::getAmount).sum();
|
|
var totalConsumptionAmount = allOrders.stream().filter(o -> o.getAmount() != null).mapToInt(WashOrder::getAmount).sum();
|
|
|
var totalMembers = userService.lambdaQuery().eq(User::getStationId, stationId).count().intValue();
|
|
var totalMembers = userService.lambdaQuery().eq(User::getStationId, stationId).count().intValue();
|
|
|
|
|
|