From f36efaba44f2108f551336336e437be58c270313 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 周三, 31 5月 2023 17:02:49 +0800
Subject: [PATCH] 提交光电自动定时巡检

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java            |  299 ++++++++++++++++++++++++++++---------------------
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java |   21 ++-
 ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java          |    9 +
 3 files changed, 196 insertions(+), 133 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index a714686..8ffb5d9 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
 import com.ruoyi.device.hiksdk.common.global.globalVariable;
 import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
 import com.ruoyi.device.hiksdk.domain.recordInfo;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
@@ -1293,7 +1294,6 @@
     }
 
     @Override
-    @SdkOperate
     public void recordToMinio(CameraCmd cmd) {
         try {
             String cameraId = cmd.getCameraId();
@@ -1304,6 +1304,17 @@
             }
             Integer userId = globalVariable.loginMap.get(cameraId);
             String path = "";
+            //强制I帧结构体对象
+            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
+            netDvrIFrame.read();
+            netDvrIFrame.dwChannel = channelNum;          //因为上文代码中设置了通道号,按照上文中的设置
+            netDvrIFrame.byStreamType = 0;
+            netDvrIFrame.dwSize = netDvrIFrame.size();
+            netDvrIFrame.write();
+
+            if(!hCNetSDK.NET_DVR_RemoteControl(userId,3402,netDvrIFrame.getPointer(),netDvrIFrame.dwSize)){
+                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+            }
             //预览参数
             NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
             previewinfo.read();
@@ -1319,8 +1330,7 @@
                 if (!user_real_Map.containsKey(userId)) {
                     lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
                     if (lRealHandle == -1) {
-                        int iErr = hCNetSDK.NET_DVR_GetLastError();
-                        log.error("取流失败" + iErr);
+                        log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
                         return;
                     }
                     log.info("取流成功");
@@ -1339,7 +1349,7 @@
                     user_real_Map.put(userId, info);
                 }
                 recordInfo info = user_real_Map.get(userId);
-                if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 1, info.getRecordPath())) {
+                if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 2, info.getRecordPath())) {
                     log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
                     return;
                 }
@@ -1356,10 +1366,9 @@
                 String ObjectName = cmd.getRecordObjectName();
                 String ContentType = "video/MP4";
                 FileInputStream stream = new FileInputStream(info.getRecordPath());
-                String url = "";
                 boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType);
                 if (b) {
-                    log.info("上传文件成功!" + BucketName + "/" + ObjectName);
+                    log.info("上传文件成功!" + MinioClientSingleton.domainUrl + "/"+ BucketName + "/" + ObjectName);
                     user_real_Map.remove(userId);
                 }
             }
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java
index 2959708..ebc20ec 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/hikSdkUtil/HCNetSDK.java
@@ -10242,7 +10242,14 @@
     boolean NET_DVR_InquiryRecordTimeSpan(int lUserID, int dwChannel, NET_DVR_RECORD_TIME_SPAN_INQUIRY lpInquiry, NET_DVR_RECORD_TIME_SPAN lpResult);
 
     boolean NET_DVR_StartGetDevState(NET_DVR_CHECK_DEV_STATE pParams);
-
+    //强制I帧参数结构体。
+    public static class NET_DVR_I_FRAME extends HIKSDKStructure{
+        public int dwSize;
+        public byte[] sStreamID = new byte[32];  //流IDs    SDK 中对  STREAM_ID_LEN进行了定义,赋值32
+        public int dwChannel;//通道号
+        public byte byStreamType; //码流类型:0-主码流,1-子码流,2-码流3,3-虚拟码流,以此类推
+        public byte[] byRes = new byte[63];  //保留,置为0    按照SDK要求进行对应赋值
+    }
     //gps相关结构定义
     public static class TimeSegParam extends HIKSDKStructure {
         //GPS数据查找起始时间
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
index a889fd7..e51cd61 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/PatrolInspectionTask.java
@@ -44,9 +44,8 @@
     @Resource
     IHikClientService hikClientService;
 
-    public void scanRun(){
+    public void scanRun() {
         /*扫描所有可执行任务1-时间满足2-自动*/
-        log.info("开始扫描所有可执行任务");
         ArdVideoInspectTask ardVideoInspectTask = new ArdVideoInspectTask();
         ardVideoInspectTask.setInspectMode("自动");
         List<ArdVideoInspectTask> ardVideoInspectTasks = ardVideoInspectTaskService.selectArdVideoInspectTaskList(ardVideoInspectTask);
@@ -54,139 +53,187 @@
             /*遍历所有时间满足的自动任务*/
             boolean timeCompare = DateUtils.TimeCompare(videoInspectTask.getStartTime(), videoInspectTask.getEndTime());
             if (timeCompare) {
-                log.info("满足时间");
-                /*当前任务的巡检步骤*/
+                /*获取当前任务的所有巡检步骤*/
                 List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTaskService.selectArdVideoInspectTaskById(videoInspectTask.getId()).getArdVideoInspectTaskStepList();
-                Map<Integer, Object> sortMap = new HashMap<>();//排序map
-                Map<String, Object> stepMap = new HashMap<>();//IDmap
-                for (ArdVideoInspectTaskStep step : ardVideoInspectTaskStepList) {
-                    sortMap.put(step.getOrderNumber(), step);
-                    stepMap.put(step.getId(), step);
+                if (ardVideoInspectTaskStepList.size() == 0) {
+                    continue;
                 }
-                /*获取当前任务正在执行的步骤和当前步骤开始的时间*/
+                videoInspectTask.setArdVideoInspectTaskStepList(ardVideoInspectTaskStepList);
                 String currentStepId = videoInspectTask.getCurrentStepId();
-                String cameraId = videoInspectTask.getCameraId();
-                Integer channel = videoInspectTask.getChannel();
-                String currentStepStartTime = videoInspectTask.getCurrentStepStartTime();
-                /*如果当前步骤未找到,则从1开始*/
                 if (StringUtils.isNull(currentStepId)) {
-                    ArdVideoInspectTaskStep step = (ArdVideoInspectTaskStep) sortMap.get(1);
-                    String wellId = step.getWellId();//获取第一个步骤的井号
-                    if (!StringUtils.isNull(wellId)) {
-                        /*获取井坐标*/
-                        ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellService.selectArdAlarmpointsWellById(wellId);
-                        double[] targetPositon = new double[3];
-                        targetPositon[0] = ardAlarmpointsWell.getLongitude();
-                        targetPositon[1] = ardAlarmpointsWell.getLatitude();
-                        targetPositon[2] = ardAlarmpointsWell.getAltitude();
-                        /*获取相机坐标*/
-                        ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
-                        double[] cameraPositon = new double[3];
-                        cameraPositon[0] = cameras.getLongitude();
-                        cameraPositon[1] = cameras.getLatitude();
-                        cameraPositon[2] = cameras.getAltitude();
-                        /*控制相机巡检*/
-                        CameraCmd cmd = new CameraCmd();
-                        cmd.setCameraId(cameraId);
-                        cmd.setChannelNum(channel);
-                        cmd.setCamPosition(cameraPositon);
-                        cmd.setTargetPosition(targetPositon);
-                        cmd.setOperator("sys_patrol_inspect");
-                        cmd.setExpired(step.getRecordingTime());
-                        boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
-                        if (setTargetPosition) {
-                            /*控制相机巡检成功,开始录像*/
-                            cmd.setEnable(true);//启动录像
-                            hikClientService.recordToMinio(cmd);
-                            /*更新任务当前步骤id和步骤启动时间*/
-                            ArdVideoInspectTask avit = new ArdVideoInspectTask();
-                            avit.setId(videoInspectTask.getId());
-                            avit.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
-                            avit.setCurrentStepStartTime(DateUtils.getTime());
-                            ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
-                        }
-                    }
+                    videoInspectTask.setCurrentStepId(ardVideoInspectTaskStepList.get(0).getId());
+                    startRunStep(videoInspectTask);//开始当前任务的第一个步骤
                 } else /*当前任务已经执行,判断是否到期*/ {
-                    if (stepMap.containsKey(currentStepId)) {
-                        /*获取当前步骤信息*/
-                        ArdVideoInspectTaskStep currentStep = (ArdVideoInspectTaskStep) stepMap.get(currentStepId);
-                        /*获取到当前步骤的开始和结束时间*/
-                        Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
-                        Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
-                        /*判断当前步骤时间是否过期*/
-                        if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
-                            /*已过期,停止录像*/
-                            CameraCmd cmd = new CameraCmd();
-                            cmd.setCameraId(cameraId);
-                            cmd.setChannelNum(channel);
-                            cmd.setOperator("sys_patrol_inspect");
-                            cmd.setEnable(false);//停止录像
-                            String uuid = UUID.randomUUID().toString().replace("-", "");
-                            String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
-                            String recordName = cameraId + "/" + time + "/" + uuid + ".mp4";
-                            cmd.setRecordBucketName("record");
-                            cmd.setRecordObjectName(recordName);
-                            String url= MinioClientSingleton.domainUrl+ "/" +cmd.getRecordBucketName()+ "/"+recordName;
-                            hikClientService.recordToMinio(cmd);
-                            /*更新巡检记录*/
-                            ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
-                            ardVideoInspectRecord.setStepId(currentStepId);
-                            ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartDate));
-                            ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStopDate));
-                            ardVideoInspectRecord.setRecordFilePath(url);
-                            ardVideoInspectRecordService.insertArdVideoInspectRecord(ardVideoInspectRecord);
+                    boolean expird = isExpirdStep(videoInspectTask); /*判断当前步骤时间是否过期*/
+                    if (expird) {
+                        /*已过期,停止录像*/
 
-                            /*切换下一步骤*/
-                            Integer orderNumber = currentStep.getOrderNumber();
-                            /*判断当前步骤序号是否小于步骤总数*/
-                            if (orderNumber < stepMap.size()) {
-                                /*小于则执行下一步骤*/
-                                orderNumber++;
-                            } else {
-                                /*否则从1开始执行*/
-                                orderNumber = 1;
-                            }
-                            ArdVideoInspectTaskStep step = (ArdVideoInspectTaskStep) sortMap.get(orderNumber);
-                            String wellId = step.getWellId();//获取第一个步骤的井号
-                            if (!StringUtils.isNull(wellId)) {
-                                /*获取井坐标*/
-                                ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellService.selectArdAlarmpointsWellById(wellId);
-                                double[] targetPositon = new double[3];
-                                targetPositon[0] = ardAlarmpointsWell.getLongitude();
-                                targetPositon[1] = ardAlarmpointsWell.getLatitude();
-                                targetPositon[2] = ardAlarmpointsWell.getAltitude();
-                                /*获取相机坐标*/
-                                ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
-                                double[] cameraPositon = new double[3];
-                                cameraPositon[0] = cameras.getLongitude();
-                                cameraPositon[1] = cameras.getLatitude();
-                                cameraPositon[2] = cameras.getAltitude();
-                                /*控制相机巡检*/
-                                log.info("指向" + ardAlarmpointsWell.getWellId() + "坐标:" + targetPositon);
-                                cmd = new CameraCmd();
-                                cmd.setCameraId(cameraId);
-                                cmd.setChannelNum(channel);
-                                cmd.setCamPosition(cameraPositon);
-                                cmd.setTargetPosition(targetPositon);
-                                cmd.setOperator("sys_patrol_inspect");
-                                cmd.setExpired(step.getRecordingTime());
-                                boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
-                                if (setTargetPosition) {
-                                    /*控制相机巡检成功,开始录像*/
-                                    cmd.setEnable(true);//启动录像
-                                    hikClientService.recordToMinio(cmd);
-                                    /*更新任务当前步骤id和步骤启动时间*/
-                                    ArdVideoInspectTask avit = new ArdVideoInspectTask();
-                                    avit.setId(videoInspectTask.getId());
-                                    avit.setCurrentStepId(step.getId());
-                                    avit.setCurrentStepStartTime(DateUtils.getTime());
-                                    ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
-                                }
-                            }
-                        }
+                        stopRunStep(videoInspectTask);
+                        /*切换下一步*/
+                        String nextStepId = changeNextStep(videoInspectTask);
+                        /*开始*/
+                        videoInspectTask.setCurrentStepId(nextStepId);
+                        startRunStep(videoInspectTask);
                     }
                 }
             }
         }
     }
+
+    //步骤开始
+    private void startRunStep(ArdVideoInspectTask ardVideoInspectTask) {
+        String currentStepId = ardVideoInspectTask.getCurrentStepId();
+        if(StringUtils.isNull(currentStepId))
+        {
+            log.info("当前开始巡检步骤id为空");
+            return;
+        }
+        log.info("步骤:" + currentStepId + "开始");
+        String cameraId = ardVideoInspectTask.getCameraId();
+        Integer channel = ardVideoInspectTask.getChannel();
+        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                .filter(obj -> obj.getId().equals(currentStepId))
+                .findFirst();
+        if (objectOptional.isPresent()) {
+            ArdVideoInspectTaskStep step = objectOptional.get();
+            String wellId = step.getWellId();
+            if (!StringUtils.isNull(wellId)) {
+                /*获取井坐标*/
+                ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellService.selectArdAlarmpointsWellById(wellId);
+                double[] targetPositon = new double[3];
+                targetPositon[0] = ardAlarmpointsWell.getLongitude();
+                targetPositon[1] = ardAlarmpointsWell.getLatitude();
+                targetPositon[2] = ardAlarmpointsWell.getAltitude();
+                /*获取相机坐标*/
+                ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
+                double[] cameraPositon = new double[3];
+                cameraPositon[0] = cameras.getLongitude();
+                cameraPositon[1] = cameras.getLatitude();
+                cameraPositon[2] = cameras.getAltitude();
+                /*控制相机巡检*/
+                CameraCmd cmd = new CameraCmd();
+                cmd.setCameraId(cameraId);
+                cmd.setChannelNum(channel);
+                cmd.setCamPosition(cameraPositon);
+                cmd.setTargetPosition(targetPositon);
+                cmd.setOperator("sys_patrol_inspect");
+                cmd.setExpired(step.getRecordingTime());
+                boolean setTargetPosition = hikClientService.setTargetPosition(cmd);
+                if (setTargetPosition) {
+                    /*控制相机巡检成功,开始录像*/
+                    cmd.setEnable(true);//启动录像
+                    hikClientService.recordToMinio(cmd);
+                    /*更新任务当前步骤id和步骤启动时间*/
+                    ArdVideoInspectTask avit = new ArdVideoInspectTask();
+                    avit.setId(ardVideoInspectTask.getId());
+                    avit.setCurrentStepId(step.getId());
+                    avit.setCurrentStepStartTime(DateUtils.getTime());
+                    ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
+                }
+            }
+        }
+    }
+
+    //步骤停止
+    private void stopRunStep(ArdVideoInspectTask ardVideoInspectTask) {
+        String currentStepId = ardVideoInspectTask.getCurrentStepId();
+        log.info("步骤:" + currentStepId + "停止");
+        if(StringUtils.isNull(currentStepId))
+        {
+            log.info("当前停止巡检步骤id为空");
+            return;
+        }
+        String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
+        String cameraId = ardVideoInspectTask.getCameraId();
+        Integer channel = ardVideoInspectTask.getChannel();
+        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                .filter(obj -> obj.getId().equals(currentStepId))
+                .findFirst();
+        if (objectOptional.isPresent()) {
+            ArdVideoInspectTaskStep step = objectOptional.get();
+            /*停止录像*/
+            CameraCmd cmd = new CameraCmd();
+            cmd.setCameraId(cameraId);
+            cmd.setChannelNum(channel);
+            cmd.setOperator("sys_patrol_inspect");
+            cmd.setEnable(false);//停止录像
+            String uuid = UUID.randomUUID().toString().replace("-", "");
+            String time = new SimpleDateFormat("yyyyMMdd").format(new Date());
+            String recordName = cameraId + "/" + time + "/" + uuid + ".mp4";
+            cmd.setRecordBucketName("record");
+            cmd.setRecordObjectName(recordName);
+            hikClientService.recordToMinio(cmd);
+            /*插入巡检记录*/
+            ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
+            ardVideoInspectRecord.setStepId(step.getId());
+            Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
+            Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, step.getRecordingTime());
+            ardVideoInspectRecord.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartDate));
+            ardVideoInspectRecord.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStopDate));
+            String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
+            ardVideoInspectRecord.setRecordFilePath(url);
+            ardVideoInspectRecordService.insertArdVideoInspectRecord(ardVideoInspectRecord);
+        }
+    }
+
+    //步骤判断是否过期
+    private boolean isExpirdStep(ArdVideoInspectTask ardVideoInspectTask) {
+        List<ArdVideoInspectTaskStep> ardVideoInspectTaskStepList = ardVideoInspectTask.getArdVideoInspectTaskStepList();
+        /*获取当前任务正在执行的步骤和当前步骤开始的时间*/
+        String currentStepId = ardVideoInspectTask.getCurrentStepId();
+        String currentStepStartTime = ardVideoInspectTask.getCurrentStepStartTime();
+        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTaskStepList.stream()
+                .filter(ardVideoInspectTaskStep -> ardVideoInspectTaskStep.getId().equals(currentStepId))
+                .findFirst();
+        if (objectOptional.isPresent()) {
+            /*获取当前步骤信息*/
+            ArdVideoInspectTaskStep currentStep = objectOptional.get();
+            /*获取到当前步骤的开始和结束时间*/
+            Date currentStepStartDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, currentStepStartTime);
+            Date currentStepStopDate = DateUtils.addMinutes(currentStepStartDate, currentStep.getRecordingTime());
+            /*判断当前步骤时间是否过期*/
+            if (!DateUtils.TimeCompare(currentStepStartDate, currentStepStopDate)) {
+                return true;
+            } else {
+                return false;
+            }
+        } else {
+            return false;
+        }
+
+    }
+
+    //步骤切换
+    private String changeNextStep(ArdVideoInspectTask ardVideoInspectTask) {
+        String currentStepId = ardVideoInspectTask.getCurrentStepId();
+        Optional<ArdVideoInspectTaskStep> objectOptional = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                .filter(obj -> obj.getId().equals(currentStepId))
+                .findFirst();
+        if (objectOptional.isPresent()) {
+            ArdVideoInspectTaskStep step = objectOptional.get();
+            Integer currentStepOrderNumber = step.getOrderNumber();
+            /*判断当前步骤序号是否小于步骤总数*/
+            if (currentStepOrderNumber < ardVideoInspectTask.getArdVideoInspectTaskStepList().size()) {
+                /*小于则执行下一步骤*/
+                currentStepOrderNumber++;
+            } else {
+                /*否则从1开始执行*/
+                currentStepOrderNumber = 1;
+            }
+            Integer nextStepOrderNumber = currentStepOrderNumber;
+            /*更新当前任务切换新步骤*/
+            ArdVideoInspectTask avit = new ArdVideoInspectTask();
+            avit.setId(ardVideoInspectTask.getId());
+            String nextStepId = ardVideoInspectTask.getArdVideoInspectTaskStepList().stream()
+                    .filter(obj -> obj.getOrderNumber() == nextStepOrderNumber)
+                    .map(ArdVideoInspectTaskStep::getId)
+                    .findFirst()
+                    .orElse(null);
+            avit.setCurrentStepId(nextStepId);
+            ardVideoInspectTaskService.updateArdVideoInspectTaskNoUpdater(avit);
+            log.info("步骤:" + currentStepId + "切换为"+nextStepId);
+            return nextStepId;
+        }
+        return "";
+    }
 }

--
Gitblit v1.9.3