龙门吊bug修改

This commit is contained in:
guo 2024-03-15 18:46:24 +08:00
parent c893df2b74
commit 256d561294
4 changed files with 208 additions and 82 deletions

View File

@ -120,7 +120,12 @@
</select> </select>
<select id="queryUseRecord" resultType="com.zhgd.xmgl.modules.ammeter.entity.AmmeterRecordDetail"> <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 ( FROM (
SELECT * SELECT *
FROM ammeter_record_detail FROM ammeter_record_detail
@ -131,9 +136,6 @@
<if test="ammeterNo != null and ammeterNo != ''"> <if test="ammeterNo != null and ammeterNo != ''">
and ammeter_no = #{ammeterNo} and ammeter_no = #{ammeterNo}
</if> </if>
<if test="addTime_begin != null and addTime_begin != ''">
and add_time >= #{addTime_begin}
</if>
<if test="addTime_end != null and addTime_end != ''"> <if test="addTime_end != null and addTime_end != ''">
and add_time <![CDATA[<=]]> #{addTime_end} and add_time <![CDATA[<=]]> #{addTime_end}
</if> </if>
@ -151,13 +153,10 @@
<if test="day != null and day != ''"> <if test="day != null and day != ''">
and DATE_FORMAT(add_time, '%Y-%m-%d') = #{day} and DATE_FORMAT(add_time, '%Y-%m-%d') = #{day}
</if> </if>
<if test="addTime_begin != null and addTime_begin != ''">
and add_time >= #{addTime_begin}
</if>
<if test="addTime_end != null and addTime_end != ''"> <if test="addTime_end != null and addTime_end != ''">
and add_time <![CDATA[<=]]> #{addTime_end} and add_time <![CDATA[<=]]> #{addTime_end}
</if> </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.ammeter_no = t2.ammeter_no
AND t1.project_sn = t2.project_sn AND t1.project_sn = t2.project_sn
where 1 = 1 where 1 = 1
@ -176,5 +175,6 @@
<if test="addTime_end != null and addTime_end != ''"> <if test="addTime_end != null and addTime_end != ''">
and t2.add_time <![CDATA[<=]]> #{addTime_end} and t2.add_time <![CDATA[<=]]> #{addTime_end}
</if> </if>
GROUP BY day) t;
</select> </select>
</mapper> </mapper>

View File

@ -88,15 +88,21 @@ public class GantryCraneCurrentData implements Serializable {
@Excel(name = "小车2速度m/s", width = 15) @Excel(name = "小车2速度m/s", width = 15)
@ApiModelProperty(value="小车2速度m/s") @ApiModelProperty(value="小车2速度m/s")
private java.lang.String secondSmallCraneSpeed ; private java.lang.String secondSmallCraneSpeed ;
/**小车1主钩吊重t*/ /**
* 小车1主钩吊重t
*/
@Excel(name = "小车1主钩吊重t", width = 15) @Excel(name = "小车1主钩吊重t", width = 15)
@ApiModelProperty(value = "小车1主钩吊重t") @ApiModelProperty(value = "小车1主钩吊重t")
private java.lang.String smallCraneMainHookLoad; private java.lang.String smallCraneMainHookLoad;
/**小车1主钩高度m*/ /**
* 小车1主钩高度m
*/
@Excel(name = "小车1主钩高度m", width = 15) @Excel(name = "小车1主钩高度m", width = 15)
@ApiModelProperty(value = "小车1主钩高度m") @ApiModelProperty(value = "小车1主钩高度m")
private java.lang.String smallCraneMainHookHeight ; private java.lang.Double smallCraneMainHookHeight;
/**小车1副钩吊重t*/ /**
* 小车1副钩吊重t
*/
@Excel(name = "小车1副钩吊重t", width = 15) @Excel(name = "小车1副钩吊重t", width = 15)
@ApiModelProperty(value = "小车1副钩吊重t") @ApiModelProperty(value = "小车1副钩吊重t")
private java.lang.String smallCraneAuxiliaryHookLoad; private java.lang.String smallCraneAuxiliaryHookLoad;
@ -261,6 +267,8 @@ public class GantryCraneCurrentData implements Serializable {
@Excel(name = "当前工作天数 天", width = 15) @Excel(name = "当前工作天数 天", width = 15)
@ApiModelProperty(value = "当前工作天数 天") @ApiModelProperty(value = "当前工作天数 天")
private java.lang.String powerOnDay; private java.lang.String powerOnDay;
@ApiModelProperty(value = "工作循环次数")
private java.lang.Integer operatingCycleNumber;
/** /**
* 当前工作时分秒 HH:MM:SS * 当前工作时分秒 HH:MM:SS
*/ */

View File

@ -1,5 +1,8 @@
package com.zhgd.xmgl.task; 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.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
@ -9,8 +12,10 @@ import com.gexin.fastjson.JSONArray;
import com.gexin.fastjson.JSONObject; import com.gexin.fastjson.JSONObject;
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCrane; import com.zhgd.xmgl.modules.bigdevice.entity.GantryCrane;
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCraneCurrentData; 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.GantryCraneCurrentDataMapper;
import com.zhgd.xmgl.modules.bigdevice.mapper.GantryCraneMapper; 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.task.dto.GantryCraneCurrentDataDto;
import com.zhgd.xmgl.util.NumberUtils; import com.zhgd.xmgl.util.NumberUtils;
import io.swagger.annotations.Api; 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.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; 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 org.springframework.web.bind.annotation.RestController;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -34,10 +38,13 @@ import java.util.Objects;
@Component @Component
@RestController @RestController
@Api(tags = "定时任务") @Api(tags = "定时任务")
@RequestMapping("/xmgl/task")
public class GantryCraneTask { public class GantryCraneTask {
@Autowired @Autowired
GantryCraneCurrentDataMapper gantryCraneCurrentDataMapper; GantryCraneCurrentDataMapper gantryCraneCurrentDataMapper;
@Autowired @Autowired
GantryCraneWorkCycleMapper gantryCraneWorkCycleMapper;
@Autowired
GantryCraneMapper gantryCraneMapper; GantryCraneMapper gantryCraneMapper;
/** /**
@ -45,7 +52,7 @@ public class GantryCraneTask {
*/ */
@SchedulerLock(name = "getGantryCraneTaskData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5) @SchedulerLock(name = "getGantryCraneTaskData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
@Scheduled(cron = "0 0/5 * * * ?") @Scheduled(cron = "0 0/5 * * * ?")
@GetMapping("/xmgl/task/getGantryCraneTaskData") @RequestMapping("/getGantryCraneTaskData")
public void getGantryCraneTaskData() { public void getGantryCraneTaskData() {
log.info("getGantryCraneTaskData任务执行"); log.info("getGantryCraneTaskData任务执行");
List<GantryCrane> gantryCranes = gantryCraneMapper.selectList(new LambdaQueryWrapper<GantryCrane>() List<GantryCrane> gantryCranes = gantryCraneMapper.selectList(new LambdaQueryWrapper<GantryCrane>()
@ -88,65 +95,134 @@ public class GantryCraneTask {
* @param gantryCrane * @param gantryCrane
*/ */
private void insert(GantryCraneCurrentDataDto dto, GantryCrane gantryCrane) { private void insert(GantryCraneCurrentDataDto dto, GantryCrane gantryCrane) {
GantryCraneCurrentData entity = new GantryCraneCurrentData(); GantryCraneCurrentData data = new GantryCraneCurrentData();
entity.setDevSn(gantryCrane.getDevSn()); Date now = new Date();
entity.setProjectSn(gantryCrane.getProjectSn()); String devSn = gantryCrane.getDevSn();
entity.setReciveTime(new Date()); data.setDevSn(devSn);
entity.setRunTime(null); data.setProjectSn(gantryCrane.getProjectSn());
entity.setWindSpeed(String.valueOf(dto.getWind1())); data.setReciveTime(now);
entity.setWindSpeedState(getWindSpeedState(dto.getAL1bit5())); data.setRunTime(null);
entity.setAngleXAxis(null); data.setWindSpeed(Convert.toStr(dto.getWind1()));
entity.setAngleYAxis(null); data.setWindSpeedState(getWindSpeedState(dto.getAL1bit5()));
entity.setLargeCraneRange(String.valueOf(dto.getDistance7() * 0.01)); //data.setAngleXAxis(null);
entity.setLargeCraneSpeed(String.valueOf(dto.getSpeed1() * 0.01)); //data.setAngleYAxis(null);
entity.setSmallCraneRange(null); data.setLargeCraneRange(Convert.toStr(dto.getDistance7()));
entity.setSmallCraneSpeed(String.valueOf(dto.getSpeed1() * 0.01)); data.setLargeCraneSpeed(Convert.toStr(dto.getSpeed1()));
entity.setSecondSmallCraneRange(null); //data.setSmallCraneRange(null);
entity.setSecondSmallCraneSpeed(String.valueOf(dto.getSpeed2() * 0.01)); data.setSmallCraneSpeed(Convert.toStr(dto.getSpeed1()));
entity.setSmallCraneMainHookLoad(String.valueOf(dto.getNeiweight1() * 0.01)); //data.setSecondSmallCraneRange(null);
entity.setSmallCraneMainHookHeight(String.valueOf(dto.getDistance5() * 0.01)); data.setSecondSmallCraneSpeed(Convert.toStr(dto.getSpeed2()));
entity.setSmallCraneAuxiliaryHookLoad(String.valueOf(dto.getDistance6() * 0.01)); data.setSmallCraneMainHookLoad(Convert.toStr(dto.getNeiweight1()));
entity.setSmallCraneAuxiliaryHookHeight(null); data.setSmallCraneMainHookHeight(dto.getDistance5());
entity.setSecondSmallCraneMainHookLoad(String.valueOf(dto.getNeiweight2() * 0.01)); //data.setSmallCraneAuxiliaryHookLoad(Convert.toStr(dto.getDistance6()));
entity.setSecondSmallCraneMainHookHeight(String.valueOf(dto.getDistance6() * 0.01)); //data.setSmallCraneAuxiliaryHookHeight(null);
entity.setSecondSmallCraneAuxiliaryHookLoad(null); data.setSecondSmallCraneMainHookLoad(Convert.toStr(dto.getNeiweight2()));
entity.setSecondSmallCraneAuxiliaryHookHeight(null); data.setSecondSmallCraneMainHookHeight(Convert.toStr(dto.getDistance6()));
entity.setMainHookCurrent(null); //data.setSecondSmallCraneAuxiliaryHookLoad(null);
entity.setMainHookVoltage(null); //data.setSecondSmallCraneAuxiliaryHookHeight(null);
entity.setSecondMainHookCurrent(null); //data.setMainHookCurrent(null);
entity.setSecondMainHookVoltage(null); //data.setMainHookVoltage(null);
entity.setSmallCraneRangeState(null); //data.setSecondMainHookCurrent(null);
entity.setSecondSmallCraneRangeState(null); //data.setSecondMainHookVoltage(null);
entity.setLargeCraneDistanceState(null); //data.setSmallCraneRangeState(null);
entity.setMainHookWeightState(null); //data.setSecondSmallCraneRangeState(null);
entity.setSecondMainHookWeightState(null); //data.setLargeCraneDistanceState(null);
entity.setAuxiliaryHookWeightState(null); //data.setMainHookWeightState(null);
entity.setSecondAuxiliaryHookWeightState(null); //data.setSecondMainHookWeightState(null);
entity.setMainHookHeightState(null); //data.setAuxiliaryHookWeightState(null);
entity.setSecondMainHookHeightState(null); //data.setSecondAuxiliaryHookWeightState(null);
entity.setAuxiliaryHookHeightState(null); //data.setMainHookHeightState(null);
entity.setSecondAuxiliaryHookHeightState(null); //data.setSecondMainHookHeightState(null);
entity.setAngleXState(null); //data.setAuxiliaryHookHeightState(null);
entity.setAngleYState(null); //data.setSecondAuxiliaryHookHeightState(null);
entity.setGatedState(null); //data.setAngleXState(null);
entity.setAntiWindAndNonslipState(null); //data.setAngleYState(null);
entity.setCableReelStatus(null); //data.setGatedState(null);
entity.setLargeCarSafeStatus(null); //data.setAntiWindAndNonslipState(null);
entity.setLargeCarRunStatus(null); //data.setCableReelStatus(null);
entity.setSmallCarRunStatus(null); //data.setLargeCarSafeStatus(null);
entity.setSecondSmallCarRunStatus(null); //data.setLargeCarRunStatus(null);
entity.setMasterHookRunStatus(getMasterHookRunStatus(dto)); //data.setSmallCarRunStatus(null);
entity.setSecondMasterHookRunStatus(getSecondMasterHookRunStatus(dto)); //data.setSecondSmallCarRunStatus(null);
entity.setSubHookRunStatus(null); data.setMasterHookRunStatus(getMasterHookRunStatus(dto));
entity.setSecondSubHookRunStatus(null); data.setSecondMasterHookRunStatus(getSecondMasterHookRunStatus(dto));
entity.setDriverName(null); //data.setSubHookRunStatus(null);
entity.setDriverIdCard(null); //data.setSecondSubHookRunStatus(null);
entity.setTotalDay(getTotalDay(dto.getCumulativeWorkingTime())); //data.setDriverName(null);
entity.setTotalTimes(getTotalTimes(dto.getCumulativeWorkingTime())); //data.setDriverIdCard(null);
entity.setPowerOnDay(String.valueOf(dto.getWorkTime())); data.setTotalDay(getTotalDay(dto.getCumulativeWorkingTime()));
entity.setPowerOnTimes(String.valueOf(dto.getWorkTime())); data.setTotalTimes(getTotalTimes(dto.getCumulativeWorkingTime()));
gantryCraneCurrentDataMapper.insert(entity); 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) { private String getTotalTimes(Double d) {
if (d == null) { if (d == null) {
@ -164,7 +240,7 @@ public class GantryCraneTask {
if (d == null) { if (d == null) {
return 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) { private Integer getSecondMasterHookRunStatus(GantryCraneCurrentDataDto dto) {

View File

@ -1,6 +1,8 @@
package com.zhgd.xmgl.util; package com.zhgd.xmgl.util;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
public class NumberUtils { public class NumberUtils {
/** /**
@ -42,6 +44,23 @@ public class NumberUtils {
return b1 != null && b2 != null && b1 >= b2; 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; 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;
}
} }