龙门吊bug修改
This commit is contained in:
parent
c893df2b74
commit
256d561294
@ -120,7 +120,12 @@
|
||||
</select>
|
||||
|
||||
<select id="queryUseRecord" resultType="com.zhgd.xmgl.modules.ammeter.entity.AmmeterRecordDetail">
|
||||
SELECT t2.degree - t1.degree as degree, DATE_FORMAT(t2.add_time, '%Y-%m-%d') as day, t1.*
|
||||
SELECT t.udegree as degree,t.* FROM (
|
||||
SELECT
|
||||
max(t1.add_time) max_time,
|
||||
t2.degree - t1.degree AS udegree,
|
||||
DATE_FORMAT( t2.add_time, '%Y-%m-%d' ) AS DAY,
|
||||
t1.*
|
||||
FROM (
|
||||
SELECT *
|
||||
FROM ammeter_record_detail
|
||||
@ -131,9 +136,6 @@
|
||||
<if test="ammeterNo != null and ammeterNo != ''">
|
||||
and ammeter_no = #{ammeterNo}
|
||||
</if>
|
||||
<if test="addTime_begin != null and addTime_begin != ''">
|
||||
and add_time >= #{addTime_begin}
|
||||
</if>
|
||||
<if test="addTime_end != null and addTime_end != ''">
|
||||
and add_time <![CDATA[<=]]> #{addTime_end}
|
||||
</if>
|
||||
@ -151,13 +153,10 @@
|
||||
<if test="day != null and day != ''">
|
||||
and DATE_FORMAT(add_time, '%Y-%m-%d') = #{day}
|
||||
</if>
|
||||
<if test="addTime_begin != null and addTime_begin != ''">
|
||||
and add_time >= #{addTime_begin}
|
||||
</if>
|
||||
<if test="addTime_end != null and addTime_end != ''">
|
||||
and add_time <![CDATA[<=]]> #{addTime_end}
|
||||
</if>
|
||||
GROUP BY ammeter_no, DATE_FORMAT(add_time, '%Y-%m-%d'))) t2 ON datediff(t1.add_time, t2.add_time) = - 1
|
||||
GROUP BY ammeter_no, DATE_FORMAT(add_time, '%Y-%m-%d'))) t2 ON t1.add_time <![CDATA[<=]]> t2.add_time
|
||||
AND t1.ammeter_no = t2.ammeter_no
|
||||
AND t1.project_sn = t2.project_sn
|
||||
where 1 = 1
|
||||
@ -176,5 +175,6 @@
|
||||
<if test="addTime_end != null and addTime_end != ''">
|
||||
and t2.add_time <![CDATA[<=]]> #{addTime_end}
|
||||
</if>
|
||||
GROUP BY day) t;
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -88,15 +88,21 @@ public class GantryCraneCurrentData implements Serializable {
|
||||
@Excel(name = "小车2速度(m/s)", width = 15)
|
||||
@ApiModelProperty(value="小车2速度(m/s)")
|
||||
private java.lang.String secondSmallCraneSpeed ;
|
||||
/**小车1主钩吊重(t)*/
|
||||
/**
|
||||
* 小车1主钩吊重(t)
|
||||
*/
|
||||
@Excel(name = "小车1主钩吊重(t)", width = 15)
|
||||
@ApiModelProperty(value = "小车1主钩吊重(t)")
|
||||
private java.lang.String smallCraneMainHookLoad;
|
||||
/**小车1主钩高度(m)*/
|
||||
/**
|
||||
* 小车1主钩高度(m)
|
||||
*/
|
||||
@Excel(name = "小车1主钩高度(m)", width = 15)
|
||||
@ApiModelProperty(value = "小车1主钩高度(m)")
|
||||
private java.lang.String smallCraneMainHookHeight ;
|
||||
/**小车1副钩吊重(t)*/
|
||||
private java.lang.Double smallCraneMainHookHeight;
|
||||
/**
|
||||
* 小车1副钩吊重(t)
|
||||
*/
|
||||
@Excel(name = "小车1副钩吊重(t)", width = 15)
|
||||
@ApiModelProperty(value = "小车1副钩吊重(t)")
|
||||
private java.lang.String smallCraneAuxiliaryHookLoad;
|
||||
@ -261,6 +267,8 @@ public class GantryCraneCurrentData implements Serializable {
|
||||
@Excel(name = "当前工作天数 天", width = 15)
|
||||
@ApiModelProperty(value = "当前工作天数 天")
|
||||
private java.lang.String powerOnDay;
|
||||
@ApiModelProperty(value = "工作循环次数")
|
||||
private java.lang.Integer operatingCycleNumber;
|
||||
/**
|
||||
* 当前工作时分秒 HH:MM:SS
|
||||
*/
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
package com.zhgd.xmgl.task;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
@ -9,8 +12,10 @@ import com.gexin.fastjson.JSONArray;
|
||||
import com.gexin.fastjson.JSONObject;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCrane;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCraneCurrentData;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCraneWorkCycle;
|
||||
import com.zhgd.xmgl.modules.bigdevice.mapper.GantryCraneCurrentDataMapper;
|
||||
import com.zhgd.xmgl.modules.bigdevice.mapper.GantryCraneMapper;
|
||||
import com.zhgd.xmgl.modules.bigdevice.mapper.GantryCraneWorkCycleMapper;
|
||||
import com.zhgd.xmgl.task.dto.GantryCraneCurrentDataDto;
|
||||
import com.zhgd.xmgl.util.NumberUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
@ -19,11 +24,10 @@ import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -34,10 +38,13 @@ import java.util.Objects;
|
||||
@Component
|
||||
@RestController
|
||||
@Api(tags = "定时任务")
|
||||
@RequestMapping("/xmgl/task")
|
||||
public class GantryCraneTask {
|
||||
@Autowired
|
||||
GantryCraneCurrentDataMapper gantryCraneCurrentDataMapper;
|
||||
@Autowired
|
||||
GantryCraneWorkCycleMapper gantryCraneWorkCycleMapper;
|
||||
@Autowired
|
||||
GantryCraneMapper gantryCraneMapper;
|
||||
|
||||
/**
|
||||
@ -45,7 +52,7 @@ public class GantryCraneTask {
|
||||
*/
|
||||
@SchedulerLock(name = "getGantryCraneTaskData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@GetMapping("/xmgl/task/getGantryCraneTaskData")
|
||||
@RequestMapping("/getGantryCraneTaskData")
|
||||
public void getGantryCraneTaskData() {
|
||||
log.info("getGantryCraneTaskData任务执行");
|
||||
List<GantryCrane> gantryCranes = gantryCraneMapper.selectList(new LambdaQueryWrapper<GantryCrane>()
|
||||
@ -88,65 +95,134 @@ public class GantryCraneTask {
|
||||
* @param gantryCrane
|
||||
*/
|
||||
private void insert(GantryCraneCurrentDataDto dto, GantryCrane gantryCrane) {
|
||||
GantryCraneCurrentData entity = new GantryCraneCurrentData();
|
||||
entity.setDevSn(gantryCrane.getDevSn());
|
||||
entity.setProjectSn(gantryCrane.getProjectSn());
|
||||
entity.setReciveTime(new Date());
|
||||
entity.setRunTime(null);
|
||||
entity.setWindSpeed(String.valueOf(dto.getWind1()));
|
||||
entity.setWindSpeedState(getWindSpeedState(dto.getAL1bit5()));
|
||||
entity.setAngleXAxis(null);
|
||||
entity.setAngleYAxis(null);
|
||||
entity.setLargeCraneRange(String.valueOf(dto.getDistance7() * 0.01));
|
||||
entity.setLargeCraneSpeed(String.valueOf(dto.getSpeed1() * 0.01));
|
||||
entity.setSmallCraneRange(null);
|
||||
entity.setSmallCraneSpeed(String.valueOf(dto.getSpeed1() * 0.01));
|
||||
entity.setSecondSmallCraneRange(null);
|
||||
entity.setSecondSmallCraneSpeed(String.valueOf(dto.getSpeed2() * 0.01));
|
||||
entity.setSmallCraneMainHookLoad(String.valueOf(dto.getNeiweight1() * 0.01));
|
||||
entity.setSmallCraneMainHookHeight(String.valueOf(dto.getDistance5() * 0.01));
|
||||
entity.setSmallCraneAuxiliaryHookLoad(String.valueOf(dto.getDistance6() * 0.01));
|
||||
entity.setSmallCraneAuxiliaryHookHeight(null);
|
||||
entity.setSecondSmallCraneMainHookLoad(String.valueOf(dto.getNeiweight2() * 0.01));
|
||||
entity.setSecondSmallCraneMainHookHeight(String.valueOf(dto.getDistance6() * 0.01));
|
||||
entity.setSecondSmallCraneAuxiliaryHookLoad(null);
|
||||
entity.setSecondSmallCraneAuxiliaryHookHeight(null);
|
||||
entity.setMainHookCurrent(null);
|
||||
entity.setMainHookVoltage(null);
|
||||
entity.setSecondMainHookCurrent(null);
|
||||
entity.setSecondMainHookVoltage(null);
|
||||
entity.setSmallCraneRangeState(null);
|
||||
entity.setSecondSmallCraneRangeState(null);
|
||||
entity.setLargeCraneDistanceState(null);
|
||||
entity.setMainHookWeightState(null);
|
||||
entity.setSecondMainHookWeightState(null);
|
||||
entity.setAuxiliaryHookWeightState(null);
|
||||
entity.setSecondAuxiliaryHookWeightState(null);
|
||||
entity.setMainHookHeightState(null);
|
||||
entity.setSecondMainHookHeightState(null);
|
||||
entity.setAuxiliaryHookHeightState(null);
|
||||
entity.setSecondAuxiliaryHookHeightState(null);
|
||||
entity.setAngleXState(null);
|
||||
entity.setAngleYState(null);
|
||||
entity.setGatedState(null);
|
||||
entity.setAntiWindAndNonslipState(null);
|
||||
entity.setCableReelStatus(null);
|
||||
entity.setLargeCarSafeStatus(null);
|
||||
entity.setLargeCarRunStatus(null);
|
||||
entity.setSmallCarRunStatus(null);
|
||||
entity.setSecondSmallCarRunStatus(null);
|
||||
entity.setMasterHookRunStatus(getMasterHookRunStatus(dto));
|
||||
entity.setSecondMasterHookRunStatus(getSecondMasterHookRunStatus(dto));
|
||||
entity.setSubHookRunStatus(null);
|
||||
entity.setSecondSubHookRunStatus(null);
|
||||
entity.setDriverName(null);
|
||||
entity.setDriverIdCard(null);
|
||||
entity.setTotalDay(getTotalDay(dto.getCumulativeWorkingTime()));
|
||||
entity.setTotalTimes(getTotalTimes(dto.getCumulativeWorkingTime()));
|
||||
entity.setPowerOnDay(String.valueOf(dto.getWorkTime()));
|
||||
entity.setPowerOnTimes(String.valueOf(dto.getWorkTime()));
|
||||
gantryCraneCurrentDataMapper.insert(entity);
|
||||
GantryCraneCurrentData data = new GantryCraneCurrentData();
|
||||
Date now = new Date();
|
||||
String devSn = gantryCrane.getDevSn();
|
||||
data.setDevSn(devSn);
|
||||
data.setProjectSn(gantryCrane.getProjectSn());
|
||||
data.setReciveTime(now);
|
||||
data.setRunTime(null);
|
||||
data.setWindSpeed(Convert.toStr(dto.getWind1()));
|
||||
data.setWindSpeedState(getWindSpeedState(dto.getAL1bit5()));
|
||||
//data.setAngleXAxis(null);
|
||||
//data.setAngleYAxis(null);
|
||||
data.setLargeCraneRange(Convert.toStr(dto.getDistance7()));
|
||||
data.setLargeCraneSpeed(Convert.toStr(dto.getSpeed1()));
|
||||
//data.setSmallCraneRange(null);
|
||||
data.setSmallCraneSpeed(Convert.toStr(dto.getSpeed1()));
|
||||
//data.setSecondSmallCraneRange(null);
|
||||
data.setSecondSmallCraneSpeed(Convert.toStr(dto.getSpeed2()));
|
||||
data.setSmallCraneMainHookLoad(Convert.toStr(dto.getNeiweight1()));
|
||||
data.setSmallCraneMainHookHeight(dto.getDistance5());
|
||||
//data.setSmallCraneAuxiliaryHookLoad(Convert.toStr(dto.getDistance6()));
|
||||
//data.setSmallCraneAuxiliaryHookHeight(null);
|
||||
data.setSecondSmallCraneMainHookLoad(Convert.toStr(dto.getNeiweight2()));
|
||||
data.setSecondSmallCraneMainHookHeight(Convert.toStr(dto.getDistance6()));
|
||||
//data.setSecondSmallCraneAuxiliaryHookLoad(null);
|
||||
//data.setSecondSmallCraneAuxiliaryHookHeight(null);
|
||||
//data.setMainHookCurrent(null);
|
||||
//data.setMainHookVoltage(null);
|
||||
//data.setSecondMainHookCurrent(null);
|
||||
//data.setSecondMainHookVoltage(null);
|
||||
//data.setSmallCraneRangeState(null);
|
||||
//data.setSecondSmallCraneRangeState(null);
|
||||
//data.setLargeCraneDistanceState(null);
|
||||
//data.setMainHookWeightState(null);
|
||||
//data.setSecondMainHookWeightState(null);
|
||||
//data.setAuxiliaryHookWeightState(null);
|
||||
//data.setSecondAuxiliaryHookWeightState(null);
|
||||
//data.setMainHookHeightState(null);
|
||||
//data.setSecondMainHookHeightState(null);
|
||||
//data.setAuxiliaryHookHeightState(null);
|
||||
//data.setSecondAuxiliaryHookHeightState(null);
|
||||
//data.setAngleXState(null);
|
||||
//data.setAngleYState(null);
|
||||
//data.setGatedState(null);
|
||||
//data.setAntiWindAndNonslipState(null);
|
||||
//data.setCableReelStatus(null);
|
||||
//data.setLargeCarSafeStatus(null);
|
||||
//data.setLargeCarRunStatus(null);
|
||||
//data.setSmallCarRunStatus(null);
|
||||
//data.setSecondSmallCarRunStatus(null);
|
||||
data.setMasterHookRunStatus(getMasterHookRunStatus(dto));
|
||||
data.setSecondMasterHookRunStatus(getSecondMasterHookRunStatus(dto));
|
||||
//data.setSubHookRunStatus(null);
|
||||
//data.setSecondSubHookRunStatus(null);
|
||||
//data.setDriverName(null);
|
||||
//data.setDriverIdCard(null);
|
||||
data.setTotalDay(getTotalDay(dto.getCumulativeWorkingTime()));
|
||||
data.setTotalTimes(getTotalTimes(dto.getCumulativeWorkingTime()));
|
||||
data.setPowerOnDay(Convert.toStr(dto.getWorkTime()));
|
||||
data.setPowerOnTimes(Convert.toStr(dto.getWorkTime()));
|
||||
data.setOperatingCycleNumber(Convert.toInt(dto.getOperatingCycleNumber()));
|
||||
gantryCraneCurrentDataMapper.insert(data);
|
||||
|
||||
//插入循环数据,我们需要获取每次的工作循环的开始和结束时间和吊重,通过“工作循环次数”是否增加,判断是否进行一次循环,然后取这次的实时的数据的工作时间减去上次(“工作循环次数”-1)的工作时间时间,得到每次的工作循环的开始和结束时间,吊重就取这段时间内最大的吊重,可以这样
|
||||
GantryCraneCurrentData lastNewData = gantryCraneCurrentDataMapper.selectOne(new LambdaQueryWrapper<GantryCraneCurrentData>()
|
||||
.eq(GantryCraneCurrentData::getDevSn, devSn)
|
||||
.orderByDesc(GantryCraneCurrentData::getReciveTime)
|
||||
.last("limit 1"));
|
||||
if (lastNewData != null) {
|
||||
if (NumberUtils.gt(data.getOperatingCycleNumber() + "", lastNewData.getOperatingCycleNumber() + "")) {
|
||||
log.info("插入龙门吊的工作循环数据>>>");
|
||||
GantryCraneWorkCycle cycle = new GantryCraneWorkCycle();
|
||||
cycle.setDevSn(devSn);
|
||||
cycle.setProjectSn(gantryCrane.getProjectSn());
|
||||
cycle.setStartTime(DateUtil.formatDateTime(lastNewData.getReciveTime()));
|
||||
cycle.setEndTime(DateUtil.formatDateTime(now));
|
||||
cycle.setWorkTime(Convert.toStr(DateUtil.between(lastNewData.getReciveTime(), now, DateUnit.SECOND)));
|
||||
cycle.setAddTime(now);
|
||||
//cycle.setDriverName();
|
||||
//cycle.setDriverIdCard();
|
||||
cycle.setMasterHookWorkStartHeight(Convert.toStr(lastNewData.getSmallCraneMainHookHeight()));
|
||||
cycle.setMasterHookWorkEndHeight(Convert.toStr(data.getSmallCraneMainHookHeight()));
|
||||
cycle.setMasterHookWorkMaxWeight(NumberUtils.getMaxStr(data.getSmallCraneMainHookLoad(), lastNewData.getSmallCraneMainHookLoad()));
|
||||
cycle.setMasterHookWorkOperation(getMasterHookRunStatus(dto));
|
||||
//cycle.setSubHookWorkStartHeight(Convert.toStr(lastNewData.getSmallCraneAuxiliaryHookLoad()));
|
||||
//cycle.setSubHookWorkEndHeight(Convert.toStr(dto.getDistance6()));
|
||||
cycle.setSubHookWorkMaxWeight(NumberUtils.getMaxStr(data.getSmallCraneMainHookLoad(), lastNewData.getSmallCraneMainHookLoad()));
|
||||
//cycle.setSubHookWorkOperation(getSecondMasterHookRunStatus(dto));
|
||||
cycle.setSecondMasterHookWorkStartHeight(lastNewData.getSecondSmallCraneMainHookHeight());
|
||||
//cycle.setSecondMasterHookWorkEndHeight();
|
||||
cycle.setSecondMasterHookWorkMaxWeight(NumberUtils.getMaxStr(data.getSecondSmallCraneMainHookLoad(), lastNewData.getSecondSmallCraneMainHookLoad()));
|
||||
cycle.setSecondMasterHookWorkOperation(getMasterHookRunStatus(dto));
|
||||
//cycle.setSecondSubHookWorkStartHeight();
|
||||
//cycle.setSecondSubHookWorkEndHeight();
|
||||
//cycle.setSecondSubHookWorkMaxWeight();
|
||||
//cycle.setSecondSubHookWorkOperation(getSecondMasterHookRunStatus(dto));
|
||||
//cycle.setLargeCarWorkStartRange();
|
||||
//cycle.setLargeCarWorkEndRange();
|
||||
cycle.setLargeCarWorkMaxSpeed(NumberUtils.getMaxStr(data.getLargeCraneSpeed(), lastNewData.getLargeCraneSpeed()));
|
||||
//cycle.setLargeCarWorkOperation();
|
||||
//cycle.setSmallCarWorkStartRange();
|
||||
//cycle.setSmallCarWorkEndRange();
|
||||
//cycle.setSmallCarWorkMaxSpeed();
|
||||
//cycle.setSmallCarWorkOperation();
|
||||
//cycle.setSecondSmallCarWorkStartRange();
|
||||
//cycle.setSecondSmallCarWorkEndRange();
|
||||
cycle.setSecondSmallCarWorkMaxSpeed(NumberUtils.getMaxStr(data.getSecondSmallCraneSpeed(), lastNewData.getSecondSmallCraneSpeed()));
|
||||
//cycle.setSecondSmallCarWorkOperation();
|
||||
cycle.setWorkType(0);
|
||||
//cycle.setMaxDipX();
|
||||
//cycle.setMaxDipY();
|
||||
cycle.setMaxWindSpeed(NumberUtils.getMaxStr(lastNewData.getWindSpeed(), data.getWindSpeed()));
|
||||
//cycle.setMasterHookWorkAlarm();
|
||||
//cycle.setSubHookWorkAlarm();
|
||||
//cycle.setSecondMasterHookWorkAlarm();
|
||||
//cycle.setSecondSubHookWorkAlarm();
|
||||
//cycle.setLargeCarSpeedWorkAlarm();
|
||||
//cycle.setSmallCarSpeedWorkAlarm();
|
||||
//cycle.setSecondSmallCarSpeedWorkAlarm();
|
||||
//cycle.setDipXWorkAlarm();
|
||||
//cycle.setDipYWorkAlarm();
|
||||
//cycle.setWindSpeedWorkAlarm();
|
||||
//cycle.setWorkSafeStatus();
|
||||
gantryCraneWorkCycleMapper.insert(cycle);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private String getTotalTimes(Double d) {
|
||||
if (d == null) {
|
||||
@ -164,7 +240,7 @@ public class GantryCraneTask {
|
||||
if (d == null) {
|
||||
return null;
|
||||
}
|
||||
return String.valueOf(NumberUtil.round(d * 0.1 / 24, 2));
|
||||
return Convert.toStr(NumberUtil.round(d * 0.1 / 24, 2));
|
||||
}
|
||||
|
||||
private Integer getSecondMasterHookRunStatus(GantryCraneCurrentDataDto dto) {
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.zhgd.xmgl.util;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
public class NumberUtils {
|
||||
/**
|
||||
@ -42,6 +44,23 @@ public class NumberUtils {
|
||||
return b1 != null && b2 != null && b1 >= b2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean gt(String s1, String s2) {
|
||||
try {
|
||||
if (!NumberUtil.isNumber(s1) || !NumberUtil.isNumber(s2)) {
|
||||
return false;
|
||||
}
|
||||
return Convert.toDouble(s1) >= Convert.toDouble(s2);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于等于
|
||||
*
|
||||
@ -82,4 +101,27 @@ public class NumberUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取两个字符串最大的
|
||||
*
|
||||
* @param d1
|
||||
* @param d2
|
||||
* @return
|
||||
*/
|
||||
public static String getMaxStr(String d1, String d2) {
|
||||
try {
|
||||
if (StrUtil.isBlank(d1) && StrUtil.isBlank(d2)) {
|
||||
return null;
|
||||
}
|
||||
if (StrUtil.isBlank(d1)) {
|
||||
return d2;
|
||||
} else if (StrUtil.isBlank(d2)) {
|
||||
return d1;
|
||||
}
|
||||
return Convert.toStr(Math.max(Double.parseDouble(d1), Double.parseDouble(d2)));
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user