diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/TunnelBoringMachineCurrentDataMapper.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/TunnelBoringMachineCurrentDataMapper.java index 8286c092e..bbe2e9c0a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/TunnelBoringMachineCurrentDataMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/TunnelBoringMachineCurrentDataMapper.java @@ -26,5 +26,7 @@ public interface TunnelBoringMachineCurrentDataMapper extends BaseMapper map); + TunnelBoringMachineCurrentData getFirstDataByMonth(Map map); + TunnelBoringMachineCurrentData getFirstData(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/xml/TunnelBoringMachineAlarmMapper.xml b/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/xml/TunnelBoringMachineAlarmMapper.xml index 0b292a6d3..9dfaa66b5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/xml/TunnelBoringMachineAlarmMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/mapper/xml/TunnelBoringMachineAlarmMapper.xml @@ -5,7 +5,7 @@ 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 * + from tunnel_boring_machine_current_data + where project_sn = #{projectSn} and device_sn = #{deviceSn} AND DATE_FORMAT(report_time,'%Y-%m') = #{time} + limit 1 + + \ No newline at end of file diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/ITunnelBoringMachineCurrentDataService.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/ITunnelBoringMachineCurrentDataService.java index 8bf9255de..362c69fa1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/ITunnelBoringMachineCurrentDataService.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/ITunnelBoringMachineCurrentDataService.java @@ -27,5 +27,6 @@ public interface ITunnelBoringMachineCurrentDataService extends IService map); + TunnelBoringMachineStatVo getStatData(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TunnelBoringMachineCurrentDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TunnelBoringMachineCurrentDataServiceImpl.java index 091388c51..e6d4633a2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TunnelBoringMachineCurrentDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TunnelBoringMachineCurrentDataServiceImpl.java @@ -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 map) { + TunnelBoringMachineCurrentData lastData = baseMapper.getLastData(map); + if (lastData == null) { + return new TunnelBoringMachineCurrentDataVo(); + } + return dataBuilder1(lastData); + } + @Override public TunnelBoringMachineStatVo getStatData(Map 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.lambdaQuery() .eq(TunnelBoringMachine::getProjectSn, projectSn) .eq(TunnelBoringMachine::getDevSn, deviceSn)); @@ -269,12 +274,11 @@ public class TunnelBoringMachineCurrentDataServiceImpl extends ServiceImpl 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 dayList = DateUtils.getNowFewDaysAgoList(15); List resultList = new ArrayList<>(); for (String s : dayList) { @@ -294,6 +298,56 @@ public class TunnelBoringMachineCurrentDataServiceImpl extends ServiceImpl list = tunnelBoringMachineAlarmService.list(Wrappers.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); diff --git a/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java b/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java index 716691326..978000fd4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java @@ -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 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java index 38f3b04d2..b73340c48 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java @@ -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 data = new HashMap<>(16); List 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 groupList = videoGroupMapper.selectVideoGroupList(map); diff --git a/src/main/java/com/zhgd/xmgl/task/TunnelBoringMachineTask.java b/src/main/java/com/zhgd/xmgl/task/TunnelBoringMachineTask.java index 313ed5952..b87b17c37 100644 --- a/src/main/java/com/zhgd/xmgl/task/TunnelBoringMachineTask.java +++ b/src/main/java/com/zhgd/xmgl/task/TunnelBoringMachineTask.java @@ -69,23 +69,23 @@ public class TunnelBoringMachineTask { Map 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.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 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.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); + } }