diff --git a/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml b/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml
index 8f16bd199..8b0a35e03 100644
--- a/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml
+++ b/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml
@@ -120,7 +120,12 @@
diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/entity/GantryCraneCurrentData.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/entity/GantryCraneCurrentData.java
index cc50a7cf4..9ab80a704 100644
--- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/entity/GantryCraneCurrentData.java
+++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/entity/GantryCraneCurrentData.java
@@ -88,18 +88,24 @@ 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)*/
+ @ApiModelProperty(value = "小车1主钩吊重(t)")
+ private java.lang.String smallCraneMainHookLoad;
+ /**
+ * 小车1主钩高度(m)
+ */
@Excel(name = "小车1主钩高度(m)", width = 15)
- @ApiModelProperty(value="小车1主钩高度(m)")
- private java.lang.String smallCraneMainHookHeight ;
- /**小车1副钩吊重(t)*/
+ @ApiModelProperty(value = "小车1主钩高度(m)")
+ private java.lang.Double smallCraneMainHookHeight;
+ /**
+ * 小车1副钩吊重(t)
+ */
@Excel(name = "小车1副钩吊重(t)", width = 15)
- @ApiModelProperty(value="小车1副钩吊重(t)")
- private java.lang.String smallCraneAuxiliaryHookLoad ;
+ @ApiModelProperty(value = "小车1副钩吊重(t)")
+ private java.lang.String smallCraneAuxiliaryHookLoad;
/**小车1副钩高度(m)*/
@Excel(name = "小车1副钩高度(m)", width = 15)
@ApiModelProperty(value="小车1副钩高度(m)")
@@ -259,9 +265,11 @@ public class GantryCraneCurrentData implements Serializable {
* 当前工作天数 天
*/
@Excel(name = "当前工作天数 天", width = 15)
- @ApiModelProperty(value = "当前工作天数 天")
- private java.lang.String powerOnDay;
- /**
+ @ApiModelProperty(value = "当前工作天数 天")
+ private java.lang.String powerOnDay;
+ @ApiModelProperty(value = "工作循环次数")
+ private java.lang.Integer operatingCycleNumber;
+ /**
* 当前工作时分秒 HH:MM:SS
*/
@Excel(name = "当前工作时分秒 HH:MM:SS", width = 15)
diff --git a/src/main/java/com/zhgd/xmgl/task/GantryCraneTask.java b/src/main/java/com/zhgd/xmgl/task/GantryCraneTask.java
index 7cfed6697..7bd93293b 100644
--- a/src/main/java/com/zhgd/xmgl/task/GantryCraneTask.java
+++ b/src/main/java/com/zhgd/xmgl/task/GantryCraneTask.java
@@ -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 gantryCranes = gantryCraneMapper.selectList(new LambdaQueryWrapper()
@@ -88,66 +95,135 @@ 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()
+ .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) {
return 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) {
diff --git a/src/main/java/com/zhgd/xmgl/util/NumberUtils.java b/src/main/java/com/zhgd/xmgl/util/NumberUtils.java
index 27eed3999..b34e12be9 100644
--- a/src/main/java/com/zhgd/xmgl/util/NumberUtils.java
+++ b/src/main/java/com/zhgd/xmgl/util/NumberUtils.java
@@ -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;
+ }
}