From 57303f6a0ce73d70be07b80adffa618023ceba1a Mon Sep 17 00:00:00 2001 From: punchhhh <87906027+punchhhh@users.noreply.github.com> Date: Sun, 26 Jan 2025 09:28:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A5=A8=E5=8A=A1?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=8A=82=E5=81=87=E6=97=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=92=8C=E5=8E=86=E5=B9=B4=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/saledata/SaleDataApi.java | 11 +- .../service/saledata/SaleDataService.java | 4 +- .../service/saledata/SaleDataServiceImpl.java | 105 +++++++++++++----- 3 files changed, 86 insertions(+), 34 deletions(-) diff --git a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/SaleDataApi.java b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/SaleDataApi.java index 71af8c0bd..8a9a54a5a 100644 --- a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/SaleDataApi.java +++ b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/SaleDataApi.java @@ -142,7 +142,6 @@ public class SaleDataApi { @GetMapping("/thisyear/nianjunCount") @Operation(summary = "查询某年年度售票数量") public Integer findCountthisyear(Integer year) { - System.out.println(saleDataService.findEventsByYear(year)); return saleDataService.findEventsByYear(year).size(); } @@ -157,9 +156,8 @@ public class SaleDataApi { @GetMapping("/holidayCount") @Operation(summary = "查询节假日售票数量") - public CommonResult selectHolidayCount(String year) { - Integer currentYear = Integer.parseInt(year); - return saleDataService.selectHolidayCount(currentYear); + public CommonResult selectHolidayCount(String holidayName) { + return saleDataService.selectHolidayCount(holidayName); } // @GetMapping("/test") // public void testMethod(){ @@ -167,4 +165,9 @@ public class SaleDataApi { // webSocketSenderApi.sendObject("1","1","666"); // } + @GetMapping("/yearsSaleCount") + @Operation(summary = "查询历年售票数量") + public CommonResult> selectYearsSaleCount() { + return saleDataService.selectYearsSaleCount(); + } } diff --git a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataService.java b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataService.java index 24221da02..1f15ea91d 100644 --- a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataService.java +++ b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataService.java @@ -103,5 +103,7 @@ public interface SaleDataService { Integer selectSaleCountByDate(String dateParam); - CommonResult selectHolidayCount(Integer date); + CommonResult selectHolidayCount(String holidayName); + + CommonResult> selectYearsSaleCount(); } \ No newline at end of file diff --git a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataServiceImpl.java b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataServiceImpl.java index a421c5ad2..ec2142e87 100644 --- a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataServiceImpl.java +++ b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/service/saledata/SaleDataServiceImpl.java @@ -453,58 +453,105 @@ public class SaleDataServiceImpl implements SaleDataService { } @Override - public CommonResult selectHolidayCount(Integer currentYear) { + public CommonResult selectHolidayCount(String holidayName) { HolidayTree holidayTree = new HolidayTree(); - // 获取当前年份及前两年 -// int startYear = currentYear - 2; -// int endYear = currentYear; +// 获取当前年份及前两年 + + int currentYear = LocalDate.now().getYear(); + int startYear = currentYear - 2; + int endYear = currentYear; // 节假日名称列表 - List holidays = Arrays.asList("五一", "国庆", "春节"); +// List holidays = Arrays.asList("五一", "国庆", "春节"); // 遍历每一年 -// for (int year = startYear; year <= endYear; year++) { + List holidayDates = getHolidayDates(holidayName, startYear, endYear); // 获取每年的该节假日的五天日期 +// for (int i = 0; i < 3; i++) { // 获取每个节假日的前五天数据 - for (String holiday : holidays) { - List holidayDates = getHolidayDates(holiday, currentYear); // 获取节假日的五天日期 +// for (String holiday : holidays) { +// System.out.println(holidayDates); for (String date : holidayDates) { // 查询每个日期的数量 System.out.println(date); int count = saleDataRepository.countBySddate(date); - holidayTree.addHolidayData(String.valueOf(currentYear), holiday, Integer.parseInt(date.substring(6)), count); + System.out.println(count); + holidayTree.addHolidayData(date.substring(0,4), Integer.parseInt(date.substring(6)), count); } - } +// } // } return CommonResult.success(holidayTree); } // 根据节假日和年份获取节假日及其五天的数据(从节假日当天开始的五天) - private List getHolidayDates(String holiday, int year) { + +// private List getHolidayDates(String holiday, int year) { +// List dates = new ArrayList<>(); +// +// if (holiday.equals("五一")) { +// // 五一:5月1日到5月5日 +// for (int i = 0; i < 5; i++) { +// String date = String.format("%04d05%02d", year, 1 + i); // 构建 20230501 格式的日期 +// dates.add(date); +// } +// } else if (holiday.equals("国庆")) { +// // 国庆:10月1日到10月5日 +// for (int i = 0; i < 5; i++) { +// String date = String.format("%04d10%02d", year, 1 + i); // 构建 20231001 格式的日期 +// dates.add(date); +// } +// } else if (holiday.equals("春节")) { +// // 春节假设固定日期2月1日-2月5日 +// for (int i = 0; i < 5; i++) { +// String date = String.format("%04d02%02d", year, 1 + i); // 构建 20230201 格式的日期 +// dates.add(date); +// } +// +// } +// return dates; +// } + + // 根据节假日和起止年份获取年份及其五天的数据(从节假日当天开始的五天) + + private List getHolidayDates(String holiday, int startYear, int endYear) { List dates = new ArrayList<>(); - if (holiday.equals("五一")) { - // 五一:5月1日到5月5日 - for (int i = 0; i < 5; i++) { - String date = String.format("%04d05%02d", year, 1 + i); // 构建 20230501 格式的日期 - dates.add(date); + // 遍历指定年份范围 + for (int year = startYear; year <= endYear; year++) { + if (holiday.equals("五一")) { + // 五一:5月1日到5月5日 + for (int i = 0; i < 5; i++) { + String date = String.format("%04d05%02d", year, 1 + i); // 构建 20230501 格式的日期 + dates.add(date); + } + } else if (holiday.equals("国庆")) { + // 国庆:10月1日到10月5日 + for (int i = 0; i < 5; i++) { + String date = String.format("%04d10%02d", year, 1 + i); // 构建 20231001 格式的日期 + dates.add(date); + } + } else if (holiday.equals("春节")) { + // 春节假设固定日期2月1日-2月5日 + for (int i = 0; i < 5; i++) { + String date = String.format("%04d02%02d", year, 1 + i); // 构建 20230201 格式的日期 + dates.add(date); + } } - } else if (holiday.equals("国庆")) { - // 国庆:10月1日到10月5日 - for (int i = 0; i < 5; i++) { - String date = String.format("%04d10%02d", year, 1 + i); // 构建 20231001 格式的日期 - dates.add(date); - } - } else if (holiday.equals("春节")) { - // 春节假设固定日期2月1日-2月5日 - for (int i = 0; i < 5; i++) { - String date = String.format("%04d02%02d", year, 1 + i); // 构建 20230201 格式的日期 - dates.add(date); - } - } + return dates; } + @Override + public CommonResult> selectYearsSaleCount() { + // 查询23年开始往后十年的数据 + Map result = new HashMap<>(); + for (int i = 2023; i <= 2033; i++) { + int count = saleDataRepository.countBySddateToTime(i + "0101", i + "1231").size(); + result.put(String.valueOf(i), count); + } + return CommonResult.success(result); + } + } \ No newline at end of file From e4473a7121d207540ca7de50c12c244762292d30 Mon Sep 17 00:00:00 2001 From: punchhhh <87906027+punchhhh@users.noreply.github.com> Date: Sun, 26 Jan 2025 09:30:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A5=A8=E5=8A=A1?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=8A=82=E5=81=87=E6=97=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/saledata/vo/HolidayTree.java | 102 +++++++----------- 1 file changed, 40 insertions(+), 62 deletions(-) diff --git a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/vo/HolidayTree.java b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/vo/HolidayTree.java index c22c9f6e8..cd239d92a 100644 --- a/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/vo/HolidayTree.java +++ b/ludu-module-datacenter/ludu-module-datacenter-biz/src/main/java/cn/iocoder/yudao/module/datacenter/controller/app/saledata/vo/HolidayTree.java @@ -4,58 +4,38 @@ import java.util.*; public class HolidayTree { - // 第一层: 年份 -> 节假日数据 + // 第一层: 年份 -> 前五日数据 private Map yearMap = new HashMap<>(); - public void addHolidayData(String year, String holidayName, Integer day, Integer count) { - YearNode yearNode = yearMap.computeIfAbsent(year, k -> new YearNode(year)); - yearNode.addHolidayData(holidayName, day, count); + // 添加年份数据 + public void addHolidayData(String year, Integer day, Integer count) { + YearNode yearNode = yearMap.computeIfAbsent(year, k -> new YearNode()); + yearNode.addDayData(day, count); } // 第一层节点: 年份 static class YearNode { - private String year; - private Map holidayMap = new HashMap<>(); +// private String year; + private Map dayDataMap = new HashMap<>(); // 第几天 -> 数量 - public YearNode(String year) { - this.year = year; +// public YearNode(String year) { +// this.year = year; +// } + + // 添加某一天的数据 + public void addDayData(Integer day, Integer count) { + // 只记录前五天的数据 + if (day >= 1 && day <= 5) { + dayDataMap.put(day, count); + } } - // 添加节假日数据 - public void addHolidayData(String holidayName, Integer day, Integer count) { - HolidayNode holidayNode = holidayMap.computeIfAbsent(holidayName, k -> new HolidayNode(holidayName)); - holidayNode.addHolidayDay(day, count); - } +// public String getYear() { +// return year; +// } - public String getYear() { - return year; - } - - public Map getHolidayMap() { - return holidayMap; - } - } - - // 第二层节点: 节假日 - static class HolidayNode { - private String holidayName; - private Map holidayDays = new HashMap<>(); // 第几天 -> 数量 - - public HolidayNode(String holidayName) { - this.holidayName = holidayName; - } - - // 添加节假日的具体天数与数量 - public void addHolidayDay(Integer day, Integer count) { - holidayDays.put(day, count); - } - - public String getHolidayName() { - return holidayName; - } - - public Map getHolidayDays() { - return holidayDays; + public Map getDayDataMap() { + return dayDataMap; } } @@ -65,24 +45,22 @@ public class HolidayTree { } // 测试打印树形数据 -// public static void main(String[] args) { -// HolidayTree tree = new HolidayTree(); -// -// // 添加一些示例数据 -// tree.addHolidayData("2023", "New Year", 1, 100); -// tree.addHolidayData("2023", "New Year", 2, 120); -// tree.addHolidayData("2023", "Spring Festival", 1, 200); -// tree.addHolidayData("2024", "New Year", 1, 150); -// -// // 打印树形数据 -// tree.getYearMap().forEach((year, yearNode) -> { -// System.out.println("Year: " + year); -// yearNode.getHolidayMap().forEach((holiday, holidayNode) -> { -// System.out.println(" Holiday: " + holiday); -// holidayNode.getHolidayDays().forEach((day, count) -> { -// System.out.println(" Day " + day + ": " + count); -// }); -// }); -// }); -// } + public static void main(String[] args) { + HolidayTree tree = new HolidayTree(); + + // 添加一些示例数据 + tree.addHolidayData("2023", 1, 100); + tree.addHolidayData("2023", 2, 120); + tree.addHolidayData("2023", 6, 200); // 这条数据不会被记录 + tree.addHolidayData("2024", 1, 150); + tree.addHolidayData("2024", 3, 130); + + // 打印树形数据 + tree.getYearMap().forEach((year, yearNode) -> { + System.out.println("Year: " + year); + yearNode.getDayDataMap().forEach((day, count) -> { + System.out.println(" Day " + day + ": " + count); + }); + }); + } }