liusuyi
2023-06-14 5628d007fc9b58fd22981d626e6f3557d8cdccb3
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/GlobalAlarmServiceImpl.java
@@ -8,7 +8,6 @@
import com.ruoyi.alarm.stealAlarm.mapper.ArdAlarmStealelecMapper;
import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper;
import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService;
import com.ruoyi.alarmpoints.tube.domain.ArdTubes;
import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails;
import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper;
@@ -19,10 +18,10 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.tools.ArdTool;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
import com.ruoyi.device.hiksdk.common.GlobalVariable;
import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
@@ -30,16 +29,13 @@
import com.ruoyi.utils.tube.GeoPoint;
import com.ruoyi.utils.tube.TubeTools;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
/**
 * @ClassName: globalAlarmServiceImpl
@@ -210,14 +206,20 @@
                            String recordName = minDistanceCameraId + "/" + time + "/" + simpleUUID + ".mp4";
                            cmd.setRecordObjectName(recordName);
                            hikClientService.recordToMinio(cmd);
                            GlobalVariable.threadMap.put(minDistanceCameraId,Thread.currentThread().getName());//将相机id与当前处理线程名称绑定
                            Thread.sleep(30000);
                            cmd.setEnable(false);
                            cmd.setUploadMinio(true);
                            hikClientService.recordToMinio(cmd);
                            //更新录像
                            String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
                            ardAlarmTube.setRecordUrl(url);
                            ardAlarmTubeMapper.updateArdAlarmTube(ardAlarmTube);
                            String thread = GlobalVariable.threadMap.get(minDistanceCameraId);
                            String currentThread = Thread.currentThread().getName();
                            //判断相机绑定线程是否是当前线程,如果是,停止录像,如果不是,说明相机被其他线程抢占,不停止录像
                            if(thread.equals(currentThread)) {
                                cmd.setEnable(false);
                                cmd.setUploadMinio(true);
                                hikClientService.recordToMinio(cmd);
                                //更新录像
                                String url = MinioClientSingleton.domainUrl + "/" + cmd.getRecordBucketName() + "/" + recordName;
                                ardAlarmTube.setRecordUrl(url);
                                ardAlarmTubeMapper.updateArdAlarmTube(ardAlarmTube);
                            }
                        }
                    }
                    break;