package com.dy.pipIrrModel.vapor; import com.dy.common.aop.SsoAop; import com.dy.common.util.DateTime; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrModel.modelCalculate.Hargreaves; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; /** * @Author: liurunyu * @Date: 2025/8/22 10:20 * @Description 不要删除!!! 为前端蒸腾量计算提供的服务 */ @Slf4j @Tag(name = "作物日蒸腾量计算测试", description = "作物日蒸腾量计算测试") @RestController @RequestMapping(path = "mdTest") public class TestCtrl { private TestSv sv; @Autowired private void setSv(TestSv sv) { this.sv = sv; } /** * 得到初始化数据 */ @GetMapping(path = "initData") @SsoAop() public BaseResponse initData(){ try { TestInitVo vo = new TestInitVo(); String yesterday_ymd = DateTime.lastXDay_yyyy_MM_dd(1) ; Long days = DateTime.daysBetweenyyyy_MM_dd(yesterday_ymd, DateTime.yyyy() + "-01-01"); vo.dateIndex = days.intValue() + 1 ; vo.ymd = yesterday_ymd ; Object[] objs = this.sv.getOneWeatherNameAndLat() ; if(objs != null){ vo.weatherName = objs[0].toString() ; vo.lat = Double.parseDouble(objs[1].toString()) ; }else{ vo.weatherName = "" ; vo.lat = 0.0 ; } return BaseResponseUtils.buildSuccess(vo); } catch (Exception e) { log.error("查询所有作物的昨日蒸腾量异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 计算日序 */ @GetMapping(path = "dateIndex") @SsoAop() public BaseResponse dateIndex(String y_m_d){ try { Long days = DateTime.daysBetweenyyyy_MM_dd(y_m_d, y_m_d.substring(0, 4) + "-01-01"); Integer dateIndex = days.intValue() + 1 ; return BaseResponseUtils.buildSuccess(dateIndex); } catch (Exception e) { log.error("计算日序异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } @PostMapping(path = "calculate", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop() public BaseResponse calculate(@RequestBody TestQo qo){ try { Double fai = Hargreaves.rad(qo.lat); Double sunMagnetismAngular = Hargreaves.sunMagnetismAngular(qo.dateIndex); Double sunEarthDistance = Hargreaves.sunEarthDistance(qo.dateIndex); Double sunTimeAngular = Hargreaves.sunTimeAngular(fai, sunMagnetismAngular); Double zenithRadiation = Hargreaves.zenithRadiation(sunEarthDistance, sunTimeAngular, fai, sunMagnetismAngular); Double et0 = Hargreaves.ET0(qo.kc, qo.maxTmp, qo.minTmp, zenithRadiation); return BaseResponseUtils.buildSuccess(et0); } catch (Exception e) { log.error("查询所有作物的昨日蒸腾量异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } public static void main(String[] args) { String ymd = "2025-08-22" ; String year = ymd.substring(0, 4) ; System.out.println(year); } }