diff --git a/src/main/java/org/ccalm/main/AcceptJSON.java b/src/main/java/org/ccalm/main/AcceptJSON.java index 52921f6..6b71e0f 100644 --- a/src/main/java/org/ccalm/main/AcceptJSON.java +++ b/src/main/java/org/ccalm/main/AcceptJSON.java @@ -546,8 +546,8 @@ public class AcceptJSON implements ServletContextAware { locust.district = jsonObj.getString("townName"); if (!jsonObj.isNull("point")) { - locust.lon = jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(0); - locust.lat = jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(1); + locust.lon_center = String.valueOf(jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(0)); + locust.lat_center = String.valueOf(jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(1)); } //Контур зоны распространения ВО Polygon (geoJSON) @@ -720,7 +720,7 @@ public class AcceptJSON implements ServletContextAware { for (Object o2 : jsonArraySub) { JSONObject jsonObjSub = (JSONObject) o2; - locust.eid = jsonObjSub.getInt("id"); + locust.eid = String.valueOf(jsonObjSub.getInt("id")); locust.phytoType = jsonObjSub.getString("phytoType"); //"Вредители" или "Обработка" if (locust.phytoType.equals("Обработка")) { locust.insecticide_name = jsonObjSub.getString("nameSubject"); //Наименование действующего вещества @@ -852,9 +852,9 @@ public class AcceptJSON implements ServletContextAware { } try { - stmt.setLong(1, locust.eid); - stmt.setDouble(2, locust.lat); - stmt.setDouble(3, locust.lon); + if (locust.eid == null) stmt.setNull(1, Types.INTEGER); else stmt.setLong(1, Long.parseLong(locust.eid)); + if (locust.lat_center == null) stmt.setNull(2, Types.DOUBLE); else stmt.setDouble(2, Double.parseDouble(locust.lat_center)); + 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(5, Integer.parseInt(locust.region_id)); //region_id 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 { @@ -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()) { row = ""; } - row += "" + String.valueOf(cntO+cntV) + "" + locust.eid + "" + locust.lat + "" + locust.lon + "" + regionName + " = " + locust.region_id + "" + locust.district + " = " + locust.district_id + "" + locust.terrain + "" + locust.village + "" + locust.locust + " = " + locust.locust_type_id + "" + locust.phase + " = " + locust.locust_have + "" + locust.evp + "" + locust.size + " = " + locust.drawPolygon + "" + locust.date + ""; + row += "" + String.valueOf(cntO+cntV) + "" + locust.eid + "" + locust.lat_center + "" + locust.lon_center + "" + regionName + " = " + locust.region_id + "" + locust.district + " = " + locust.district_id + "" + locust.terrain + "" + locust.village + "" + locust.locust + " = " + locust.locust_type_id + "" + locust.phase + " = " + locust.locust_have + "" + locust.evp + "" + locust.size + " = " + locust.drawPolygon + "" + locust.date + ""; row += "\n"; //Если записи не существует то вставляем если существует то обновляем @@ -1183,9 +1183,9 @@ public class AcceptJSON implements ServletContextAware { } try { - stmt.setLong(1, locust.eid); - stmt.setDouble(2, locust.lat); - stmt.setDouble(3, locust.lon); + stmt.setLong(1, Long.parseLong(locust.eid)); + stmt.setDouble(2, Double.parseDouble(locust.lat_center)); + stmt.setDouble(3, Double.parseDouble(locust.lon_center)); stmt.setInt(4, 7); stmt.setInt(5, Integer.parseInt(locust.region_id)); stmt.setString(6, locust.district); //Пишу в поле "area" @@ -2377,9 +2377,9 @@ public class AcceptJSON implements ServletContextAware { FrmLocustModel result = new FrmLocustModel(); 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.country_id = 10; //Uzbekistan + result.country_id = "10"; //Uzbekistan result.country_uid = "05592f5a-1c8b-4d87-a47f-67697cc12c49"; //Uzbekistan if(!obj.isNull("region_name")) { @@ -2450,8 +2450,8 @@ public class AcceptJSON implements ServletContextAware { result.bio_hectare = obj.getString("surveyed_area"); if (!obj.isNull("point")) { - result.lon = obj.getJSONObject("point").getJSONArray("coordinates").getDouble(0); - result.lat = obj.getJSONObject("point").getJSONArray("coordinates").getDouble(1); + result.lon_center = String.valueOf(obj.getJSONObject("point").getJSONArray("coordinates").getDouble(0)); + result.lat_center = String.valueOf(obj.getJSONObject("point").getJSONArray("coordinates").getDouble(1)); } //Биотоп diff --git a/src/main/java/org/ccalm/main/UpdateLocust.java b/src/main/java/org/ccalm/main/UpdateLocust.java index 220eee1..6b760b2 100644 --- a/src/main/java/org/ccalm/main/UpdateLocust.java +++ b/src/main/java/org/ccalm/main/UpdateLocust.java @@ -2,6 +2,8 @@ package org.ccalm.main; import org.ccalm.main.models.FrmLocustModel; 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.NamedParameterJdbcTemplate; import tools.DBTools; @@ -15,6 +17,8 @@ import java.util.List; public class UpdateLocust { + private static final Logger logger = LoggerFactory.getLogger(UpdateLocust.class); + private final NamedParameterJdbcTemplate jdbcTemplate; UpdateLocust(NamedParameterJdbcTemplate jdbcTemplate){ @@ -25,13 +29,14 @@ public class UpdateLocust { String sql; boolean exists=false; //Is there a record. + MapSqlParameterSource parameters; //Если данные пришли из внешнего источника то проверяем по ID компании и eid if(locust.eid!=null && locust.uid==null) { sql = """ 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("company_uid", locust.company_uid, Types.VARCHAR); List ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); @@ -47,7 +52,7 @@ public class UpdateLocust { sql= """ 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); List ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); 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); 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); }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); - stmt.setTimestamp(14, tm); + parameters.addValue("date", locust.date, Types.DATE); }else { java.sql.Timestamp tm=null; DateFormat dfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2016-05-29 18:00:01 in "GMT" try{ - tm = new java.sql.Timestamp(dfm.parse(date).getTime()); + tm = new java.sql.Timestamp(dfm.parse(locust.date).getTime()); } catch (Exception ex) { logger.error("Error",ex.getMessage()); } - stmt.setTimestamp(14, tm); + parameters.addValue("date", locust.date, Types.DATE); } } diff --git a/src/main/java/org/ccalm/main/models/FrmLocustModel.java b/src/main/java/org/ccalm/main/models/FrmLocustModel.java index c8cb3df..e020b19 100644 --- a/src/main/java/org/ccalm/main/models/FrmLocustModel.java +++ b/src/main/java/org/ccalm/main/models/FrmLocustModel.java @@ -10,9 +10,11 @@ public class FrmLocustModel { public String uid; public String eid; //Внешний идентификатор public long seq; - public long country_id; + public String country_id; public String country_uid; + public String user_id; + public String phytoType; //Вредители либо обработка public String observer; @@ -28,8 +30,9 @@ public class FrmLocustModel { public String region_id; //Область public String region_uid; //Область + public String area; //Rayon public String district; //Район - public String district_id; + public String district_id; // public String terrain=""; //Название месности @@ -53,6 +56,7 @@ public class FrmLocustModel { public String drawPolygon="null"; //Область обследования GeoGSON public String size; //Заселённая площадь (polygonArea Площадь контура зоны распространения, в случае если специалист указал его) public String date; //Дата + public String timezone; 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_id = 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, //Eggs @@ -107,8 +111,6 @@ public class FrmLocustModel { public String imago_flying = null; - public String larva_density=null; //Плотность личинок - public String bio_hectare=null; //Обследованная площадь public String bio_biotope_id=null; //Тип тиотопа public String bio_biotope_uid=null; //Тип тиотопа