diff --git a/pom.xml b/pom.xml index 3b39444..c6ab331 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,16 @@ gunshi-modules-all 1.0-SNAPSHOT + + + + com.alibaba + easyexcel + 3.3.2 + + org.junit.jupiter junit-jupiter @@ -49,6 +59,27 @@ org.apache.maven.plugins maven-dependency-plugin + + + copy-lib + + copy-dependencies + + + false + false + runtime + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 15 + 15 + diff --git a/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java b/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java index df762e5..7cfcfdf 100644 --- a/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java +++ b/src/main/java/com/gunshi/project/xyt/controller/BzProtocolInfoController.java @@ -50,7 +50,7 @@ public class BzProtocolInfoController { @Operation(summary = "删除协议信息") @GetMapping("/delete/{id}") - public R delete(@PathVariable String id) { + public R delete(@PathVariable("id") String id) { return R.ok(dao.removeById(id)); } diff --git a/src/main/java/com/gunshi/project/xyt/controller/EngineeringDrainageController.java b/src/main/java/com/gunshi/project/xyt/controller/EngineeringDrainageController.java new file mode 100644 index 0000000..4750a5e --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/EngineeringDrainageController.java @@ -0,0 +1,191 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.entity.dto.StDamDto; +import com.gunshi.project.xyt.entity.dto.StResDto; +import com.gunshi.project.xyt.entity.dto.StRvDto; +import com.gunshi.project.xyt.entity.vo.StResVo; +import com.gunshi.project.xyt.model.StDamB; +import com.gunshi.project.xyt.model.StResB; +import com.gunshi.project.xyt.model.StRvB; +import com.gunshi.project.xyt.service.EngineeringDrainageService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * TODO + * + * @ClassName EngineeringDrainageController + * @Author Huang Qianxiang + * @Date 2024/1/25 11:50 + */ +@Slf4j +@Tag(name = "工程及水系接口", description = "水库、河流、大坝、闸阀、量水堰基础信息") +@RestController +@RequestMapping("/EngineeringDrainage") +public class EngineeringDrainageController { + + @Resource + private EngineeringDrainageService engineeringDrainageService; + + @Operation(summary = "新增水库基础信息") + @PostMapping("/insertStRes") + public R insertRes(@RequestBody @Validated StResDto stResDto){ + engineeringDrainageService.insertStRes(stResDto); + return R.ok(); + } + + @Operation(summary = "更新水库的基础信息") + @PostMapping("/updateStRes") + public R updateStRes(@RequestBody StResDto stResDto){ + engineeringDrainageService.updateStRes(stResDto); + return R.ok(); + } + + @Operation(summary = "根据水库ID删除水库基本信息") + @GetMapping("/deleteStRes") + public R deleteStRes(@Parameter(description = "水库ID") @RequestParam("resId") String resId){ + engineeringDrainageService.deleteStRes(resId); + return R.ok(); + } + + @Operation(summary = "查询水库的基础信息") + @GetMapping("/queryStRes") + public R> queryStRes(){ + return R.ok(engineeringDrainageService.queryStRes()); + } + + @Operation(summary = "根据水库代码查询水库的基础信息") + @GetMapping("/queryByResCode") + public R queryByResCode(@Parameter(description = "水库代码") @RequestParam("resCode") String resCode){ + return R.ok(engineeringDrainageService.queryByResCode(resCode)); + } + + @Operation(summary = "根据水库ID查询水库的基础信息") + @GetMapping("/queryByResId") + public R queryByResId(@Parameter(description = "水库ID") @RequestParam("resId") String resId){ + return R.ok(engineeringDrainageService.queryByResId(resId)); + } + + @Operation(summary = "根据水库名称模糊查询水库的基础信息") + @GetMapping("/queryLikeResName") + public R> queryLikeResName(@Parameter(description = "水库名称") @RequestParam("resName") String resName){ + return R.ok(engineeringDrainageService.queryLikeResName(resName)); + } + + @Operation(summary = "根据水库规模查询水库的基础信息") + @GetMapping("/queryByEngScal") + public R> queryByEngScal(@Parameter(description = "水库规模") @RequestParam("engScal") String engScal){ + return R.ok(engineeringDrainageService.queryByEngScal(engScal)); + } + + @Operation(summary = "新增河流基础信息") + @PostMapping("/insertStRv") + public R insertStRv(@RequestBody @Validated StRvDto stRvDto){ + engineeringDrainageService.insertStRv(stRvDto); + return R.ok(); + } + + @Operation(summary = "更新河流的基础信息") + @PostMapping("/updateStRv") + public R updateStRv(@RequestBody StRvB stRvB){ + engineeringDrainageService.updateStRv(stRvB); + return R.ok(); + } + + @Operation(summary = "根据河流ID删除河流信息") + @GetMapping("/deleteStRv") + public R deleteStRv(@Parameter(description = "河流ID") @RequestParam("rvId") String rvId){ + engineeringDrainageService.deleteStRv(rvId); + return R.ok(); + } + + @Operation(summary = "根据河流代码查询河流的基础信息") + @GetMapping("/queryByRvCode") + public R queryByRvCode(@Parameter(description = "河流代码") @RequestParam("rvCode") String rvCode){ + return R.ok(engineeringDrainageService.queryByRvCode(rvCode)); + } + + @Operation(summary = "根据河流ID查询河流的基础信息") + @GetMapping("/queryByRvId") + public R queryByRvId(@Parameter(description = "河流ID") @RequestParam("rvId") String rvId){ + return R.ok(engineeringDrainageService.queryByRvId(rvId)); + } + + @Operation(summary = "分页查询河流的基础信息") + @GetMapping("/pageStRv") + public R> pageStRv( + @Parameter(description = "当前页") @RequestParam("pageNum") Integer pageNum, + @Parameter(description = "每页显示的条数") @RequestParam("pageSize")Integer pageSize){ + return R.ok(engineeringDrainageService.pageStRv(pageNum,pageSize)); + } + + @Operation(summary = "根据河流名称模糊查询河流信息") + @GetMapping("/queryLikeRvName") + public R> queryLikeRvName( + @Parameter(description = "河流名称") @RequestParam("rvName")String rvName, + @Parameter(description = "当前页") @RequestParam("pageNum") Integer pageNum, + @Parameter(description = "每页显示的条数") @RequestParam("pageSize")Integer pageSize){ + return R.ok(engineeringDrainageService.queryLikeRvName(rvName, pageNum, pageSize)); + } + + @Operation(summary = "新增大坝基础信息") + @PostMapping("/insertStDam") + public R insertStDam(@RequestBody @Validated StDamDto stDamDto){ + engineeringDrainageService.insertStDam(stDamDto); + return R.ok(); + } + + @Operation(summary = "更新大坝基础信息") + @PostMapping("/updateStDam") + public R updateStDam(@RequestBody StDamB stDamB){ + engineeringDrainageService.updateStDam(stDamB); + return R.ok(); + } + + @Operation(summary = "删除大坝基础信息") + @GetMapping("/deleteStDam") + public R deleteStDam(@Parameter(description = "大坝ID") @RequestParam("damId") String damId){ + engineeringDrainageService.deleteStDam(damId); + return R.ok(); + } + + @Operation(summary = "根据大坝ID查询大坝信息") + @GetMapping("/queryByDamId") + public R queryByDamId(@Parameter(description = "大坝ID") @RequestParam("damId") String damId){ + return R.ok(engineeringDrainageService.queryByDamId(damId)); + } + + @Operation(summary = "根据大坝代码查询大坝信息") + @GetMapping("/queryByDamCode") + public R queryByDamCode(@Parameter(description = "大坝代码") @RequestParam("damCode") String damCode){ + return R.ok(engineeringDrainageService.queryByDamCode(damCode)); + } + + @Operation(summary = "分页查询大坝基础信息") + @GetMapping("/pageStDam") + public R> pageStDam( + @Parameter(description = "当前页") @RequestParam("pageNum") Integer pageNum, + @Parameter(description = "每页显示的条数") @RequestParam("pageSize")Integer pageSize){ + return R.ok(engineeringDrainageService.pageStDam(pageNum,pageSize)); + } + + @Operation(summary = "根据大坝名称模糊查询大坝基础信息") + @GetMapping("/queryLikeDamName") + public R> queryLikeDamName( + @Parameter(description = "大坝名称") @RequestParam("damName")String damName, + @Parameter(description = "当前页") @RequestParam("pageNum") Integer pageNum, + @Parameter(description = "每页显示的条数") @RequestParam("pageSize")Integer pageSize){ + return R.ok(engineeringDrainageService.queryLikeDamName(damName,pageNum,pageSize)); + } + + +} diff --git a/src/main/java/com/gunshi/project/xyt/controller/WaterQualityController.java b/src/main/java/com/gunshi/project/xyt/controller/WaterQualityController.java new file mode 100644 index 0000000..827f0ab --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/controller/WaterQualityController.java @@ -0,0 +1,95 @@ +package com.gunshi.project.xyt.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.xyt.model.StWaterQualityR; +import com.gunshi.project.xyt.service.WaterQualityService; +import com.gunshi.project.xyt.so.WaterQualityPageSo; +import com.gunshi.project.xyt.validate.markers.QueryPage; +import com.gunshi.project.xyt.validate.markers.QueryTimeRange; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +/** + * Description: + * Created by xusan on 2024/1/23 + * + * @author xusan + * @version 1.0 + */ +@RestController +@Slf4j +@Tag(name = "水质整编接口-controller", description = "水质整编接口") +@Data +@RequestMapping("/waterQuality") +public class WaterQualityController { + + private final WaterQualityService waterqualityService; + +// @Operation(summary = "新增水质监测数据") +// @ApiResponses(value = { +// @ApiResponse(responseCode = "200",description = "成功") +// }) +// @PostMapping("/add") +// public R add(@RequestBody @Validated StWaterQualityR organization){ +// return R.ok(waterqualityService.add(organization)); +// } +// +// @Operation(summary = "更新水质监测数据") +// @ApiResponses(value = { +// @ApiResponse(responseCode = "200",description = "成功") +// }) +// @PostMapping("/update") +// public R update(@RequestBody @Validated StWaterQualityR organization){ +// return R.ok(waterqualityService.update(organization)); +// } +// +// @Operation(summary = "根据id删除水质监测数据") +// @Parameter(name = "id", description = "水质监测数据id") +// @DeleteMapping("/delete") +// public R delete(@RequestParam("id") String orgCode){ +// return R.ok(waterqualityService.delete(orgCode)); +// } + + @Operation(summary = "水质监测数据分页查询") + @PostMapping("/page") + public R> page( + @Validated({QueryPage.class, QueryTimeRange.class}) @RequestBody + WaterQualityPageSo waterQualityPageSo + ) { + return R.ok(waterqualityService.page(waterQualityPageSo)); + } + + @Operation(summary = "水质监测数据导出") + @GetMapping("/export") + public void export(WaterQualityPageSo waterQualityPageSo, HttpServletResponse response) { + waterqualityService.export(waterQualityPageSo, response); + } + + @Operation(summary = "水质监测数据导入") + @GetMapping("/import") + public R importExcel(@RequestParam("file") MultipartFile file) { + if (file.isEmpty()) { + return R.error(400, "请选择上传文件"); + } + + try { + + return R.ok( waterqualityService.importExcel(file)); + + } catch (IOException e) { + + return R.error(500, "文件上传失败: " + e.getMessage()); + + } + } + +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/dto/StDamDto.java b/src/main/java/com/gunshi/project/xyt/entity/dto/StDamDto.java new file mode 100644 index 0000000..0a1da74 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/dto/StDamDto.java @@ -0,0 +1,34 @@ +package com.gunshi.project.xyt.entity.dto; + +import com.gunshi.project.xyt.model.StDamB; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * TODO + * + * @ClassName StDamDto + * @Author Huang Qianxiang + * @Date 2024/1/25 11:08 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="大坝基础信息DTO") +@Data +public class StDamDto extends StDamB { + + /** + * 大坝代码 + */ + @Schema(description="大坝代码") + @NotNull(message = "大坝代码不能为空") + private String damCode; + + /** + * 大坝名称 + */ + @Schema(description="大坝名称") + @NotNull(message = "大坝名称不能为空") + private String damName; +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/dto/StResDto.java b/src/main/java/com/gunshi/project/xyt/entity/dto/StResDto.java new file mode 100644 index 0000000..869f49a --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/dto/StResDto.java @@ -0,0 +1,121 @@ +package com.gunshi.project.xyt.entity.dto; + +import com.gunshi.project.xyt.model.StResB; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * TODO + * + * @ClassName ResDto + * @Author Huang Qianxiang + * @Date 2024/1/24 14:43 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="水库的基础信息DTO") +@Data +public class StResDto extends StResB { + + /** + * 水库名称 + */ + @Schema(description="水库名称") + @NotNull(message = "水库名称不能为空") + private String resName; + + /** + * 水库代码 + */ + @Schema(description="水库代码") + @NotNull(message = "水库代码不能为空") + private String resCode; + + /** + * 行政区划编码 + */ + @Schema(description="行政区划编码") + @NotNull(message = "行政区化编码不能为空") + private String addvcd; + + /** + * 经度 + */ + @Schema(description="经度") + @NotNull(message = "经度不能为空") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @Schema(description="纬度") + @NotNull(message = "维度不能为空") + private BigDecimal lttd; + + /** + * 设计洪水位 + */ + @Schema(description="设计洪水位") + @NotNull(message = "设计洪水位不能为空") + private BigDecimal dsfllv; + + /** + * 校核洪水位 + */ + @Schema(description="校核洪水位") + @NotNull(message = "校核洪水位不能为空") + private BigDecimal chfllv; + + /** + * 正常蓄水位 + */ + @Schema(description="正常蓄水位") + @NotNull(message = "正常蓄水位不能为空") + private BigDecimal normWatLev; + + /** + * 死水位 + */ + @Schema(description="死水位") + @NotNull(message = "死水位不能为空") + private BigDecimal deadLev; + + /** + * 总库容 + */ + @Schema(description="总库容") + @NotNull(message = "总库容不能为空") + private BigDecimal totCap; + + /** + * 汛限水位 + */ + @Schema(description="汛限水位") + @NotNull(message = "汛限水位不能为空") + private BigDecimal flLowLimLev; + + /** + * 集雨面积 + */ + @Schema(description="集雨面积") + @NotNull(message = "集雨面积不能为空") + private BigDecimal watShedArea; + + /** + * 水库规模 dict_id + */ + @Schema(description="水库规模 dict_id") + @NotNull(message = "水库规模不能为空") + private Long engScal; + + /** + * 测站编码 + */ + @Schema(description = "测站编码") + @NotNull(message = "测站编码不能为空") + private String STCD; + +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/dto/StRvDto.java b/src/main/java/com/gunshi/project/xyt/entity/dto/StRvDto.java new file mode 100644 index 0000000..10ff230 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/dto/StRvDto.java @@ -0,0 +1,34 @@ +package com.gunshi.project.xyt.entity.dto; + +import com.gunshi.project.xyt.model.StRvB; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * TODO + * + * @ClassName StRvDto + * @Author Huang Qianxiang + * @Date 2024/1/25 9:28 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="河流的基础信息DTO") +@Data +public class StRvDto extends StRvB { + /** + * 河流代码 + */ + @Schema(description="河流代码") + @NotNull(message = "河流代码不能为空") + private String rvCode; + + /** + * 河流名称 + */ + @Schema(description="河流名称") + @NotNull(message = "河流名称不能为空") + private String rvName; + +} diff --git a/src/main/java/com/gunshi/project/xyt/entity/vo/StResVo.java b/src/main/java/com/gunshi/project/xyt/entity/vo/StResVo.java new file mode 100644 index 0000000..c9428b9 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/entity/vo/StResVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.xyt.entity.vo; + +import com.gunshi.db.dto.PageSo; +import com.gunshi.project.xyt.model.StResB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * TODO + * + * @ClassName StResPageSo + * @Author Huang Qianxiang + * @Date 2024/1/24 16:25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class StResVo extends StResB { + + /** + * 测站编码 + */ + @Schema(description = "测站编码") + private String STCD; + +} diff --git a/src/main/java/com/gunshi/project/xyt/enums/RcvDataType.java b/src/main/java/com/gunshi/project/xyt/enums/RcvDataType.java new file mode 100644 index 0000000..388ebd4 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/enums/RcvDataType.java @@ -0,0 +1,37 @@ +package com.gunshi.project.xyt.enums; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +public enum RcvDataType { + /** + * 雨量数据 + */ + PPTN("PPTN"), + /** + * 水位数据 + */ + RSVR("RSVR"), + /** + * 流量数据 + */ + FLOW("FLOW"), + /** + * 图像数据 + */ + IMG("IMG"); + + private final String value; + + RcvDataType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/src/main/java/com/gunshi/project/xyt/mapper/WaterQualityMapper.java b/src/main/java/com/gunshi/project/xyt/mapper/WaterQualityMapper.java new file mode 100644 index 0000000..26cc3a0 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/mapper/WaterQualityMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.xyt.mapper; + +import com.gunshi.db.dao.IMapper; +import com.gunshi.project.xyt.model.StWaterQualityR; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/1/23. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface WaterQualityMapper extends IMapper { +} diff --git a/src/main/java/com/gunshi/project/xyt/model/RcvLogDownR.java b/src/main/java/com/gunshi/project/xyt/model/RcvLogDownR.java new file mode 100644 index 0000000..c292803 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/RcvLogDownR.java @@ -0,0 +1,24 @@ +package com.gunshi.project.xyt.model; + +import lombok.Data; + +import java.util.Date; + +/** + * 报文日志 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +@Data +public class RcvLogDownR { + private Long id; + private Long protocolId; + private String msg; + private Date sendTm; + private String encoded; + private String rtuid; + private String funcode; + private Long arkId; +} diff --git a/src/main/java/com/gunshi/project/xyt/model/RcvLogUpR.java b/src/main/java/com/gunshi/project/xyt/model/RcvLogUpR.java new file mode 100644 index 0000000..c60fa42 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/RcvLogUpR.java @@ -0,0 +1,28 @@ +package com.gunshi.project.xyt.model; + +import lombok.Data; + +import java.util.Date; + +/** + * 报文日志 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +@Data +public class RcvLogUpR { + private Long id; + private Long protocolId; + private String originalMsg; + private Date receiveTm; + private String decoded; + private Date decodedTm; + private String rtuid; + private String funcode; + private Date observeTm; + private Integer partialSize; + private Integer partialIndex; + private Long arkId; +} diff --git a/src/main/java/com/gunshi/project/xyt/model/StFlowR.java b/src/main/java/com/gunshi/project/xyt/model/StFlowR.java new file mode 100644 index 0000000..6d1a31a --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/StFlowR.java @@ -0,0 +1,11 @@ +package com.gunshi.project.xyt.model; + +/** + * 流量数据 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +public class StFlowR { +} diff --git a/src/main/java/com/gunshi/project/xyt/model/StImgR.java b/src/main/java/com/gunshi/project/xyt/model/StImgR.java new file mode 100644 index 0000000..65facb7 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/StImgR.java @@ -0,0 +1,11 @@ +package com.gunshi.project.xyt.model; + +/** + * 图像数据 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +public class StImgR { +} diff --git a/src/main/java/com/gunshi/project/xyt/model/StPptnR.java b/src/main/java/com/gunshi/project/xyt/model/StPptnR.java new file mode 100644 index 0000000..0ee8219 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/StPptnR.java @@ -0,0 +1,11 @@ +package com.gunshi.project.xyt.model; + +/** + * 雨量数据 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +public class StPptnR { +} diff --git a/src/main/java/com/gunshi/project/xyt/model/StRsvrR.java b/src/main/java/com/gunshi/project/xyt/model/StRsvrR.java new file mode 100644 index 0000000..a9953f9 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/StRsvrR.java @@ -0,0 +1,11 @@ +package com.gunshi.project.xyt.model; + +/** + * 水位数据 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-25 + */ +public class StRsvrR { +} diff --git a/src/main/java/com/gunshi/project/xyt/model/StWaterQualityR.java b/src/main/java/com/gunshi/project/xyt/model/StWaterQualityR.java new file mode 100644 index 0000000..1f5a67e --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/model/StWaterQualityR.java @@ -0,0 +1,280 @@ +package com.gunshi.project.xyt.model; + +import com.alibaba.excel.annotation.ExcelProperty; +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 io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * Description: + * Created by XuSan on 2024/1/23. + * + * @author XuSan + * @version 1.0 + */ +/** + * 水质自动监测数据表 + */ +@Data +@TableName(value = "ST_WATER_QUALITY_R") +@Schema(description = "水质自动监测数据表") +public class StWaterQualityR { + + /** + * 主键id + */ + @TableId(value = "ID", type = IdType.AUTO) + @Schema(description = "主键id") + @ExcelProperty("编号") + private Integer id; + + /** + * 站码 + */ + @TableField(value = "STCD") + @Schema(description = "站码") + @ExcelProperty("站码") + private String stcd; + + /** + * 采样时间 + */ + @TableField(value = "SPT") + @Schema(description = "采样时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + @ExcelProperty("采样时间") + private LocalDateTime spt; + + /** + * 水温 + */ + @TableField(value = "WIMP") + @Schema(description = "水温") + @ExcelProperty("水温") + private BigDecimal wimp; + + /** + * PH值 + */ + @TableField(value = "PH") + @Schema(description = "PH值") + @ExcelProperty("PH值") + private BigDecimal ph; + + /** + * 电导率 + */ + @TableField(value = "COND") + @Schema(description = "电导率") + @ExcelProperty("电导率") + private BigDecimal cond; + + /** + * 浑浊度 + */ + @TableField(value = "TURB") + @Schema(description = "浑浊度") + @ExcelProperty("浑浊度") + private BigDecimal turb; + + /** + * 溶解氧 + */ + @TableField(value = "DOX") + @Schema(description = "溶解氧") + @ExcelProperty("溶解氧") + private BigDecimal dox; + + /** + * 高锰酸钾指数 + */ + @TableField(value = "CODMN") + @Schema(description = "高锰酸钾指数") + @ExcelProperty("高锰酸钾指数") + private BigDecimal codmn; + + /** + * 化学需氧量 + */ + @TableField(value = "CODCR") + @Schema(description = "化学需氧量") + @ExcelProperty("化学需氧量") + private BigDecimal codcr; + + /** + * 总氮 + */ + @TableField(value = "TN") + @Schema(description = "总氮") + @ExcelProperty("总氮") + private BigDecimal tn; + + /** + * 氨氮 + */ + @TableField(value = "NH3N") + @Schema(description = "氨氮") + @ExcelProperty("氨氮") + private BigDecimal nh3N; + + /** + * 亚硝酸盐氮 + */ + @TableField(value = "NO2") + @Schema(description = "亚硝酸盐氮") + @ExcelProperty("亚硝酸盐氮") + private BigDecimal no2; + + /** + * 硝酸盐氮 + */ + @TableField(value = "NO3") + @Schema(description = "硝酸盐氮") + @ExcelProperty("硝酸盐氮") + private BigDecimal no3; + + /** + * 总磷 + */ + @TableField(value = "TP") + @Schema(description = "总磷") + @ExcelProperty("总磷") + private BigDecimal tp; + + /** + * 总有机碳 + */ + @TableField(value = "TOC") + @Schema(description = "总有机碳") + @ExcelProperty("总有机碳") + private BigDecimal toc; + + /** + * 挥发酚 + */ + @TableField(value = "VLPH") + @Schema(description = "挥发酚") + @ExcelProperty("挥发酚") + private BigDecimal vlph; + + /** + * 叶绿素a + */ + @TableField(value = "CHLA") + @Schema(description = "叶绿素a") + @ExcelProperty("叶绿素a") + private BigDecimal chla; + + /** + * 氟化物 + */ + @TableField(value = "F") + @Schema(description = "氟化物") + @ExcelProperty("氟化物") + private BigDecimal f; + + /** + * 砷 + */ + @TableField(value = "ARS") + @Schema(description = "砷") + @ExcelProperty("砷") + private BigDecimal ars; + + /** + * 汞 + */ + @TableField(value = "HG") + @Schema(description = "汞") + @ExcelProperty("汞") + private BigDecimal hg; + + /** + * 铬(六价) + */ + @TableField(value = "CR6") + @Schema(description = "铬(六价)") + @ExcelProperty("铬(六价)") + private BigDecimal cr6; + + /** + * 铜 + */ + @TableField(value = "CU") + @Schema(description = "铜") + @ExcelProperty("铜") + private BigDecimal cu; + + /** + * 铅 + */ + @TableField(value = "PB") + @Schema(description = "铅") + @ExcelProperty("铅") + private BigDecimal pb; + + /** + * 镉 + */ + @TableField(value = "CD") + @Schema(description = "镉") + @ExcelProperty("镉") + private BigDecimal cd; + + /** + * 锌 + */ + @TableField(value = "ZN") + @Schema(description = "锌") + @ExcelProperty("锌") + private BigDecimal zn; + + /** + * 锑 + */ + @TableField(value = "SB") + @Schema(description = "锑") + @ExcelProperty("锑") + private BigDecimal sb; + + /** + * 湿度 + */ + @TableField(value = "HUMIDITY") + @Schema(description = "湿度") + @ExcelProperty("湿度") + private BigDecimal humidity; + + /** + * 室温 + */ + @TableField(value = "ROOMTMP") + @Schema(description = "室温") + @ExcelProperty("室温") + private BigDecimal roomtmp; + + /** + * 水质类别 + */ + @TableField(value = "CATEGORY") + @Schema(description = "水质类别") + @ExcelProperty("水质类别") + private BigDecimal category; + + /** + * 污染物 + */ + @TableField(value = "POLLUTER") + @Schema(description = "污染物") + @ExcelProperty("污染物") + private BigDecimal polluter; + + +} diff --git a/src/main/java/com/gunshi/project/xyt/service/EngineeringDrainageService.java b/src/main/java/com/gunshi/project/xyt/service/EngineeringDrainageService.java new file mode 100644 index 0000000..03d0d18 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/EngineeringDrainageService.java @@ -0,0 +1,420 @@ +package com.gunshi.project.xyt.service; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.xyt.entity.dto.StDamDto; +import com.gunshi.project.xyt.entity.dto.StResDto; +import com.gunshi.project.xyt.entity.dto.StRvDto; +import com.gunshi.project.xyt.entity.vo.StResVo; +import com.gunshi.project.xyt.model.*; +import com.gunshi.project.xyt.model.StDamBAutoDao; +import com.gunshi.project.xyt.model.StResBAutoDao; +import com.gunshi.project.xyt.model.StResStcdRefAutoDao; +import com.gunshi.project.xyt.model.StRvBAutoDao; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * TODO + * + * @ClassName EngineeringDrainageServiceImpl + * @Author Huang Qianxiang + * @Date 2024/1/24 14:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class EngineeringDrainageService { + + @Resource + private StResBAutoDao stResBAutoDao; + @Resource + private StResStcdRefAutoDao stResStcdRefAutoDao; + @Resource + private StRvBAutoDao stRvBAutoDao; + @Resource + private StDamBAutoDao stDamBAutoDao; + + /** + * 新增水库基础信息 + * @param stResDto 水库的基础信息 + */ + public void insertStRes(StResDto stResDto) { + StResB stResB = new StResB(); + BeanUtil.copyProperties(stResDto,stResB); + Long resId = IdWorker.getId(); + stResB.setResId(resId); + stResB.setStatus(1); + Date date = new Date(); + stResB.setTm(date); + + //判断水库代码是否唯一 + if (queryByResCode(stResDto.getResCode()) != null){ + throw new IllegalArgumentException("水库代码必须唯一"); + } + + //保存水库基本信息 + stResBAutoDao.save(stResB); + + StResStcdRef stResStcdRef = new StResStcdRef(); + stResStcdRef.setResId(resId); + stResStcdRef.setStcd(stResDto.getSTCD()); + stResStcdRef.setTm(date); + + //保存测站关系 + stResStcdRefAutoDao.save(stResStcdRef); + } + + /** + * 更新水库的基础信息 + * @param stResDto 水库的基础信息 + */ + public void updateStRes(StResDto stResDto) { + Long resId = stResDto.getResId(); + StResB byId = stResBAutoDao.getById(resId); + if (byId == null) { + throw new IllegalArgumentException("resId:" + resId + "不存在"); + } + //判断水库代码是否唯一 + if (queryByResCode(stResDto.getResCode()) != null){ + throw new IllegalArgumentException("水库代码必须唯一"); + } + + StResB stResB = new StResB(); + BeanUtil.copyProperties(stResDto,stResB); + Date date = new Date(); + stResB.setTm(date); + //更新水库基本信息 + stResBAutoDao.updateById(stResB); + + if (stResDto.getSTCD() != null){ + StResStcdRef stResStcdRef = new StResStcdRef(); + stResStcdRef.setResId(resId); + stResStcdRef.setStcd(stResDto.getSTCD()); + stResStcdRef.setTm(date); + //更新水库测站关系 + StResStcdRef byId1 = stResStcdRefAutoDao.getById(resId); + if (byId1 != null) { + //先删除之前存在的关系 + stResStcdRefAutoDao.removeById(resId); + } + //更新当前水库测站关系 + stResStcdRefAutoDao.save(stResStcdRef); + } + } + + /** + * 根据水库ID删除水库基本信息 + * @param resId 水库ID + */ + public void deleteStRes(String resId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StResB.COL_RES_ID,resId) + .eq(StResB.COL_STATUS,1); + StResB byId = stResBAutoDao.getOne(queryWrapper); + if (byId == null) { + throw new IllegalArgumentException("resId:" + resId + "不存在"); + } + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + //水库状态更新为禁用 + updateWrapper.eq(StResB.COL_RES_ID,resId) + .set(StResB.COL_STATUS,0); + stResBAutoDao.update(updateWrapper); + //删除水库测站关系 + stResStcdRefAutoDao.removeById(resId); + } + + /** + * 根据水库代码查询水库的基础信息 + * @param resCode 水库代码 + * @return 水库的基础信息 + */ + public StResB queryByResCode(String resCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StResB.COL_RES_CODE,resCode); + return stResBAutoDao.getOne(queryWrapper); + } + + /** + * 根据水库ID查询水库的基础信息 + * @param resId 水库ID + * @return 水库的基础信息 + */ + public StResVo queryByResId(String resId) { + StResB stResB = stResBAutoDao.getById(resId); + StResStcdRef stResStcdRef = stResStcdRefAutoDao.getById(resId); + if (stResB == null) { + throw new IllegalArgumentException("resId:" + resId + "不存在"); + } + StResVo stResVo = new StResVo(); + BeanUtil.copyProperties(stResB,stResVo); + stResVo.setSTCD(stResStcdRef.getStcd()); + return stResVo; + } + + /** + * 查询水库的基础信息 + * @return 水库的基础信息 + */ + public List queryStRes() { + List stResBList = stResBAutoDao + .list(new QueryWrapper().eq(StResB.COL_STATUS,1)); + List stResVoList = new ArrayList<>(); + stResBList.stream().forEach(stResB -> { + StResVo stResVo = new StResVo(); + BeanUtil.copyProperties(stResB,stResVo); + StResStcdRef stResStcdRef = stResStcdRefAutoDao.getById(stResB.getResId()); + stResVo.setSTCD(stResStcdRef.getStcd()); + stResVoList.add(stResVo); + }); + return stResVoList; + } + + /** + * 根据水库名称模糊查询水库的基础信息 + * @param resName 水库名称 + * @return 水库基础信息 + */ + public List queryLikeResName(String resName) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(StResB.COL_RES_NAME,resName) + .eq(StResB.COL_STATUS,1); + List stResBList = stResBAutoDao.list(queryWrapper); + List stResVoList = new ArrayList<>(); + stResBList.stream().forEach(stResB -> { + StResVo stResVo = new StResVo(); + BeanUtil.copyProperties(stResB,stResVo); + StResStcdRef stResStcdRef = stResStcdRefAutoDao.getById(stResB.getResId()); + stResVo.setSTCD(stResStcdRef.getStcd()); + stResVoList.add(stResVo); + }); + return stResVoList; + } + + /** + * 根据水库规模查询水库的基础信息 + * @param engScal 水库规模 + * @return 水库的基础信息 + */ + public List queryByEngScal(String engScal) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StResB.COL_ENG_SCAL,engScal) + .eq(StResB.COL_STATUS,1); + List stResBList = stResBAutoDao.list(queryWrapper); + List stResVoList = new ArrayList<>(); + stResBList.stream().forEach(stResB -> { + StResVo stResVo = new StResVo(); + BeanUtil.copyProperties(stResB,stResVo); + StResStcdRef stResStcdRef = stResStcdRefAutoDao.getById(stResB.getResId()); + stResVo.setSTCD(stResStcdRef.getStcd()); + stResVoList.add(stResVo); + }); + return stResVoList; + } + + /** + * 新增河流基础信息 + * @param stRvDto 河流的基础信息DTO + */ + public void insertStRv(StRvDto stRvDto) { + if (queryByResCode(stRvDto.getRvCode()) != null){ + throw new IllegalArgumentException("河流代码必须唯一"); + } + StRvB stRvB = new StRvB(); + BeanUtil.copyProperties(stRvDto,stRvB); + Long rvId = IdWorker.getId(); + stRvB.setRvId(rvId); + stRvB.setStatus(1); + stRvB.setTm(new Date()); + stRvBAutoDao.save(stRvB); + } + + /** + * 更新河流的基础信息 + * @param stRvB 河流的基础信息 + */ + public void updateStRv(StRvB stRvB) { + Long rvId = stRvB.getRvId(); + StRvB byId = stRvBAutoDao.getById(rvId); + if (byId == null){ + throw new IllegalArgumentException("河流ID: " + rvId + "不存在"); + } + stRvB.setTm(new Date()); + stRvBAutoDao.updateById(stRvB); + } + + /** + * 根据河流ID删除河流信息 + * @param rvId 河流ID + */ + public void deleteStRv(String rvId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StRvB.COL_RV_ID,rvId) + .eq(StRvB.COL_STATUS,1); + StRvB byId = stRvBAutoDao.getOne(queryWrapper); + if (byId == null){ + throw new IllegalArgumentException("河流ID: " + rvId + "不存在, 或河流ID: " + rvId + "已被禁用"); + } + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(StRvB.COL_RV_ID,rvId) + .set(StRvB.COL_STATUS,0); + stRvBAutoDao.update(updateWrapper); + } + + /** + * 根据河流代码查询河流的基础信息 + * @param rvCode 河流代码 + * @return 河流的基础信息 + */ + public StRvB queryByRvCode(String rvCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StRvB.COL_RV_CODE,rvCode) + .eq(StRvB.COL_STATUS,1); + return stRvBAutoDao.getOne(queryWrapper); + } + + /** + * 根据河流ID查询河流的基础信息 + * @param rvId 河流ID + * @return 河流的基础信息 + */ + public StRvB queryByRvId(String rvId) { + StRvB stRvB = stRvBAutoDao.getById(rvId); + if (stRvB == null){ + throw new IllegalArgumentException("河流ID: "+ rvId +"不存在"); + } + return stRvB; + } + + /** + * 分页查询河流的基础信息 + * @param pageNum 当前页 + * @param pageSize 每页显示条数 + * @return + */ + public Page pageStRv(int pageNum,int pageSize) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StRvB.COL_STATUS,1); + return stRvBAutoDao.page(new Page<>(pageNum,pageSize),queryWrapper); + } + + /** + * 根据河流名称模糊查询河流信息 + * @param rvName 河流名称 + * @param pageNum 当前页 + * @param pageSize 每页显示条数 + * @return + */ + public Page queryLikeRvName(String rvName,int pageNum,int pageSize) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(StRvB.COL_RV_NAME,rvName) + .eq(StRvB.COL_STATUS,1); + return stRvBAutoDao.page(new Page<>(pageNum,pageSize),queryWrapper); + } + + /** + * 新增大坝基础信息 + * @param stDamDto 大坝基础信息DTO + */ + public void insertStDam(StDamDto stDamDto) { + if (queryByDamCode(stDamDto.getDamCode()) != null){ + throw new IllegalArgumentException("大坝代码必须唯一"); + } + StDamB stDamB = new StDamB(); + BeanUtil.copyProperties(stDamDto,stDamB); + Long damId = IdWorker.getId(); + stDamB.setDamId(damId); + stDamB.setStatus(1); + stDamB.setTm(new Date()); + stDamBAutoDao.save(stDamB); + } + + /** + * 更新大坝基础信息 + * @param stDamB 大坝基础信息 + */ + public void updateStDam(StDamB stDamB) { + Long damId = stDamB.getDamId(); + StDamB byId = stDamBAutoDao.getById(damId); + if (byId == null){ + throw new IllegalArgumentException("大坝ID: " + damId + "不存在"); + } + stDamB.setTm(new Date()); + stDamBAutoDao.updateById(stDamB); + } + + /** + * 删除大坝基础信息 + * @param damId 大坝ID + */ + public void deleteStDam(String damId) { + StDamB byId = stDamBAutoDao.getById(damId); + if (byId == null){ + throw new IllegalArgumentException("大坝ID: " + damId + "不存在"); + } + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(StDamB.COL_DAM_ID,damId) + .set(StDamB.COL_STATUS,0); + stDamBAutoDao.update(updateWrapper); + } + + /** + * 根据大坝ID查询大坝信息 + * @param damId 大坝ID + * @return 大坝基础信息 + */ + public StDamB queryByDamId(String damId) { + StDamB stDamB = stDamBAutoDao.getById(damId); + if (stDamB == null){ + throw new IllegalArgumentException("大坝ID: " + damId+ "不存在"); + } + return stDamB; + } + + /** + * 根据大坝代码查询大坝信息 + * @param damCode 大坝代码 + * @return 大坝基础信息 + */ + public StDamB queryByDamCode(String damCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StDamB.COL_DAM_CODE,damCode) + .eq(StDamB.COL_STATUS,1); + return stDamBAutoDao.getOne(queryWrapper); + } + + /** + * 分页查询大坝基础信息 + * @param pageNum 当前页 + * @param pageSize 每页显示条数 + * @return + */ + public Page pageStDam(int pageNum, int pageSize) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StDamB.COL_STATUS,1); + return stDamBAutoDao.page(new Page<>(pageNum,pageSize),queryWrapper); + } + + /** + * 根据大坝名称模糊查询大坝基础信息 + * @param damName 大坝名称 + * @param pageNum 当前页 + * @param pageSize 每页显示条数 + * @return + */ + public Page queryLikeDamName(String damName, int pageNum, int pageSize) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(StDamB.COL_DAM_NAME,damName) + .eq(StDamB.COL_STATUS,1); + return stDamBAutoDao.page(new Page<>(pageNum,pageSize),queryWrapper); + } +} diff --git a/src/main/java/com/gunshi/project/xyt/service/WaterQualityService.java b/src/main/java/com/gunshi/project/xyt/service/WaterQualityService.java new file mode 100644 index 0000000..9934eb3 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/WaterQualityService.java @@ -0,0 +1,34 @@ +package com.gunshi.project.xyt.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.xyt.model.StWaterQualityR; +import com.gunshi.project.xyt.so.WaterQualityPageSo; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * Description: + * Created by xusan on 2024/1/23 + * + * @author xusan + * @version 1.0 + */ +public interface WaterQualityService { + + Page page(WaterQualityPageSo waterQualityPageSo); + + void export(WaterQualityPageSo waterQualityPageSo, HttpServletResponse response); + + String importExcel(MultipartFile file) throws IOException; + + String add(StWaterQualityR stWaterQualityR); + + String addList(List stWaterQualityRList); + + String update(StWaterQualityR StWaterQualityR); + + String delete(String id); +} diff --git a/src/main/java/com/gunshi/project/xyt/service/impl/WaterQualityServiceImpl.java b/src/main/java/com/gunshi/project/xyt/service/impl/WaterQualityServiceImpl.java new file mode 100644 index 0000000..466ab9d --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/service/impl/WaterQualityServiceImpl.java @@ -0,0 +1,173 @@ +package com.gunshi.project.xyt.service.impl; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.read.listener.PageReadListener; +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.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dao.BaseOrderDao; +import com.gunshi.project.xyt.mapper.WaterQualityMapper; +import com.gunshi.project.xyt.model.StWaterQualityR; +import com.gunshi.project.xyt.service.WaterQualityService; +import com.gunshi.project.xyt.so.WaterQualityPageSo; +import jakarta.servlet.http.HttpServletResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * Created by xusan on 2023/1/23. + * + * @author xusan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Service +@Data +@Transactional(rollbackFor = Exception.class) +@Slf4j +public class WaterQualityServiceImpl extends BaseOrderDao implements WaterQualityService { + + /** + * 水质列表分页查询 + * + * @param so 水质列表分页查询 + */ + @Override + public Page page(WaterQualityPageSo so) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + + if (so.getStm() != null) { + query.ge(StWaterQualityR::getSpt, so.getStm()); + } + if (so.getEtm() != null) { + query.le(StWaterQualityR::getSpt, so.getEtm()); + } + + return super.page(so.toPage(), query); + } + + /** + * 水质列表分页导出 + * + * @param so 水质列表分页 + */ + @Override + public void export(WaterQualityPageSo so , HttpServletResponse response) { + + // 获取基础数据 + Page page = page(so); + + // 生成文件名 + String fileName = "水质统计表 " + + DateFormatUtils.format(so.getStm(), DateFormatString.YYYY_MM_DD_HH_MM_SS) + + "至" + + DateFormatUtils.format(so.getEtm(), DateFormatString.YYYY_MM_DD_HH_MM_SS) + + ".xlsx"; + +// String tempPath = System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx"; +// String tempPath = System.getProperty("java.io.tmpdir") + fileName + ".xlsx"; +// File file = new File(tempPath); +// +// // 指定模板文件 +// ExcelWriter excelWriter = EasyExcel.write(file, StWaterQualityR.class).build(); +// +// WriteSheet writeSheet = EasyExcel.writerSheet(1, "水质").build(); +// // 分页去数据库查询数据 这里可以去数据库查询每一页的数据 +// List data = page.getRecords(); +// excelWriter.write(data, writeSheet); +// +// // 千万别忘记finish 会帮忙关闭流 +// excelWriter.finish(); + + + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + + // 这里URLEncoder.encode可以防止中文乱码 + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8)); + + // 数据输出 + try { + EasyExcel.write(response.getOutputStream(), StWaterQualityR.class).sheet("水质").doWrite(page.getRecords()); + } catch (IOException e) { + log.error("水质文件下载失败, " + e.getMessage(),e); + throw new RuntimeException(e); + } + + } + + @Override + public String importExcel(MultipartFile file) throws IOException { + + // 创建一个用于存储数据的List + List data = new ArrayList<>(); + + EasyExcel.read(file.getInputStream(), StWaterQualityR.class, new PageReadListener(data::addAll)).sheet().doRead(); + + for (StWaterQualityR o : data) { + o.setId(null); + } + + return this.addList(data); + } + + + /** + * 新增水质 + * + * @param o 水质 + */ + @Override + public String add(StWaterQualityR o) { + return this.save(o) ? "成功":"失败"; + } + + @Override + public String addList(List stWaterQualityRList) { + try { + for (StWaterQualityR o : stWaterQualityRList) { + this.add(o); + } + }catch (Exception e) { + return "失败"; + } + return "成功"; + +// return this.saveBatch(stWaterQualityRList) ? "成功":"失败"; + } + + /** + * 修改水质 + * + * @param o 水质 + */ + @Override + public String update(StWaterQualityR o) { + return this.updateById(o) ? "成功":"失败"; + } + + /** + * 删除水质 + * + * @param id id + */ + @Override + public String delete(String id) { + return this.removeById(id) ? "成功":"失败"; + } +} diff --git a/src/main/java/com/gunshi/project/xyt/so/WaterQualityPageSo.java b/src/main/java/com/gunshi/project/xyt/so/WaterQualityPageSo.java new file mode 100644 index 0000000..10d1a76 --- /dev/null +++ b/src/main/java/com/gunshi/project/xyt/so/WaterQualityPageSo.java @@ -0,0 +1,36 @@ +package com.gunshi.project.xyt.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/1/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class WaterQualityPageSo extends PageSo { + + @Schema(description = "查询开始时间", pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, + example = DateFormatString.YYYY_MM_DD_HH_MM_SS_EXAMPLE) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date stm; + + @Schema(description = "查询结束时间", pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, + example = DateFormatString.YYYY_MM_DD_HH_MM_SS_EXAMPLE) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date etm; + +} diff --git a/src/main/resources/mapper/WaterQualityMapper.xml b/src/main/resources/mapper/WaterQualityMapper.xml new file mode 100644 index 0000000..446a997 --- /dev/null +++ b/src/main/resources/mapper/WaterQualityMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/HYD_RI_WQAMD_W.sql b/src/main/resources/sql/HYD_RI_WQAMD_W.sql index 947c58f..d6e7896 100644 --- a/src/main/resources/sql/HYD_RI_WQAMD_W.sql +++ b/src/main/resources/sql/HYD_RI_WQAMD_W.sql @@ -1,40 +1,76 @@ -CREATE TABLE [xyt].[HYD_RI_WQAMD_W] -( -[STCD] CHAR(14) NOT NULL, -[SPT] DATETIME2(6) NOT NULL, -[WIMP] DECIMAL(4,2), -[PH] DECIMAL(4,2), -[COND] DECIMAL(6,0), -[TURB] DECIMAL(3,0), -[DOX] DECIMAL(4,2), -[CODMN] DECIMAL(6,1), -[CODCR] DECIMAL(7,1), -[TN] DECIMAL(6,3), -[NH3N] DECIMAL(6,3), -[NO2] DECIMAL(5,3), -[NO3] DECIMAL(5,3), -[TP] DECIMAL(8,3), -[TOC] DECIMAL(4,1), -[VLPH] DECIMAL(10,6), -[CHLA] DECIMAL(6,4), -[F] DECIMAL(5,2), -[ARS] DECIMAL(8,6), -[HG] DECIMAL(9,7), -[CR6] DECIMAL(5,3), -[CU] DECIMAL(7,5), -[PB] DECIMAL(7,5), -[CD] DECIMAL(7,5), -[ZN] DECIMAL(6,4), -[SB] DECIMAL(7,5), -[HUMIDITY] DECIMAL(4,2), -[ROOMTMP] DECIMAL(4,2), -[ID] INT IDENTITY(1, 1) NOT NULL, -CONSTRAINT [PK_HYD_RI_WQAMD_W] PRIMARY KEY CLUSTERED ([ID]), -CONSTRAINT [UQ_HYD_RI_WQAMD_W_ID] UNIQUE ([ID]), -CONSTRAINT [UQ_HYD_RI_WQAMD_W_STCD_SPT] UNIQUE ([STCD], [SPT]) -) ON [MAIN] WITH (DATA_COMPRESSION = CLUSTERED COLUMNSTORE); +# CREATE TABLE [xyt].[HYD_RI_WQAMD_W] +# ( +# [STCD] CHAR(14) NOT NULL, +# [SPT] DATETIME2(6) NOT NULL, +# [WIMP] DECIMAL(4,2), +# [PH] DECIMAL(4,2), +# [COND] DECIMAL(6,0), +# [TURB] DECIMAL(3,0), +# [DOX] DECIMAL(4,2), +# [CODMN] DECIMAL(6,1), +# [CODCR] DECIMAL(7,1), +# [TN] DECIMAL(6,3), +# [NH3N] DECIMAL(6,3), +# [NO2] DECIMAL(5,3), +# [NO3] DECIMAL(5,3), +# [TP] DECIMAL(8,3), +# [TOC] DECIMAL(4,1), +# [VLPH] DECIMAL(10,6), +# [CHLA] DECIMAL(6,4), +# [F] DECIMAL(5,2), +# [ARS] DECIMAL(8,6), +# [HG] DECIMAL(9,7), +# [CR6] DECIMAL(5,3), +# [CU] DECIMAL(7,5), +# [PB] DECIMAL(7,5), +# [CD] DECIMAL(7,5), +# [ZN] DECIMAL(6,4), +# [SB] DECIMAL(7,5), +# [HUMIDITY] DECIMAL(4,2), +# [ROOMTMP] DECIMAL(4,2), +# [ID] INT IDENTITY(1, 1) NOT NULL, +# CONSTRAINT [PK_HYD_RI_WQAMD_W] PRIMARY KEY CLUSTERED ([ID]), +# CONSTRAINT [UQ_HYD_RI_WQAMD_W_ID] UNIQUE ([ID]), +# CONSTRAINT [UQ_HYD_RI_WQAMD_W_STCD_SPT] UNIQUE ([STCD], [SPT]) +# ) ON [MAIN] WITH (DATA_COMPRESSION = CLUSTERED COLUMNSTORE); -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'水质自动监测数据' , @level0type=N'SCHEMA',@level0name=N'xyt', @level1type=N'TABLE',@level1name=N'HYD_RI_WQAMD_W'; +CREATE TABLE [HYD_RI_WQAMD_W] +( + [STCD] VARCHAR(14) NOT NULL, + [SPT] DATETIME2(6) NOT NULL, + [WIMP] DECIMAL(4,2), + [PH] DECIMAL(4,2), + [COND] DECIMAL(6,0), + [TURB] DECIMAL(3,0), + [DOX] DECIMAL(4,2), + [CODMN] DECIMAL(6,1), + [CODCR] DECIMAL(7,1), + [TN] DECIMAL(6,3), + [NH3N] DECIMAL(6,3), + [NO2] DECIMAL(5,3), + [NO3] DECIMAL(5,3), + [TP] DECIMAL(8,3), + [TOC] DECIMAL(4,1), + [VLPH] DECIMAL(10,6), + [CHLA] DECIMAL(6,4), + [F] DECIMAL(5,2), + [ARS] DECIMAL(8,6), + [HG] DECIMAL(9,7), + [CR6] DECIMAL(5,3), + [CU] DECIMAL(7,5), + [PB] DECIMAL(7,5), + [CD] DECIMAL(7,5), + [ZN] DECIMAL(6,4), + [SB] DECIMAL(7,5), + [HUMIDITY] DECIMAL(4,2), + [ROOMTMP] DECIMAL(4,2), + [ID] INT IDENTITY(1, 1) NOT NULL, + CONSTRAINT [PK_HYD_RI_WQAMD_W] PRIMARY KEY CLUSTERED ([ID]), + CONSTRAINT [UQ_HYD_RI_WQAMD_W_ID] UNIQUE ([ID]), + CONSTRAINT [UQ_HYD_RI_WQAMD_W_STCD_SPT] UNIQUE ([STCD], [SPT]) + ) + + EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'水质自动监测数据' , @level0type=N'SCHEMA',@level0name=N'xyt', @level1type=N'TABLE',@level1name=N'HYD_RI_WQAMD_W'; EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'砷' , @level0type=N'SCHEMA',@level0name=N'xyt', @level1type=N'TABLE',@level1name=N'HYD_RI_WQAMD_W', @level2type=N'COLUMN',@level2name=N'ARS'; @@ -93,3 +129,6 @@ EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'水温' , @lev EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'锌' , @level0type=N'SCHEMA',@level0name=N'xyt', @level1type=N'TABLE',@level1name=N'HYD_RI_WQAMD_W', @level2type=N'COLUMN',@level2name=N'ZN'; CREATE INDEX [IX_HYD_RI_WQAMD_W_STCD_SPT] ON [xyt].[HYD_RI_WQAMD_W] ([STCD] ASC, [SPT] ASC) ON [MAIN] WITH (DATA_COMPRESSION = CLUSTERED COLUMNSTORE); + + +SET IDENTITY_INSERT ST_WATER_QUALITY_R ON; \ No newline at end of file