From 1aee68f4db6755e6d00f7bb4d8618edb2bd1bed3 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Sat, 11 Oct 2025 11:29:48 +0800 Subject: [PATCH] =?UTF-8?q?10-11-=E5=B7=A5=E4=BD=9C=E5=8F=B0=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E5=9C=B0=E5=8C=BA=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/coin/WorkbenchController.java | 15 ++++++-- .../domain/vo/coin/WorkbenchDayStatistics.java | 24 +++++++++++++ .../domain/vo/coin/WorkbenchMonthStatistics.java | 23 +++++++++++++ .../example/demo/mapper/coin/WorkBenchMapper.java | 12 +++++-- .../demo/service/coin/WorkbenchService.java | 4 +++ .../serviceImpl/coin/WorkbenchServiceImpl.java | 40 +++++++++++++++++++--- src/main/resources/mapper/WorkBenchMapper.xml | 28 +++++++++++++++ 7 files changed, 138 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/vo/coin/WorkbenchDayStatistics.java create mode 100644 src/main/java/com/example/demo/domain/vo/coin/WorkbenchMonthStatistics.java diff --git a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java index 7f683e0..ddc632a 100644 --- a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java +++ b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java @@ -49,7 +49,7 @@ public class WorkbenchController { 获取各地区工作台卡片的数据 */ @Log("获取工作台卡片数据") - @PostMapping("getCard") + @PostMapping("/getCard") public ResponseEntity card1(@RequestBody WorkbenchCard workbench) throws Exception{ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); @@ -71,7 +71,7 @@ public class WorkbenchController { 获取各地区工作台图表的数据 */ @Log("获取工作台图表数据") - @PostMapping("getGraph") + @PostMapping("/getGraph") public ResponseEntity graph1(@RequestBody WorkbenchCard workbench, @AuthenticationPrincipal Admin admin) { String account = admin.getAccount(); List markets = workbenchService.getAdminMarket(account); @@ -81,5 +81,16 @@ public class WorkbenchController { WorkbenchCard result =workbenchService.getGraph(workbench.getStartDate(),workbench.getEndDate(),workbench.getMarkets()); return ResponseEntity.ok(result); } + //单个地区工作台图表 + @Log("获取单个地区工作台图表数据") + @PostMapping("/getSingleGraph") + public ResponseEntity singleGraph1(@RequestBody WorkbenchCard workbench, @AuthenticationPrincipal Admin admin) { + String account = admin.getAccount(); + List markets = workbenchService.getAdminMarket(account); + + workbench.setMarkets(markets); + WorkbenchCard result =workbenchService.getSingleGraph(workbench.getStartDate(),workbench.getEndDate(),workbench.getMarkets()); + return ResponseEntity.ok(result); + } } diff --git a/src/main/java/com/example/demo/domain/vo/coin/WorkbenchDayStatistics.java b/src/main/java/com/example/demo/domain/vo/coin/WorkbenchDayStatistics.java new file mode 100644 index 0000000..ddf8291 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/coin/WorkbenchDayStatistics.java @@ -0,0 +1,24 @@ +package com.example.demo.domain.vo.coin; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @program: gold-java + * @ClassName WorkbenchDayStatistics + * @description: + * @author: Ethan + * @create: 2025−10-10 09:46 + * @Version 1.0 + **/ +@Data +public class WorkbenchDayStatistics { + private Date statDate; + private BigDecimal dayRechargePermanent; + private BigDecimal dayRechargeFree; + private BigDecimal dayConsumePermanent; + private BigDecimal dayConsumeFree; + private BigDecimal dayConsumeTask; +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/vo/coin/WorkbenchMonthStatistics.java b/src/main/java/com/example/demo/domain/vo/coin/WorkbenchMonthStatistics.java new file mode 100644 index 0000000..86f7be4 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/coin/WorkbenchMonthStatistics.java @@ -0,0 +1,23 @@ +package com.example.demo.domain.vo.coin; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @program: gold-java + * @ClassName WorkbenchMonthStatistics + * @description: + * @author: Ethan + * @create: 2025−10-10 09:46 + * @Version 1.0 + **/ +@Data +public class WorkbenchMonthStatistics { + private String month; + private BigDecimal monthRechargePermanent; + private BigDecimal monthRechargeFree; + private BigDecimal monthConsumePermanent; + private BigDecimal monthConsumeFree; + private BigDecimal monthConsumeTask; +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/coin/WorkBenchMapper.java b/src/main/java/com/example/demo/mapper/coin/WorkBenchMapper.java index 3f35e19..9e7380a 100644 --- a/src/main/java/com/example/demo/mapper/coin/WorkBenchMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/WorkBenchMapper.java @@ -1,10 +1,10 @@ package com.example.demo.mapper.coin; -import com.example.demo.domain.vo.coin.WorkbenchCard; -import com.example.demo.domain.vo.coin.WorkbenchFullStatistics; +import com.example.demo.domain.vo.coin.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDate; import java.util.Date; import java.util.List; @@ -45,4 +45,12 @@ public interface WorkBenchMapper { List getFullStatisticsByMarketAndDate1( @Param("markets") List markets, @Param("startDate") Date startDate, @Param("endDate") Date endDate); + //获取单个地区图表数据(40天以内,按天) + List getDayStatistics(@Param("market") String market, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + //获取单个地区图表数据(40天以上,按月,首尾截断) + List getMonthStatistics(@Param("market") String market, + @Param("startDate") LocalDate startDate, + @Param("endDate") LocalDate endDate); } diff --git a/src/main/java/com/example/demo/service/coin/WorkbenchService.java b/src/main/java/com/example/demo/service/coin/WorkbenchService.java index 4126d4c..d094ca5 100644 --- a/src/main/java/com/example/demo/service/coin/WorkbenchService.java +++ b/src/main/java/com/example/demo/service/coin/WorkbenchService.java @@ -20,6 +20,8 @@ import java.util.List; public interface WorkbenchService { //获取用户的地区权限列表 List getAdminMarket(String account) ; + //获取用户的地区权限(字符串) + String getAdminMarket1(String account) ; //获取不同地区的工作台统计卡片 WorkbenchCard getCard(List markets ); //缓存卡片数据 @@ -41,4 +43,6 @@ public interface WorkbenchService { Date addDays(Date date, int days); //获取传入时间所在周的第一天(周一) Date getStartOfWeek(Date date); + //获取单一市场的工作台图表 + WorkbenchCard getSingleGraph(Date startDate, Date endDate, List markets); } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java index 877aaba..c55efde 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java @@ -1,10 +1,7 @@ package com.example.demo.serviceImpl.coin; import com.example.demo.domain.entity.Statistics; -import com.example.demo.domain.vo.coin.WorkbenchCard; -import com.example.demo.domain.vo.coin.WorkbenchFullStatistics; -import com.example.demo.domain.vo.coin.WorkbenchMarketCard; -import com.example.demo.domain.vo.coin.WorkbenchMarketGraph; +import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.coin.StatisticsMapper; import com.example.demo.mapper.coin.WorkBenchMapper; import com.example.demo.service.coin.WorkbenchService; @@ -19,6 +16,7 @@ import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -75,6 +73,12 @@ public class WorkbenchServiceImpl implements WorkbenchService { } } +//获取用户地区权限(字符串) + @Override + public String getAdminMarket1(String account) { + + return workBenchMapper.getAdminMarket( account); + } @Override public WorkbenchCard getCard( List markets) { @@ -361,6 +365,34 @@ public class WorkbenchServiceImpl implements WorkbenchService { .atStartOfDay(ZoneId.systemDefault()) .toInstant()); } +//获取单个地区工作台图表数据 + @Override + public WorkbenchCard getSingleGraph(Date startDate, Date endDate, List markets) { + if (markets == null || markets.size() != 1) { + throw new IllegalArgumentException("仅支持单地区"); + } + //设置地区 + String market = markets.get(0); + LocalDate start = startDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + LocalDate end = endDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + long days = ChronoUnit.DAYS.between(start, end) + 1; + // 判断是否需要按周或按月显示 大于40天按月,反之按天 + boolean byMonth = days > 40; + + if (byMonth) { + List list = workBenchMapper.getMonthStatistics(market, start, end); + return new WorkbenchCard(new ArrayList<>(), list, markets, startDate, endDate, 0, 0, new Date()); + } else { + List list = workBenchMapper.getDayStatistics(market, startDate, endDate); + return new WorkbenchCard(new ArrayList<>(), list, markets, startDate, endDate, 0, 0, new Date()); + } + } + //获取最近的更新时间 private Date findLatestUpdateTime(List statsList) { // 使用流式处理来找到最新的 updateTime diff --git a/src/main/resources/mapper/WorkBenchMapper.xml b/src/main/resources/mapper/WorkBenchMapper.xml index fbefad6..9e61007 100644 --- a/src/main/resources/mapper/WorkBenchMapper.xml +++ b/src/main/resources/mapper/WorkBenchMapper.xml @@ -136,4 +136,32 @@ + + + +