diff --git a/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java b/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java index aaee9b7..7196227 100644 --- a/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java +++ b/src/main/java/mjkf/xinke/main/controller/LocalMaterialController.java @@ -48,7 +48,10 @@ public class LocalMaterialController { @ApiParam(value = "规格") @RequestParam(value="spec", required=false) String spec, @ApiParam(value = "名称") @RequestParam(value="name", required=false) String name ) { - var query = localMaterialService.getQuery(year, month, city, county, spec, name, null); + // 指定月份无数据时选用最新数据 + var date = localMaterialService.checkDate(year, month); + + var query = localMaterialService.getQuery(date.getYear(), date.getMonth().getValue(), city, county, spec, name, null); query.orderByDesc(LocalMaterial::getName); List data = localMaterialService.list(query); diff --git a/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java b/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java index f287168..575228b 100644 --- a/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java +++ b/src/main/java/mjkf/xinke/main/service/LocalMaterialService.java @@ -1,5 +1,6 @@ package mjkf.xinke.main.service; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import mjkf.xinke.main.model.db.LocalMaterial; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -10,6 +11,27 @@ import java.util.Map; @Service public class LocalMaterialService extends DataService, LocalMaterial> { + /** + * 获取指定月份前含数据的最新日期 + * @param year + * @param month + * @return + */ + public LocalDate checkDate(Integer year, Integer month) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + var startDate = LocalDate.of(year, month, 1); + var endDate = startDate.plusMonths(1); + query.lt(LocalMaterial::getDate, endDate); + query.orderByDesc(LocalMaterial::getDate); + var result = (LocalMaterial)this.getOne(query, false); + if (ObjectUtil.isEmpty(result)) { + return LocalDate.of(year, month, 1); + } else { + return result.getDate(); + } + } + + public LambdaQueryWrapper indexQuery(LocalMaterial data) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(LocalMaterial::getName, data.getName());