diff --git a/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java b/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java index 3805529..26abd61 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java @@ -1,13 +1,13 @@ package com.gunshi.project.xyt.controller; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gunshi.core.annotation.Get; import com.gunshi.core.annotation.Post; import com.gunshi.core.result.R; -import com.gunshi.db.dto.PageSo; import com.gunshi.project.xyt.entity.so.SoilMoisturePageSo; import com.gunshi.project.xyt.entity.vo.SoilMoistureVO; -import com.gunshi.project.xyt.model.SafetyReinforcement; import com.gunshi.project.xyt.model.SoilMoistureData; import com.gunshi.project.xyt.model.SoilMoistureStation; import com.gunshi.project.xyt.service.SoilMoistureDataService; @@ -23,6 +23,8 @@ import org.springframework.web.bind.annotation.*; import java.io.Serializable; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * 土壤墒情 @@ -40,7 +42,18 @@ public class SoilMoistureController { @Get(path = "/stationList", summary = "站点列表") public R> listStation() { - return R.ok(soilMoistureStationService.list()); + List list = soilMoistureStationService.list(); + if(CollectionUtil.isEmpty(list)){ + return R.ok(list); + } + List collect = list.stream().peek(e -> { + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,e.getStcd()).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); + SoilMoistureData one = soilMoistureDataService.getOne(qw); + e.setTm(one.getCreateTime()); + e.setVal(one.getVal()); + }).collect(Collectors.toList()); + return R.ok(collect); } @Post(path = "/page", summary = "分页") diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/SoilMoistureVO.java b/src/main/java/com/gunshi/project/xyt/entity/vo/SoilMoistureVO.java index 2063540..fc6a7bc 100644 --- a/src/main/java/com/gunshi/project/xyt/entity/vo/SoilMoistureVO.java +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/SoilMoistureVO.java @@ -26,20 +26,27 @@ public class SoilMoistureVO { @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") private Date createTime; - private BigDecimal nearWeekVal; + private BigDecimal nearWeekValMax; + private BigDecimal nearWeekValMin; - private BigDecimal nearMonthVal; + private BigDecimal nearMonthValMax; + private BigDecimal nearMonthValMin; - private BigDecimal nearThreeMonthVal; + private BigDecimal nearThreeMonthValMax; + private BigDecimal nearThreeMonthValMin; - private BigDecimal nearSixMonthVal; + private BigDecimal nearSixMonthValMax; + private BigDecimal nearSixMonthValMin; - private BigDecimal nearYearVal; + private BigDecimal nearYearValMax; + private BigDecimal nearYearValMin; - private BigDecimal currWeekVal; + private BigDecimal currWeekValMax; + private BigDecimal currWeekValMin; - private BigDecimal currMonthVal; - - private BigDecimal currYearVal; + private BigDecimal currMonthValMax; + private BigDecimal currMonthValMin; + private BigDecimal currYearValMax; + private BigDecimal currYearValMin; } diff --git a/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java index ec4b805..b029976 100644 --- a/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java +++ b/src/main/java/com/gunshi/project/xyt/mapper/StStbprpBMapper.java @@ -100,7 +100,7 @@ public interface StStbprpBMapper extends BaseMapper { " AND a.moditime >= #{obj.dateSo.start} " + " " + " " + - " AND a.moditime <= #{obj.dateSo.end} " + + " AND a.moditime <= #{obj.dateSo.end} order by a.moditime desc" + "" + "") List flowList(@Param("obj") StZqrlBDto obj); diff --git a/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java b/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java index d8541e3..65cfac4 100644 --- a/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java +++ b/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java @@ -47,4 +47,10 @@ public class SoilMoistureStation implements Serializable { @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") private Date createTime; + @TableField(exist = false) + private BigDecimal val; + + @TableField(exist = false) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/service/SoilMoistureDataService.java b/src/main/java/com/gunshi/project/xyt/service/SoilMoistureDataService.java index 8234352..ffda28d 100644 --- a/src/main/java/com/gunshi/project/xyt/service/SoilMoistureDataService.java +++ b/src/main/java/com/gunshi/project/xyt/service/SoilMoistureDataService.java @@ -4,19 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.PageSo; import com.gunshi.project.xyt.entity.so.SoilMoisturePageSo; import com.gunshi.project.xyt.entity.vo.SoilMoistureVO; import com.gunshi.project.xyt.mapper.SoilMoistureDataMapper; -import com.gunshi.project.xyt.mapper.SoilMoistureStationMapper; import com.gunshi.project.xyt.model.SoilMoistureData; -import com.gunshi.project.xyt.model.SoilMoistureStation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.io.Serializable; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; @@ -38,10 +34,10 @@ public class SoilMoistureDataService extends ServiceImpl qw = new LambdaQueryWrapper(); qw.eq(SoilMoistureData::getStcd,stcd).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); SoilMoistureData max = baseMapper.selectOne(qw); + SoilMoistureData min = new SoilMoistureData(); vo.setCreateTime(max.getCreateTime()); vo.setCurrVal(Objects.nonNull(max)? max.getVal(): null); - max = findMaxByRang(today, today.minusWeeks(1), stcd); - vo.setNearWeekVal(Objects.nonNull(max)? max.getVal(): null); + max = findMaxByRang(today, today.minusWeeks(1), stcd); + min = findMinByRang(today, today.minusWeeks(1), stcd); + vo.setNearWeekValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearWeekValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.minusMonths(1), stcd); - vo.setNearMonthVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.minusMonths(1), stcd); + vo.setNearMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearMonthValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.minusMonths(3), stcd); - vo.setNearThreeMonthVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.minusMonths(3), stcd); + vo.setNearThreeMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearThreeMonthValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.minusMonths(6), stcd); - vo.setNearSixMonthVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.minusMonths(6), stcd); + vo.setNearSixMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearSixMonthValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.minusYears(1), stcd); - vo.setNearYearVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.minusYears(1), stcd); + vo.setNearYearValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearYearValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); - vo.setCurrWeekVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); + vo.setCurrWeekValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setCurrWeekValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.withDayOfMonth(1), stcd); - vo.setCurrMonthVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.withDayOfMonth(1), stcd); + vo.setCurrMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setCurrMonthValMin(Objects.nonNull(min)? min.getVal(): null); max = findMaxByRang(today, today.withDayOfYear(1), stcd); - vo.setCurrYearVal(Objects.nonNull(max)? max.getVal(): null); + min = findMinByRang(today, today.withDayOfYear(1), stcd); + vo.setCurrYearValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setCurrYearValMin(Objects.nonNull(min)? min.getVal(): null); return vo; } @@ -93,6 +106,14 @@ public class SoilMoistureDataService extends ServiceImpl qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,stcd); + qw.le(SoilMoistureData::getCreateTime,now); + qw.ge(SoilMoistureData::getCreateTime,startDate).orderByAsc(SoilMoistureData::getVal).last(" limit 1"); + return baseMapper.selectOne(qw); + } }