diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org/traccar/web/server/model/DataServiceImpl.java | 4 | ||||
-rw-r--r-- | src/org/traccar/web/shared/model/Device.java | 8 | ||||
-rw-r--r-- | src/org/traccar/web/shared/model/Position.java | 28 |
3 files changed, 24 insertions, 16 deletions
diff --git a/src/org/traccar/web/server/model/DataServiceImpl.java b/src/org/traccar/web/server/model/DataServiceImpl.java index 0b2a80ba..fa7a42d8 100644 --- a/src/org/traccar/web/server/model/DataServiceImpl.java +++ b/src/org/traccar/web/server/model/DataServiceImpl.java @@ -195,8 +195,8 @@ public class DataServiceImpl extends RemoteServiceServlet implements DataService User user = getUser(); if (!user.getDevices().isEmpty()) { TypedQuery<Position> query = entityManager.createQuery( - "SELECT x FROM Position x WHERE (x.device, x.time) IN (" + - "SELECT y.device, MAX(y.time) FROM Position y WHERE y.device IN :devices GROUP BY y.device)", Position.class); + "SELECT x FROM Position x WHERE x.id IN (" + + "SELECT y.latestPosition FROM Device y WHERE y IN (:devices))", Position.class); query.setParameter("devices", user.getDevices()); positions.addAll(query.getResultList()); } diff --git a/src/org/traccar/web/shared/model/Device.java b/src/org/traccar/web/shared/model/Device.java index df4afb4b..d638046e 100644 --- a/src/org/traccar/web/shared/model/Device.java +++ b/src/org/traccar/web/shared/model/Device.java @@ -21,6 +21,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.OneToOne; import javax.persistence.Table; @Entity @@ -46,6 +47,13 @@ public class Device implements Serializable { return id; } + @OneToOne + private Position latestPosition; + + public Position getLatestPosition() { + return latestPosition; + } + @Column(unique = true) private String uniqueId; diff --git a/src/org/traccar/web/shared/model/Position.java b/src/org/traccar/web/shared/model/Position.java index 581c94c4..d5fa9a91 100644 --- a/src/org/traccar/web/shared/model/Position.java +++ b/src/org/traccar/web/shared/model/Position.java @@ -75,45 +75,45 @@ public class Position implements Serializable, Cloneable { return time; } - private boolean valid; + private Boolean valid; - public boolean getValid() { + public Boolean getValid() { return valid; } - private double latitude; + private Double latitude; - public double getLatitude() { + public Double getLatitude() { return latitude; } - private double longitude; + private Double longitude; - public double getLongitude() { + public Double getLongitude() { return longitude; } - private double altitude; + private Double altitude; - public double getAltitude() { + public Double getAltitude() { return altitude; } - private double speed; + private Double speed; - public double getSpeed() { + public Double getSpeed() { return speed; } - private double course; + private Double course; - public double getCourse() { + public Double getCourse() { return course; } - private double power; + private Double power; - public double getPower() { + public Double getPower() { return power; } |