This commit is contained in:
2025-03-18 07:33:39 +05:00
parent 43185b31ea
commit 721b4cac26
3 changed files with 35 additions and 28 deletions

View File

@ -546,8 +546,8 @@ public class AcceptJSON implements ServletContextAware {
locust.district = jsonObj.getString("townName"); locust.district = jsonObj.getString("townName");
if (!jsonObj.isNull("point")) { if (!jsonObj.isNull("point")) {
locust.lon = jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(0); locust.lon_center = String.valueOf(jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(0));
locust.lat = jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(1); locust.lat_center = String.valueOf(jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(1));
} }
//Контур зоны распространения ВО Polygon (geoJSON) //Контур зоны распространения ВО Polygon (geoJSON)
@ -720,7 +720,7 @@ public class AcceptJSON implements ServletContextAware {
for (Object o2 : jsonArraySub) { for (Object o2 : jsonArraySub) {
JSONObject jsonObjSub = (JSONObject) o2; JSONObject jsonObjSub = (JSONObject) o2;
locust.eid = jsonObjSub.getInt("id"); locust.eid = String.valueOf(jsonObjSub.getInt("id"));
locust.phytoType = jsonObjSub.getString("phytoType"); //"Вредители" или "Обработка" locust.phytoType = jsonObjSub.getString("phytoType"); //"Вредители" или "Обработка"
if (locust.phytoType.equals("Обработка")) { if (locust.phytoType.equals("Обработка")) {
locust.insecticide_name = jsonObjSub.getString("nameSubject"); //Наименование действующего вещества locust.insecticide_name = jsonObjSub.getString("nameSubject"); //Наименование действующего вещества
@ -852,9 +852,9 @@ public class AcceptJSON implements ServletContextAware {
} }
try { try {
stmt.setLong(1, locust.eid); if (locust.eid == null) stmt.setNull(1, Types.INTEGER); else stmt.setLong(1, Long.parseLong(locust.eid));
stmt.setDouble(2, locust.lat); if (locust.lat_center == null) stmt.setNull(2, Types.DOUBLE); else stmt.setDouble(2, Double.parseDouble(locust.lat_center));
stmt.setDouble(3, locust.lon); if (locust.lon_center == null) stmt.setNull(3, Types.DOUBLE); else stmt.setDouble(3, Double.parseDouble(locust.lon_center));
stmt.setInt(4, 7); //country_id stmt.setInt(4, 7); //country_id
stmt.setInt(5, Integer.parseInt(locust.region_id)); //region_id stmt.setInt(5, Integer.parseInt(locust.region_id)); //region_id
stmt.setString(6, locust.district); //Пишу в поле "area" stmt.setString(6, locust.district); //Пишу в поле "area"
@ -1017,7 +1017,7 @@ public class AcceptJSON implements ServletContextAware {
} }
//Если те виды что нам нужны //Если те виды что нам нужны
if (regionName == null || regionName.isEmpty() || locust.lat == 0 || locust.lon == 0 || locust.locust.equals("Совка ипсилон") || locust.locust.equals("Восточный майский хрущ") || locust.locust.equals("Кукурузный стеблевой мотылек") || locust.locust.equals("Картофельная, или болотная совка, лиловатая яровая совка") || locust.locust.equals("Луговой мотылёк") || locust.locust.equals("Хлопковая совка") || locust.locust.equals("Стеблевой кукурузный мотылек") || locust.locust.equals("Восточная луговая совка") || locust.locust.equals("Коричневая щитовка") || locust.locust.equals("Продолговатая (чайная) подушечница") || locust.locust.equals("Яблоневая запятовидная щитовка") || locust.locust.equals("Виноградная филлоксера") || locust.locust.equals("Бахчевая коровка")) { if (regionName == null || regionName.isEmpty() || Double.parseDouble(locust.lat_center) == 0 || Double.parseDouble(locust.lon_center) == 0 || locust.locust.equals("Совка ипсилон") || locust.locust.equals("Восточный майский хрущ") || locust.locust.equals("Кукурузный стеблевой мотылек") || locust.locust.equals("Картофельная, или болотная совка, лиловатая яровая совка") || locust.locust.equals("Луговой мотылёк") || locust.locust.equals("Хлопковая совка") || locust.locust.equals("Стеблевой кукурузный мотылек") || locust.locust.equals("Восточная луговая совка") || locust.locust.equals("Коричневая щитовка") || locust.locust.equals("Продолговатая (чайная) подушечница") || locust.locust.equals("Яблоневая запятовидная щитовка") || locust.locust.equals("Виноградная филлоксера") || locust.locust.equals("Бахчевая коровка")) {
} else { } else {
@ -1076,7 +1076,7 @@ public class AcceptJSON implements ServletContextAware {
if (locust.region_id == null || locust.region_id.isEmpty() || locust.district_id == null || locust.district_id.isEmpty() || locust.locust_type_id == null || locust.locust_type_id.isEmpty()) { if (locust.region_id == null || locust.region_id.isEmpty() || locust.district_id == null || locust.district_id.isEmpty() || locust.locust_type_id == null || locust.locust_type_id.isEmpty()) {
row = "<tr style=\"background-color:red;\">"; row = "<tr style=\"background-color:red;\">";
} }
row += "<td>" + String.valueOf(cntO+cntV) + "</td><td>" + locust.eid + "</td><td>" + locust.lat + "</td><td>" + locust.lon + "</td><td>" + regionName + " = " + locust.region_id + "</td><td>" + locust.district + " = " + locust.district_id + "</td><td>" + locust.terrain + "</td><td>" + locust.village + "</td><td>" + locust.locust + " = " + locust.locust_type_id + "</td><td>" + locust.phase + " = " + locust.locust_have + "</td><td>" + locust.evp + "</td><td>" + locust.size + " = " + locust.drawPolygon + "</td><td>" + locust.date + "</td>"; row += "<td>" + String.valueOf(cntO+cntV) + "</td><td>" + locust.eid + "</td><td>" + locust.lat_center + "</td><td>" + locust.lon_center + "</td><td>" + regionName + " = " + locust.region_id + "</td><td>" + locust.district + " = " + locust.district_id + "</td><td>" + locust.terrain + "</td><td>" + locust.village + "</td><td>" + locust.locust + " = " + locust.locust_type_id + "</td><td>" + locust.phase + " = " + locust.locust_have + "</td><td>" + locust.evp + "</td><td>" + locust.size + " = " + locust.drawPolygon + "</td><td>" + locust.date + "</td>";
row += "</tr>\n"; row += "</tr>\n";
//Если записи не существует то вставляем если существует то обновляем //Если записи не существует то вставляем если существует то обновляем
@ -1183,9 +1183,9 @@ public class AcceptJSON implements ServletContextAware {
} }
try { try {
stmt.setLong(1, locust.eid); stmt.setLong(1, Long.parseLong(locust.eid));
stmt.setDouble(2, locust.lat); stmt.setDouble(2, Double.parseDouble(locust.lat_center));
stmt.setDouble(3, locust.lon); stmt.setDouble(3, Double.parseDouble(locust.lon_center));
stmt.setInt(4, 7); stmt.setInt(4, 7);
stmt.setInt(5, Integer.parseInt(locust.region_id)); stmt.setInt(5, Integer.parseInt(locust.region_id));
stmt.setString(6, locust.district); //Пишу в поле "area" stmt.setString(6, locust.district); //Пишу в поле "area"
@ -2377,9 +2377,9 @@ public class AcceptJSON implements ServletContextAware {
FrmLocustModel result = new FrmLocustModel(); FrmLocustModel result = new FrmLocustModel();
result.company_uid = "dc271f2e-1a4b-4987-96ec-7afd91350684"; //Компания: "Узбекистан саранча" result.company_uid = "dc271f2e-1a4b-4987-96ec-7afd91350684"; //Компания: "Узбекистан саранча"
result.eid = obj.getInt("id"); result.eid = String.valueOf(obj.getInt("id"));
result.seq = obj.getLong("seq")*1000; result.seq = obj.getLong("seq")*1000;
result.country_id = 10; //Uzbekistan result.country_id = "10"; //Uzbekistan
result.country_uid = "05592f5a-1c8b-4d87-a47f-67697cc12c49"; //Uzbekistan result.country_uid = "05592f5a-1c8b-4d87-a47f-67697cc12c49"; //Uzbekistan
if(!obj.isNull("region_name")) { if(!obj.isNull("region_name")) {
@ -2450,8 +2450,8 @@ public class AcceptJSON implements ServletContextAware {
result.bio_hectare = obj.getString("surveyed_area"); result.bio_hectare = obj.getString("surveyed_area");
if (!obj.isNull("point")) { if (!obj.isNull("point")) {
result.lon = obj.getJSONObject("point").getJSONArray("coordinates").getDouble(0); result.lon_center = String.valueOf(obj.getJSONObject("point").getJSONArray("coordinates").getDouble(0));
result.lat = obj.getJSONObject("point").getJSONArray("coordinates").getDouble(1); result.lat_center = String.valueOf(obj.getJSONObject("point").getJSONArray("coordinates").getDouble(1));
} }
//Биотоп //Биотоп

View File

@ -2,6 +2,8 @@ package org.ccalm.main;
import org.ccalm.main.models.FrmLocustModel; import org.ccalm.main.models.FrmLocustModel;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import tools.DBTools; import tools.DBTools;
@ -15,6 +17,8 @@ import java.util.List;
public class UpdateLocust { public class UpdateLocust {
private static final Logger logger = LoggerFactory.getLogger(UpdateLocust.class);
private final NamedParameterJdbcTemplate jdbcTemplate; private final NamedParameterJdbcTemplate jdbcTemplate;
UpdateLocust(NamedParameterJdbcTemplate jdbcTemplate){ UpdateLocust(NamedParameterJdbcTemplate jdbcTemplate){
@ -25,13 +29,14 @@ public class UpdateLocust {
String sql; String sql;
boolean exists=false; //Is there a record. boolean exists=false; //Is there a record.
MapSqlParameterSource parameters;
//Если данные пришли из внешнего источника то проверяем по ID компании и eid //Если данные пришли из внешнего источника то проверяем по ID компании и eid
if(locust.eid!=null && locust.uid==null) { if(locust.eid!=null && locust.uid==null) {
sql = """ sql = """
select uid from main.frmlocust where eid=:eid and company_uid=CAST(:company_uid AS uuid) select uid from main.frmlocust where eid=:eid and company_uid=CAST(:company_uid AS uuid)
"""; """;
MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters = new MapSqlParameterSource();
parameters.addValue("eid", locust.eid, Types.BIGINT); parameters.addValue("eid", locust.eid, Types.BIGINT);
parameters.addValue("company_uid", locust.company_uid, Types.VARCHAR); parameters.addValue("company_uid", locust.company_uid, Types.VARCHAR);
List<String> ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); List<String> ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper());
@ -47,7 +52,7 @@ public class UpdateLocust {
sql= """ sql= """
select uid from main.frmlocust where uid=CAST(:uid AS uuid); select uid from main.frmlocust where uid=CAST(:uid AS uuid);
"""; """;
MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters = new MapSqlParameterSource();
parameters.addValue("uid", locust.uid, Types.VARCHAR); parameters.addValue("uid", locust.uid, Types.VARCHAR);
List<String> ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); List<String> ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper());
for (String s : ret) { for (String s : ret) {
@ -264,7 +269,7 @@ public class UpdateLocust {
) )
"""; """;
} }
MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters = new MapSqlParameterSource();
parameters.addValue("uid", locust.uid, Types.VARCHAR); parameters.addValue("uid", locust.uid, Types.VARCHAR);
if(locust.user_id == null) { parameters.addValue("user_id", null, Types.BIGINT); } else { parameters.addValue("user_id", Long.parseLong(locust.user_id), Types.BIGINT); } if(locust.user_id == null) { parameters.addValue("user_id", null, Types.BIGINT); } else { parameters.addValue("user_id", Long.parseLong(locust.user_id), Types.BIGINT); }
@ -292,21 +297,21 @@ public class UpdateLocust {
parameters.addValue("date", null, Types.DATE); parameters.addValue("date", null, Types.DATE);
}else }else
{ {
if(date.indexOf("-")==-1) //If old date format in UNIX time if(locust.date.indexOf("-")==-1) //If old date format in UNIX time
{ {
int uDate=Integer.parseInt(date)+1; int uDate=Integer.parseInt(locust.date)+1;
java.sql.Timestamp tm=new java.sql.Timestamp((long)uDate*1000); java.sql.Timestamp tm=new java.sql.Timestamp((long)uDate*1000);
stmt.setTimestamp(14, tm); parameters.addValue("date", locust.date, Types.DATE);
}else }else
{ {
java.sql.Timestamp tm=null; java.sql.Timestamp tm=null;
DateFormat dfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2016-05-29 18:00:01 in "GMT" DateFormat dfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2016-05-29 18:00:01 in "GMT"
try{ try{
tm = new java.sql.Timestamp(dfm.parse(date).getTime()); tm = new java.sql.Timestamp(dfm.parse(locust.date).getTime());
} catch (Exception ex) { } catch (Exception ex) {
logger.error("Error",ex.getMessage()); logger.error("Error",ex.getMessage());
} }
stmt.setTimestamp(14, tm); parameters.addValue("date", locust.date, Types.DATE);
} }
} }

View File

@ -10,9 +10,11 @@ public class FrmLocustModel {
public String uid; public String uid;
public String eid; //Внешний идентификатор public String eid; //Внешний идентификатор
public long seq; public long seq;
public long country_id; public String country_id;
public String country_uid; public String country_uid;
public String user_id;
public String phytoType; //Вредители либо обработка public String phytoType; //Вредители либо обработка
public String observer; public String observer;
@ -28,8 +30,9 @@ public class FrmLocustModel {
public String region_id; //Область public String region_id; //Область
public String region_uid; //Область public String region_uid; //Область
public String area; //Rayon
public String district; //Район public String district; //Район
public String district_id; public String district_id; //
public String terrain=""; //Название месности public String terrain=""; //Название месности
@ -53,6 +56,7 @@ public class FrmLocustModel {
public String drawPolygon="null"; //Область обследования GeoGSON public String drawPolygon="null"; //Область обследования GeoGSON
public String size; //Заселённая площадь (polygonArea Площадь контура зоны распространения, в случае если специалист указал его) public String size; //Заселённая площадь (polygonArea Площадь контура зоны распространения, в случае если специалист указал его)
public String date; //Дата public String date; //Дата
public String timezone;
public String description=""; public String description="";
@ -66,7 +70,7 @@ public class FrmLocustModel {
public String larva_behavior = null; //Behaviour character varying(50) COLLATE pg_catalog."default" DEFAULT NULL::character varying, public String larva_behavior = null; //Behaviour character varying(50) COLLATE pg_catalog."default" DEFAULT NULL::character varying,
public String larva_behavior_id = null; // integer, public String larva_behavior_id = null; // integer,
public String larva_behavior_uid = null; // integer, public String larva_behavior_uid = null; // integer,
public String larva_density = null; //Hopper density numeric, public String larva_density = null; //Hopper density numeric, (Плотность личинок)
public String larva_density_to = null; //Hopper density to numeric, public String larva_density_to = null; //Hopper density to numeric,
//Eggs //Eggs
@ -107,8 +111,6 @@ public class FrmLocustModel {
public String imago_flying = null; public String imago_flying = null;
public String larva_density=null; //Плотность личинок
public String bio_hectare=null; //Обследованная площадь public String bio_hectare=null; //Обследованная площадь
public String bio_biotope_id=null; //Тип тиотопа public String bio_biotope_id=null; //Тип тиотопа
public String bio_biotope_uid=null; //Тип тиотопа public String bio_biotope_uid=null; //Тип тиотопа