предупреждение по прознозу

This commit is contained in:
Igor I
2025-02-04 18:52:22 +05:00
parent cd93ec684a
commit 8e2f2042e9
3 changed files with 100 additions and 2 deletions

View File

@ -31,7 +31,6 @@ import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
@Controller
//@SessionAttributes( { "user" }) //Сесионный объект
public class SendMail implements ServletContextAware {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SendMail.class);

View File

@ -0,0 +1,99 @@
package org.ccalm.main;
import jakarta.servlet.ServletContext;
import org.json.JSONObject;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import tools.DBTools;
import tools.User;
import java.sql.Types;
import java.time.LocalDate;
import java.util.*;
@Controller
public class SendWarning {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SendWarning.class);
private final RestTemplate restTemplate = new RestTemplate();
private final NamedParameterJdbcTemplate jdbcTemplate;
private ServletContext context;
@Autowired
public SendWarning(NamedParameterJdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public JSONObject getSoilTemperature(double lat,double lon){
JSONObject result=null;
// Формируем JSON-запрос
Map<String, Object> request = new HashMap<>();
request.put("date", null); //NULL to select the latest date available in the database
request.put("hours", 0);
request.put("lon", lon);
request.put("lat", lat);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(request, headers);
String url = "https://geoserver2.ccalm.org/geodatalist/getAirTemperature";
try {
ResponseEntity<Map> response = restTemplate.exchange(url, HttpMethod.POST, entity, Map.class);
if (response.getStatusCode() == HttpStatus.OK && response.getBody() != null) {
Object date = response.getBody().get("date");
Object value = response.getBody().get("value");
if (value != null && date != null) {
result = new JSONObject();
result.put("date", date);
result.put("value", value);
}
}
} catch (Exception e) {
String uuid = UUID.randomUUID().toString();
logger.error(uuid,e);
}
return result;
}
@RequestMapping(value = "/api/main/v01/SendWarning",method = RequestMethod.GET,produces = "text/html;charset=UTF-8")
@ResponseBody
public ResponseEntity<Object> send(@ModelAttribute User user, @RequestParam(required=false,name="lng") String language_id) {
Map<String, Object> result = new HashMap<>();
String sql = """
select
t.lat,
t.lon,
t.temperature
from
main.frmcheckpoints t
where
t.del=false
and t.warn=true
""";
MapSqlParameterSource parameters = new MapSqlParameterSource();
//parameters.addValue("language_id", language_id, Types.INTEGER);
List<String> ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper());
for (String jsonString : ret) {
JSONObject obj = new JSONObject(jsonString);
JSONObject tmp = getSoilTemperature(obj.getDouble("lat"),obj.getDouble("lon"));
if(tmp!=null) {
double temperature = obj.getDouble("temperature");
if (temperature < tmp.getDouble("val")) {
System.out.println(tmp.getDouble("val"));
}
}
}
return new ResponseEntity<>(result, HttpStatus.OK);
}
}