| | |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.dsh.course.feignClient.account.*; |
| | | import com.dsh.course.feignClient.account.model.*; |
| | | import com.dsh.course.feignClient.activity.PointMercharsClient; |
| | | import com.dsh.course.feignClient.competition.CompetitionClient; |
| | | import com.dsh.course.feignClient.competition.model.CompetionVO; |
| | | import com.dsh.course.feignClient.competition.model.Competition; |
| | | import com.dsh.course.feignClient.competition.model.CompetitionQuery; |
| | | import com.dsh.course.feignClient.competition.model.PaymentCompetition; |
| | | import com.dsh.course.feignClient.course.*; |
| | | import com.dsh.course.feignClient.course.model.TCoursePackage; |
| | | import com.dsh.course.feignClient.course.model.TCoursePackagePayment; |
| | | import com.dsh.course.feignClient.other.BallClient; |
| | | import com.dsh.course.feignClient.other.SiteClient; |
| | | import com.dsh.course.feignClient.other.StoreClient; |
| | | import com.dsh.course.feignClient.other.model.GameDataQuery; |
| | | import com.dsh.course.feignClient.other.model.TGameRecord; |
| | | import com.dsh.course.model.MoneyBack; |
| | | import com.dsh.guns.config.UserExt; |
| | | import com.dsh.guns.core.base.controller.BaseController; |
| | |
| | | private CoursePackageClient coursePackageClient; |
| | | @Autowired |
| | | private TOperatorService operatorService; |
| | | @Autowired |
| | | private BallClient ballClient; |
| | | /** |
| | | * 跳转到平台统计数据页面 |
| | | */ |
| | |
| | | public String index(Model model) { |
| | | Object o = type1(null); |
| | | model.addAttribute("data",o); |
| | | |
| | | |
| | | |
| | | // 教学统计 |
| | | HashMap<String, Object> map = appUserClient.queryUserAge(); |
| | | model.addAttribute("stuData",map); |
| | | |
| | | |
| | | |
| | | return PREFIX + "platformIncome.html"; |
| | | } |
| | | |
| | |
| | | @RequestMapping(value = "/getIncomeData") |
| | | @ResponseBody |
| | | public Object getIncomeData(Integer operatorId,Integer storeId) { |
| | | // 充值记录查询query |
| | | RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); |
| | | // 报名课程查询query |
| | | RegisterOrderQuery query = new RegisterOrderQuery(); |
| | | // 充值记录查询query |
| | | RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); |
| | | // 赛事活动查询query |
| | | CompetitionQuery competitionQuery = new CompetitionQuery(); |
| | | // 会员支付查询query |
| | | IncomeQuery incomeQuery = new IncomeQuery(); |
| | | // 场地预约记录查询query |
| | | SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); |
| | | // 智慧球场查询query |
| | | GameDataQuery gameDataQuery = new GameDataQuery(); |
| | | // 筛选运营商的是时候使用 |
| | | List<Integer> storeIds = new ArrayList<>(); |
| | | // 根据运营商ID 查询运营商下的所有门店 |
| | | if (storeId==null){ |
| | | if (operatorId!=null){ |
| | | List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", operatorId)); |
| | | // 拿到该运营商下的门店id集合 |
| | | storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList()); |
| | | query.setStoresIds(storeIds); |
| | | siteBookingQuery.setStoreIds(storeIds); |
| | | competitionQuery.setOperatorId(operatorId); |
| | | } |
| | | }else { |
| | | List<Integer> list = new ArrayList<>(); |
| | | list.add(storeId); |
| | | query.setStoresIds(list); |
| | | siteBookingQuery.setStoreIds(list); |
| | | competitionQuery.setStoreId(storeId); |
| | | } |
| | | |
| | | |
| | | Integer roleType = UserExt.getUser().getObjectType(); |
| | | rechargeRecordsQuery.setInsertType(roleType); |
| | | query.setInsertType(roleType); |
| | | competitionQuery.setInsertType(roleType); |
| | | incomeQuery.setInsertType(roleType); |
| | | incomeQuery.setInsertType(roleType); |
| | | IncomeVO incomeVO = new IncomeVO(); |
| | | rechargeRecordsQuery.setObjectId(UserExt.getUser().getObjectId()); |
| | | List<IncomeVO> incomeVOS = new ArrayList<>(); |
| | | // 会员支付记录 |
| | | List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery); |
| | | for (VipPayment vipPayment : vipPayments) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | if (vipPayment.getPayStatus()==1){ |
| | | temp.setInsertTime(vipPayment.getInsertTime()); |
| | | if (vipPayment.getState()!=3){ |
| | | temp.setInsertTime(vipPayment.getPayTime()); |
| | | incomeVOS.add(temp); |
| | | } |
| | | if (vipPayment.getAmount() != null) { |
| | |
| | | List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery); |
| | | for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | temp.setInsertTime(rechargeRecordsVO.getInsertTime()); |
| | | temp.setInsertTime(rechargeRecordsVO.getPayTime()); |
| | | if (rechargeRecordsVO.getAmount() != null) { |
| | | temp.setAmount(rechargeRecordsVO.getAmount()); |
| | | } |
| | | if (rechargeRecordsVO.getPayStatus() ==1){ |
| | | if (rechargeRecordsVO.getState() !=3){ |
| | | incomeVOS.add(temp); |
| | | } |
| | | |
| | | } |
| | | // 报名课程记录 |
| | | List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query); |
| | |
| | | incomeVOS.add(temp); |
| | | } |
| | | } |
| | | // query权限设置 获取运营商下的门店集合 |
| | | if (roleType==2){ |
| | | competitionQuery.setOperatorId(UserExt.getUser().getObjectId()); |
| | | } |
| | | // 报名活动 |
| | | List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); |
| | | for (PaymentCompetition competition : competitions) { |
| | |
| | | if (competition.getPayType()==3 || competition.getPayType()==4){ |
| | | continue; |
| | | } |
| | | if (competition.getState()==3)continue; |
| | | IncomeVO temp = new IncomeVO(); |
| | | temp.setInsertTime(competition.getInsertTime()); |
| | | temp.setInsertTime(competition.getPayTime()); |
| | | if (competition.getAmount() != null) { |
| | | temp.setAmount(new BigDecimal(competition.getAmount().toString())); |
| | | } |
| | | incomeVOS.add(temp); |
| | | } |
| | | // 预约场地 |
| | | List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery); |
| | | for (SiteBooking siteBooking : siteBookings) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | if(siteBooking.getStatus()!=3){ |
| | | continue; |
| | | // 说明当前运营商下没有门店 |
| | | if (operatorId!=null && storeIds.size()==0){ |
| | | }else{ |
| | | List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery); |
| | | for (SiteBooking siteBooking : siteBookings) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | if(siteBooking.getStatus()==0 || siteBooking.getStatus()==5){ |
| | | continue; |
| | | } |
| | | if (siteBooking.getPayType() ==3 || siteBooking.getPayType() ==4)continue; |
| | | temp.setInsertTime(siteBooking.getPayTime()); |
| | | if (siteBooking.getPayMoney() != null) { |
| | | temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString())); |
| | | } |
| | | incomeVOS.add(temp); |
| | | } |
| | | temp.setInsertTime(siteBooking.getPayTime()); |
| | | if (siteBooking.getPayMoney() != null) { |
| | | temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString())); |
| | | } |
| | | incomeVOS.add(temp); |
| | | } |
| | | |
| | | // 积分商品 |
| | | List<PointMerchandiseIncomeVo> amount = pointMercharsClient.getAmount(); |
| | | for (PointMerchandiseIncomeVo pointMerchandiseIncomeVo : amount) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | if (pointMerchandiseIncomeVo==null) continue; |
| | | temp.setInsertTime(pointMerchandiseIncomeVo.getInsertTime()); |
| | | if (pointMerchandiseIncomeVo.getCash()!=null){ |
| | | temp.setAmount(pointMerchandiseIncomeVo.getCash()); |
| | | incomeVOS.add(temp); |
| | | } |
| | | } |
| | | // 平台智慧球场 |
| | | if (storeId==null&&operatorId==null){ |
| | | gameDataQuery.setObjectId(0); |
| | | List<TGameRecord> data = ballClient.getData(gameDataQuery); |
| | | for (TGameRecord datum : data) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | temp.setAmount(datum.getMoney()); |
| | | temp.setInsertTime(datum.getTime()); |
| | | incomeVOS.add(temp); |
| | | } |
| | | } |
| | | // 运营商 |
| | | if (operatorId!=null && storeId==null){ |
| | | gameDataQuery.setObjectId(operatorId); |
| | | List<TGameRecord> data = ballClient.getData(gameDataQuery); |
| | | for (TGameRecord datum : data) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | temp.setAmount(datum.getMoney()); |
| | | temp.setInsertTime(datum.getTime()); |
| | | incomeVOS.add(temp); |
| | | } |
| | | } |
| | | // 门店 |
| | | if (storeId!=null){ |
| | | gameDataQuery.setStoreId(storeId); |
| | | List<TGameRecord> data = ballClient.getData(gameDataQuery); |
| | | for (TGameRecord datum : data) { |
| | | IncomeVO temp = new IncomeVO(); |
| | | temp.setAmount(datum.getMoney()); |
| | | temp.setInsertTime(datum.getTime()); |
| | | incomeVOS.add(temp); |
| | | } |
| | | } |
| | |
| | | int years = DateUtil.year(new Date()); |
| | | for (int i = 0; i < 10; i++) { |
| | | integers1.add(years-i); |
| | | } |
| | | } |
| | | List<Object> collect = integers1.stream().sorted().collect(Collectors.toList()); |
| | | List<Object> objects1 = new ArrayList<>(); |
| | | for (Object o : collect) { |
| | | BigDecimal orDefault = yearToTotalAmountMap.getOrDefault(Integer.valueOf(o.toString()), BigDecimal.ZERO); |
| | | objects1.add(orDefault); |
| | | } |
| | | // for (int year = integers1.get(0); year >= integers1.get(integers1.size()-1); year++) { |
| | | // BigDecimal totalAmount = yearToTotalAmountMap.getOrDefault(year, BigDecimal.ZERO); |
| | | // // 创建一个新的 IncomeVO 对象,并设置年份和累计金额 |
| | | // IncomeVO resultIncomeVO = new IncomeVO(); |
| | | // resultIncomeVO.setAmount(totalAmount); |
| | | // resultIncomeVOS.add(resultIncomeVO); |
| | | // } |
| | | monthlyData.put("yearIncome",objects1); |
| | | BigDecimal yearIn = new BigDecimal("0.00"); |
| | | for (Object o : objects1) { |
| | | yearIn = yearIn.add(new BigDecimal(o.toString())); |
| | | } |
| | | BigDecimal orDefault = yearToTotalAmountMap.getOrDefault(years, BigDecimal.ZERO); |
| | | objects.add(orDefault); |
| | | // 创建一个 Map 用于存储今年每个月的累计 amount |
| | | Map<Integer, BigDecimal> monthToTotalAmountMap = new HashMap<>(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | int currentYear = calendar.get(Calendar.YEAR); |
| | | List<BigDecimal> monthlyAmountList = new ArrayList<>(Collections.nCopies(12, BigDecimal.ZERO)); |
| | | |
| | | for (IncomeVO incomeVO1 : incomeVOS) { |
| | | Calendar calendar1 = Calendar.getInstance(); |
| | | calendar1.setTime(incomeVO1.getInsertTime()); |
| | | int year = calendar1.get(Calendar.YEAR); |
| | | int month = calendar1.get(Calendar.MONTH) + 1; // 月份从0开始,所以需要加1 |
| | | if (year == currentYear) { |
| | | BigDecimal totalAmount = monthlyAmountList.get(month - 1); |
| | | totalAmount = totalAmount.add(incomeVO1.getAmount()); |
| | | monthlyAmountList.set(month - 1, totalAmount); |
| | | } |
| | | } |
| | | monthlyData.put("monthIncome", Collections.singletonList(monthlyAmountList)); |
| | | //yearMount |
| | | BigDecimal monthI = new BigDecimal("0.00"); |
| | | for (BigDecimal bigDecimal : monthlyAmountList) { |
| | | monthI = monthI.add(bigDecimal); |
| | | } |
| | | objects.add(monthI); |
| | | // 获取当前月份 |
| | | LocalDate currentDate = LocalDate.now(); |
| | | int currentMonth = currentDate.getMonthValue(); |
| | | // 初始化一个长度为当前月份的天数的列表,并将每一天的金额初始化为零 |
| | | int daysInCurrentMonth = currentDate.lengthOfMonth(); |
| | | List<BigDecimal> weekAmount = new ArrayList<>(); |
| | | |
| | | // 获取最近四周 |
| | | LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); |
| | | LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); |
| | | // 周度数据 |
| | | LocalDateTime week1Start = minNow.minusDays(6); |
| | | LocalDateTime week1End = maxNow; |
| | | |
| | | LocalDateTime week2Start = minNow.minusDays(13); |
| | | LocalDateTime week2End = minNow.minusDays(7); |
| | | |
| | | LocalDateTime week3Start = minNow.minusDays(20); |
| | | LocalDateTime week3End = minNow.minusDays(14); |
| | | |
| | | LocalDateTime week4Start = minNow.minusDays(27); |
| | | LocalDateTime week4End = minNow.minusDays(21); |
| | | |
| | | // 计算每个周的amount总和 |
| | | BigDecimal tAmount1 = BigDecimal.ZERO; |
| | | BigDecimal tAmount2 = BigDecimal.ZERO; |
| | | BigDecimal tAmount3 = BigDecimal.ZERO; |
| | | BigDecimal tAmount4 = BigDecimal.ZERO; |
| | | for (IncomeVO incomeVO1 : incomeVOS) { |
| | | Date insertTime = incomeVO1.getInsertTime(); |
| | | // 将Date转换为LocalDateTime |
| | | Instant instant = insertTime.toInstant(); |
| | | ZoneId zoneId = ZoneId.systemDefault(); |
| | | LocalDateTime dateTime = instant.atZone(zoneId).toLocalDateTime(); |
| | | // 判断该数据属于哪个周 |
| | | if (dateTime.isAfter(week1Start) && dateTime.isBefore(week1End)) { |
| | | BigDecimal amount1 = incomeVO1.getAmount(); |
| | | tAmount1=tAmount1.add(amount1); |
| | | } else if (dateTime.isAfter(week2Start) && dateTime.isBefore(week2End)) { |
| | | BigDecimal amount1 = incomeVO1.getAmount(); |
| | | tAmount2=tAmount2.add(amount1); |
| | | } else if (dateTime.isAfter(week3Start) && dateTime.isBefore(week3End)) { |
| | | BigDecimal amount1 = incomeVO1.getAmount(); |
| | | tAmount4=tAmount3.add(amount1); |
| | | } else if (dateTime.isAfter(week4Start) && dateTime.isBefore(week4End)) { |
| | | BigDecimal amount1 = incomeVO1.getAmount(); |
| | | tAmount4=tAmount4.add(amount1); |
| | | } |
| | | } |
| | | weekAmount.add(tAmount1); |
| | | weekAmount.add(tAmount2); |
| | | weekAmount.add(tAmount3); |
| | | weekAmount.add(tAmount4); |
| | | monthlyData.put("weekIncome", Collections.singletonList(weekAmount)); |
| | | BigDecimal weekIn = new BigDecimal("0.00"); |
| | | for (BigDecimal bigDecimal : weekAmount) { |
| | | weekIn = weekIn.add(bigDecimal); |
| | | } |
| | | objects.add(weekIn); |
| | | LocalDateTime currentDateTime = LocalDateTime.now(); |
| | | List<BigDecimal> amountByDay = new ArrayList<>(Collections.nCopies(7, BigDecimal.ZERO)); |
| | | for (IncomeVO incomeVO3 : incomeVOS) { |
| | | Date insertTime = incomeVO3.getInsertTime(); |
| | | // 将 Date 转换为 LocalDateTime |
| | | LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); |
| | | // 计算日期与当前日期的差距 |
| | | long daysDifference = ChronoUnit.DAYS.between(insertDateTime.toLocalDate(), currentDateTime.toLocalDate()); |
| | | // 如果日期在七天内,累加金额 |
| | | if (daysDifference >= 0 && daysDifference < 7) { |
| | | int index = (int) (6 - daysDifference); // 计算对应的索引位置 |
| | | BigDecimal amount3 = incomeVO3.getAmount(); |
| | | BigDecimal updatedAmount = amountByDay.get(index).add(amount3); |
| | | amountByDay.set(index, updatedAmount); |
| | | |
| | | } |
| | | } |
| | | monthlyData.put("dayIncome", Collections.singletonList(amountByDay)); |
| | | BigDecimal totalToday = new BigDecimal("0.00"); |
| | | for (BigDecimal bigDecimal : amountByDay) { |
| | | totalToday = totalToday.add(bigDecimal); |
| | | } |
| | | objects.add(totalToday); |
| | | // 最后put |
| | | monthlyData.put("yearMount",objects); |
| | | |
| | | ArrayList<Object> integers = new ArrayList<>(); |
| | | int year = DateUtil.year(new Date()); |
| | | for (int i = 0; i < 10; i++) { |
| | | integers.add(year-i); |
| | | } |
| | | List<Object> collect1 = integers.stream().sorted().collect(Collectors.toList()); |
| | | monthlyData.put("year",collect1); |
| | | return monthlyData; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | // |
| | | // // 创建一个 Map 用于存储今年每个月的累计 amount |
| | | // Map<Integer, BigDecimal> monthToTotalAmountMap = new HashMap<>(); |
| | | // Calendar calendar = Calendar.getInstance(); |
| | | // int currentYear = calendar.get(Calendar.YEAR); |
| | | // List<BigDecimal> monthlyAmountList = new ArrayList<>(Collections.nCopies(12, BigDecimal.ZERO)); |
| | | // |
| | | // for (IncomeVO incomeVO1 : incomeVOS) { |
| | | // Calendar calendar1 = Calendar.getInstance(); |
| | | // calendar1.setTime(incomeVO1.getInsertTime()); |
| | | // int year = calendar1.get(Calendar.YEAR); |
| | | // int month = calendar1.get(Calendar.MONTH) + 1; // 月份从0开始,所以需要加1 |
| | | // if (year == currentYear) { |
| | | // BigDecimal totalAmount = monthlyAmountList.get(month - 1); |
| | | // totalAmount = totalAmount.add(incomeVO1.getAmount()); |
| | | // monthlyAmountList.set(month - 1, totalAmount); |
| | | // } |
| | | // } |
| | | // monthlyData.put("monthIncome", Collections.singletonList(monthlyAmountList)); |
| | | // |
| | | // // 获取当前月份 |
| | | // LocalDate currentDate = LocalDate.now(); |
| | | // int currentMonth = currentDate.getMonthValue(); |
| | | // // 初始化一个长度为当前月份的天数的列表,并将每一天的金额初始化为零 |
| | | // int daysInCurrentMonth = currentDate.lengthOfMonth(); |
| | | // List<BigDecimal> weekAmount = new ArrayList<>(); |
| | | // |
| | | // // 获取最近四周 |
| | | // LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); |
| | | // LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); |
| | | // // 周度数据 |
| | | // LocalDateTime week1Start = minNow.minusDays(6); |
| | | // LocalDateTime week1End = maxNow; |
| | | // |
| | | // LocalDateTime week2Start = minNow.minusDays(13); |
| | | // LocalDateTime week2End = minNow.minusDays(7); |
| | | // |
| | | // LocalDateTime week3Start = minNow.minusDays(20); |
| | | // LocalDateTime week3End = minNow.minusDays(14); |
| | | // |
| | | // LocalDateTime week4Start = minNow.minusDays(27); |
| | | // LocalDateTime week4End = minNow.minusDays(21); |
| | | // // 用于存放四个周的数据 |
| | | // List<Object> objects1 = new ArrayList<>(); |
| | | // // 计算每个周的amount总和 |
| | | // BigDecimal tAmount1 = BigDecimal.ZERO; |
| | | // BigDecimal tAmount2 = BigDecimal.ZERO; |
| | | // BigDecimal tAmount3 = BigDecimal.ZERO; |
| | | // BigDecimal tAmount4 = BigDecimal.ZERO; |
| | | // for (IncomeVO incomeVO1 : incomeVOS) { |
| | | // Date insertTime = incomeVO1.getInsertTime(); |
| | | // // 将Date转换为LocalDateTime |
| | | // Instant instant = insertTime.toInstant(); |
| | | // ZoneId zoneId = ZoneId.systemDefault(); |
| | | // LocalDateTime dateTime = instant.atZone(zoneId).toLocalDateTime(); |
| | | // // 判断该数据属于哪个周 |
| | | // if (dateTime.isAfter(week1Start) && dateTime.isBefore(week1End)) { |
| | | // BigDecimal amount1 = incomeVO1.getAmount(); |
| | | // tAmount1=tAmount1.add(amount1); |
| | | // } else if (dateTime.isAfter(week2Start) && dateTime.isBefore(week2End)) { |
| | | // BigDecimal amount1 = incomeVO1.getAmount(); |
| | | // tAmount2=tAmount2.add(amount1); |
| | | // } else if (dateTime.isAfter(week3Start) && dateTime.isBefore(week3End)) { |
| | | // BigDecimal amount1 = incomeVO1.getAmount(); |
| | | // tAmount4=tAmount3.add(amount1); |
| | | // } else if (dateTime.isAfter(week4Start) && dateTime.isBefore(week4End)) { |
| | | // BigDecimal amount1 = incomeVO1.getAmount(); |
| | | // tAmount4=tAmount4.add(amount1); |
| | | // } |
| | | // } |
| | | // weekAmount.add(tAmount1); |
| | | // weekAmount.add(tAmount2); |
| | | // weekAmount.add(tAmount3); |
| | | // weekAmount.add(tAmount4); |
| | | // monthlyData.put("weekIncome", Collections.singletonList(weekAmount)); |
| | | // |
| | | // LocalDateTime currentDateTime = LocalDateTime.now(); |
| | | // List<BigDecimal> amountByDay = new ArrayList<>(Collections.nCopies(7, BigDecimal.ZERO)); |
| | | // for (IncomeVO incomeVO3 : incomeVOS) { |
| | | // Date insertTime = incomeVO3.getInsertTime(); |
| | | // // 将 Date 转换为 LocalDateTime |
| | | // LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); |
| | | // // 计算日期与当前日期的差距 |
| | | // long daysDifference = ChronoUnit.DAYS.between(insertDateTime.toLocalDate(), currentDateTime.toLocalDate()); |
| | | // // 如果日期在七天内,累加金额 |
| | | // if (daysDifference >= 0 && daysDifference < 7) { |
| | | // int index = (int) (6 - daysDifference); // 计算对应的索引位置 |
| | | // BigDecimal amount3 = incomeVO3.getAmount(); |
| | | // BigDecimal updatedAmount = amountByDay.get(index).add(amount3); |
| | | // amountByDay.set(index, updatedAmount); |
| | | // |
| | | // } |
| | | // } |
| | | // |
| | | // monthlyData.put("dayIncome", Collections.singletonList(amountByDay)); |
| | | // // 获取当前日期和时间 |
| | | // LocalDateTime now = LocalDateTime.now(); |
| | | // // 今年的起始日期和结束日期 |
| | | // LocalDateTime startOfYear = now.with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN); |
| | | // LocalDateTime endOfYear = now.with(TemporalAdjusters.lastDayOfYear()).with(LocalTime.MAX); |
| | | // // 本月的起始日期和结束日期 |
| | | // LocalDateTime startOfMonth = now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN); |
| | | // LocalDateTime endOfMonth = now.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX); |
| | | // // 本周的起始日期和结束日期 |
| | | // LocalDateTime startOfWeek = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).with(LocalTime.MIN); |
| | | // LocalDateTime endOfWeek = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)).with(LocalTime.MAX); |
| | | // // 今天的起始日期和结束日期 |
| | | // LocalDateTime startOfDay = now.with(LocalTime.MIN); |
| | | // LocalDateTime endOfDay = now.with(LocalTime.MAX); |
| | | // // 创建日期格式化器 |
| | | // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | // // 筛选符合条件的IncomeVO对象 |
| | | // List<IncomeVO> thisYearIncome = incomeVOS.stream() |
| | | // .filter(income -> { |
| | | // Date insertTime = income.getInsertTime(); |
| | | // try { |
| | | // LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); |
| | | // return insertDateTime.isAfter(startOfYear) && insertDateTime.isBefore(endOfYear); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // return false; |
| | | // } |
| | | // }) |
| | | // .collect(Collectors.toList()); |
| | | // // 使用 map 方法将 IncomeVO 转换为 BigDecimal,提取出 amount 字段 |
| | | // List<BigDecimal> amounts = thisYearIncome.stream() |
| | | // .map(IncomeVO::getAmount) |
| | | // .collect(Collectors.toList()); |
| | | // //本年总收入 |
| | | // BigDecimal totalAmount = amounts.stream() |
| | | // .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // // 用于展示总营收 本年度营收 本月营收 本周营收 本日营收 |
| | | // objects.add(totalAmount); |
| | | // List<IncomeVO> thisMonthIncome = incomeVOS.stream() |
| | | // .filter(income -> { |
| | | // Date insertTime = income.getInsertTime(); |
| | | // try { |
| | | // LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); |
| | | // return insertDateTime.isAfter(startOfMonth) && insertDateTime.isBefore(endOfMonth); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // return false; |
| | | // } |
| | | // }) |
| | | // .collect(Collectors.toList()); |
| | | // List<BigDecimal> amountMonth = thisMonthIncome.stream() |
| | | // .map(IncomeVO::getAmount) |
| | | // .collect(Collectors.toList()); |
| | | // // 使用 本月总收入 |
| | | // BigDecimal totalMonth = amountMonth.stream() |
| | | // .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // |
| | | // objects.add(totalMonth); |
| | | // List<IncomeVO> thisWeekIncome = incomeVOS.stream() |
| | | // .filter(income -> { |
| | | // Date insertTime = income.getInsertTime(); |
| | | // try { |
| | | // LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); |
| | | // return insertDateTime.isAfter(startOfWeek) && insertDateTime.isBefore(endOfWeek); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // return false; |
| | | // } |
| | | // }) |
| | | // .collect(Collectors.toList()); |
| | | // List<BigDecimal> amountWeek = thisWeekIncome.stream() |
| | | // .map(IncomeVO::getAmount) |
| | | // .collect(Collectors.toList()); |
| | | // // 使用 本月总收入 |
| | | // BigDecimal totalWeek = amountWeek.stream() |
| | | // .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // objects.add(totalWeek); |
| | | // List<IncomeVO> todayIncome = incomeVOS.stream() |
| | | // .filter(income -> { |
| | | // Date insertTime = income.getInsertTime(); |
| | | // try { |
| | | // LocalDateTime insertDateTime = LocalDateTime.ofInstant(insertTime.toInstant(), ZoneId.systemDefault()); |
| | | // return insertDateTime.isAfter(startOfDay) && insertDateTime.isBefore(endOfDay); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // return false; |
| | | // } |
| | | // }) |
| | | // .collect(Collectors.toList()); |
| | | // List<BigDecimal> amountToday = todayIncome.stream() |
| | | // .map(IncomeVO::getAmount) |
| | | // .collect(Collectors.toList()); |
| | | // // 使用 本月总收入 |
| | | // BigDecimal totalToday = amountToday.stream() |
| | | // .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // objects.add(totalToday); |
| | | // // 最后put |
| | | // monthlyData.put("yearMount",objects); |
| | | // |
| | | // ArrayList<Object> integers = new ArrayList<>(); |
| | | // int year = DateUtil.year(new Date()); |
| | | // for (int i = 0; i < 10; i++) { |
| | | // integers.add(year-i); |
| | | // } |
| | | // List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); |
| | | // monthlyData.put("year",collect); |
| | | // return monthlyData; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 运营统计-平台-用户数据 |
| | |
| | | @RequestMapping(value = "/backStore") |
| | | @ResponseBody |
| | | public Object backStore(Integer id) { |
| | | if(UserExt.getUser().getObjectType()==3){ |
| | | id = UserExt.getUser().getObjectId(); |
| | | } |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | List<Integer> userPt = appUserClient.getUserStore(id); |
| | | if(userPt.size()==0){ |
| | |
| | | HashMap<String, Object> map = appUserClient.stuPt(); |
| | | return map; |
| | | } |
| | | @RequestMapping(value = "/stuYys") |
| | | @ResponseBody |
| | | public Object stuYys(Integer id) { |
| | | HashMap<String, Object> map = appUserClient.stuYys(id); |
| | | return map; |
| | | } |
| | | @RequestMapping(value = "/stuStores") |
| | | @ResponseBody |
| | | public Object stuStores(Integer id) { |
| | | HashMap<String, Object> map = appUserClient.stuStores(id); |
| | | return map; |
| | | } |
| | | |
| | | // 消耗课时数据-平台 |
| | | @RequestMapping(value = "/coursePt") |
| | | @ResponseBody |
| | | public Object coursePt() { |
| | | List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1)); |
| | | HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); |
| | | return map; |
| | | } |
| | | // 消耗课时数据-运营商 |
| | | @RequestMapping(value = "/courseYys") |
| | | @ResponseBody |
| | | public Object courseYys(Integer id) { |
| | | List<Integer> userPt = appUserClient.getUserYYs(id); |
| | | HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); |
| | | return map; |
| | | } |
| | | // 消耗课时数据-运营商 |
| | | @RequestMapping(value = "/courseStore") |
| | | @ResponseBody |
| | | public Object courseStore(Integer id) { |
| | | List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(id)); |
| | | HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt); |
| | | return map; |
| | | } |
| | |
| | | @RequestMapping(value = "/userAndVipStore") |
| | | @ResponseBody |
| | | public Object userAndVipStore(Integer id) { |
| | | if(UserExt.getUser().getObjectType()==3){ |
| | | id = UserExt.getUser().getObjectId(); |
| | | } |
| | | HashMap<String, Object> map = appUserClient.userAndVipStore(id); |
| | | return map; |
| | | } |
| | |
| | | @RequestMapping(value = "/actYys") |
| | | @ResponseBody |
| | | public Object actYys(Integer id) { |
| | | List<Integer> userPt = appUserClient.getUserYYs(id); |
| | | HashMap<String, Object> map = competitionClient.actPt(userPt); |
| | | CompetionVO competionVO = new CompetionVO(); |
| | | |
| | | List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getOperatorId, 0)); |
| | | List<Integer> userPt = appUserClient.getUserYYs(id); |
| | | competionVO.setIds(userPt); |
| | | competionVO.setOperatorId(id); |
| | | HashMap<String, Object> map = competitionClient.actYys(competionVO); |
| | | |
| | | List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getOperatorId, id)); |
| | | long l1=0; |
| | | for (TStore tStore : list) { |
| | | long l = DateUtil.betweenDay(tStore.getCreateTime(), new Date(), true); |
| | |
| | | if(integer==0 && integer1==0){ |
| | | a=24; |
| | | }else { |
| | | a= integer1-integer; |
| | | a= integer-integer1; |
| | | } |
| | | l1 += l * a; |
| | | } |
| | |
| | | @RequestMapping(value = "/actStore") |
| | | @ResponseBody |
| | | public Object actStore(Integer id) { |
| | | |
| | | |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | if(objectType==3){ |
| | | id = UserExt.getUser().getObjectId(); |
| | | } |
| | | List<Integer> userPt = appUserClient.getUserStore(id); |
| | | HashMap<String, Object> map = competitionClient.actPt(userPt); |
| | | |
| | |
| | | @RequestMapping("/operator") |
| | | public String operator(Model model) { |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | List<TOperator> list = operatorService.list(new LambdaQueryWrapper<TOperator>().ne(TOperator::getState, 3)); |
| | | Integer objectId = UserExt.getUser().getObjectId(); |
| | | |
| | | List<TOperator> list = operatorService.list(new LambdaQueryWrapper<TOperator>().ne(TOperator::getState, 3).ne(TOperator::getId,0)); |
| | | model.addAttribute("list",list); |
| | | model.addAttribute("objectType",objectType); |
| | | model.addAttribute("objectId",objectId); |
| | | return PREFIX + "operatorIncome.html"; |
| | | } |
| | | |
| | |
| | | // 找出平台的用户 |
| | | List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 2)); |
| | | List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList()); |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | if(objectType==3){ |
| | | id = UserExt.getUser().getObjectId(); |
| | | } |
| | | List<Integer> userIds = appUserClient.getUserStore(id); |
| | | QueryDataFee queryDataFee = new QueryDataFee(time, userIds); |
| | | // 会员费 |
| | |
| | | @RequestMapping("/store") |
| | | public String store(Model model) { |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1)); |
| | | model.addAttribute("list",list); |
| | | List<TStore> tStores = new ArrayList<>(); |
| | | |
| | | if (objectType == 2){ |
| | | tStores = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1).eq(TStore::getOperatorId,UserExt.getUser().getObjectId())); |
| | | } |
| | | if (objectType == 3){ |
| | | tStores = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getState, 1).eq(TStore::getId,UserExt.getUser().getObjectId())); |
| | | } |
| | | model.addAttribute("list",tStores); |
| | | model.addAttribute("objectType",objectType); |
| | | model.addAttribute("objectId",UserExt.getUser().getObjectId()); |
| | | return PREFIX + "storeIncome.html"; |
| | | } |
| | | |
| | |
| | | // 会员费 |
| | | HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee); |
| | | Object fee1 = map1.get("fee1"); |
| | | |
| | | map.put("fee1",fee1); |
| | | //玩湃比 |
| | | Object fee2 = map1.get("fee2"); |
| | |
| | | map.put("fee3",map3.get("fee")); |
| | | Object data = map3.get("data"); |
| | | map.put("courseData",data); |
| | | |
| | | |
| | | // 赛事收入 |
| | | Double aDouble1 = competitionClient.queryFee(queryDataFee); |
| | | map.put("fee4",aDouble1); |
| | | |
| | | // 订场 |
| | | if(ids.size()==0){ |
| | | ids.add(-1); |
| | |
| | | if(userIds.size()==0){ |
| | | userIds.add(-1); |
| | | } |
| | | vipPaymentLambdaQueryWrapper.in(SiteBooking::getAppUserId,userIds); |
| | | vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0); |
| | | vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,5); |
| | | ArrayList<Integer> objects = new ArrayList<>(); |
| | | objects.add(1); |
| | | objects.add(2); |
| | | vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects); |
| | | List<SiteBooking> list1 = siteBookingService.list(vipPaymentLambdaQueryWrapper); |
| | | List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>() |
| | | .ne("status",0) |
| | | .ne("status",5) |
| | | .ne("payType",3) |
| | | .ne("payType",4)); |
| | | double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum(); |
| | | map.put("fee5",sum); |
| | | // 智慧球场查询query |
| | | GameDataQuery gameDataQuery = new GameDataQuery(); |
| | | gameDataQuery.setObjectId(0); |
| | | // 平台智慧球场 |
| | | List<TGameRecord> data1 = ballClient.getData(gameDataQuery); |
| | | double sum1 = data1.stream() |
| | | .map(TGameRecord::getMoney) // 获取每个 TGameRecord 对象的 money 字段 |
| | | .mapToDouble(BigDecimal::doubleValue) // 将 BigDecimal 转换为 double |
| | | .sum(); |
| | | map.put("fee5",sum+sum1); |
| | | |
| | | |
| | | List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList()); |
| | |
| | | @ResponseBody |
| | | public Object stuUserDataYys(Integer id) { |
| | | ArrayList<Integer> objects = new ArrayList<>(); |
| | | |
| | | objects.add(1); |
| | | HashMap<String, Object> map = appUserClient.queryUserAgeYys(id); |
| | | HashMap<String, Object> map = appUserClient.queryUserAgeYys(operatorService.getById(id).getId()); |
| | | |
| | | return map; |
| | | } |
| | | @RequestMapping("/stuUserDataStore") |
| | | @ResponseBody |
| | | public Object stuUserDataStore(Integer id) { |
| | | if(UserExt.getUser().getObjectType()==3){ |
| | | id = UserExt.getUser().getObjectId(); |
| | | } |
| | | ArrayList<Integer> objects = new ArrayList<>(); |
| | | objects.add(1); |
| | | HashMap<String, Object> map = appUserClient.queryUserAgeStore(id); |
| | |
| | | @RequestMapping("/selectStoreJx") |
| | | @ResponseBody |
| | | public Object selectStoreJx(Integer id) { |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | | if(objectType==3){ |
| | | id = UserExt.getUser().getObjectId(); |
| | | } |
| | | ArrayList<Integer> objects = new ArrayList<>(); |
| | | objects.add(1); |
| | | HashMap<String, Object> map1 = appUserClient.queryUserAgeStore1(id); |