From 1ff801dd33fe285691549a6556c1df8e980d60cd Mon Sep 17 00:00:00 2001 From: liangshan Date: Mon, 31 Mar 2025 13:14:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=9F=E5=A3=A4=E5=A2=92=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SoilMoistureController.java | 84 ++++++++++++++++ .../xyt/entity/so/SoilMoisturePageSo.java | 27 ++++++ .../project/xyt/entity/vo/SoilMoistureVO.java | 39 ++++++++ .../xyt/mapper/SoilMoistureDataMapper.java | 13 +++ .../xyt/mapper/SoilMoistureStationMapper.java | 13 +++ .../project/xyt/model/SoilMoistureData.java | 44 +++++++++ .../xyt/model/SoilMoistureStation.java | 50 ++++++++++ .../xyt/service/SoilMoistureDataService.java | 97 +++++++++++++++++++ .../service/SoilMoistureStationService.java | 29 ++++++ 9 files changed, 396 insertions(+) create mode 100644 src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java create mode 100644 src/main/java/com/gunshi/project/xyt/entity/so/SoilMoisturePageSo.java create mode 100644 src/main/java/com/gunshi/project/xyt/entity/vo/SoilMoistureVO.java create mode 100644 src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureDataMapper.java create mode 100644 src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureStationMapper.java create mode 100644 src/main/java/com/gunshi/project/xyt/model/SoilMoistureData.java create mode 100644 src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java create mode 100644 src/main/java/com/gunshi/project/xyt/service/SoilMoistureDataService.java create mode 100644 src/main/java/com/gunshi/project/xyt/service/SoilMoistureStationService.java diff --git a/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java b/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java new file mode 100644 index 0000000..3805529 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/SoilMoistureController.java @@ -0,0 +1,84 @@ +package com.gunshi.project.xyt.controller; + +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; +import com.gunshi.project.xyt.service.SoilMoistureStationService; +import com.gunshi.project.xyt.validate.markers.Insert; +import com.gunshi.project.xyt.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +/** + * 土壤墒情 + */ +@RestController +@RequestMapping("/soilMoisture") +@Tag(name = "土壤墒情") +public class SoilMoistureController { + + @Autowired + private SoilMoistureStationService soilMoistureStationService; + + @Autowired + private SoilMoistureDataService soilMoistureDataService; + + @Get(path = "/stationList", summary = "站点列表") + public R> listStation() { + return R.ok(soilMoistureStationService.list()); + } + + @Post(path = "/page", summary = "分页") + public R> page(@RequestBody SoilMoisturePageSo page) { + return R.ok(soilMoistureDataService.pageQuery(page)); + } + + @GetMapping("/count/{stcd}") + public R count(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { + return R.ok(soilMoistureDataService.count(stcd.toString())); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SoilMoistureData dto) { + boolean result = soilMoistureDataService.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SoilMoistureData dto) { + boolean result = soilMoistureDataService.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(soilMoistureDataService.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(soilMoistureDataService.lambdaQuery().list()); + } + + +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/so/SoilMoisturePageSo.java b/src/main/java/com/gunshi/project/xyt/entity/so/SoilMoisturePageSo.java new file mode 100644 index 0000000..f636e2b --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/so/SoilMoisturePageSo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.xyt.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * + */ +@Data +@Schema(description = "考核任务分页查询对象") +public class SoilMoisturePageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="时段") + private DateRangeSo dateRangeSo; + + + @Schema(description="stcd") + private String stcd; + +} 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 new file mode 100644 index 0000000..6b7720a --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/SoilMoistureVO.java @@ -0,0 +1,39 @@ +package com.gunshi.project.xyt.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class SoilMoistureVO { + + private String stcd; + + private BigDecimal currVal; + + private BigDecimal nearWeekVal; + + private BigDecimal nearMonthVal; + + private BigDecimal nearThreeMonthVal; + + private BigDecimal nearSixMonthVal; + + private BigDecimal nearYearVal; + + private BigDecimal currWeekVal; + + private BigDecimal currMonthVal; + + private BigDecimal currYearVal; + +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureDataMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureDataMapper.java new file mode 100644 index 0000000..dceee62 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureDataMapper.java @@ -0,0 +1,13 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.SoilMoistureData; +import com.gunshi.project.xyt.model.SoilMoistureStation; +import org.apache.ibatis.annotations.Mapper; + +/** + */ +@Mapper +public interface SoilMoistureDataMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureStationMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureStationMapper.java new file mode 100644 index 0000000..c78e1ce --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/SoilMoistureStationMapper.java @@ -0,0 +1,13 @@ +package com.gunshi.project.xyt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.xyt.model.AppVersionRecord; +import com.gunshi.project.xyt.model.SoilMoistureStation; +import org.apache.ibatis.annotations.Mapper; + +/** + */ +@Mapper +public interface SoilMoistureStationMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/SoilMoistureData.java b/src/main/java/com/gunshi/project/xyt/model/SoilMoistureData.java new file mode 100644 index 0000000..8aaed25 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/SoilMoistureData.java @@ -0,0 +1,44 @@ +package com.gunshi.project.xyt.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* +*/ +@Schema(description="") +@Data +@TableName("public.soil_moisture_data") +public class SoilMoistureData implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + private String stcd; + private BigDecimal val; + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java b/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java new file mode 100644 index 0000000..d8541e3 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/SoilMoistureStation.java @@ -0,0 +1,50 @@ +package com.gunshi.project.xyt.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* +*/ +@Schema(description="") +@Data +@TableName("public.soil_moisture_station") +public class SoilMoistureStation implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String stcd; + private String stnm; + private BigDecimal lgtd; + private BigDecimal lttd; + private Integer status; + private String remark; + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ 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 new file mode 100644 index 0000000..61859b0 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/SoilMoistureDataService.java @@ -0,0 +1,97 @@ +package com.gunshi.project.xyt.service; + +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; +import java.util.Objects; + +/** + * + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SoilMoistureDataService extends ServiceImpl { + + public Page pageQuery(SoilMoisturePageSo page) { + page.getPageSo().setPageSize(10000); + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if(StringUtils.isNotBlank(page.getStcd())){ + query.eq(SoilMoistureData::getStcd,page.getStcd()); + } + if(Objects.nonNull(page.getDateRangeSo())){ + if(Objects.nonNull(page.getDateRangeSo().getStart())){ + + } + if(Objects.nonNull(page.getDateRangeSo().getEnd())){ + + } + } + query.orderByDesc(SoilMoistureData::getCreateTime); + Page res = this.page(page.getPageSo().toPage(), query); + return res; + } + + public SoilMoistureVO count(String stcd) { + SoilMoistureVO vo = new SoilMoistureVO(); + vo.setStcd(stcd); + LocalDate today = LocalDate.now(); + + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,stcd).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); + SoilMoistureData max = baseMapper.selectOne(qw); + 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.minusMonths(1), stcd); + vo.setNearMonthVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.minusMonths(3), stcd); + vo.setNearThreeMonthVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.minusMonths(6), stcd); + vo.setNearSixMonthVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.minusYears(1), stcd); + vo.setNearYearVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); + vo.setCurrWeekVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.withDayOfMonth(1), stcd); + vo.setCurrMonthVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.withDayOfYear(1), stcd); + vo.setCurrYearVal(Objects.nonNull(max)? max.getVal(): null); + return vo; + } + + public SoilMoistureData findMaxByRang(LocalDate now, LocalDate startDate, String stcd){ + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,stcd); + qw.le(SoilMoistureData::getCreateTime,now); + qw.ge(SoilMoistureData::getCreateTime,startDate).orderByDesc(SoilMoistureData::getVal).last(" limit 1"); + return baseMapper.selectOne(qw); + } +} + + diff --git a/src/main/java/com/gunshi/project/xyt/service/SoilMoistureStationService.java b/src/main/java/com/gunshi/project/xyt/service/SoilMoistureStationService.java new file mode 100644 index 0000000..78862df --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/SoilMoistureStationService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.xyt.mapper.AppVersionRecordMapper; +import com.gunshi.project.xyt.mapper.SoilMoistureStationMapper; +import com.gunshi.project.xyt.model.AppVersionRecord; +import com.gunshi.project.xyt.model.SoilMoistureStation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; + +/** + * 描述: APP版本记录 + * author: xusan + * date: 2024-11-12 10:14:50 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SoilMoistureStationService extends ServiceImpl { + +} + +