|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Author: liurunyu | 
|---|
|  |  |  | * @Date: 2025/8/19 8:35 | 
|---|
|  |  |  | * @Description 作物蒸腾量 | 
|---|
|  |  |  | * @Description 作物蒸散量 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @TableName(value="md_et0", autoResultMap = true) | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | 
|---|
|  |  |  | @ToString | 
|---|
|  |  |  | @NoArgsConstructor | 
|---|
|  |  |  | @AllArgsConstructor | 
|---|
|  |  |  | @Schema(name = "作物蒸腾量") | 
|---|
|  |  |  | @Schema(name = "作物蒸散量") | 
|---|
|  |  |  | public class MdEt0 implements BaseEntity { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static final long serialVersionUID = 202508190840001L; | 
|---|
|  |  |  | 
|---|
|  |  |  | public Date dt; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 蒸腾量 | 
|---|
|  |  |  | * 蒸散量 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Schema(description = "本日作物蒸腾量", requiredMode = Schema.RequiredMode.NOT_REQUIRED) | 
|---|
|  |  |  | @Schema(description = "本日作物蒸散量", requiredMode = Schema.RequiredMode.NOT_REQUIRED) | 
|---|
|  |  |  | @JsonFormat(shape = JsonFormat.Shape.NUMBER, pattern = "0.00") | 
|---|
|  |  |  | public Double et0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | public Date dt; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 蒸腾量 | 
|---|
|  |  |  | * 蒸散量 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Schema(description = "本日作物蒸腾量", requiredMode = Schema.RequiredMode.NOT_REQUIRED) | 
|---|
|  |  |  | @Schema(description = "本日作物蒸散量", requiredMode = Schema.RequiredMode.NOT_REQUIRED) | 
|---|
|  |  |  | @JsonFormat(shape = JsonFormat.Shape.NUMBER, pattern = "0.00") | 
|---|
|  |  |  | public Double et0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | this.executeOnCrop(crop, voWeather); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("计算作物(id=" + crop.id + ")蒸腾数据时异常", e); | 
|---|
|  |  |  | log.error("计算作物(id=" + crop.id + ")蒸散数据时异常", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if(tmps != null && tmps.size() > 0){ | 
|---|
|  |  |  | VoWeatherMaxMinTmp voMmTmp = tmps.get(0);//只能有一条记录 | 
|---|
|  |  |  | if(voMmTmp != null && voMmTmp.maxAirTemperature != null && voMmTmp.minAirTemperature != null){ | 
|---|
|  |  |  | Double et0 = this.calculateEt0(yesterday_ymd, vo, voWeather, voMmTmp, factor) ;//计算蒸腾数据 | 
|---|
|  |  |  | Double et0 = this.calculateEt0(yesterday_ymd, vo, voWeather, voMmTmp, factor) ;//计算蒸散数据 | 
|---|
|  |  |  | this.saveEt0(yesterday_ymd, vo, voWeather, voMmTmp, factor, et0) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | * @Author: liurunyu | 
|---|
|  |  |  | * @Date: 2025/8/6 9:32 | 
|---|
|  |  |  | * @Description | 
|---|
|  |  |  | * 作物蒸腾自动计算 | 
|---|
|  |  |  | * 作物蒸散自动计算 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Author: liurunyu | 
|---|
|  |  |  | * @Date: 2025/8/22 10:20 | 
|---|
|  |  |  | * @Description 不要删除!!! 为前端蒸腾量计算提供的服务 | 
|---|
|  |  |  | * @Description 不要删除!!! 为前端蒸散量计算提供的服务 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Tag(name = "作物日蒸腾量计算测试", description = "作物日蒸腾量计算测试") | 
|---|
|  |  |  | @Tag(name = "作物日蒸散量计算测试", description = "作物日蒸散量计算测试") | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping(path = "mdTest") | 
|---|
|  |  |  | public class TestCtrl { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return BaseResponseUtils.buildSuccess(vo); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸腾量异常", e); | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸散量异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | Double et0 = Hargreaves.ET0(qo.kc, qo.maxTmp, qo.minTmp, zenithRadiation); | 
|---|
|  |  |  | return BaseResponseUtils.buildSuccess(et0); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸腾量异常", e); | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸散量异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | * @Description | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Tag(name = "作物日蒸腾量", description = "作物日蒸腾量查询等操作") | 
|---|
|  |  |  | @Tag(name = "作物日蒸散量", description = "作物日蒸散量查询等操作") | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping(path = "mdVapor") | 
|---|
|  |  |  | public class VaporCtrl { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 客户端请求得到所有作物的昨日蒸腾量 | 
|---|
|  |  |  | * @return 所有所有作物的昨日蒸腾量 | 
|---|
|  |  |  | * 客户端请求得到所有作物的昨日蒸散量 | 
|---|
|  |  |  | * @return 所有所有作物的昨日蒸散量 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Operation(summary = "获得作物的昨日蒸腾量", description = "返回所有作物的昨日蒸腾量数据") | 
|---|
|  |  |  | @Operation(summary = "获得作物的昨日蒸散量", description = "返回所有作物的昨日蒸散量数据") | 
|---|
|  |  |  | @ApiResponses(value = { | 
|---|
|  |  |  | @ApiResponse( | 
|---|
|  |  |  | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, | 
|---|
|  |  |  | description = "返回作物的昨日蒸腾量数据(BaseResponse.content:QueryResultVo[{}])", | 
|---|
|  |  |  | description = "返回作物的昨日蒸散量数据(BaseResponse.content:QueryResultVo[{}])", | 
|---|
|  |  |  | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, | 
|---|
|  |  |  | schema = @Schema(implementation = MdEt0.class))} | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | 
|---|
|  |  |  | List<MdEt0> res = this.sv.selectEt0(ymd) ; | 
|---|
|  |  |  | return BaseResponseUtils.buildSuccess(res); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸腾量异常", e); | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸散量异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据指定条件作物查询一段时间内的蒸腾量 | 
|---|
|  |  |  | * 根据指定条件作物查询一段时间内的蒸散量 | 
|---|
|  |  |  | * @param qo | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | @NoArgsConstructor | 
|---|
|  |  |  | @AllArgsConstructor | 
|---|
|  |  |  | @Builder | 
|---|
|  |  |  | @Schema(name = "作物日蒸腾查询条件") | 
|---|
|  |  |  | @Schema(name = "作物日蒸散查询条件") | 
|---|
|  |  |  | public class VaporQo extends QueryConditionVo { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 作物ID | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 得到一个作物一周内的蒸腾量 | 
|---|
|  |  |  | * 得到一个作物一周内的蒸散量 | 
|---|
|  |  |  | * @return 数据集合 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Operation(summary = "一个作物一周内的蒸腾量", description = "一个作物一周内的蒸腾量") | 
|---|
|  |  |  | @Operation(summary = "一个作物一周内的蒸散量", description = "一个作物一周内的蒸散量") | 
|---|
|  |  |  | @ApiResponses(value = { | 
|---|
|  |  |  | @ApiResponse( | 
|---|
|  |  |  | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, | 
|---|
|  |  |  | description = "一个作物一周内的蒸腾量(BaseResponse.content:[VoTopXIntake{}])", | 
|---|
|  |  |  | description = "一个作物一周内的蒸散量(BaseResponse.content:[VoTopXIntake{}])", | 
|---|
|  |  |  | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, | 
|---|
|  |  |  | schema = @Schema(implementation = VoEt0Simple.class))} | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | 
|---|
|  |  |  | * @Description | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Tag(name = "作物日蒸腾量", description = "作物日蒸腾量查询等操作") | 
|---|
|  |  |  | @Tag(name = "作物日蒸散量", description = "作物日蒸散量查询等操作") | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping(path = "mdVapor") | 
|---|
|  |  |  | public class VaporCtrl { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 客户端请求得到所有作物的昨日蒸腾量 | 
|---|
|  |  |  | * @return 所有所有作物的昨日蒸腾量 | 
|---|
|  |  |  | * 客户端请求得到所有作物的昨日蒸散量 | 
|---|
|  |  |  | * @return 所有所有作物的昨日蒸散量 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @GetMapping(path = "allCropsWithYesterday") | 
|---|
|  |  |  | public BaseResponse<List<MdEt0>> allYesterday(){ | 
|---|
|  |  |  | 
|---|
|  |  |  | List<MdEt0> res = this.sv.selectEt0(ymd) ; | 
|---|
|  |  |  | return BaseResponseUtils.buildSuccess(res); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸腾量异常", e); | 
|---|
|  |  |  | log.error("查询所有作物的昨日蒸散量异常", e); | 
|---|
|  |  |  | return BaseResponseUtils.buildException(e.getMessage()) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据指定条件作物查询一段时间内的蒸腾量 | 
|---|
|  |  |  | * 根据指定条件作物查询一段时间内的蒸散量 | 
|---|
|  |  |  | * @param qo | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|