Просмотр исходного кода

add offset return currentValue

15928045575 2 лет назад
Родитель
Сommit
fa81848b7e

+ 37 - 0
slope-modules/slope-detection/src/main/java/com/sckw/slope/detection/service/CommonService.java

@@ -147,6 +147,43 @@ public class CommonService {
         return offsetValue;
         return offsetValue;
     }
     }
 
 
+    /**
+     *  根据偏移量,返回测量值
+     *
+     * @param value
+     * @param itemName
+     * @param deviceRelation
+     * @return
+     */
+    public BigDecimal getValueByOffset(String value, String itemName, KwsDeviceReference deviceRelation) {
+        BigDecimal offsetValue = new BigDecimal("0.00");
+        if (DictItemEnum.ALTITUDE_Z.getValue().equals(itemName)) {
+            offsetValue = new BigDecimal(value).multiply(new BigDecimal(1000));
+        }
+        //BigDecimal subtract = new BigDecimal(value).subtract((deviceRelation == null ? new BigDecimal("0.00") : deviceRelation.getCurrentValue()));
+        if (DictItemEnum.LATITUDE_Y.getValue().equals(itemName)) {
+            offsetValue = new BigDecimal(value).divide(new BigDecimal(equatorial_circumference)).add(new BigDecimal(deviceRelation.getCurrentValue().toString()));
+        }
+        double angleInRadians = 0;
+        if (DictItemEnum.LONGITUDE_X.getValue().equals(itemName)) {
+            KwsDeviceReference deviceReference = deviceReferenceMapper.selectOne(new LambdaQueryWrapper<KwsDeviceReference>()
+                    .eq(KwsDeviceReference::getDeviceId, deviceRelation.getDeviceId())
+                    .eq(KwsDeviceReference::getType, NumberConstant.ONE)
+                    .eq(KwsDeviceReference::getDelFlag, NumberConstant.ZERO)
+                    .eq(KwsDeviceReference::getItem, DictItemEnum.LATITUDE_Y.getValue())
+            );
+            if (deviceReference != null) {
+                angleInRadians = deviceReference.getCurrentValue().doubleValue();
+            }
+            double cosValue = Math.cos(angleInRadians);
+            BigDecimal doubleValue = new BigDecimal(value).multiply(new BigDecimal(360));//offset*360
+            BigDecimal offsetValue1 = new BigDecimal(equatorial_circumference).multiply(new BigDecimal(cosValue));// L*cos(A)
+            BigDecimal xTmp = doubleValue.divide(offsetValue1, 9, BigDecimal.ROUND_HALF_UP);//除法
+            offsetValue = xTmp.add(new BigDecimal(deviceRelation.getCurrentValue().toString()));//加
+        }
+        return offsetValue;
+    }
+
     public int insertLog(MessageLogEnum messageLogEnum, HeaderData headerData, Map<String, Object> logMap, Long operationBy) {
     public int insertLog(MessageLogEnum messageLogEnum, HeaderData headerData, Map<String, Object> logMap, Long operationBy) {
         String content = com.sckw.core.utils.StringUtils.replaceTextVar(messageLogEnum.getContent(), logMap);
         String content = com.sckw.core.utils.StringUtils.replaceTextVar(messageLogEnum.getContent(), logMap);
         KwsLog log = new KwsLog();
         KwsLog log = new KwsLog();

+ 2 - 1
slope-modules/slope-detection/src/main/java/com/sckw/slope/detection/service/DeviceService.java

@@ -630,9 +630,10 @@ public class DeviceService {
                     kwsDeviceReference.setValue(reference.getCurrentValue());
                     kwsDeviceReference.setValue(reference.getCurrentValue());
 
 
                 }else{
                 }else{
+                    BigDecimal currentValue = commonService.computeOffset(value.toString(), obj.get("item").toString(), reference);
                     kwsDeviceReference.setValue(reference.getCurrentValue());
                     kwsDeviceReference.setValue(reference.getCurrentValue());
                     kwsDeviceReference.setOffset(value);
                     kwsDeviceReference.setOffset(value);
-                    //kwsDeviceReference.setCurrentValue(原始+偏移);//原始位置+偏移的坐标
+                    kwsDeviceReference.setCurrentValue(currentValue);//原始位置+偏移的坐标
                 }
                 }
 
 
                 //调整偏移量
                 //调整偏移量