diff --git a/org_ccalm_main.yml b/org_ccalm_main.yml index f741d62..2a81179 100644 --- a/org_ccalm_main.yml +++ b/org_ccalm_main.yml @@ -10,7 +10,7 @@ spring: application: name: org.ccalm.main datasource: - url: jdbc:postgresql://91.201.214.156:5432/CCALM + url: jdbc:postgresql://ccalm.org:5432/CCALM username: postgres password: PasSecrKey1 driver-class-name: org.postgresql.Driver diff --git a/src/main/java/org/ccalm/main/SendMail.java b/src/main/java/org/ccalm/main/SendMail.java index f10a14b..df5e220 100644 --- a/src/main/java/org/ccalm/main/SendMail.java +++ b/src/main/java/org/ccalm/main/SendMail.java @@ -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); diff --git a/src/main/java/org/ccalm/main/SendWarning.java b/src/main/java/org/ccalm/main/SendWarning.java new file mode 100644 index 0000000..f38234a --- /dev/null +++ b/src/main/java/org/ccalm/main/SendWarning.java @@ -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 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> entity = new HttpEntity<>(request, headers); + String url = "https://geoserver2.ccalm.org/geodatalist/getAirTemperature"; + try { + ResponseEntity 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 send(@ModelAttribute User user, @RequestParam(required=false,name="lng") String language_id) { + Map 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 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); + } + +}