bug修复

This commit is contained in:
guo 2023-12-26 10:25:54 +08:00
parent b4ac183029
commit fb21ee1fc3
10 changed files with 327 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.rt.entity.RtWorkTicket;
import com.zhgd.xmgl.modules.rt.entity.vo.CountRtWorkTicketVo;
import com.zhgd.xmgl.modules.rt.service.IRtWorkTicketService;
import com.zhgd.xmgl.modules.video.entity.VideoItem;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -129,4 +130,14 @@ public class RtWorkTicketController {
public Result<CountRtWorkTicketVo> countRtWorkTicket(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
return Result.success(rtWorkTicketService.countRtWorkTicket(paramMap));
}
@ApiOperation(value = "列表查询查询监控点预览取流URL列表海康", notes = "列表查询查询监控点预览取流URL列表海康", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "rtWorkTicketId", value = "榕图-工作票id", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = false, dataType = "String"),
})
@GetMapping(value = "/queryPlayUrlFromHikvision")
public Result<List<VideoItem>> queryPlayUrlFromHikvision(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
return Result.success(rtWorkTicketService.queryPlayUrlFromHikvision(paramMap));
}
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.xmgl.modules.rt.entity.RtWorkTicket;
import com.zhgd.xmgl.modules.rt.entity.vo.CountRtWorkTicketVo;
import com.zhgd.xmgl.modules.video.entity.VideoItem;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
@ -27,4 +28,6 @@ public interface RtWorkTicketMapper extends BaseMapper<RtWorkTicket> {
List<RtWorkTicket> queryList(@Param(Constants.WRAPPER) QueryWrapper<RtWorkTicket> queryWrapper);
CountRtWorkTicketVo countRtWorkTicket(HashMap<String, Object> paramMap);
List<VideoItem> selectProjectVideoList(HashMap<String, Object> paramMap);
}

View File

@ -35,4 +35,18 @@
from rt_work_ticket
where project_sn = #{projectSn}) t
</select>
<select id="selectProjectVideoList" resultType="com.zhgd.xmgl.modules.video.entity.VideoItem">
SELECT t1.*
FROM video_item t1
INNER JOIN project_video_config t2 ON t2.id = t1.video_id
inner join rt_work_ticket_to_video_item rwttvi ON t1.item_id = rwttvi.video_item_id
WHERE t2.is_enable = 1
and t2.project_sn = #{projectSn}
<if test="rtWorkTicketId != null and rtWorkTicketId != ''">
and rwttvi.rt_work_ticket_id = #{rtWorkTicketId}
</if>
GROUP BY t1.item_id
order by t1.sort_num
</select>
</mapper>

View File

@ -4,6 +4,7 @@ import com.zhgd.xmgl.modules.rt.entity.RtWorkTicket;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.xmgl.modules.rt.entity.vo.CountRtWorkTicketVo;
import com.zhgd.xmgl.modules.video.entity.VideoItem;
import java.util.HashMap;
import java.util.List;
@ -27,4 +28,6 @@ public interface IRtWorkTicketService extends IService<RtWorkTicket> {
void delete(HashMap<String, Object> map);
CountRtWorkTicketVo countRtWorkTicket(HashMap<String, Object> paramMap);
List<VideoItem> queryPlayUrlFromHikvision(HashMap<String, Object> paramMap);
}

View File

@ -10,7 +10,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import com.zhgd.xmgl.modules.project.mapper.ProjectVideoConfigMapper;
import com.zhgd.xmgl.modules.rt.entity.RtRiskSecurityLibraryType;
import com.zhgd.xmgl.modules.rt.entity.RtWorkTicket;
@ -21,15 +23,20 @@ import com.zhgd.xmgl.modules.rt.mapper.*;
import com.zhgd.xmgl.modules.rt.service.IRtWorkTicketService;
import com.zhgd.xmgl.modules.video.entity.VideoItem;
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
import com.zhgd.xmgl.modules.video.service.IVideoItemService;
import com.zhgd.xmgl.modules.video.service.impl.VideoItemServiceImpl;
import com.zhgd.xmgl.util.HikVideoUtil;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.concurrent.Future;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -55,7 +62,9 @@ public class RtWorkTicketServiceImpl extends ServiceImpl<RtWorkTicketMapper, RtW
@Autowired
private ProjectVideoConfigMapper projectVideoConfigMapper;
@Autowired
private RtRiskSecurityLibraryTypeConcreteMapper rtRiskSecurityLibraryTypeConcreteMapper;
private RtRiskSecurityLibraryTypeConcreteMapper rtiskSecurityLibraryTypeConcreteMapper;
@Autowired
private VideoItemServiceImpl videoItemService;
@Override
@ -183,4 +192,21 @@ public class RtWorkTicketServiceImpl extends ServiceImpl<RtWorkTicketMapper, RtW
public CountRtWorkTicketVo countRtWorkTicket(HashMap<String, Object> paramMap) {
return baseMapper.countRtWorkTicket(paramMap);
}
@Override
public List<VideoItem> queryPlayUrlFromHikvision(HashMap<String, Object> paramMap) {
ProjectVideoConfig videoConfig = videoItemService.getEnableProjectVideoConfigByProjectSn(paramMap);
if (videoConfig == null) {
return null;
}
List<VideoItem> videoList = baseMapper.selectProjectVideoList(paramMap);
for (VideoItem videoItem : videoList) {
if (StringUtils.isNotEmpty(videoItem.getSerialNumber())) {
String url = HikVideoUtil.callPostApiGetPreviewURL(videoItem.getSerialNumber(), "hls", null, videoConfig.getAccount(),
videoConfig.getPassword(), videoConfig.getAppId(), videoConfig.getAppSecret());
videoItem.setPlayUrl(url);
}
}
return videoList;
}
}

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -187,4 +186,7 @@ public class VideoItem implements Serializable {
@ApiModelProperty(value = "报警总数")
private java.lang.Integer alarmCount;
@TableField(exist = false)
@ApiModelProperty(value = "海康视频播放urlm3u8")
private java.lang.String playUrl;
}

View File

@ -546,7 +546,7 @@ public class VideoItemServiceImpl extends ServiceImpl<VideoItemMapper, VideoItem
* @param map
* @return
*/
private ProjectVideoConfig getEnableProjectVideoConfigByProjectSn(Map<String, Object> map) {
public ProjectVideoConfig getEnableProjectVideoConfigByProjectSn(Map<String, Object> map) {
QueryWrapper<ProjectVideoConfig> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ProjectVideoConfig::getProjectSn, MapUtils.getString(map, "projectSn"))
.eq(ProjectVideoConfig::getIsEnable, 1);

View File

@ -277,6 +277,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/xmgl/rtTool/updateRtToolStatus").permitAll()
.antMatchers("/xmgl/rtWorkTicket/countRtWorkTicket").permitAll()
.antMatchers("/xmgl/rtWorkTicket/page").permitAll()
.antMatchers("/xmgl/rtWorkTicket/queryPlayUrlFromHikvision").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
.anyRequest().authenticated() // 剩下所有的验证都需要验证
.and()

View File

@ -0,0 +1,148 @@
package com.zhgd.xmgl.task;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.jeecg.common.util.pass.HttpUtils;
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCrane;
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCraneCurrentData;
import com.zhgd.xmgl.modules.bigdevice.mapper.GantryCraneCurrentDataMapper;
import com.zhgd.xmgl.modules.bigdevice.mapper.GantryCraneMapper;
import com.zhgd.xmgl.task.dto.GantryCraneCurrentDataDto;
import lombok.extern.slf4j.Slf4j;
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 java.util.Date;
import java.util.HashMap;
import java.util.Objects;
/**
* 龙门吊定时任务
*/
@Slf4j
@Component
public class GantryCraneTask {
@Autowired
GantryCraneCurrentDataMapper gantryCraneCurrentDataMapper;
@Autowired
GantryCraneMapper gantryCraneMapper;
/**
* 定时获取实时数据
*/
@SchedulerLock(name = "getGantryCraneTaskData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 5)
@Scheduled(cron = "0 5 * * * ?")
public void getGantryCraneTaskData() {
log.info("getGantryCraneTaskData任务执行");
HashMap<String, Object> pMap = new HashMap<>();
pMap.put("uuid", "");
pMap.put("time", "");
pMap.put("interval", "");
String rs = HttpUtils.postJson("", pMap);
String uuid = null;
GantryCrane gc = gantryCraneMapper.selectOne(new LambdaQueryWrapper<GantryCrane>()
.eq(GantryCrane::getDevSn, uuid));
if (gc == null) {
//
}
GantryCraneCurrentDataDto dto = new GantryCraneCurrentDataDto();
GantryCraneCurrentData entity = new GantryCraneCurrentData();
entity.setDevSn(uuid);
entity.setProjectSn(gc.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()));
entity.setLargeCraneSpeed(String.valueOf(dto.getSpeed1()));
entity.setSmallCraneRange(null);
entity.setSmallCraneSpeed(String.valueOf(dto.getSpeed1()));
entity.setSecondSmallCraneRange(null);
entity.setSecondSmallCraneSpeed(String.valueOf(dto.getSpeed2()));
entity.setSmallCraneMainHookLoad(String.valueOf(dto.getNeiweight1()));
entity.setSmallCraneMainHookHeight(String.valueOf(dto.getDistance5()));
entity.setSmallCraneAuxiliaryHookLoad(String.valueOf(dto.getDistance6()));
entity.setSmallCraneAuxiliaryHookHeight(null);
entity.setSecondSmallCraneMainHookLoad(String.valueOf(dto.getNeiweight2()));
entity.setSecondSmallCraneMainHookHeight(String.valueOf(dto.getDistance6()));
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(String.valueOf(dto.getCumulativeWorkingTime()));
entity.setTotalTimes(String.valueOf(dto.getCumulativeWorkingTime()));
entity.setPowerOnDay(String.valueOf(dto.getWorkTime()));
entity.setPowerOnTimes(String.valueOf(dto.getWorkTime()));
//gantryCraneCurrentDataMapper.insert(entity);
}
private Integer getSecondMasterHookRunStatus(GantryCraneCurrentDataDto dto) {
//小车2主钩运行状态 0:停止 1:上升 2:下降 3:故障
if (Objects.equals(dto.getOP1bit6(), 0) || Objects.equals(dto.getOP1bit7(), 0)) {
return 0;
} else if (Objects.equals(dto.getOP1bit6(), 1)) {
return 1;
} else if (Objects.equals(dto.getOP1bit7(), 1)) {
return 2;
}
return null;
}
private Integer getMasterHookRunStatus(GantryCraneCurrentDataDto dto) {
//主钩运行状态 0:停止 1:上升 2:下降 3:故障
if (Objects.equals(dto.getOP1bit0(), 0) || Objects.equals(dto.getOP1bit1(), 0)) {
return 0;
} else if (Objects.equals(dto.getOP1bit0(), 1)) {
return 1;
} else if (Objects.equals(dto.getOP1bit1(), 1)) {
return 2;
}
return null;
}
private Integer getWindSpeedState(String al1bit5) {
if (StrUtil.isBlank(al1bit5)) {
return null;
}
switch (al1bit5) {
case "0":
return 0;
case "1":
return 2;
}
return null;
}
}

View File

@ -0,0 +1,116 @@
package com.zhgd.xmgl.task.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class GantryCraneCurrentDataDto {
@JsonProperty("DevID")
private String devID;
@JsonProperty("DevType")
private String devType;
@JsonProperty("WorkTime")
private Double workTime;
@JsonProperty("CumulativeWorkingTime")
private Double cumulativeWorkingTime;
@JsonProperty("OperatingCycleNumber")
private Long operatingCycleNumber;
@JsonProperty("Neiweight1")
private Long neiweight1;
@JsonProperty("Neiweight2")
private Long neiweight2;
@JsonProperty("Neiweight5")
private Long neiweight5;
@JsonProperty("Distance5")
private Double distance5;
@JsonProperty("Distance6")
private Double distance6;
@JsonProperty("Distance7")
private Long distance7;
@JsonProperty("Distance10")
private Double distance10;
@JsonProperty("Distance11")
private Double distance11;
@JsonProperty("Distance12")
private Double distance12;
@JsonProperty("Distance13")
private Long distance13;
@JsonProperty("Distance14")
private Long distance14;
@JsonProperty("Wind1")
private Long wind1;
@JsonProperty("Wind2")
private Long wind2;
@JsonProperty("Speed1")
private Long speed1;
@JsonProperty("Speed2")
private Long speed2;
@JsonProperty("BRbit0")
private String bRbit0;
@JsonProperty("BRbit1")
private String bRbit1;
@JsonProperty("BRbit2")
private String bRbit2;
@JsonProperty("BRbit3")
private String bRbit3;
@JsonProperty("LI1bit0")
private String lI1bit0;
@JsonProperty("LI1bit1")
private String lI1bit1;
@JsonProperty("LI1bit2")
private String lI1bit2;
@JsonProperty("LI1bit3")
private String lI1bit3;
@JsonProperty("LI1bit8")
private String lI1bit8;
@JsonProperty("LI1bit10")
private String lI1bit10;
@JsonProperty("LI1bit12")
private String lI1bit12;
@JsonProperty("LI1bit13")
private String lI1bit13;
@JsonProperty("LI2bit0")
private String lI2bit0;
@JsonProperty("LI2bit3")
private String lI2bit3;
@JsonProperty("LI2bit4")
private String lI2bit4;
@JsonProperty("LI2bit5")
private String lI2bit5;
@JsonProperty("AL1bit0")
private String aL1bit0;
@JsonProperty("AL1bit1")
private String aL1bit1;
@JsonProperty("AL1bit4")
private String aL1bit4;
@JsonProperty("AL1bit5")
private String aL1bit5;
@JsonProperty("AL1bit12")
private String aL1bit12;
@JsonProperty("AL1bit13")
private String aL1bit13;
@JsonProperty("AL2bit0")
private String aL2bit0;
@JsonProperty("OP1bit0")
private String oP1bit0;
@JsonProperty("OP1bit1")
private String oP1bit1;
@JsonProperty("OP1bit6")
private String oP1bit6;
@JsonProperty("OP1bit7")
private String oP1bit7;
@JsonProperty("OP2bit0")
private String oP2bit0;
@JsonProperty("OP2bit1")
private String oP2bit1;
@JsonProperty("OP2bit6")
private String oP2bit6;
@JsonProperty("OP2bit7")
private String oP2bit7;
@JsonProperty("OP3bit0")
private String oP3bit0;
@JsonProperty("OP3bit1")
private String oP3bit1;
}