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; + } }