feat:增加统计接口

This commit is contained in:
2025-06-24 23:34:32 +08:00
parent dbbc5e00b9
commit 78d24cf559
16 changed files with 181 additions and 163 deletions

View File

@@ -0,0 +1,23 @@
package com.cxx.food.config;
import com.cxx.food.constant.FileConstant;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${file.path}")
private String filePath;
@Value("${file.log-path}")
private String logFilePath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/" + FileConstant.FILE_URL_PREFIX + "/**")
.addResourceLocations("file:" + filePath);
}
}

View File

@@ -0,0 +1,7 @@
package com.cxx.food.constant;
public interface FileConstant {
String FILE_NAME_SPLIT = "_";
String FILE_URL_PREFIX = "files";
String FILE_LOG_PREFIX = "logs";
}

View File

@@ -39,12 +39,18 @@ public class FoodController {
return foodService.deleteFoodRecipe(id);
}
@Operation(summary = "查询美食菜谱")
@GetMapping("/recipe")
public List<FoodSummaryDto> queryFoodSummary(FoodQueryVo foodQueryVo) {
return foodService.queryFoodSummary(foodQueryVo);
}
@Operation(summary = "分页查询美食菜谱")
@GetMapping("/recipe/page")
public IPage<FoodSummaryDto> queryFoodSummary(@RequestParam("currentPage") Integer currentPage,
@RequestParam("pageSize") Integer pageSize,
FoodQueryVo foodQueryVo) {
return foodService.queryFoodSummary(currentPage, pageSize, foodQueryVo);
public IPage<FoodSummaryDto> queryFoodSummaryByPage(@RequestParam("currentPage") Integer currentPage,
@RequestParam("pageSize") Integer pageSize,
FoodQueryVo foodQueryVo) {
return foodService.queryFoodSummaryByPage(currentPage, pageSize, foodQueryVo);
}
@Operation(summary = "查询美食")
@@ -96,5 +102,23 @@ public class FoodController {
public FoodStatsDto queryFoodStats() {
return foodService.queryFoodStats();
}
@Operation(summary = "查询美食记录统计")
@GetMapping("/stats/record")
public List<StatsChartDto> queryFoodRecordStats() {
return foodService.queryFoodRecordStats();
}
@Operation(summary = "查询美食类别统计")
@GetMapping("/stats/category")
public List<StatsChartDto> queryFoodCategoryStats() {
return foodService.queryFoodCategoryStats();
}
@Operation(summary = "查询美食排行榜统计")
@GetMapping("/stats/rank")
public List<StatsChartDto> queryFoodRankStats() {
return foodService.queryFoodRankStats();
}
}

View File

@@ -12,8 +12,10 @@ import java.util.List;
public interface FoodDao {
FoodRecipeDto queryFoodRecipe(@Param("id") Long id);
IPage<FoodSummaryDto> queryFoodSummary(IPage<FoodSummaryDto> page,
@Param("query") FoodQueryVo foodQueryVo);
IPage<FoodSummaryDto> queryFoodSummaryByPage(IPage<FoodSummaryDto> page,
@Param("query") FoodQueryVo foodQueryVo);
List<FoodSummaryDto> queryFoodSummary(@Param("query") FoodQueryVo foodQueryVo);
List<FoodRecordDto> queryFoodRecordById(@Param("id") Long id);
@@ -22,6 +24,12 @@ public interface FoodDao {
FoodStatsDto queryFoodStats();
List<StatsChartDto> queryFoodRecordStats();
List<StatsChartDto> queryFoodCategoryStats();
List<StatsChartDto> queryFoodRankStats();
List<String> queryFoodCategory();
void insertFoodMaterial(@Param("foodId") Long foodId,

View File

@@ -23,6 +23,10 @@ public class FoodRecordDto {
@JsonView(ReadView.class)
private String category;
@Schema(description = "完成人")
@JsonView(ReadView.class)
private Long person;
@Schema(description = "完成时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date date;

View File

@@ -0,0 +1,11 @@
package com.cxx.food.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class StatsChartDto {
private String name;
private Double value;
}

View File

@@ -15,6 +15,9 @@ public class FoodRecord extends AbstractIdEntity {
@TableField("food_id")
private Long foodId;
@TableField("person")
private Long person;
@TableField("date")
private Date date;

View File

@@ -2,10 +2,7 @@ package com.cxx.food.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cxx.food.dto.FoodRecipeDto;
import com.cxx.food.dto.FoodRecordDto;
import com.cxx.food.dto.FoodStatsDto;
import com.cxx.food.dto.FoodSummaryDto;
import com.cxx.food.dto.*;
import com.cxx.food.vo.FoodQueryVo;
import java.util.List;
@@ -25,7 +22,9 @@ public interface FoodService {
FoodRecipeDto queryFoodRecipe(Long id);
IPage<FoodSummaryDto> queryFoodSummary(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo);
List<FoodSummaryDto> queryFoodSummary(FoodQueryVo foodQueryVo);
IPage<FoodSummaryDto> queryFoodSummaryByPage(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo);
List<FoodRecordDto> queryFoodRecord(String startDate, String endDate);
@@ -34,4 +33,10 @@ public interface FoodService {
List<String> queryFoodCategory();
FoodStatsDto queryFoodStats();
List<StatsChartDto> queryFoodRecordStats();
List<StatsChartDto> queryFoodCategoryStats();
List<StatsChartDto> queryFoodRankStats();
}

View File

@@ -163,11 +163,16 @@ public class FoodServiceImpl implements FoodService {
}
@Override
public IPage<FoodSummaryDto> queryFoodSummary(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo) {
public List<FoodSummaryDto> queryFoodSummary(FoodQueryVo foodQueryVo) {
return foodDao.queryFoodSummary(foodQueryVo);
}
@Override
public IPage<FoodSummaryDto> queryFoodSummaryByPage(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo) {
// 这里只能先对主表进行分页 然后在查询子表信息
// 不能使用Left Join关联表查询因为这里是一对多数据关联查询会导致数据有重复
// 从而导致page计算错误会把重复的数据当成多条记录实际上只有1条记录
IPage<FoodSummaryDto> foodSummaryPage = foodDao.queryFoodSummary(new Page<>(currentPage, pageSize), foodQueryVo);
IPage<FoodSummaryDto> foodSummaryPage = foodDao.queryFoodSummaryByPage(new Page<>(currentPage, pageSize), foodQueryVo);
List<FoodSummaryDto> foodSummaryList = foodSummaryPage.getRecords();
for (FoodSummaryDto foodSummary : foodSummaryList) {
foodSummary.setRecordList(foodDao.queryFoodRecordById(foodSummary.getId()));
@@ -197,4 +202,19 @@ public class FoodServiceImpl implements FoodService {
public FoodStatsDto queryFoodStats() {
return foodDao.queryFoodStats();
}
@Override
public List<StatsChartDto> queryFoodRecordStats() {
return foodDao.queryFoodRecordStats();
}
@Override
public List<StatsChartDto> queryFoodCategoryStats() {
return foodDao.queryFoodCategoryStats();
}
@Override
public List<StatsChartDto> queryFoodRankStats() {
return foodDao.queryFoodRankStats();
}
}