package com.ycl.service.caseHandler.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ycl.common.util.UtilNumber;
|
import com.ycl.dto.video.HKAlarmParam;
|
import com.ycl.entity.caseHandler.BaseCase;
|
import com.ycl.entity.caseHandler.EventSource;
|
import com.ycl.entity.caseHandler.QuestionCategory;
|
import com.ycl.entity.caseHandler.Violations;
|
import com.ycl.entity.dict.DataDictionary;
|
import com.ycl.entity.region.SccgRegion;
|
import com.ycl.entity.resources.ImageResources;
|
import com.ycl.entity.video.VideoAlarmReport;
|
import com.ycl.entity.video.VideoPoint;
|
import com.ycl.enums.common.DictTypeEnum;
|
import com.ycl.mapper.caseHandler.BaseCaseMapper;
|
import com.ycl.mapper.caseHandler.ViolationsMapper;
|
import com.ycl.service.caseHandler.IBaseCaseService;
|
import com.ycl.service.caseHandler.IViolationsService;
|
import com.ycl.service.dict.IDataDictionaryService;
|
import com.ycl.service.region.ISccgRegionService;
|
import com.ycl.service.resources.IImageResourcesService;
|
import com.ycl.service.video.IVideoAlarmReportService;
|
import com.ycl.service.video.impl.IVideoPointService;
|
import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.time.Instant;
|
import java.time.LocalDateTime;
|
import java.time.ZoneId;
|
import java.time.format.DateTimeFormatter;
|
import java.util.List;
|
|
|
/**
|
* <p>
|
* 违规事件 服务实现类
|
* </p>
|
*
|
* @author wl
|
* @since 2022-09-24
|
*/
|
@Service
|
public class ViolationsServiceImpl extends ServiceImpl<ViolationsMapper, Violations> implements IViolationsService {
|
|
private IVideoPointService videoPointService;
|
private IBaseCaseService baseCaseService;
|
private IDataDictionaryService dataDictionaryService;
|
private IImageResourcesService imageResourcesService;
|
private ISccgRegionService regionService;
|
private IVideoAlarmReportService videoAlarmReportService;
|
@Resource
|
BaseCaseMapper baseCaseMapper;
|
|
@Autowired
|
UtilNumber utilNumber;
|
|
@Autowired
|
public void setVideoPointService(IVideoPointService videoPointService) {
|
this.videoPointService = videoPointService;
|
}
|
|
@Autowired
|
public void setBaseCaseService(IBaseCaseService baseCaseService) {
|
this.baseCaseService = baseCaseService;
|
}
|
|
@Autowired
|
public void setDataDictionaryService(IDataDictionaryService dataDictionaryService) {
|
this.dataDictionaryService = dataDictionaryService;
|
}
|
|
@Autowired
|
public void setImageResourcesService(IImageResourcesService imageResourcesService) {
|
this.imageResourcesService = imageResourcesService;
|
}
|
|
@Autowired
|
public void setRegionService(ISccgRegionService regionService) {
|
this.regionService = regionService;
|
}
|
|
@Autowired
|
public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) {
|
this.videoAlarmReportService = videoAlarmReportService;
|
}
|
|
@Override
|
public void saveFromVideo(List<VideoAlarmReport> videoAlarmReports) {
|
for (VideoAlarmReport videoAlarmReport : videoAlarmReports) {
|
|
BaseCase baseCase = BaseCase.builder().eventSource(EventSource.VIDEO.getCode()).category(QuestionCategory.VIOLATION.getCode())
|
.code(utilNumber.createCaseCode()).createTime(LocalDateTime.now()).createUser(0L).state(1).alarmTime(videoAlarmReport.getAlarmTime()).build();
|
Violations violations = new Violations();
|
VideoPoint videoPoint = videoPointService.getByCode(videoAlarmReport.getPlatResourceId());
|
if (videoPoint != null) {
|
baseCase.setLatitude(videoPoint.getLatitude());
|
baseCase.setLongitude(videoPoint.getLongitude());
|
baseCase.setStreetId(videoPoint.getStreetId());
|
baseCase.setCommunityId(videoPoint.getCommunityId());
|
baseCase.setSite(videoPoint.getAddress());
|
baseCase.setGridId(videoPoint.getGridId());
|
baseCase.setSite(videoPoint.getAddress());
|
|
baseCaseService.save(baseCase);
|
violations.setId(baseCase.getId());
|
violations.setVideoAlarmReportId(videoAlarmReport.getId());
|
violations.setVideoPointId(videoPoint.getId());
|
violations.setDescription(videoAlarmReport.getAlgoName());
|
|
List<DataDictionary> list = dataDictionaryService.queryByCode(DictTypeEnum.EVENT_GRADE_TYPE.getCode(), videoAlarmReport.getAlarmName().trim());
|
if (list.size() > 0) {
|
violations.setGradeId(list.get(0).getId());
|
}
|
|
baseMapper.insert(violations);
|
|
try {
|
ImageResources imageResources = new ImageResources();
|
imageResources.setType("05");
|
imageResources.setBelongToId(baseCase.getId());
|
imageResources.setUrl(videoAlarmReport.getPicData());
|
imageResources.setCreateTime(LocalDateTime.now());
|
|
ImageResources imageResources1 = new ImageResources();
|
BeanUtil.copyProperties(imageResources,imageResources1);
|
imageResources1.setType("01");
|
|
imageResourcesService.save(imageResources1);
|
imageResourcesService.save(imageResources);
|
} catch (Exception ex) {
|
System.out.println("海康推送保存异常:" + ex.getMessage());
|
}
|
}
|
}
|
}
|
|
@Override
|
public void saveFromHKVideo(HKAlarmParam alarmParam) {
|
|
SccgRegion region = regionService.getByCode(alarmParam.getPrefectureCodeIdaas());
|
VideoPoint videoPoint = videoPointService.getByCode(alarmParam.getEventNumber());
|
|
List<DataDictionary> dataDictionaries = dataDictionaryService.queryByRemark(alarmParam.getSubject());
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
LocalDateTime alarmTime = LocalDateTime.parse(alarmParam.getIncidentDate(), df);
|
|
BaseCase baseCase = BaseCase.builder().eventSource(1).category(QuestionCategory.VIOLATION.getCode())
|
.code(utilNumber.createCaseCode()).createTime(LocalDateTime.now()).createUser(0L).state(1).
|
alarmTime(alarmTime).build();
|
Violations violations = new Violations();
|
|
baseCase.setLatitude(alarmParam.getLatitude());
|
baseCase.setLongitude(alarmParam.getLongitude());
|
if (region != null) {
|
baseCase.setStreetId(region.getId().intValue());
|
}
|
baseCase.setSite(alarmParam.getScene());
|
|
baseCaseService.save(baseCase);
|
violations.setId(baseCase.getId());
|
|
if (dataDictionaries.size() > 0) {
|
violations.setGradeId(dataDictionaries.get(0).getId());
|
}
|
|
violations.setDescription(alarmParam.getEventContent());
|
violations.setInformant(alarmParam.getReportUserName());
|
violations.setInformantPhoneCode(alarmParam.getContact());
|
if (videoPoint != null) {
|
violations.setVideoPointId(videoPoint.getId());
|
}
|
|
String[] imgs = alarmParam.getFileUrl().split(",");
|
|
VideoAlarmReport videoAlarmReport = new VideoAlarmReport();
|
videoAlarmReport.setPlatResourceId(alarmParam.getEventNumber());
|
if (imgs.length > 0) {
|
videoAlarmReport.setPicData(imgs[0]);
|
}
|
videoAlarmReport.setAlarmTime(alarmTime);
|
videoAlarmReport.setAlarmId(alarmParam.getEventId());
|
videoAlarmReport.setAlgoName(alarmParam.getContact());
|
videoAlarmReport.setAlarmName(alarmParam.getSubject());
|
videoAlarmReportService.save(videoAlarmReport);
|
|
violations.setVideoAlarmReportId(videoAlarmReport.getId());
|
baseMapper.insert(violations);
|
|
try {
|
for (int i = 0; i < imgs.length; i++) {
|
ImageResources imageResources = new ImageResources();
|
imageResources.setType("04");
|
imageResources.setBelongToId(baseCase.getId());
|
imageResources.setUrl(imgs[i]);
|
imageResources.setCreateTime(LocalDateTime.now());
|
|
ImageResources imageResources1 = new ImageResources();
|
BeanUtil.copyProperties(imageResources,imageResources1);
|
imageResources1.setType("01");
|
|
imageResourcesService.save(imageResources1);
|
imageResourcesService.save(imageResources);
|
}
|
} catch (Exception ex) {
|
|
}
|
|
}
|
|
@Override
|
public List<VideoAndAreaVO> selectType() {
|
return baseCaseMapper.selectType();
|
}
|
}
|