From 2e4640768bec302ed465c9c17002df842c96ee96 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期二, 10 十月 2023 15:28:37 +0800 Subject: [PATCH] 后台代码 --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java | 322 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 297 insertions(+), 25 deletions(-) diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java index 6b30753..ee41af0 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java @@ -3,10 +3,7 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.dsh.course.feignClient.account.*; -import com.dsh.course.feignClient.account.model.CityManager; -import com.dsh.course.feignClient.account.model.QueryDataFee; -import com.dsh.course.feignClient.account.model.TAppUser; -import com.dsh.course.feignClient.account.model.VipPayment; +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.Competition; @@ -114,7 +111,7 @@ */ @RequestMapping(value = "/getIncomeData") @ResponseBody - public Object getIncomeData(Integer type) { + public Object getIncomeData(Integer operatorId,Integer storeId) { // 充值记录查询query RechargeRecordsQuery rechargeRecordsQuery = new RechargeRecordsQuery(); // 报名课程查询query @@ -126,6 +123,12 @@ // 场地预约记录查询query SiteBookingQuery siteBookingQuery = new SiteBookingQuery(); Integer roleType = UserExt.getUser().getObjectType(); + rechargeRecordsQuery.setInsertType(roleType); + query.setInsertType(roleType); + competitionQuery.setInsertType(roleType); + incomeQuery.setInsertType(roleType); + incomeQuery.setInsertType(roleType); + IncomeVO incomeVO = new IncomeVO(); List<IncomeVO> incomeVOS = new ArrayList<>(); // 会员支付记录 @@ -142,6 +145,7 @@ } // 充值记录 List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery); + List<RechargeRecords> rechargeRecords = financeClient.rechargeList1(rechargeRecordsQuery); for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) { IncomeVO temp = new IncomeVO(); temp.setInsertTime(rechargeRecordsVO.getInsertTime()); @@ -223,8 +227,8 @@ // 累加到总金额 totalAmount1 = totalAmount1.add(total); - Date insertTime = incomeVO1.getInsertTime(); // 假设有一个方法用于获取 insertTime - BigDecimal amount1 = incomeVO1.getAmount(); // 假设有一个方法用于获取 amount + Date insertTime = incomeVO1.getInsertTime(); + BigDecimal amount1 = incomeVO1.getAmount(); Calendar calendar = Calendar.getInstance(); calendar.setTime(insertTime); int year = calendar.get(Calendar.YEAR); // 获取年份 @@ -242,8 +246,13 @@ Collections.sort(sortedYears); // 创建一个新的 IncomeVO 列表,包含按年份累计的 amount List<Object> resultIncomeVOS = new ArrayList<>(); - // 循环遍历2023年到2028年的年份 - for (int year = 2023; year <= 2028; year++) { + // 当前年往前推十年 + List<Integer> integers1 = new ArrayList<>(); + int years = DateUtil.year(new Date()); + for (int i = 0; i < 10; i++) { + integers1.add(years-i); + } + 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(); @@ -276,20 +285,55 @@ int currentMonth = currentDate.getMonthValue(); // 初始化一个长度为当前月份的天数的列表,并将每一天的金额初始化为零 int daysInCurrentMonth = currentDate.lengthOfMonth(); - List<BigDecimal> weekAmount = new ArrayList<>(daysInCurrentMonth); - for (int i = 0; i < daysInCurrentMonth; i++) { - weekAmount.add(BigDecimal.ZERO); - } + 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) { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String string = dateFormat.format(incomeVO1.getInsertTime()); - LocalDate insertDate = LocalDate.parse(string, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - if (insertDate.getMonthValue() == currentMonth) { - int dayOfMonth = insertDate.getDayOfMonth(); - BigDecimal currentAmount = weekAmount.get(dayOfMonth - 1); // 列表索引从0开始 - weekAmount.set(dayOfMonth - 1, currentAmount.add(incomeVO1.getAmount())); + 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(); @@ -311,11 +355,6 @@ } monthlyData.put("dayIncome", Collections.singletonList(amountByDay)); - // 创建一个 Map 用于存储今年本周的累计 amount - Map<Integer, BigDecimal> dayToTotalAmountMap = new HashMap<>(); - BigDecimal yearAmount = BigDecimal.ZERO; // 初始化累加变量为0 - BigDecimal monthAmount = BigDecimal.ZERO; // 初始化累加变量为0 - BigDecimal todayAmount = BigDecimal.ZERO; // 初始化累加变量为0 // 获取当前日期和时间 LocalDateTime now = LocalDateTime.now(); // 今年的起始日期和结束日期 @@ -612,6 +651,239 @@ return map; } + + @RequestMapping(value = "/backYys") + @ResponseBody + public Object backYys(Integer id) { + HashMap<String, Object> map = new HashMap<>(); + List<Integer> userPt = appUserClient.getUserYYs(id); + if(userPt.size()==0){ + userPt.add(-1); + } + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,userPt)); + double sum5 = thisYear.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisYear",sum5); + + List<TBackRecord> thisMonth = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, new SimpleDateFormat("yyyy-MM").format(new Date())).in(TBackRecord::getUserId,userPt)); + double sum6= thisMonth.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisMonth",sum6); + + + + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); + // 年 + ArrayList<Double> years = new ArrayList<>(); + for (Object o : collect) { + double sum=0.0; + String s = o.toString(); + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + years.add(sum); + } + ArrayList<Double> months = new ArrayList<>(); + // 月 + for (int i = 1; i <= 12; i++) { + double sum=0.0; + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + months.add(sum); + } + + // 获取最近四周 + LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); + // 周度数据 + String s1 = minNow.minusDays(6).toString(); + String s2 = maxNow.toString(); + + String s3 = minNow.minusDays(13).toString(); + String s4 = maxNow.minusDays(6).toString(); + + + String s5 = minNow.minusDays(20).toString(); + String s6 = maxNow.minusDays(13).toString(); + + String s7 = minNow.minusDays(27).toString(); + String s8 = maxNow.minusDays(20).toString(); + + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s7,s8).in(TBackRecord::getUserId,userPt)); + double sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + + List<TBackRecord> list1 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s5,s6).in(TBackRecord::getUserId,userPt)); + double sum1 = list1.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list2 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s3,s4).in(TBackRecord::getUserId,userPt)); + double sum2 = list2.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list3 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s1,s2).in(TBackRecord::getUserId,userPt)); + double sum3 = list3.stream().mapToDouble(TBackRecord::getMoney).sum(); + + map.put("thisWeek",sum3); + + ArrayList<Double> week = new ArrayList<>(); + week.add(sum); + week.add(sum1); + week.add(sum2); + week.add(sum3); + + // 日 + ArrayList<Double> days = new ArrayList<>(); + Double thisDay=0.0; + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + List<TBackRecord> day = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s,s9).in(TBackRecord::getUserId,userPt)); + double sum4 = day.stream().mapToDouble(TBackRecord::getMoney).sum(); + days.add(sum4); + if(i==0){ + thisDay=sum4; + } + } + + map.put("thisDay",thisDay); + map.put("yearData",years); + map.put("monthData",months); + map.put("weekData",week); + map.put("dayData",days); + + return map; + } + @RequestMapping(value = "/backStore") + @ResponseBody + public Object backStore(Integer id) { + HashMap<String, Object> map = new HashMap<>(); + List<Integer> userPt = appUserClient.getUserStore(id); + if(userPt.size()==0){ + userPt.add(-1); + } + ArrayList<Object> integers = new ArrayList<>(); + int year = DateUtil.year(new Date()); + List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,userPt)); + double sum5 = thisYear.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisYear",sum5); + + List<TBackRecord> thisMonth = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, new SimpleDateFormat("yyyy-MM").format(new Date())).in(TBackRecord::getUserId,userPt)); + double sum6= thisMonth.stream().mapToDouble(TBackRecord::getMoney).sum(); + map.put("thisMonth",sum6); + + + + for (int i = 0; i < 10; i++) { + integers.add(year-i); + } + List<Object> collect = integers.stream().sorted().collect(Collectors.toList()); + // 年 + ArrayList<Double> years = new ArrayList<>(); + for (Object o : collect) { + double sum=0.0; + String s = o.toString(); + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + years.add(sum); + } + ArrayList<Double> months = new ArrayList<>(); + // 月 + for (int i = 1; i <= 12; i++) { + double sum=0.0; + String m=i+""; + if(i<10){ + m="0"+i; + } + String s = year + "-" + m; + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, s).in(TBackRecord::getUserId,userPt)); + sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + months.add(sum); + } + + // 获取最近四周 + LocalDateTime minNow = LocalDateTime.now().with(LocalTime.MIN); + LocalDateTime maxNow = LocalDateTime.now().with(LocalTime.MAX); + // 周度数据 + String s1 = minNow.minusDays(6).toString(); + String s2 = maxNow.toString(); + + String s3 = minNow.minusDays(13).toString(); + String s4 = maxNow.minusDays(6).toString(); + + + String s5 = minNow.minusDays(20).toString(); + String s6 = maxNow.minusDays(13).toString(); + + String s7 = minNow.minusDays(27).toString(); + String s8 = maxNow.minusDays(20).toString(); + + List<TBackRecord> list = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s7,s8).in(TBackRecord::getUserId,userPt)); + double sum = list.stream().mapToDouble(TBackRecord::getMoney).sum(); + + List<TBackRecord> list1 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s5,s6).in(TBackRecord::getUserId,userPt)); + double sum1 = list1.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list2 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s3,s4).in(TBackRecord::getUserId,userPt)); + double sum2 = list2.stream().mapToDouble(TBackRecord::getMoney).sum(); + List<TBackRecord> list3 = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s1,s2).in(TBackRecord::getUserId,userPt)); + double sum3 = list3.stream().mapToDouble(TBackRecord::getMoney).sum(); + + map.put("thisWeek",sum3); + + ArrayList<Double> week = new ArrayList<>(); + week.add(sum); + week.add(sum1); + week.add(sum2); + week.add(sum3); + + // 日 + ArrayList<Double> days = new ArrayList<>(); + Double thisDay=0.0; + for (int i = 6; i >= 0; i--) { + String s = minNow.minusDays(i).toString(); + String s9 = maxNow.minusDays(i).toString(); + List<TBackRecord> day = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().between(TBackRecord::getTime, s,s9).in(TBackRecord::getUserId,userPt)); + double sum4 = day.stream().mapToDouble(TBackRecord::getMoney).sum(); + days.add(sum4); + if(i==0){ + thisDay=sum4; + } + } + + map.put("thisDay",thisDay); + map.put("yearData",years); + map.put("monthData",months); + map.put("weekData",week); + map.put("dayData",days); + + return map; + } + + + @RequestMapping(value = "/userAndVipPt") + @ResponseBody + public Object userAndVipPt(Integer type) { + HashMap<String, Object> map = appUserClient.userAndVipPt(type); + return map; + } + @RequestMapping(value = "/actPt") + @ResponseBody + public Object actPt(Integer type) { + List<Integer> userPt = appUserClient.getUserPt(Arrays.asList(1)); + HashMap<String, Object> map = competitionClient.actPt(userPt); + + List<TStore> list = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getOperatorId, 0)); + for (TStore tStore : list) { + long l = DateUtil.betweenDay(tStore.getCreateTime(), new Date(), true); + tStore.getStartTime(); + } + return map; + } + + + /** * 跳转到运营商统计数据页面 */ -- Gitblit v1.7.1