盾构机优化

This commit is contained in:
pengjie 2025-02-21 16:28:02 +08:00
parent 4806ed1b60
commit bb15bed6b9
8 changed files with 145 additions and 38 deletions

View File

@ -26,5 +26,7 @@ public interface TunnelBoringMachineCurrentDataMapper extends BaseMapper<TunnelB
TunnelBoringMachineCurrentData getLastData(Map<String, Object> map);
TunnelBoringMachineCurrentData getFirstDataByMonth(Map<String, Object> map);
TunnelBoringMachineCurrentData getFirstData(Map<String, Object> map);
}

View File

@ -5,7 +5,7 @@
<select id="pageList" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineAlarm">
select * from (select t.*, d.dev_name deviceName
from tunnel_boring_machine_alarm t left join tunnel_boring_machine d on t.dev_sn = d.dev_sn) a
${ew.customSqlSegment}
${ew.customSqlSegment} order by alarm_time desc
</select>
<select id="getNewAlarm" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineAlarm">

View File

@ -5,7 +5,7 @@
<select id="pageList" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineCurrentData">
select * from (select t.*, d.dev_name deviceName
from tunnel_boring_machine_current_data t left join tunnel_boring_machine d on t.device_sn = d.dev_sn) a
${ew.customSqlSegment}
${ew.customSqlSegment} order by report_time desc
</select>
<select id="getLastData" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineCurrentData"
@ -17,12 +17,19 @@
limit 1
</select>
<select id="getFirstDataByMonth" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineCurrentData"
parameterType="map">
select *
from tunnel_boring_machine_current_data
where project_sn = #{projectSn} and device_sn = #{deviceSn} AND DATE_FORMAT(report_time,'%Y-%m') = #{time}
limit 1
</select>
<select id="getFirstData" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineCurrentData"
parameterType="map">
select *
from tunnel_boring_machine_current_data
where project_sn = #{projectSn} and device_sn = #{deviceSn}
ORDER BY report_time
where project_sn = #{projectSn} and device_sn = #{deviceSn} AND DATE_FORMAT(report_time,'%Y-%m-%d') = #{time}
limit 1
</select>
</mapper>

View File

@ -27,5 +27,6 @@ public interface ITunnelBoringMachineCurrentDataService extends IService<TunnelB
TunnelBoringMachineCurrentDataVo getLastData(Map<String, Object> map);
TunnelBoringMachineStatVo getStatData(Map<String, Object> map);
}

View File

@ -11,10 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.healthmarketscience.jackcess.impl.expr.BigDecimalValue;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachine;
import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineCurrentData;
import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineStat;
import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineWarning;
import com.zhgd.xmgl.modules.bigdevice.entity.*;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TunnelBoringMachineCurrentDataVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TunnelBoringMachineStatVo;
import com.zhgd.xmgl.modules.bigdevice.mapper.TunnelBoringMachineCurrentDataMapper;
@ -253,11 +250,19 @@ public class TunnelBoringMachineCurrentDataServiceImpl extends ServiceImpl<Tunne
return dataBuilder(lastData);
}
private TunnelBoringMachineCurrentDataVo getLastData1(Map<String, Object> map) {
TunnelBoringMachineCurrentData lastData = baseMapper.getLastData(map);
if (lastData == null) {
return new TunnelBoringMachineCurrentDataVo();
}
return dataBuilder1(lastData);
}
@Override
public TunnelBoringMachineStatVo getStatData(Map<String, Object> map) {
String projectSn = MapUtils.getString(map, "projectSn");
String deviceSn = MapUtils.getString(map, "deviceSn");
TunnelBoringMachineCurrentDataVo lastData = getLastData(map);
TunnelBoringMachineCurrentDataVo lastData = getLastData1(map);
TunnelBoringMachine tunnelBoringMachine = tunnelBoringMachineMapper.selectOne(Wrappers.<TunnelBoringMachine>lambdaQuery()
.eq(TunnelBoringMachine::getProjectSn, projectSn)
.eq(TunnelBoringMachine::getDevSn, deviceSn));
@ -269,12 +274,11 @@ public class TunnelBoringMachineCurrentDataServiceImpl extends ServiceImpl<Tunne
TunnelBoringMachineStatVo tunnelBoringMachineStatVo = new TunnelBoringMachineStatVo();
tunnelBoringMachineStatVo.setTotalMileage(tunnelBoringMachine.getTotalMileage());
tunnelBoringMachineStatVo.setTotalNumber(tunnelBoringMachine.getTotalNumber());
tunnelBoringMachineStatVo.setNumberByDay(machineStatList.stream().filter(m -> m.getCreateTime().equals(DateUtil.parseDate(DateUtil.formatDate(new Date()))))
.map(m -> m.getNumber()).mapToInt(Integer::intValue).sum());
tunnelBoringMachineStatVo.setNumberByMonth(machineStatList.stream().map(m -> m.getNumber()).mapToInt(Integer::intValue).sum());
tunnelBoringMachineStatVo.setNumberByDay(lastData.getDayNumber());
tunnelBoringMachineStatVo.setNumberByMonth(lastData.getMonthNumber());
tunnelBoringMachineStatVo.setTunnelBoringMachineCurrentDataVo(lastData);
tunnelBoringMachineStatVo.setCompleteRatio(tunnelBoringMachine.getTotalNumber() == null ? "0" : new BigDecimal(lastData.getCurrentNumber()).divide(new BigDecimal(tunnelBoringMachine.getTotalNumber()),
2,BigDecimal.ROUND_HALF_UP).toString());
3,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString());
List<String> dayList = DateUtils.getNowFewDaysAgoList(15);
List<TunnelBoringMachineStat> resultList = new ArrayList<>();
for (String s : dayList) {
@ -294,6 +298,56 @@ public class TunnelBoringMachineCurrentDataServiceImpl extends ServiceImpl<Tunne
return tunnelBoringMachineStatVo;
}
private TunnelBoringMachineCurrentDataVo dataBuilder1(TunnelBoringMachineCurrentData tunnelBoringMachineCurrentData) {
TunnelBoringMachineCurrentDataVo tunnelBoringMachineCurrentDataVo = new TunnelBoringMachineCurrentDataVo();
BeanUtils.copyProperties(tunnelBoringMachineCurrentData, tunnelBoringMachineCurrentDataVo);
List<TunnelBoringMachineAlarm> list = tunnelBoringMachineAlarmService.list(Wrappers.<TunnelBoringMachineAlarm>lambdaQuery()
.ge(TunnelBoringMachineAlarm::getAlarmTime, DateUtil.beginOfDay(new Date()))
.le(TunnelBoringMachineAlarm::getAlarmTime, DateUtil.endOfDay(new Date())));
String [] alarmType = {"normal", "yellow", "red"};
for (TunnelBoringMachineAlarm tunnelBoringMachineAlarm : list) {
Integer alarm = 0;
for (int i = 0; i < alarmType.length; i++) {
if (alarmType[i].equals(tunnelBoringMachineAlarm.getType())) {
alarm = i;
}
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("刀盘扭矩")) {
tunnelBoringMachineCurrentDataVo.setCutterheadTorqueType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("刀盘水平偏差")) {
tunnelBoringMachineCurrentDataVo.setCutterheadHorizontalDeviationType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("刀盘垂直偏差")) {
tunnelBoringMachineCurrentDataVo.setCutterheadVerticalDeviationType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("盾尾水平偏差")) {
tunnelBoringMachineCurrentDataVo.setShieldHorizontalDeviationType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("盾尾垂直偏差")) {
tunnelBoringMachineCurrentDataVo.setShieldVerticalDeviationType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("刀盘转速")) {
tunnelBoringMachineCurrentDataVo.setCutterheadSpeedType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("总推力")) {
tunnelBoringMachineCurrentDataVo.setTotalThrustType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("推进速度")) {
tunnelBoringMachineCurrentDataVo.setAdvanceSpeedType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("滚动角")) {
tunnelBoringMachineCurrentDataVo.setRollPositionType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("舱压")) {
tunnelBoringMachineCurrentDataVo.setCabinPressureType(alarm);
}
if (tunnelBoringMachineAlarm.getAlarmType().equals("注浆状态")) {
tunnelBoringMachineCurrentDataVo.setGroutingStatusType(alarm);
}
}
return tunnelBoringMachineCurrentDataVo;
}
private TunnelBoringMachineCurrentDataVo dataBuilder(TunnelBoringMachineCurrentData tunnelBoringMachineCurrentData) {
TunnelBoringMachineCurrentDataVo tunnelBoringMachineCurrentDataVo = new TunnelBoringMachineCurrentDataVo();
BeanUtils.copyProperties(tunnelBoringMachineCurrentData, tunnelBoringMachineCurrentDataVo);

View File

@ -151,6 +151,16 @@ public class VideoItem implements Serializable {
*/
@ApiModelProperty(value = "AI分析硬件设备id")
private String aiHardwareId;
/**
* AI分析画面播放路径
*/
@ApiModelProperty(value = "AI分析画面播放路径")
private String aiVideoUrl;
/**
* 监控密码
*/
@ApiModelProperty(value = "监控密码")
private String videoPassword;
/**
* 项目sn
*/

View File

@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.video.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@ -391,11 +392,30 @@ public class VideoItemServiceImpl extends ServiceImpl<VideoItemMapper, VideoItem
Map<String, Object> data = new HashMap<>(16);
List<EntityMap> videoList = videoItemMapper.selectProjectVideoList(map);
if (videoList.size() > 0 && String.valueOf(TOWER.getCode()).equals(MapUtils.getString(videoList.get(0), VIDEO_TYPE))) {
String token = YsVideoUtil.getToken(MapUtils.getString(videoList.get(0), "appId"), MapUtils.getString(videoList.get(0), "appSecret"));
String token = "";
if (MapUtils.getString(videoList.get(0), "appId").equals("noexist")) {
JSONObject body = new JSONObject();
body.put("secretKey", "z2YU1t7GRif9oJn/1dkKwG8VAPiAu1+u4m6vy5Cnb1nZGXdOlCQGxOsjkdpaXnBOr9AyDD0LrOhy8ogOMpgh6A==");
body.put("name", "swzk");
String result = HttpRequest.post("https://trans.tbmcloud.com.cn/trans/sentYSToken/ex/getToken")
.body(JSON.toJSONString(body))
.execute()
.body();
token = JSONObject.parseObject(result).getJSONObject("data").getString("accessToken");
} else {
token = YsVideoUtil.getToken(MapUtils.getString(videoList.get(0), "appId"), MapUtils.getString(videoList.get(0), "appSecret"));
}
for (EntityMap entityMap : videoList) {
entityMap.put("token", token);
entityMap.put("url", "ezopen://open.ys7.com/" + MapUtils.getString(entityMap, "serialNumber") + "/" +
MapUtils.getString(entityMap, "verificationCode") + ".hd.live");
String videoPassword = MapUtils.getString(entityMap, "videoPassword");
if (StringUtils.isNotBlank(videoPassword)) {
entityMap.put("url", "ezopen://" + videoPassword +"@open.ys7.com/" + MapUtils.getString(entityMap, "serialNumber") + "/" +
MapUtils.getString(entityMap, "verificationCode") + ".hd.live");
} else {
entityMap.put("url", "ezopen://open.ys7.com/" + MapUtils.getString(entityMap, "serialNumber") + "/" +
MapUtils.getString(entityMap, "verificationCode") + ".hd.live");
}
}
}
List<EntityMap> groupList = videoGroupMapper.selectVideoGroupList(map);

View File

@ -69,23 +69,23 @@ public class TunnelBoringMachineTask {
Map<String, Object> map = new HashMap<>();
map.put("projectSn", tunnelBoringMachine.getProjectSn());
map.put("deviceSn", tunnelBoringMachine.getDevSn());
map.put("time", DateUtil.formatDate(new Date()));
TunnelBoringMachineCurrentData lastData = tunnelBoringMachineCurrentDataMapper.getLastData(map);
TunnelBoringMachineCurrentData firstData = tunnelBoringMachineCurrentDataMapper.getFirstData(map);
TunnelBoringMachineStat tunnelBoringMachineStat = new TunnelBoringMachineStat();
tunnelBoringMachineStat.setProjectSn(tunnelBoringMachine.getProjectSn());
tunnelBoringMachineStat.setDevSn(tunnelBoringMachine.getDevSn());
tunnelBoringMachineStat.setCreateTime(DateUtil.parseDate(DateUtil.formatDate(new Date())));
if (lastData == null || firstData == null) {
tunnelBoringMachineStat.setNumber(0);
if (lastData != null && DateUtil.formatDate(lastData.getReportTime()).equals(DateUtil.formatDate(new Date()))) {
tunnelBoringMachineStat.setNumber(lastData.getDayNumber());
} else {
tunnelBoringMachineStat.setNumber(lastData.getCurrentNumber() - firstData.getCurrentNumber());
tunnelBoringMachineStat.setNumber(0);
}
list.add(tunnelBoringMachineStat);
}
tunnelBoringMachineStatService.saveBatch(list);
}
// @Scheduled(cron = "0/30 * * * * ?")
@Scheduled(cron = "0/30 * * * * ?")
@RequestMapping("getTunnelBoringMachineAlarm")
public void getTunnelBoringMachineAlarm() {
log.info("获取盾构机报警数据开始任务");
@ -105,7 +105,7 @@ public class TunnelBoringMachineTask {
body.put("secretKey", "Xvt875SvK8zz7F+3Lj0faInIyd800TK0wGXt5GcaL4JubaXuwmlLoMXKXj7M9A21FxNB12mqhGqZnzW8ZSZHxQ==");
body.put("tbmCode", tunnelBoringMachine.getDevSn());
body.put("name", "ysej");
String result = HttpRequest.post("https://trans.tbmcloud.com.cn/tbmcenter-trans/trans/alarm/ex/getCurrent")
String result = HttpRequest.post("https://trans.tbmcloud.com.cn/trans/alarm/ex/getCurrent")
.body(JSON.toJSONString(body))
.timeout(2000)
.execute()
@ -145,6 +145,13 @@ public class TunnelBoringMachineTask {
tunnelBoringMachineAlarm.setAlarmValue(obj.getDouble("aramValue"));
tunnelBoringMachineAlarm.setLine(tunnelBoringMachine.getLine());
tunnelBoringMachineAlarm.setAlarmTime(new Date(obj.getLong("timestamp")));
TunnelBoringMachineAlarm exist = tunnelBoringMachineAlarmMapper.selectOne(Wrappers.<TunnelBoringMachineAlarm>lambdaQuery()
.eq(TunnelBoringMachineAlarm::getDevSn, tunnelBoringMachineAlarm.getDevSn())
.eq(TunnelBoringMachineAlarm::getAlarmTime, tunnelBoringMachineAlarm.getAlarmTime()));
// tunnelBoringMachineCurrentData.setWorkerStatus();
if (exist != null) {
return;
}
tunnelBoringMachineAlarmMapper.insert(tunnelBoringMachineAlarm);
}
}
@ -173,15 +180,11 @@ public class TunnelBoringMachineTask {
body.put("name", "ysej");
String result = HttpRequest.post("https://trans.tbmcloud.com.cn/trans/transGetRealData/ex/getRealData")
.body(JSON.toJSONString(body))
.timeout(2000)
.execute()
.body();
JSONObject jsonObject = JSONObject.parseObject(result);
if (jsonObject != null || jsonObject.getInteger("code") == 200) {
TunnelBoringMachineCurrentData tunnelBoringMachineCurrentData = new TunnelBoringMachineCurrentData();
PoisonousGasDevCurrentData poisonousGasDevCurrentData = new PoisonousGasDevCurrentData();
poisonousGasDevCurrentData.setDevSn(tunnelBoringMachine.getDevSn());
poisonousGasDevCurrentData.setProjectSn(tunnelBoringMachine.getProjectSn());
tunnelBoringMachineCurrentData.setDeviceSn(tunnelBoringMachine.getDevSn());
tunnelBoringMachineCurrentData.setProjectSn(tunnelBoringMachine.getProjectSn());
tunnelBoringMachineCurrentData.setLine(tunnelBoringMachine.getLine());
@ -313,19 +316,13 @@ public class TunnelBoringMachineTask {
tunnelBoringMachineCurrentData.setRightUpGroutingPressure(obj.getDouble("val"));
}
if (obj.getString("colName").equals("螺机O2")) {
poisonousGasDevCurrentData.setGasType(1);
poisonousGasDevCurrentData.setGasVal(obj.getDouble("val"));
poisonousGasDevCurrentData.setUnit(2);
savePoisonousGas(tunnelBoringMachine, 1, 2, obj.getDouble("val"));
}
if (obj.getString("colName").equals("螺机CH4")) {
poisonousGasDevCurrentData.setGasType(2);
poisonousGasDevCurrentData.setGasVal(obj.getDouble("val"));
poisonousGasDevCurrentData.setUnit(1);
savePoisonousGas(tunnelBoringMachine, 2, 1, obj.getDouble("val"));
}
if (obj.getString("colName").equals("螺机CO")) {
poisonousGasDevCurrentData.setGasType(3);
poisonousGasDevCurrentData.setGasVal(obj.getDouble("val"));
poisonousGasDevCurrentData.setUnit(0);
savePoisonousGas(tunnelBoringMachine, 3, 0, obj.getDouble("val"));
}
// if (obj.getString("colName").equals("螺机CO2")) {
// poisonousGasDevCurrentData.setGasType(1);
@ -341,12 +338,20 @@ public class TunnelBoringMachineTask {
Map<String, Object> map = new HashMap<>();
map.put("projectSn", tunnelBoringMachine.getProjectSn());
map.put("deviceSn", tunnelBoringMachine.getDevSn());
map.put("time", DateUtil.formatDate(new Date()));
TunnelBoringMachineCurrentData firstData = tunnelBoringMachineCurrentDataMapper.getFirstData(map);
if (firstData == null) {
tunnelBoringMachineCurrentData.setDayNumber(0);
} else {
tunnelBoringMachineCurrentData.setDayNumber(tunnelBoringMachineCurrentData.getCurrentNumber() - firstData.getCurrentNumber());
}
map.put("time", DateUtil.format(DateUtil.beginOfMonth(new Date()), "yyyy-MM"));
TunnelBoringMachineCurrentData firstDataByMonth = tunnelBoringMachineCurrentDataMapper.getFirstDataByMonth(map);
if (firstDataByMonth == null) {
tunnelBoringMachineCurrentData.setMonthNumber(0);
} else {
tunnelBoringMachineCurrentData.setMonthNumber(tunnelBoringMachineCurrentData.getCurrentNumber() - firstDataByMonth.getCurrentNumber());
}
tunnelBoringMachineCurrentData.setReportTime(DateUtil.parseDateTime(jsonObject.getJSONObject("data").getString("time_str")));
tunnelBoringMachineCurrentData.setCreateTime(new Date());
TunnelBoringMachineCurrentData exist = tunnelBoringMachineCurrentDataMapper.selectOne(Wrappers.<TunnelBoringMachineCurrentData>lambdaQuery()
@ -357,9 +362,17 @@ public class TunnelBoringMachineTask {
return;
}
tunnelBoringMachineCurrentDataMapper.insert(tunnelBoringMachineCurrentData);
poisonousGasDevCurrentData.setUploadTime(new Date());
poisonousGasDevCurrentDataMapper.insert(poisonousGasDevCurrentData);
}
}
private void savePoisonousGas(TunnelBoringMachine tunnelBoringMachine, Integer gasType, Integer unit, double value) {
PoisonousGasDevCurrentData poisonousGasDevCurrentData = new PoisonousGasDevCurrentData();
poisonousGasDevCurrentData.setDevSn(tunnelBoringMachine.getDevSn());
poisonousGasDevCurrentData.setProjectSn(tunnelBoringMachine.getProjectSn());
poisonousGasDevCurrentData.setGasType(gasType);
poisonousGasDevCurrentData.setGasVal(value);
poisonousGasDevCurrentData.setUnit(unit);
poisonousGasDevCurrentData.setUploadTime(new Date());
poisonousGasDevCurrentDataMapper.insert(poisonousGasDevCurrentData);
}
}