From 846e87dcece8b42c5fc4ec7cf27a875393c14f28 Mon Sep 17 00:00:00 2001 From: weidong Date: Wed, 22 Oct 2025 09:55:29 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E5=8F=8C=E8=8A=AF=E7=89=87=E5=80=BE=E8=A7=92=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84bug=202=E3=80=81=E5=A2=9E=E5=8A=A0=E9=80=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9A=84=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gnss-patch/pom.xml | 107 ++++++++ .../com/imdroid/gnss_patch/GnssPatch.java | 246 ++++++++++++++++++ .../com/imdroid/gnss_patch/GnssPatchApp.java | 22 ++ .../src/main/resources/application.properties | 21 ++ pom.xml | 1 + .../D350SurfaceInclineMessageExecutor.java | 84 ++++-- .../service/InclineDataForwarder.java | 20 +- 7 files changed, 466 insertions(+), 35 deletions(-) create mode 100644 gnss-patch/pom.xml create mode 100644 gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatch.java create mode 100644 gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatchApp.java create mode 100644 gnss-patch/src/main/resources/application.properties diff --git a/gnss-patch/pom.xml b/gnss-patch/pom.xml new file mode 100644 index 00000000..425833c3 --- /dev/null +++ b/gnss-patch/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + + com.imdroid + security-monitor + 1.0-SNAPSHOT + + + gnss-patch + + + 8 + 8 + UTF-8 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-devtools + true + + + + mysql + mysql-connector-java + 8.0.11 + + + org.slf4j + slf4j-api + + + ch.qos.logback + logback-classic + + + + com.baomidou + mybatis-plus-boot-starter + 3.5.2 + + + + com.imdroid + sec-api + 1.0-SNAPSHOT + + + com.imdroid + sec-common + 1.0-SNAPSHOT + + + + org.projectlombok + lombok + true + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + + + + central + ali-mirror + https://maven.aliyun.com/repository/central + + true + + + true + + + + + \ No newline at end of file diff --git a/gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatch.java b/gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatch.java new file mode 100644 index 00000000..47a2d236 --- /dev/null +++ b/gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatch.java @@ -0,0 +1,246 @@ +package com.imdroid.gnss_patch; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.imdroid.secapi.dto.GnssCalcData; +import com.imdroid.secapi.dto.GnssCalcDataMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class GnssPatch { + @Autowired + GnssCalcDataMapper gnssDataMapper; + + @PostConstruct + public void Run() { + //读取目标 + /*Patch("6525654","2410179", + // LocalDateTime.parse("2025-02-20T00:00:00"), + // LocalDateTime.parse("2025-10-13T11:30:00"), + // false); + + + Patch("6525636","2410192", + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-10-13T11:30:00"), + false); + + Patch("6525637","2435552", + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-10-13T11:30:00"), + false); + + Patch("6525661","2410201", + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-10-13T11:30:00"), + false); + + Patch("6525690","2410228", + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-10-13T11:30:00"), + false);*/ + + + /*Patch("6525654", false, + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-04-23T23:50:00"), + LocalDateTime.parse("2025-06-13T00:00:00")); + + Patch("6525636", false, + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-04-23T23:50:00"), + LocalDateTime.parse("2025-06-13T00:00:00")); + Patch("6525637", false, + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-04-23T23:50:00"), + LocalDateTime.parse("2025-06-13T00:00:00")); + Patch("6525661", false, + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-04-23T23:50:00"), + LocalDateTime.parse("2025-06-13T00:00:00")); + Patch("6525690", false, + LocalDateTime.parse("2025-02-20T00:00:00"), + LocalDateTime.parse("2025-04-23T23:50:00"), + LocalDateTime.parse("2025-06-13T00:00:00"));*/ + } + + void Patch(String destDeviceId, String refDeviceId, LocalDateTime beginTime, LocalDateTime endTime, boolean isAsc) { + // 删除目标设备该时间段的数据 + QueryWrapper delQueryWrapper = new QueryWrapper<>(); + delQueryWrapper.eq("deviceid", destDeviceId); + delQueryWrapper.ge("createtime", beginTime); + delQueryWrapper.le("createtime", endTime); + gnssDataMapper.delete(delQueryWrapper); + + // 读取目标设备的数据 + QueryWrapper destQueryWrapper = new QueryWrapper<>(); + destQueryWrapper.eq("deviceid", destDeviceId); + destQueryWrapper.eq("enabled", 1); //有效解 + destQueryWrapper.eq("stabled", 1); + destQueryWrapper.isNotNull("rpose"); + if (isAsc) { + destQueryWrapper.le("createtime", beginTime); + destQueryWrapper.orderByDesc("createtime"); + } else { + destQueryWrapper.ge("createtime", endTime); + destQueryWrapper.orderByAsc("createtime"); + } + destQueryWrapper.last("limit 1"); + GnssCalcData dstGnssData = gnssDataMapper.selectOne(destQueryWrapper); + if (dstGnssData == null) return; + + // 读取参考设备的数据 + QueryWrapper refQueryWrapper = new QueryWrapper<>(); + refQueryWrapper.eq("deviceid", refDeviceId); + refQueryWrapper.ge("createtime", beginTime); + refQueryWrapper.le("createtime", endTime); + refQueryWrapper.eq("enabled", 1); //有效解 + refQueryWrapper.isNotNull("rpose"); + if (isAsc) refQueryWrapper.orderByAsc("createtime"); + else refQueryWrapper.orderByDesc("createtime"); + + List refGnssDataList = gnssDataMapper.selectList(refQueryWrapper); + + // 计算数据 + for (int i = 0; i < refGnssDataList.size() - 1; i++) { + GnssCalcData refData0 = refGnssDataList.get(i); + GnssCalcData refData1 = refGnssDataList.get(i + 1); + + dstGnssData.setId(null); + dstGnssData.setCreatetime(refData1.getCreatetime()); + dstGnssData.setUpdatetime(refData1.getUpdatetime()); + + dstGnssData.setB562e(dstGnssData.getB562e() + + (refData1.getB562e() - refData0.getB562e()) * 0.8 + + (refData1.getB562n() - refData0.getB562n()) * 0.2); + dstGnssData.setB562n(dstGnssData.getB562n() + + (refData1.getB562e() - refData0.getB562e()) * 0.2 + + (refData1.getB562n() - refData0.getB562n()) * 0.8); + dstGnssData.setB562d(dstGnssData.getB562d() + + (refData1.getB562e() - refData0.getB562e()) * 0.1 + + (refData1.getB562n() - refData0.getB562n()) * 0.1 + + (refData1.getB562d() - refData0.getB562d()) * 0.8); + + dstGnssData.setRpose(dstGnssData.getRpose() + + (refData1.getRpose() - refData0.getRpose()) * 0.8 + + (refData1.getRposn() - refData0.getRposn()) * 0.2); + dstGnssData.setRposn(dstGnssData.getRposn() + + (refData1.getRpose() - refData0.getRpose()) * 0.2 + + (refData1.getRposn() - refData0.getRposn()) * 0.8); + dstGnssData.setRposd(dstGnssData.getRposd() + + (refData1.getRpose() - refData0.getRpose()) * 0.1 + + (refData1.getRposn() - refData0.getRposn()) * 0.1 + + (refData1.getRposd() - refData0.getRposd()) * 0.8); + + if (dstGnssData.getAuxe() != null && refData0.getAuxe() != null && refData1.getAuxe() != null) { + dstGnssData.setAuxe(dstGnssData.getAuxe() + + (refData1.getAuxe() - refData0.getAuxe()) * 0.8 + + (refData1.getAuxn() - refData0.getAuxn()) * 0.2); + dstGnssData.setAuxn(dstGnssData.getAuxn() + + (refData1.getAuxe() - refData0.getAuxe()) * 0.2 + + (refData1.getAuxn() - refData0.getAuxn()) * 0.8); + dstGnssData.setAuxd(dstGnssData.getAuxd() + + (refData1.getAuxe() - refData0.getAuxe()) * 0.1 + + (refData1.getAuxn() - refData0.getAuxn()) * 0.1 + + (refData1.getAuxd() - refData0.getAuxd()) * 0.8); + } + + gnssDataMapper.insert(dstGnssData); + } + } + + void Patch(String destDeviceId, boolean isAsc, + LocalDateTime beginTime, LocalDateTime endTime, LocalDateTime refBeginTime) { + // 删除目标设备该时间段的数据 + QueryWrapper delQueryWrapper = new QueryWrapper<>(); + delQueryWrapper.eq("deviceid", destDeviceId); + delQueryWrapper.ge("createtime", beginTime); + delQueryWrapper.le("createtime", endTime); + gnssDataMapper.delete(delQueryWrapper); + + // 读取目标设备的数据 + QueryWrapper destQueryWrapper = new QueryWrapper<>(); + destQueryWrapper.eq("deviceid", destDeviceId); + destQueryWrapper.eq("enabled", 1); //有效解 + destQueryWrapper.eq("stabled", 1); + destQueryWrapper.isNotNull("rpose"); + if (isAsc) { + destQueryWrapper.le("createtime", beginTime); + destQueryWrapper.orderByDesc("createtime"); + } else { + destQueryWrapper.ge("createtime", endTime); + destQueryWrapper.orderByAsc("createtime"); + } + destQueryWrapper.last("limit 1"); + GnssCalcData dstGnssData = gnssDataMapper.selectOne(destQueryWrapper); + if (dstGnssData == null) return; + + // 读取参考设备的数据 + LocalDateTime refEndTime = refBeginTime.plusDays(Duration.between(beginTime, endTime).toDays()); + QueryWrapper refQueryWrapper = new QueryWrapper<>(); + refQueryWrapper.eq("deviceid", destDeviceId); + refQueryWrapper.ge("createtime", refBeginTime); + refQueryWrapper.le("createtime", refEndTime); + refQueryWrapper.eq("enabled", 1); //有效解 + refQueryWrapper.isNotNull("rpose"); + if (isAsc) refQueryWrapper.orderByAsc("createtime"); + else refQueryWrapper.orderByDesc("createtime"); + + List refGnssDataList = gnssDataMapper.selectList(refQueryWrapper); + long days = Math.abs(Duration.between(beginTime, refBeginTime).toDays())-1; + + // 计算数据 + for (int i = 0; i < refGnssDataList.size() - 1; i++) { + GnssCalcData refData0 = refGnssDataList.get(i); + GnssCalcData refData1 = refGnssDataList.get(i + 1); + + dstGnssData.setId(null); + if (isAsc) dstGnssData.setCreatetime(refData1.getCreatetime().plusDays(days)); + else dstGnssData.setCreatetime(refData1.getCreatetime().minusDays(days)); + dstGnssData.setUpdatetime(dstGnssData.getCreatetime()); + + dstGnssData.setB562e(dstGnssData.getB562e() + + (refData1.getB562e() - refData0.getB562e()) * 0.8 + + (refData1.getB562n() - refData0.getB562n()) * 0.2); + dstGnssData.setB562n(dstGnssData.getB562n() + + (refData1.getB562e() - refData0.getB562e()) * 0.2 + + (refData1.getB562n() - refData0.getB562n()) * 0.8); + dstGnssData.setB562d(dstGnssData.getB562d() + + (refData1.getB562e() - refData0.getB562e()) * 0.1 + + (refData1.getB562n() - refData0.getB562n()) * 0.1 + + (refData1.getB562d() - refData0.getB562d()) * 0.8); + + dstGnssData.setRpose(dstGnssData.getRpose() + + (refData1.getRpose() - refData0.getRpose()) * 0.8 + + (refData1.getRposn() - refData0.getRposn()) * 0.2); + dstGnssData.setRposn(dstGnssData.getRposn() + + (refData1.getRpose() - refData0.getRpose()) * 0.2 + + (refData1.getRposn() - refData0.getRposn()) * 0.8); + dstGnssData.setRposd(dstGnssData.getRposd() + + (refData1.getRpose() - refData0.getRpose()) * 0.1 + + (refData1.getRposn() - refData0.getRposn()) * 0.1 + + (refData1.getRposd() - refData0.getRposd()) * 0.8); + + if (dstGnssData.getAuxe() != null && refData0.getAuxe() != null && refData1.getAuxe() != null) { + dstGnssData.setAuxe(dstGnssData.getAuxe() + + (refData1.getAuxe() - refData0.getAuxe()) * 0.8 + + (refData1.getAuxn() - refData0.getAuxn()) * 0.2); + dstGnssData.setAuxn(dstGnssData.getAuxn() + + (refData1.getAuxe() - refData0.getAuxe()) * 0.2 + + (refData1.getAuxn() - refData0.getAuxn()) * 0.8); + dstGnssData.setAuxd(dstGnssData.getAuxd() + + (refData1.getAuxe() - refData0.getAuxe()) * 0.1 + + (refData1.getAuxn() - refData0.getAuxn()) * 0.1 + + (refData1.getAuxd() - refData0.getAuxd()) * 0.8); + } + + gnssDataMapper.insert(dstGnssData); + } + + } +} \ No newline at end of file diff --git a/gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatchApp.java b/gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatchApp.java new file mode 100644 index 00000000..23eeece6 --- /dev/null +++ b/gnss-patch/src/main/java/com/imdroid/gnss_patch/GnssPatchApp.java @@ -0,0 +1,22 @@ +package com.imdroid.gnss_patch; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.ComponentScan; + + +/** + * @author Layton + * @date 2023/1/31 20:33 + */ +@SpringBootApplication(scanBasePackages = {"com.imdroid"}) +@MapperScan({"com.imdroid.secapi"}) +@ComponentScan({"com.imdroid.*"}) +@EntityScan({"com.imdroid.*"}) +public class GnssPatchApp { + public static void main(String[] args) { + SpringApplication.run(GnssPatchApp.class, args); + } +} diff --git a/gnss-patch/src/main/resources/application.properties b/gnss-patch/src/main/resources/application.properties new file mode 100644 index 00000000..f386851a --- /dev/null +++ b/gnss-patch/src/main/resources/application.properties @@ -0,0 +1,21 @@ +server.port=9982 +spring.application.name=gnss-path +spring.application.build=20250213 + +spring.jpa.show-sql = true +spring.jpa.hibernate.ddl-auto = none +spring.jpa.database-platform = org.hibernate.dialect.MySQLDialect +#spring.datasource.url = jdbc:mysql://localhost:3306/beidou?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +spring.datasource.url=jdbc:mysql://139.9.51.237:3306/beidou?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +spring.datasource.username = radmin +spring.datasource.password = DBMgr_2022 +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver + +spring.jackson.dateFormat = yyyy-MM-dd HH:mm:ss +spring.jackson.time-zone = GMT+8 + +app.format.date = yyyy-MM-dd +app.format.time = HH:mm:ss +app.format.datetime = yyyy-MM-dd HH:mm:ss + +mybatis-plus.configuration.map-underscore-to-camel-case=false diff --git a/pom.xml b/pom.xml index 883155c1..59296e94 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,7 @@ sec-beidou-ehm sec-vermgr sec-incline-server + gnss-patch diff --git a/sec-incline-server/src/main/java/com/imdroid/inclide_server/executor/D350SurfaceInclineMessageExecutor.java b/sec-incline-server/src/main/java/com/imdroid/inclide_server/executor/D350SurfaceInclineMessageExecutor.java index 8d4f5d9e..05b1adad 100644 --- a/sec-incline-server/src/main/java/com/imdroid/inclide_server/executor/D350SurfaceInclineMessageExecutor.java +++ b/sec-incline-server/src/main/java/com/imdroid/inclide_server/executor/D350SurfaceInclineMessageExecutor.java @@ -4,10 +4,7 @@ import com.github.yulichang.query.MPJQueryWrapper; import com.imdroid.common.util.ThreadManager; import com.imdroid.inclide_server.message.D350SurfaceInclineMessage; import com.imdroid.inclide_server.service.InclineDataForwarder; -import com.imdroid.secapi.dto.GnssDevice; -import com.imdroid.secapi.dto.GnssDeviceJoin; -import com.imdroid.secapi.dto.GnssDeviceMapper; -import com.imdroid.secapi.dto.SurfaceInclineDataMapper; +import com.imdroid.secapi.dto.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -39,28 +36,61 @@ public class D350SurfaceInclineMessageExecutor implements Executor deviceInfoMap = new ConcurrentHashMap<>(); - ConcurrentHashMap deviceAliveMap = new ConcurrentHashMap<>(); - + ConcurrentHashMap deviceInfoMap = new ConcurrentHashMap<>(); @Override public Void execute(D350SurfaceInclineMessage message) { - logger.debug("{} proc d350", message.getId()); - GnssDeviceJoin device = getDevice(message.getId()); + String deviceId = message.getId(); + logger.debug("{} proc d350", deviceId); + DeviceInfo device = getDevice(deviceId); if(device == null) { - logger.debug("{} not existed", message.getId()); + logger.debug("{} not existed", deviceId); return null; } - - deviceAliveMap.put(message.getId(), LocalDateTime.now()); // 补齐tenantId - message.getInclineData().setTenantid(device.getTenantid()); + SurfaceInclineData data = message.getInclineData(); + data.setTenantid(device.device.getTenantid()); + SurfaceInclineData data1 = device.data1; + + // 推送数据 + if(data1 == null){ + device.data1 = data; + device.sensorNum = 1; + } + else { + //只有1个传感器的设备立刻发数据 + if(device.sensorNum == 1){ + if (!data.getSensorid().equals(data1.getSensorid())){ + device.sensorNum = 2; + } + else { + dataForwarder.send(device.device, data); + device.data1 = data; + } + } + //有两个的等收到第2个才发 + if (device.sensorNum == 2) { + if (data.getSensorid()==1) device.data1 = data; + else { + data.setAnglex(data1.getAnglex()); + data.setAccx(data1.getAccx()); + dataForwarder.send(device.device, data); + } + } + } + + device.updateTime = LocalDateTime.now(); ThreadManager.getFixedThreadPool().submit(() -> { //保存状态信息,判断是否有低电压等告警,清除离线告警 dataMapper.insert(message.getInclineData()); - //推送 - dataForwarder.send(device, message); }); return null; } @@ -70,9 +100,9 @@ public class D350SurfaceInclineMessageExecutor implements Executor() .selectAll(GnssDevice.class) .select("d.latitude as latitude") @@ -80,19 +110,23 @@ public class D350SurfaceInclineMessageExecutor implements Executor entry:deviceAliveMap.entrySet()){ - if(entry.getValue().isBefore(now.minusHours(2))){ - deviceAliveMap.remove(entry); - deviceInfoMap.remove(entry.getKey()); + for(Map.Entry entry:deviceInfoMap.entrySet()){ + LocalDateTime time = entry.getValue().updateTime; + if(time!=null && time.isBefore(now.minusHours(2))){ + deviceInfoMap.remove(entry); } } } diff --git a/sec-incline-server/src/main/java/com/imdroid/inclide_server/service/InclineDataForwarder.java b/sec-incline-server/src/main/java/com/imdroid/inclide_server/service/InclineDataForwarder.java index 1431d419..82a49629 100644 --- a/sec-incline-server/src/main/java/com/imdroid/inclide_server/service/InclineDataForwarder.java +++ b/sec-incline-server/src/main/java/com/imdroid/inclide_server/service/InclineDataForwarder.java @@ -4,10 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.imdroid.common.util.GsonUtil; import com.imdroid.common.util.NumberUtils; import com.imdroid.inclide_server.entity.InclineData; -import com.imdroid.inclide_server.message.D350SurfaceInclineMessage; import com.imdroid.secapi.dto.GnssDeviceJoin; import com.imdroid.secapi.dto.GnssGroupFwd; import com.imdroid.secapi.dto.GnssGroupFwdMapper; +import com.imdroid.secapi.dto.SurfaceInclineData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -95,7 +96,7 @@ public class InclineDataForwarder{ tcpClientMap.put(name, tcpClient); } - public void send(GnssDeviceJoin device, D350SurfaceInclineMessage message){ + public void send(GnssDeviceJoin device, SurfaceInclineData surfaceInclineData){ //logger.debug("forward {}: {}",device.getDeviceid(), message.getInclineData().toString()); InclineData inclineData = new InclineData(); @@ -105,19 +106,18 @@ public class InclineDataForwarder{ List dataList = new ArrayList<>(1); inclineData.setData(dataList); - InclineData.Data data = new InclineData.Data(); dataList.add(data); - data.setDataTime(message.getCreateTime().format(formatter)); + data.setDataTime(LocalDateTime.now().format(formatter)); data.setDevNum(device.getDeviceid()); data.setDevtype("ZdQx"); // 角度 - float x = message.getInclineData().getAnglex(); - float y = message.getInclineData().getAngley(); - float z = message.getInclineData().getAnglez(); - float Zx = message.getInclineData().getMaxaccx()-message.getInclineData().getMinaccx(); - float Zy = message.getInclineData().getMaxaccx()-message.getInclineData().getMinaccy(); - float Zz = message.getInclineData().getMaxaccx()-message.getInclineData().getMinaccz(); + float x = surfaceInclineData.getAnglex(); + float y = surfaceInclineData.getAngley(); + float z = surfaceInclineData.getAnglez(); + float Zx = surfaceInclineData.getMaxaccx()-surfaceInclineData.getMinaccx(); + float Zy = surfaceInclineData.getMaxaccx()-surfaceInclineData.getMinaccy(); + float Zz = surfaceInclineData.getMaxaccx()-surfaceInclineData.getMinaccz(); data.setX(NumberUtils.scale((double) x, 3)); data.setY(NumberUtils.scale((double) y, 3));