fuliqi
2024-10-10 d268f82d25c25ebdc7a1ea30614f6cda6d3a9ae3
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -56,6 +56,11 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
@@ -758,9 +763,10 @@
    @Override
    public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) {
    public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception {
        String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId);
        String result = HttpUtils.sendGet(url);
        log.info("拿到取流响应结果:" + result);
        WVPResult wvpResult = JSON.parseObject(result, WVPResult.class);
        String imgUrl = null;
        if (wvpResult.getCode() == 0) {
@@ -773,8 +779,6 @@
                    grabber = new FFmpegFrameGrabber(rtspUrl);
//                    grabber.setOption("rtsp_transport", "tcp"); // 使用tcp的方式,不然会丢包很严重
//                    grabber.setVideoOption("probesize", "10000"); // 设置捕获分析的最大字节
                    //设置10s超时
                    grabber.setTimeout(10000);
                    grabber.start();
                    Frame frame = grabber.grabImage(); // 直接捕获一帧
                    if (frame != null) {
@@ -813,14 +817,14 @@
    }
    @Override
    public void saveFrameImgByDevice(String deviceId, String channelId, String workOrderNo) {
    public void saveFrameImgByDevice (String deviceId, String channelId, String workOrderNo){
        String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId);
        String result = HttpUtils.sendGet(url);
        WVPResult wvpResult = JSON.parseObject(result, WVPResult.class);
        String imgUrl = null;
        if (wvpResult.getCode() == 0) {
            JSONObject data = (JSONObject) wvpResult.getData();
            String rtspUrl = data.getString("fmp4"); // 取mp4地址
            String rtspUrl = data.getString("rtsp"); // 取mp4地址
            if (StringUtils.hasText(rtspUrl)) {
                System.out.println("目标地址:" + rtspUrl);
                FFmpegFrameGrabber grabber = null;
@@ -874,13 +878,13 @@
    }
    @Override
    public List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end) {
    public List<DeviceInfoVO> hasErrorWorkOrderList (Date start, Date end){
        List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList(start, end);
        return list;
    }
    @Override
    public void updateImgById(Integer workOrderId, String imgPath) {
    public void updateImgById (Integer workOrderId, String imgPath){
        new LambdaUpdateChainWrapper<>(baseMapper)
                .eq(WorkOrder::getId, workOrderId)
                .set(WorkOrder::getYwCheckResult, imgPath)
@@ -888,7 +892,7 @@
    }
    @Override
    public Result processImg(String workOrderNo) {
    public Result processImg (String workOrderNo){
        WorkOrder workOrder = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(WorkOrder::getWorkOrderNo, workOrderNo)
                .one();
@@ -929,7 +933,7 @@
    }
    @Override
    public Result detailByNo(String workOrderNo) {
    public Result detailByNo (String workOrderNo){
        WorkOrderDetailVO workOrder = baseMapper.detailByNo(workOrderNo);
        // 是否报备
        boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
@@ -951,7 +955,7 @@
    }
    @Override
    public List<WorkOrderVO> export(WorkOrderExportQuery query) {
    public List<WorkOrderVO> export (WorkOrderExportQuery query){
        query.setUnitId(SecurityUtils.getUnitId());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (query.getStart() == null) {