diff --git a/src/main/java/com/example/demo/mapper/StatisticsMapper.java b/src/main/java/com/example/demo/mapper/StatisticsMapper.java index 9cb41bf..35b2e00 100644 --- a/src/main/java/com/example/demo/mapper/StatisticsMapper.java +++ b/src/main/java/com/example/demo/mapper/StatisticsMapper.java @@ -68,4 +68,23 @@ public interface StatisticsMapper { @Param("startDate") Date startDate, @Param("endDate") Date endDate); + // 一次查 所有地区 Part1(余量) + List listPart1All(@Param("today") LocalDate today); + + // 一次查 所有地区 Part2(余量外) + List listPart2All(@Param("start") Date start, + @Param("end") Date end, + @Param("today") LocalDate today); + + // 一次查 所有地区年度汇总 + List listYearAll(@Param("yearStart") Date yearStart, + @Param("end") Date end, + @Param("today") LocalDate today); + + // 新增或更新统计数据 + void batchInsertPart1(@Param("list") List list); + void batchInsertPart2(@Param("list") List list); + void batchInsertYear(@Param("list") List list); + //批量查询所有地区近一周 Part2(余量外) + List listPart2RangeAll(); } diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java index ccec946..c831549 100644 --- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java @@ -44,9 +44,11 @@ public class StatisticsServiceImpl implements StatisticsService { @Override @Scheduled(cron = "0 10 * * * ?") // 每小时执行一次 public void runHourlyTaskPart1() { - Date today = new Date(); //取当天日期 - for(String market : generalService.getMarket()){ - saveStatisticsPart1(market,today); + LocalDate today = LocalDate.now(); //取当天日期 + List list = statisticsMapper.listPart1All(today); + + if (!list.isEmpty()) { + statisticsMapper.batchInsertPart1(list); } } @@ -56,10 +58,15 @@ public class StatisticsServiceImpl implements StatisticsService { @Override @Scheduled(cron = "0 10 * * * ?") // 每小时执行一次 public void runHourlyTaskPart2() { - Date today = new Date(); //取当天日期 - for(String market : generalService.getMarket()){ - saveStatisticsPart2(market,today); + LocalDate today = LocalDate.now(); + Date start = Date.from(today.atStartOfDay(ZoneId.systemDefault()).toInstant()); + Date end = Date.from(today.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + List list = statisticsMapper.listPart2All(start, end,today); + if (!list.isEmpty()) { + statisticsMapper.batchInsertPart2(list); } + + } /* 每小时执行定时任务更新年度数据 @@ -67,17 +74,13 @@ public class StatisticsServiceImpl implements StatisticsService { @Override @Scheduled(cron = "0 10 * * * ?") // 每小时执行一次 public void runHourlyTaskYear() { - Date today = new Date(); - // 获取当前日期 - LocalDate today1 = LocalDate.now(); - // 获取当前年份的第一天 - LocalDate firstDayOfYear = today1.withDayOfYear(1); - // 将年份的第一天日期转换为Date类型 - Date yearlyStartDate=Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant()); - - - for(String market : generalService.getMarket()){ - saveStatisticsYear(market,yearlyStartDate,today); + LocalDate today = LocalDate.now(); + LocalDate firstDay = today.withDayOfYear(1); + Date yearStart = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant()); + Date end = Date.from(today.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + List list = statisticsMapper.listYearAll(yearStart, end, today); + if (!list.isEmpty()) { + statisticsMapper.batchInsertYear(list); } } @@ -88,27 +91,9 @@ public class StatisticsServiceImpl implements StatisticsService { @Override @Scheduled(cron = "0 30 0 * * ?") // 修改为每天 00:30 执行 public void runDailyTaskPart2() { - Calendar cal = Calendar.getInstance(); - cal.add(Calendar.DAY_OF_YEAR, -7); // 一周前 - Date startDate = cal.getTime(); - Date yesterday = generalService.getYesterday(); // 昨天 - // 获取 Calendar 实例并设置为昨天的日期 - Calendar calendar = Calendar.getInstance(); - calendar.setTime(yesterday); - - // 设置时间为昨天的23:59:55 - calendar.set(Calendar.HOUR_OF_DAY, 23); - calendar.set(Calendar.MINUTE, 59); - calendar.set(Calendar.SECOND, 55); - //把yesterday的结束时间设为结束时间 - Date endDate= calendar.getTime(); - //近一周的日期列表 - List dateList =generalService.getAllDatesBetween(startDate, endDate); - - for (Date date : dateList) { - for (String market : generalService.getMarket()) { - saveStatisticsPart2(market, date); - } + List list = statisticsMapper.listPart2RangeAll(); + if (!list.isEmpty()) { + statisticsMapper.batchInsertPart2(list); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index cad027e..25718af 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: fail-on-unknown-properties: false datasource: mysql1: - jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true + jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true username: hwgoldc password: zB48T55wCsHC8KPz driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index bf50271..ad43c0f 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -4,7 +4,7 @@ spring: fail-on-unknown-properties: false datasource: mysql1: - jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgold?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true + jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgold?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true username: hwgold password: aDiw7MERSATdfGta driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 5bf84d4..9fd308f 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -4,7 +4,7 @@ spring: fail-on-unknown-properties: false datasource: mysql1: - jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true + jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true username: hwgoldc password: zB48T55wCsHC8KPz driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8d83f09..024f557 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -6,7 +6,7 @@ spring: fail-on-unknown-properties: false datasource: mysql1: - jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true + jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true username: hwgoldc password: zB48T55wCsHC8KPz driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/mapper/StatisticsMapper.xml b/src/main/resources/mapper/StatisticsMapper.xml index aaec2f0..a97dfb8 100644 --- a/src/main/resources/mapper/StatisticsMapper.xml +++ b/src/main/resources/mapper/StatisticsMapper.xml @@ -55,6 +55,87 @@ ) + + + INSERT INTO statistics ( + market, current_datetime, + current_gold, daily_change, + current_permanent, current_free_june, + current_free_december, current_task + ) VALUES ( + #{s.market}, #{s.currentDatetime}, + #{s.currentGold}, #{s.dailyChange}, + #{s.currentPermanent}, #{s.currentFreeJune}, + #{s.currentFreeDecember}, #{s.currentTask} + ) + ON DUPLICATE KEY UPDATE + current_gold = VALUES(current_gold), + daily_change = VALUES(daily_change), + current_permanent = VALUES(current_permanent), + current_free_june = VALUES(current_free_june), + current_free_december = VALUES(current_free_december), + current_task = VALUES(current_task) + + + + + INSERT INTO statistics ( + market, current_datetime, + recharge, money, + consume_permanent, consume_free_june, + consume_free_december, consume_task, + refund_permanent, refund_free_june, + refund_free_december, refund_task, + recharge_num, first_recharge + ) VALUES ( + #{s.market}, #{s.currentDatetime}, + #{s.recharge}, #{s.money}, + #{s.consumePermanent}, #{s.consumeFreeJune}, + #{s.consumeFreeDecember}, #{s.consumeTask}, + #{s.refundPermanent}, #{s.refundFreeJune}, + #{s.refundFreeDecember}, #{s.refundTask}, + #{s.rechargeNum}, #{s.firstRecharge} + ) + ON DUPLICATE KEY UPDATE + recharge = VALUES(recharge), + money = VALUES(money), + consume_permanent = VALUES(consume_permanent), + consume_free_june = VALUES(consume_free_june), + consume_free_december = VALUES(consume_free_december), + consume_task = VALUES(consume_task), + refund_permanent = VALUES(refund_permanent), + refund_free_june = VALUES(refund_free_june), + refund_free_december = VALUES(refund_free_december), + refund_task = VALUES(refund_task), + recharge_num = VALUES(recharge_num), + first_recharge = VALUES(first_recharge) + + + + + INSERT INTO statistics ( + market, current_datetime, + yearly_recharge, + yearly_money, + yearly_consume, + yearly_refund, + yearly_recharge_num + ) VALUES ( + #{s.market}, #{s.currentDatetime}, + #{s.yearlyRecharge}, + #{s.yearlyMoney}, + #{s.yearlyConsume}, + #{s.yearlyRefund}, + #{s.yearlyRechargeNum} + ) + ON DUPLICATE KEY UPDATE + yearly_recharge = VALUES(yearly_recharge), + yearly_money = VALUES(yearly_money), + yearly_consume = VALUES(yearly_consume), + yearly_refund = VALUES(yearly_refund), + yearly_recharge_num = VALUES(yearly_recharge_num) + + UPDATE statistics @@ -185,6 +266,109 @@ AND current_datetime BETWEEN #{startDate} AND #{endDate} + + + +