diff --git a/org-ccalm-main.yml b/org-ccalm-main.yml index f73da5a..8b9683f 100644 --- a/org-ccalm-main.yml +++ b/org-ccalm-main.yml @@ -10,9 +10,9 @@ spring: application: name: org-ccalm-main datasource: - url: jdbc:postgresql://almaty.ccalm.org:5432/CCALM?ApplicationName=org_ccalm_main&ssl=true&sslmode=require&connectTimeout=10000&socketTimeout=10000 + #url: jdbc:postgresql://almaty.ccalm.org:5432/CCALM?ApplicationName=org_ccalm_main&ssl=true&sslmode=require&connectTimeout=10000&socketTimeout=10000 #url: jdbc:postgresql://ccalm.org:5432/CCALM?ApplicationName=org_ccalm_main&ssl=true&sslmode=require&connectTimeout=10000&socketTimeout=10000 - #url: jdbc:postgresql://127.0.0.1:5432/CCALM?ApplicationName=org_ccalm_main&ssl=true&sslmode=require&connectTimeout=10000&socketTimeout=10000 + url: jdbc:postgresql://127.0.0.1:5432/CCALM?ApplicationName=org_ccalm_main&ssl=true&sslmode=require&connectTimeout=10000&socketTimeout=10000 username: postgres password: 309A86FF65A78FB428F4E38DFE35F730 driver-class-name: org.postgresql.Driver diff --git a/src/main/java/org/ccalm/main/AcceptASDCController.java b/src/main/java/org/ccalm/main/AcceptASDCController.java index f0a1194..11f4479 100644 --- a/src/main/java/org/ccalm/main/AcceptASDCController.java +++ b/src/main/java/org/ccalm/main/AcceptASDCController.java @@ -1182,7 +1182,7 @@ public class AcceptASDCController implements ServletContextAware { if(exists) { String sql="update main.frmlocust set\n" - +" uid = ?,\n" + +" uid = main.strtouuid(?),\n" +" changed = false,\n" +" user_id=?,\n" +" device_id=?,\n" @@ -1351,7 +1351,7 @@ public class AcceptASDCController implements ServletContextAware { +" geom,\n" +" test\n" +")values(\n" - +" ?,\n" //1 uid + +" main.strtouuid(?),\n" //1 uid +" false,\n" +" ?,\n" //2 user_id +" ?,\n" //3 device_id diff --git a/src/main/java/org/ccalm/main/AcceptJSON.java b/src/main/java/org/ccalm/main/AcceptJSON.java index 6fc5658..6ec01e5 100644 --- a/src/main/java/org/ccalm/main/AcceptJSON.java +++ b/src/main/java/org/ccalm/main/AcceptJSON.java @@ -1398,7 +1398,7 @@ public class AcceptJSON implements ServletContextAware { return "json"; } //--------------------------------------------------------------------------- - //https://127.0.0.1:8081/AcceptJSON_UZB + //https://127.0.0.1:8083/AcceptJSON_UZB @ResponseBody @RequestMapping(value = {"/AcceptJSON_UZB", "/api/locust/v01/AcceptJSON_UZB"}, method = { RequestMethod.GET, RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_VALUE) public String acceptUZB(@ModelAttribute User user) { @@ -1425,9 +1425,11 @@ public class AcceptJSON implements ServletContextAware { } } if(lastDate==null) - lastDate = LocalDate.parse("2025-02-11"); + lastDate = LocalDate.parse("2025-03-03"); + //lastDate = LocalDate.parse("2025-02-11"); //lastDate = LocalDate.parse("2024-10-01"); + //By number of day downloading data and write result of downloading to database, try or false, after repair need repeat download while(lastDate.isBefore(LocalDate.now().minusDays(3))){ lastDate=lastDate.plusDays(1); @@ -1455,874 +1457,33 @@ public class AcceptJSON implements ServletContextAware { throw new CustomException(200, 10000, "Error download data from: " + strURL,null,true); } + int count=0; if(content!=null && !content.isEmpty()) { - JSONArray jsonArray = new JSONArray(content); for (Object o : jsonArray) { JSONObject jsonObj = (JSONObject) o; FrmLocustModel locust = convertUZBJSONToLocustModel(jsonObj); - - //Проверяю есть ли уже такая запись в базе данных - - - - -// -// locust.date = jsonObj.getString("date"); -// String regionName=""; -// if (!jsonObj.isNull("region_name")) -// regionName = jsonObj.getString("region_name"); -// -// if (!jsonObj.isNull("town_name")) -// locust.district = jsonObj.getString("town_name"); -// -// if (!jsonObj.isNull("point")) { -// locust.lon = jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(0); -// locust.lat = jsonObj.getJSONObject("point").getJSONArray("coordinates").getDouble(1); -// } -// -// //Контур зоны распространения ВО Polygon (geoJSON) -// locust.drawPolygon = null; -// if (!jsonObj.isNull("drawPolygon")) { -// locust.drawPolygon = jsonObj.getJSONObject("drawPolygon").toString(); -// } -// -// //Площадь контура зоны распространения, в случае если специалист указал его -// locust.size = "null"; -// if (!jsonObj.isNull("polygonArea")) -// locust.size = String.valueOf(jsonObj.getDouble("polygonArea")); -// -// //jsonObj.drawPolygon Краснодар -// -// if (locust.region.length() > 0) { -// //Выбираю ID области -// locust.region_id = ""; -// //Statement stt = null; -// //ResultSet rs = null; -// try { -// -// stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); -// String sql_query = "select id from main.countriesregions where name like '%" + locust.region + "%';"; -// rs = stt.executeQuery(sql_query); -// if (rs != null) { -// try { -// if (rs.next()) { -// locust.region_id = rs.getString(1); -// } -// rs.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } -// } -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } finally { -// if (rs != null) try { -// rs.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } -// if (stt != null) try { -// stt.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } -// } -// -// -// /*if(locust.region_id.isEmpty()){ -// if(locust.region.indexOf("Воронежс��ая область")>=0) locust.region_id="110"; -// if(locust.region.indexOf("Кра��нодарский край")>=0) locust.region_id="164"; -// if(locust.region.indexOf("Астраха��ская область")>=0) locust.region_id="68"; //dayOfYear: 97 at year: 2022 = 07.04.2022 -// if(locust.region.indexOf("Астраханская област��")>=0) locust.region_id="68"; // dayOfYear: 101 at year: 2022 = 11.04.2022 -// }*/ -// -// if (locust.region_id.length() > 0) { -// //Выбираю id региона (main.countriesdistricts) -// locust.district_id = ""; -// stt = null; -// rs = null; -// try { -// -// if (locust.district.equals("Алапаевский район")) -// locust.district = "городской округ Алапаевское"; -// if (locust.district.equals("Сухоложский район")) -// locust.district = "городской округ Сухой Лог"; -// if (locust.district.equals("Талицкий район")) -// locust.district = "Талицкий городской округ"; -// if (locust.district.equals("Артинский район")) -// locust.district = "Талицкий городской округ"; -// if (locust.district.equals("Богдановичский район")) -// locust.district = "городской округ Богданович"; -// if (locust.district.equals("Красноуфимский район")) -// locust.district = "Красноуфимский округ"; -// if (locust.district.equals("Белоярский район")) locust.region_id = "210"; -// if (locust.district.equals("Пышминский район")) -// locust.district = "Пышминский городской округ"; -// if (locust.district.equals("Ирбитский район")) -// locust.district = "городской округ Ирбитское"; -// if (locust.district.equals("Фрязино г.о.")) locust.district = "городской округ Фрязино"; -// if (locust.district.equals("Коломенский г.о.")) locust.district = "Коломенский район"; -// if (locust.district.equals("Протвино г.о.")) -// locust.district = "городской округ Протвино"; -// if (locust.district.equals("Зарайск г.о.")) locust.district = "Зарайский район"; -// if (locust.district.equals("Анапский район")) locust.district = "городской округ Анапа"; -// if (locust.district.equals("Луховицы г.о.")) locust.district = "Луховицкий район"; -// if (locust.district.equals("Дергачевский район")) -// locust.district = "Дергачёвский район"; -// if (locust.district.equals("Чистоозерный район")) -// locust.district = "Чистоозёрный район"; -// if (locust.district.equals("Сунжа город")) locust.district = "Сунженский район"; -// if (locust.district.equals("Буденновский район")) -// locust.district = "Будённовский район"; -// if (locust.district.equals("Новоселовский район")) { -// locust.district = "Новоселицкий район"; -// locust.region_id = "168"; -// } -// if (locust.district.equals("Тимашевский район")) locust.district = "Тимашёвский район"; -// if (locust.district.equals("Славгородский район")) -// locust.district = "городской округ Славгород"; -// if (locust.district.equals("Режевский район")) -// locust.district = "Режевской городской округ"; -// if (locust.district.equals("Веселовский район")) locust.district = "Весёловский район"; -// if (locust.district.equals("Карабулак город")) -// locust.district = "городской округ Карабулак"; -// if (locust.district.equals("Пугачевский район")) locust.district = "Пугачёвский район"; -// if (locust.district.equals("Кущевский район")) locust.district = "Кущёвский район"; -// if (locust.district.equals("Репьевский район")) locust.district = "Репьёвский район"; -// if (locust.district.equals("Калачевский район")) locust.district = "Калачёвский район"; -// if (locust.district.equals("Гайский район")) -// locust.district = "Гайский городской округ"; -// if (locust.district.equals("Новохоперский район")) -// locust.district = "Новохопёрский район"; -// if (locust.district.equals("Федоровский район")) locust.district = "Фёдоровский район"; -// if (locust.district.equals("Серебряные Пруды г.о.")) -// locust.district = "городской округ Серебряные Пруды"; -// if (locust.district.equals("Минераловодский район")) -// locust.district = "Минераловодский городской округ"; -// if (locust.district.equals("Рузский г.о.")) locust.district = "Рузский район"; -// if (locust.district.equals("Воробьевский район")) -// locust.district = "Воробьёвский район"; -// if (locust.district.equals("Ачитский район")) -// locust.district = "Ачитский городской округ"; -// if (locust.district.equals("Грачевский район")) locust.district = "Грачёвский район"; -// if (locust.district.equals("Уссурийский район")) -// locust.district = "Уссурийский городской округ"; -// if (locust.district.equals("Сорочинский район")) -// locust.district = "Сорочинский городской округ"; -// if (locust.district.equals("Ясненский район")) -// locust.district = "Ясненский городской округ"; -// -// stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); -// String sql_query = "select id from main.countriesdistricts where region_id=" + locust.region_id + " and name like '%" + locust.district + "%';"; -// rs = stt.executeQuery(sql_query); -// if (rs != null) { -// try { -// if (rs.next()) { -// locust.district_id = rs.getString(1); -// } -// rs.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } -// } -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } finally { -// if (rs != null) try { -// rs.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } -// if (stt != null) try { -// stt.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// } -// } -// } -// } -// -// String row = ""; -// -// if (!jsonObj.isNull("subjectList")) { -// JSONArray jsonArraySub = jsonObj.getJSONArray("subjectList"); -// -// for (Object o2 : jsonArraySub) { -// JSONObject jsonObjSub = (JSONObject) o2; -// -// locust.eid = jsonObjSub.getInt("id"); -// locust.phytoType = jsonObjSub.getString("phytoType"); //"Вредители" или "Обработка" -// if (locust.phytoType.equals("Обработка")) { -// /* -// locust.insecticide_name = jsonObjSub.getString("nameSubject"); //Наименование действующего вещества -// if (!jsonObjSub.isNull("nameLatSubject")) -// locust.insecticide_active_substance = jsonObjSub.getString("nameLatSubject"); //Латинское наименование действующего вещества -// if (!jsonObjSub.isNull("protectionDoze")) -// locust.insecticide_dose = String.valueOf(jsonObjSub.getFloat("protectionDoze")); //Доза внесения препарата (л/га) -// -// if (!jsonObjSub.isNull("agroTreatmentType")) { -// String agroTreatmentType = jsonObjSub.getString("agroTreatmentType"); //Тип обработки (Агротехнический, Авиационный, Наземный) -// if (agroTreatmentType != null && !agroTreatmentType.isEmpty()) { -// if (agroTreatmentType.equals("GROUND")) { -// locust.spray_platform = "3"; -// } else if (agroTreatmentType.equals("AGROTECHNICAL")) { -// locust.spray_platform = "5"; -// } else if (agroTreatmentType.equals("AVIATION")) { -// locust.spray_platform = "1"; -// } -// } -// if (locust.spray_platform == null || locust.spray_platform.isEmpty()) { -// //model.addAttribute("PreviewTable", "Error spray_platform"); -// return "json"; -// } -// } -// -// //То что не знаю куда записывать записываю в description -// locust.description = ""; -// if (!jsonObjSub.isNull("agroTreatmentPercentage")) -// locust.description += "Процент обработанной площади: " + String.valueOf(jsonObjSub.getFloat("agroTreatmentPercentage")) + "\n"; -// if (!jsonObjSub.isNull("agroTreatmentPow")) -// locust.description += "Степень обработки: " + jsonObjSub.getString("agroTreatmentPow") + "\n"; -// -// //Если записи не существует то вставляем если существует то обновляем -// boolean exists = false; //Is there a record. -// Statement st; -// try { -// st = conn.createStatement(); -// //ResultSet rs=null; -// try { -// String sql = "select 1 from main.frmlocustdel where eid=" + String.valueOf(locust.eid); -// rs = st.executeQuery(sql); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error select"); -// return "json"; -// } -// if (rs != null) { -// if (rs.next()) -// exists = true; -// } -// st.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error select 2"); -// return "json"; -// } -// -// PreparedStatement stmt = null; -// String sql = ""; -// if (exists) { -// System.out.println(String.valueOf(cntV)+") update main.frmlocustdel"); -// sql = "update main.frmlocustdel set\n" -// + " eid=?,\n" -// + " lat_center=?,\n" -// + " lon_center=?,\n" -// + " country_id=?,\n" -// + " region_id=?,\n" -// + " area=?,\n" -// + " district=?,\n" -// + " date=TO_TIMESTAMP(?, 'DD.MM.YYYY HH24:MI'),\n" -// + " description=?,\n" -// + " geom=ST_SetSRID(ST_GeomFromGeoJSON(?),4326),\n" -// -// + " insecticide_name=?,\n" -// + " insecticide_active_substance=?,\n" -// + " insecticide_dose=?,\n" -// + " spray_platform=?\n" -// + " where eid='" + locust.eid + "'"; -// try { -// stmt = conn.prepareStatement(sql); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error prepare 1"); -// return "json"; -// } -// } else { -// System.out.println(String.valueOf(cntV)+") insert into main.frmlocustdel"); -// sql = "insert into main.frmlocustdel(\n" -// + " eid,\n" //1 -// + " lat_center,\n" //2 -// + " lon_center,\n" //3 -// + " country_id,\n" //4 -// + " region_id,\n" //5 -// + " area,\n" //6 -// + " district,\n" //7 -// + " date,\n" //8 -// + " description,\n" //9 -// + " geom,\n" //10 -// -// + " insecticide_name,\n" //11 -// + " insecticide_active_substance,\n" //12 -// + " insecticide_dose,\n" //13 -// + " spray_platform\n" //14 -// -// + ")values(\n" -// + " ?,\n" //1 eid -// + " ?,\n" //2 lat1 -// + " ?,\n" //3 lon1 -// + " ?,\n" //4 country_id -// + " ?,\n" //5 region_id -// + " ?,\n" //6 district (area) -// + " ?,\n" //7 district (area) -// + " TO_TIMESTAMP(?, 'DD.MM.YYYY HH24:MI'),\n" //8 date -// + " ?,\n" //9 description -// + " ST_SetSRID(ST_GeomFromGeoJSON(?),4326),\n" //10 geom -// -// + " ?,\n" //11 insecticide_name -// + " ?,\n" //12 insecticide_active_substance -// + " ?,\n" //13 insecticide_dose -// + " ?\n" //14 spray_platform -// + ")"; -// try { -// stmt = conn.prepareStatement(sql); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error prepare 2"); -// return "json"; -// } -// } -// -// try { -// stmt.setInt(1, locust.eid); -// stmt.setDouble(2, locust.lat); -// stmt.setDouble(3, locust.lon); -// stmt.setInt(4, 7); //country_id -// stmt.setInt(5, Integer.parseInt(locust.region_id)); //region_id -// stmt.setString(6, locust.district); //Пишу в поле "area" -// stmt.setString(7, null); -// stmt.setString(8, locust.date); //27.04.2020 09:17 -// stmt.setString(9, locust.description); -// stmt.setString(10, locust.drawPolygon); -// -// stmt.setString(11, locust.insecticide_name); -// stmt.setString(12, locust.insecticide_active_substance); -// if (locust.insecticide_dose == null || locust.insecticide_dose.isEmpty()) -// stmt.setNull(13, Types.DOUBLE); -// else -// stmt.setDouble(13, Double.parseDouble(locust.insecticide_dose)); -// -// if (locust.spray_platform == null || locust.spray_platform.isEmpty()) -// stmt.setNull(14, Types.INTEGER); -// else -// stmt.setInt(14, Integer.parseInt(locust.spray_platform)); -// -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error set data"); -// return "json"; -// } -// -// //Выпоняю запрос на свтавку либо обновление -// try { -// stmt.execute(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error execute frmlocustdel"); -// return "json"; -// } -// cntO++; -// */ -// } else if (locust.phytoType.equals("Вредители")) { -// if (!jsonObjSub.isNull("nameSubject")) -// locust.locust = jsonObjSub.getString("nameSubject"); -// -// //Вид саранчи -// locust.locust_type_id = ""; -// if (locust.locust.equals("Короткокрылый зеленчук")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Среднерусская перелётная саранча")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Сибирская кобылка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка изменчивая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка пёстрая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка крестовая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка сибирская")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка голубокрылая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка бескрылая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка чернополосая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка трескучая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка египетская")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Трещотка ширококрылая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Бахчевая кобылка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Малая крестовичка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Конёк белополосый (белополосая кобылка)")) -// locust.locust_type_id = "4"; -// if (locust.locust.equals("Конек обыкновенный")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Конек обыкновенный")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Кобылка темнокрылая")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Краснокрылая кобылка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Краснокрылая кобылка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Степная кобылка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Гребневка")) locust.locust_type_id = "4"; -// if (locust.locust.equals("Азиатская перелётная саранча")) locust.locust_type_id = "3"; -// if (locust.locust.equals("Итальянский прус")) locust.locust_type_id = "1"; -// if (locust.locust.equals("Мароккская саранча, мароккская кобылка, марокканка")) -// locust.locust_type_id = "2"; -// -// //фаза саранчи -// if (!jsonObjSub.isNull("phaseEvolutionName")) -// locust.phase = jsonObjSub.getString("phaseEvolutionName"); -// -// locust.locust_have = "3"; -// if (locust.phase != null) { -// if (locust.phase.equals("Кубышка")) locust.locust_have = "2"; //Кубышка = Яйца -// if (locust.phase.equals("Гусеница")) locust.locust_have = "3"; -// if (locust.phase.equals("Личинка 2-го возраста")) locust.locust_have = "3"; -// if (locust.phase.equals("Личинка 3-го возраста")) locust.locust_have = "3"; -// if (locust.phase.equals("Личинка 4-го возраста")) locust.locust_have = "3"; -// if (locust.phase.equals("Личинка 5-го возраста")) locust.locust_have = "3"; -// if (locust.phase.equals("Имаго")) locust.locust_have = "5"; -// } -// //Если эта анкета "Имаго" то записываем плотность имаго на m2 -// if (locust.locust_have.equals("5")) { -// if (!jsonObjSub.isNull("subPestCount")) -// locust.imago_density = String.valueOf(jsonObjSub.getFloat("subPestCount")); -// } -// //Если эта анкета "Кубышка"="Яйца" то записываем плотность кулиг на m2 -// if (locust.locust_have.equals("2")) { -// if (!jsonObjSub.isNull("subPestCount")) -// locust.eggs_capsules_density = String.valueOf(jsonObjSub.getFloat("subPestCount")); -// } -// //Если эта анкета "Кулиги" то записываем плотность кулиг на m2 -// if (locust.locust_have.equals("4")) { -// if (!jsonObjSub.isNull("subPestCount")) -// locust.kuliguli_density = String.valueOf(jsonObjSub.getFloat("subPestCount")); -// } -// //Если эта анкета "Личинок" то записываем плотность личинок на m2 -// if (locust.locust_have.equals("3")) { -// if (!jsonObjSub.isNull("subPestCount")) -// locust.larva_density = String.valueOf(jsonObjSub.getFloat("subPestCount")); -// } -// -// //Биотоп -// switch (jsonObjSub.getString("faoBiotopeName")) { -// case "CIT степь": -// locust.bio_biotope_id = "1"; -// break; -// case "CIT залежь": -// locust.bio_biotope_id = "2"; -// break; -// case "CIT посевы": -// locust.bio_biotope_id = "3"; -// break; -// case "CIT пастбища": -// locust.bio_biotope_id = "11"; -// break; -// case "CIT холмы, горы": -// locust.bio_biotope_id = "19"; -// break; -// case "DMA равнины": -// locust.bio_biotope_id = "4"; -// break; -// case "DMA посевы": -// locust.bio_biotope_id = "6"; -// break; -// case "DMA пастбища": -// locust.bio_biotope_id = "13"; -// break; -// case "DMA холмы, горы": -// locust.bio_biotope_id = "14"; -// break; -// case "LMI низкие сухие тростники": -// locust.bio_biotope_id = "7"; -// break; -// case "LMI высокие влажные тростники": -// locust.bio_biotope_id = "8"; -// break; -// case "LMI другое": -// locust.bio_biotope_id = "10"; -// break; -// case "Другие саранчовые на посевах": -// locust.bio_biotope_id = "15"; -// break; -// case "Другие саранчовые на равнине": -// locust.bio_biotope_id = "16"; -// break; -// case "Другие саранчовые на холмах": -// locust.bio_biotope_id = "17"; -// break; -// case "Другое": -// locust.bio_biotope_id = "18"; -// break; -// default: -// locust.bio_biotope_id = null; -// break; -// } -// -// //Если те виды что нам нужны -// if (locust.region == null || locust.region.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("Бахчевая коровка")) { -// -// } else { -// -// if (locust.locust_type_id.isEmpty()) { -// System.out.println("locust.locust = "+locust.locust); -// //model.addAttribute("PreviewTable", "locust.locust_type_id == 0 locust name = " + locust.locust); -// logger.error("Error, not find locust.locust = "+locust.locust); -// return "json"; -// } -// if (locust.region_id.isEmpty()) { -// System.out.println("locust.region = "+locust.region); -// //model.addAttribute("PreviewTable", "locust.region_id == 0 region name = " + locust.region); -// logger.error("Error, not find locust.region = "+locust.region); -// return "json"; -// } -// -// //Тех полей что нет в анкете вствляю в комментарии -// try { -// locust.description = ""; -// -// if (jsonObjSub.getBoolean("notFound")) -// locust.description += "Вредитель не обнаружен: " + jsonObjSub.getString("nameSubject") + "\n"; -// else -// locust.description += "Вредитель обнаружен: " + jsonObjSub.getString("nameSubject") + "\n"; -// -// if (!jsonObjSub.isNull("phaseEvolutionName")) -// locust.description += "Фаза: " + jsonObjSub.getString("phaseEvolutionName") + "\n"; //Так как фаза у росиян более подробная -// if (!jsonObjSub.isNull("subPestCount")) { -// locust.description += "Вредителей: " + jsonObjSub.getFloat("subPestCount"); -// if (!jsonObjSub.isNull("unitName")) -// locust.description += " " + jsonObjSub.getString("unitName"); -// locust.description += "\n"; -// } -// -// if (!jsonObj.isNull("cropCurrentType")) -// locust.description += "Тип сева: " + jsonObj.getString("cropCurrentType") + "\n"; -// if (!jsonObj.isNull("cropCurrentCulture")) -// locust.description += "Наименование культуры: " + jsonObj.getString("cropCurrentCulture") + "\n"; -// if (!jsonObj.isNull("cropCurrentCultureSort")) -// locust.description += "Наименование сорта культуры: " + jsonObj.getString("cropCurrentCultureSort") + "\n"; -// if (!jsonObj.isNull("cropCurrentGrowthPhase")) -// locust.description += "Фаза роста культуры: " + jsonObj.getString("cropCurrentGrowthPhase") + "\n"; -// if (!jsonObj.isNull("cropFieldArea")) { -// locust.description += "Площадь поля: " + jsonObj.getFloat("cropFieldArea") + "\n"; -// locust.bio_hectare = String.valueOf(jsonObj.getFloat("cropFieldArea")); -// } -// -// -// } catch (Exception ex) { -// ex.printStackTrace(); -// } -// -// locust.terrain = "null"; //У росиян нет сельского округа -// -// row = ""; -// 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 + "" + locust.region + " = " + 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"; -// -// //Если записи не существует то вставляем если существует то обновляем -// boolean exists = false; //Is there a record. -// Statement st; -// try { -// st = conn.createStatement(); -// //ResultSet rs=null; -// try { -// String sql = "select 1 from main.frmlocust where eid=" + String.valueOf(locust.eid); -// rs = st.executeQuery(sql); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error select"); -// return "json"; -// } -// if (rs != null) { -// if (rs.next()) -// exists = true; -// } -// st.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error select 2"); -// return "json"; -// } -// -// PreparedStatement stmt = null; -// String sql = ""; -// if (exists) { -// System.out.println(String.valueOf(cntV)+") update main.frmlocust"); -// sql = "update main.frmlocust set\n" -// + " eid=?,\n" -// + " lat_center=?,\n" -// + " lon_center=?,\n" -// + " country_id=?,\n" -// + " region_id=?,\n" -// + " area=?,\n" -// + " district=?,\n" -// + " date=TO_TIMESTAMP(?, 'DD.MM.YYYY HH24:MI'),\n" -// + " description=?,\n" -// + " geom=ST_SetSRID(ST_GeomFromGeoJSON(?),4326),\n" -// + " locust_type_id=?,\n" -// + " imago_density=?,\n" -// + " kuliguli_density=?,\n" -// + " larva_density=?,\n" -// + " bio_hectare=?\n," -// + " eggs_capsules_density=?,\n" -// + " bio_biotope_id=?\n" -// + " where eid='" + locust.eid + "'"; -// try { -// stmt = conn.prepareStatement(sql); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error prepare 1"); -// return "json"; -// } -// } else { -// System.out.println(String.valueOf(cntV)+") insert into main.frmlocust"); -// sql = "insert into main.frmlocust(\n" -// + " eid,\n" //1 -// + " lat_center,\n" //2 -// + " lon_center,\n" //3 -// + " country_id,\n" //4 -// + " region_id,\n" //5 -// + " area,\n" //6 -// + " district,\n" //7 -// + " date,\n" //8 -// + " description,\n" //9 -// + " geom,\n" //10 -// + " locust_type_id,\n" //11 -// + " imago_density,\n" //12 -// + " kuliguli_density,\n" //13 -// + " larva_density,\n" //14 -// + " bio_hectare,\n" //15 -// + " eggs_capsules_density,\n" //16 -// + " bio_biotope_id\n" //17 -// + ")values(\n" -// + " ?,\n" //1 eid -// + " ?,\n" //2 lat1 -// + " ?,\n" //3 lon1 -// + " ?,\n" //4 country_id -// + " ?,\n" //5 region_id -// + " ?,\n" //6 district (area) -// + " ?,\n" //7 district (area) -// + " TO_TIMESTAMP(?, 'DD.MM.YYYY HH24:MI'),\n" //8 date -// + " ?,\n" //9 description -// + " ST_SetSRID(ST_GeomFromGeoJSON(?),4326),\n" //10 geom -// + " ?,\n" //11 locust_type_id -// + " ?,\n" //12 imago_density -// + " ?,\n" //13 kuliguli_density -// + " ?,\n" //14 larva_density -// + " ?,\n" //15 -// + " ?,\n" //16 -// + " ?\n" //17 -// + ")"; -// try { -// stmt = conn.prepareStatement(sql); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error prepare 2"); -// return "json"; -// } -// } -// -// try { -// stmt.setInt(1, locust.eid); -// stmt.setDouble(2, locust.lat); -// stmt.setDouble(3, locust.lon); -// stmt.setInt(4, 7); -// stmt.setInt(5, Integer.parseInt(locust.region_id)); -// stmt.setString(6, locust.district); //Пишу в поле "area" -// stmt.setString(7, null); -// stmt.setString(8, locust.date); //27.04.2020 09:17 -// stmt.setString(9, locust.description); -// stmt.setString(10, locust.drawPolygon); -// stmt.setInt(11, Integer.parseInt(locust.locust_type_id)); -// if (locust.imago_density != null) -// stmt.setFloat(12, Float.parseFloat(locust.imago_density)); -// else -// stmt.setNull(12, Types.FLOAT); -// if (locust.kuliguli_density != null) -// stmt.setFloat(13, Float.parseFloat(locust.kuliguli_density)); -// else -// stmt.setNull(13, Types.FLOAT); -// if (locust.larva_density != null) -// stmt.setFloat(14, Float.parseFloat(locust.larva_density)); -// else -// stmt.setNull(14, Types.FLOAT); -// if (locust.bio_hectare != null) -// stmt.setFloat(15, Float.parseFloat(locust.bio_hectare)); -// else -// stmt.setNull(15, Types.FLOAT); -// if (locust.eggs_capsules_density != null) -// stmt.setFloat(16, Float.parseFloat(locust.eggs_capsules_density)); -// else -// stmt.setNull(16, Types.FLOAT); -// if (locust.bio_biotope_id != null) -// stmt.setFloat(17, Float.parseFloat(locust.bio_biotope_id)); -// else -// stmt.setNull(17, Types.INTEGER); -// -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error set data"); -// return "json"; -// } -// //Выпоняю запрос на свтавку либо обновление -// try { -// stmt.execute(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error execute 0"); -// return "json"; -// } -// cntV++; -// -// //Скачиваю фотографию для анкеты -// sb = new StringBuilder(); -// try { -// String strURL = "https://rscagex.ru/pmon/rest/getPhotosByParentId?token=QVOUE97HBSI6LBSGJGQZMP3KPSS1QK&parentId=" + locust.eid; -// URL url = new URL(strURL); -// HttpURLConnection hConn = (HttpURLConnection) url.openConnection(); -// hConn.setRequestMethod("GET"); -// //hConn.setRequestProperty("Range","bytes=" + posStart + "-" + posEnd); -// hConn.connect(); -// int responseCode = hConn.getResponseCode(); -// if (responseCode / 100 == 2) //Code 206 is "Partial Content" -// { -// InputStream inputStream = hConn.getInputStream(); -// //FileOutputStream outputStream = new FileOutputStream(strFile); -// int bytesRead; -// byte[] buffer = new byte[BUFFER_SIZE]; -// while ((bytesRead = inputStream.read(buffer)) != -1) { -// //outputStream.write(buffer, 0, bytesRead); -// sb.append(new String(buffer, 0, bytesRead)); -// } -// //outputStream.close(); -// inputStream.close(); -// } -// hConn.disconnect(); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// -// String base64 = sb.toString(); -// if (base64.length() > 10) { -// //Так как мне присылаю неправильный jSOM то пытаюсь его поправить,. -// base64 = base64.replace("[", "[\""); -// base64 = base64.replace("]", "\"]"); -// base64 = base64.replace(", ", "\",\""); -// -// String strFile = "O:\\temp\\CCALM\\ru_" + locust.eid; -// int pos = 0; -// -// JSONArray jsonArrayIMGS = new JSONArray(base64); -// for (Object oStr : jsonArrayIMGS) { -// String jsonObjIMG = (String) oStr; -// pos++; -// if (pos > 3) break; -// -// //try { -// // BufferedWriter writer = new BufferedWriter(new FileWriter(strFile)); -// // writer.write(jsonObjIMG); -// // writer.close(); -// //} catch (IOException e1) { -// // e1.printStackTrace(); -// //} -// -// byte[] decodedString = null; -// try { -// decodedString = Base64.getDecoder().decode(jsonObjIMG); -// } catch (Exception e) { -// e.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error decode"); -// return "json"; -// } -// -// if (decodedString != null) { -// try { -// FileUtils.writeByteArrayToFile(new File(strFile + "_" + pos + ".jpg"), decodedString); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } -// decodedString = null; -// -// BufferedImage imageOnDisk = null; -// try { -// imageOnDisk = ImageIO.read(new File(strFile + "_" + pos + ".jpg")); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// if (imageOnDisk != null) { -// Image img; -// BufferedImage buffered; -// if (imageOnDisk.getWidth() > imageOnDisk.getHeight()) { -// img = imageOnDisk.getScaledInstance(1024, 768, Image.SCALE_DEFAULT); -// buffered = new BufferedImage(1024, 768, BufferedImage.TYPE_INT_RGB); -// buffered.getGraphics().drawImage(img, 0, 0, null); -// } else { -// img = imageOnDisk.getScaledInstance(768, 1024, Image.SCALE_DEFAULT); -// buffered = new BufferedImage(768, 1024, BufferedImage.TYPE_INT_RGB); -// buffered.getGraphics().drawImage(img, 0, 0, null); -// } -// try { -// //BufferedImage bIMG = toBufferedImage(img); -// ImageIO.write(buffered, "jpg", new File(strFile + "_" + pos + ".jpg")); -// } catch (IOException ex) { -// ex.printStackTrace(); -// } -// } -// -// -// if (pos > 3) { -// break; -// } else { -// sql = ""; -// if (pos == 1) { -// sql = "update main.frmlocust set image_name1='ru_" + locust.eid + "_" + pos + ".jpg" + "' where eid=" + locust.eid; -// } -// if (pos == 2) { -// sql = "update main.frmlocust set image_name2='ru_" + locust.eid + "_" + pos + ".jpg" + "' where eid=" + locust.eid; -// } -// if (pos == 3) { -// sql = "update main.frmlocust set image_name3='ru_" + locust.eid + "_" + pos + ".jpg" + "' where eid=" + locust.eid; -// } -// if (sql.length() > 0) { -// try { -// st = conn.createStatement(); -// st.execute(sql); -// st.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error update img"); -// return "json"; -// } -// } -// } -// } -// } -// } -// -// } //equals("Вредители") -// -// } -// -// } -// -// table += row; + //I check if there is already such a record in the database, if not, I insert it, if there is, I update it + UpdateLocust updateLocust = new UpdateLocust(jdbcTemplate); + if(updateLocust.update(locust)) + count++; + if(count==66) + System.out.println( "count = " + count ); + System.out.println( "count = " + count ); } -// System.out.println("Обработка = "+String.valueOf(cntO)); -// System.out.println("Вредители = "+String.valueOf(cntV)); -// -// -// table += ""; -// -// //json=json.substring(0,json.length()-1); //Удаляю последнюю запятую -// //json+="\n]}"; -// -// //Сохраняю lastDate в базу данных -// try { -// Statement st = conn.createStatement(); -// st.execute("insert into integration.days_ru(date,count)values('" + lastDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "'," + String.valueOf(cntV+cntO) + ");"); -// st.close(); -// } catch (SQLException ex) { -// ex.printStackTrace(); -// //model.addAttribute("PreviewTable", "Error update img"); -// return "json"; -// } } + + //Save last download date + String insertSql = """ + insert into integration.days_uz (date, count) values (:date, :count) + """; + MapSqlParameterSource insertParams = new MapSqlParameterSource(); + insertParams.addValue("date", lastDate, Types.DATE); + insertParams.addValue("count", count, Types.INTEGER); + jdbcTemplate.update(insertSql, insertParams); } } catch (CustomException e) { @@ -2378,8 +1539,10 @@ public class AcceptJSON implements ServletContextAware { FrmLocustModel result = new FrmLocustModel(); - result.company_uid = "dc271f2e-1a4b-4987-96ec-7afd91350684"; //Компания: "Узбекистан саранча" - result.eid = String.valueOf(obj.getInt("id")); + result.company_uid = "dc271f2e-1a4b-4987-96ec-7afd91350684"; //Company: "Uzbekistan Locust" + result.uid = obj.getString("uuid"); + result.eid = String.valueOf(obj.getInt("id")); //Internal identifier in the Uzbek database + result.seq = obj.getLong("seq")*1000; result.country_id = "10"; //Uzbekistan result.country_uid = "05592f5a-1c8b-4d87-a47f-67697cc12c49"; //Uzbekistan @@ -2582,9 +1745,30 @@ public class AcceptJSON implements ServletContextAware { result.bio_temperature = obj.optString("air_temperature",null); if(result.bio_temperature!=null && result.bio_temperature.isEmpty()) result.bio_temperature = null; + if(result.bio_temperature!=null && result.bio_temperature.contains("..")) { + result.bio_temperature = result.bio_temperature.substring(result.bio_temperature.indexOf("..") + 2); + } + if(result.bio_temperature!=null) { + try { + Double.parseDouble(result.bio_temperature); + } catch (NumberFormatException e) { + System.out.println( "Double bio_temperature error" + result.bio_temperature ); + } + } result.bio_wind = obj.optString("wind_speed",null); + if(result.bio_wind!=null && result.bio_wind.contains("..")) { + result.bio_wind = result.bio_wind.substring(result.bio_wind.indexOf("..") + 2); + } if(result.bio_wind!=null && result.bio_wind.isEmpty()) result.bio_wind = null; + if(result.bio_wind!=null) { + try { + Double.parseDouble(result.bio_wind); + } catch (NumberFormatException e) { + System.out.println( "Double bio_wind error" + result.bio_wind ); + } + } + //Вид саранчи if(!obj.isNull("subject_name") && !obj.optString("subject_name","").isBlank()) { @@ -2625,6 +1809,8 @@ public class AcceptJSON implements ServletContextAware { result.eggs_capsules_density = obj.optString("eggs_pods_density_from_m2",null); result.eggs_capsules_density_to = obj.optString("eggs_pods_density_to_m2",null); result.eggs_capsules = obj.optString("eggs_average_number_egg_pod",null); + if(result.eggs_capsules!=null && result.eggs_capsules.equals(".")) result.eggs_capsules="0"; + result.eggs_live = obj.optString("eggs_viable",null); if(!obj.isNull("eggs_natural_enemies") && !obj.optString("eggs_natural_enemies","").isBlank()) { switch (obj.optString("eggs_natural_enemies",null).replace("'", "").trim()) { @@ -2889,7 +2075,27 @@ public class AcceptJSON implements ServletContextAware { } result.swarm_maturity = obj.optString("swarms_maturity",null); // boolean, - result.swarm_density_id = obj.optString("swarms_density",null); // integer, + if(!obj.isNull("swarms_density") && !obj.optString("swarms_density","").isBlank()) { + switch (obj.optString("swarms_density",null).replace("'", "").trim()) { + case "Low density", "Низкая": + result.swarm_density_id = "1"; + result.swarm_density_uid = "d64bdd10-bf56-43a7-96b5-b9d22f36c19a"; + break; + case "Middle density", "Средние", "Среднее": + result.swarm_density_id = "2"; + result.swarm_density_uid = "c0ec55a0-54fa-4df6-a683-a3690eafe464"; + break; + case "High height", "Высокая": + result.swarm_density_id = "3"; + result.swarm_density_uid = "accbb2e3-7b6e-4a7d-9b2b-2569b05c60ef"; + break; + default: + throw new CustomException(200, 10000, "Not find swarms_density: (" + obj.optString("swarms_density",null)+")", null, true); + } + } + if(!obj.isNull("swarms_height") && !obj.optString("swarms_height","").isBlank()) { + + result.swarm_size = obj.optString("swarms_size",null); // double precision, result.swarm_count = obj.optString("swarms_count",null); // double precision, //result.swarm_copulation = obj.optString("",null); // boolean, diff --git a/src/main/java/org/ccalm/main/SendWarning.java b/src/main/java/org/ccalm/main/SendWarning.java index 6efd22a..855f750 100644 --- a/src/main/java/org/ccalm/main/SendWarning.java +++ b/src/main/java/org/ccalm/main/SendWarning.java @@ -147,7 +147,7 @@ public class SendWarning { JSONObject tmp_air = getAirTemperature(obj.getDouble("lat"),obj.getDouble("lon")); JSONObject tmp_soil = getSoilTemperature(obj.getDouble("lat"),obj.getDouble("lon")); - if(tmp_air!=null) { + if(tmp_air!=null && obj.getBoolean("warn_air")) { Translation trt=new Translation(obj.getString("short_name"),jdbcTemplate); double value = obj.getDouble("temperature_air"); if (value < tmp_air.getDouble("value")) { @@ -202,7 +202,7 @@ public class SendWarning { } } - if(tmp_soil!=null) { + if(tmp_soil!=null && obj.getBoolean("warn_soil")) { Translation trt=new Translation(obj.getString("short_name"),jdbcTemplate); double value = obj.getDouble("temperature_soil"); if (value < tmp_soil.getDouble("value")) { diff --git a/src/main/java/org/ccalm/main/UpdateLocust.java b/src/main/java/org/ccalm/main/UpdateLocust.java index 38b0d5a..ff0829d 100644 --- a/src/main/java/org/ccalm/main/UpdateLocust.java +++ b/src/main/java/org/ccalm/main/UpdateLocust.java @@ -4,6 +4,7 @@ import org.ccalm.main.models.FrmLocustModel; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MarkerFactory; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import tools.DBTools; @@ -12,8 +13,11 @@ import java.sql.Types; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.UUID; public class UpdateLocust { @@ -25,6 +29,7 @@ public class UpdateLocust { this.jdbcTemplate = jdbcTemplate; } + //Update or insert locust survey form public boolean update(FrmLocustModel locust){ String sql; @@ -64,6 +69,7 @@ public class UpdateLocust { sql= """ update main.frmlocust set changed = false, + company_uid=CAST(:company_uid AS uuid), user_id=:user_id, device_id=:device_id, image_name1=:image_name1, @@ -128,12 +134,13 @@ public class UpdateLocust { description=:description, geom=ST_SetSRID(ST_GeomFromGeoJSON(:geom),4326), test=:test - where uid=CAST(:uid AS uuid) + where uid=main.strtouuid(:uid) """; }else{ sql=""" insert into main.frmlocust( changed, + company_uid, user_id, device_id, image_name1, @@ -201,6 +208,7 @@ public class UpdateLocust { uid )values( false, + CAST(:company_uid AS uuid), :user_id, :device_id, :image_name1, @@ -265,12 +273,14 @@ public class UpdateLocust { :description, ST_SetSRID(ST_GeomFromGeoJSON(:geom),4326), :test, - :uid + main.strtouuid(:uid) ) """; } parameters = new MapSqlParameterSource(); parameters.addValue("uid", locust.uid, Types.VARCHAR); + parameters.addValue("company_uid", locust.company_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); } @@ -299,19 +309,19 @@ public class UpdateLocust { { if(locust.date.indexOf("-")==-1) //If old date format in UNIX time { - int uDate=Integer.parseInt(locust.date)+1; - java.sql.Timestamp tm=new java.sql.Timestamp((long)uDate*1000); - parameters.addValue("date", locust.date, Types.DATE); + long uDate=Long.parseLong(locust.date)+1; + java.sql.Timestamp timestamp=new java.sql.Timestamp((long)uDate*1000); + parameters.addValue("date", timestamp, Types.TIMESTAMP); }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(locust.date).getTime()); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; // ISO 8601 (2025-02-12T14:17:43) + LocalDateTime dateTime = LocalDateTime.parse(locust.date, formatter); + java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf(dateTime); + parameters.addValue("date", timestamp, Types.TIMESTAMP); } catch (Exception ex) { logger.error(ex.getMessage(), ex); } - parameters.addValue("date", locust.date, Types.DATE); } } @@ -403,16 +413,23 @@ public class UpdateLocust { if(locust.swarm_flying_direction_id==null) parameters.addValue("swarm_flying_direction_id", null, Types.BIGINT); else parameters.addValue("swarm_flying_direction_id",Long.parseLong(locust.swarm_flying_direction_id), Types.BIGINT); if(locust.swarm_height_id==null) parameters.addValue("swarm_height_id", null, Types.BIGINT); else parameters.addValue("swarm_height_id",Long.parseLong(locust.swarm_height_id), Types.BIGINT); - parameters.addValue("description", Types.VARCHAR); - parameters.addValue("geom", Types.VARCHAR); + parameters.addValue("description", locust.description, Types.VARCHAR); + parameters.addValue("geom", locust.geom, Types.VARCHAR); + if(locust.test==null) parameters.addValue("test", null, Types.BOOLEAN); else { if(locust.test.equals("1")) parameters.addValue("test",true, Types.BOOLEAN); else parameters.addValue("test",false,Types.BOOLEAN); } - - return true; + try { + int rowsAffected = jdbcTemplate.update(sql, parameters); + return rowsAffected > 0; + } catch (Exception ex) { + String uuid = UUID.randomUUID().toString(); + logger.error(MarkerFactory.getMarker(uuid), ex.getMessage(), ex); + return false; + } } } diff --git a/src/main/java/org/ccalm/main/models/FrmLocustModel.java b/src/main/java/org/ccalm/main/models/FrmLocustModel.java index edc8852..2e6c34d 100644 --- a/src/main/java/org/ccalm/main/models/FrmLocustModel.java +++ b/src/main/java/org/ccalm/main/models/FrmLocustModel.java @@ -60,6 +60,7 @@ public class FrmLocustModel { public String timezone; public String description=""; + public String geom; //Hopper public String larva = null; @@ -123,6 +124,7 @@ public class FrmLocustModel { public String swarms = null; // For CheckBox public String swarm_maturity = null; //Maturity boolean, public String swarm_density_id = null; //Density of swarm integer, + public String swarm_density_uid = null; //Density of swarm integer, public String swarm_size = null; //Swarm size double precision, public String swarm_count = null; //Number of swarms double precision, public String swarm_copulation = null; //Not used boolean,