zhanghua
7 天以前 81d863041143bce34c8fafc0215a11e571833b6d
ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/ViolationsServiceImpl.java
@@ -4,6 +4,7 @@
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.hikvision.artemis.sdk.util.HttpUtils;
import com.ycl.common.util.UtilNumber;
import com.ycl.dto.video.HKAlarmParam;
import com.ycl.entity.caseHandler.BaseCase;
@@ -21,15 +22,23 @@
import com.ycl.service.caseHandler.IBaseCaseService;
import com.ycl.service.caseHandler.IViolationsService;
import com.ycl.service.dict.IDataDictionaryService;
import com.ycl.service.oss.OssService;
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 net.coobird.thumbnailator.Thumbnails;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -54,6 +63,8 @@
    private IImageResourcesService imageResourcesService;
    private ISccgRegionService regionService;
    private IVideoAlarmReportService videoAlarmReportService;
    @Autowired
    private OssService ossService;
    @Resource
    BaseCaseMapper baseCaseMapper;
@@ -99,6 +110,28 @@
            Violations violations = new Violations();
            VideoPoint videoPoint = videoPointService.getByCode(videoAlarmReport.getPlatResourceId());
            if (videoPoint != null) {
//我来分析一下这个条件判断。根据注释"周一至周五上午8:30-12:00    下午2:00-17:00,处理案件,其他时间不处理",需要修改判断条件来正确识别非工作时间。
//
//当前代码只判断了小时,但需要:
//1. 判断是否为周一至周五
//2. 判断是否在工作时间段内(上午8:30-12:00,下午14:00-17:00)
                // 周一至周五上午8:30-12:00    下午2:00-17:00,处理案件,其他时间不处理
                LocalDateTime alarmTime = videoAlarmReport.getAlarmTime();
                int hour = alarmTime.getHour();
                int minute = alarmTime.getMinute();
                int dayOfWeek = alarmTime.getDayOfWeek().getValue(); // 1=周一, 7=周日
                boolean isWeekday = dayOfWeek >= 1 && dayOfWeek <= 5;
                boolean isMorningShift = hour == 8 && minute >= 30 || hour > 8 && hour < 12;
                boolean isAfternoonShift = hour >= 14 && hour < 17;
                // 如果不是工作日或不在工作时间段内,则不处理
                if (!isWeekday || !(isMorningShift || isAfternoonShift)) {
                    baseCase.setState(4);
                }
                baseCase.setLatitude(videoPoint.getLatitude());
                baseCase.setLongitude(videoPoint.getLongitude());
                baseCase.setStreetId(videoPoint.getStreetId());
@@ -128,7 +161,7 @@
                    imageResources.setCreateTime(LocalDateTime.now());
                    ImageResources imageResources1 = new ImageResources();
                    BeanUtil.copyProperties(imageResources,imageResources1);
                    BeanUtil.copyProperties(imageResources, imageResources1);
                    imageResources1.setType("01");
                    imageResourcesService.save(imageResources1);
@@ -155,6 +188,12 @@
                alarmTime(alarmTime).build();
        Violations violations = new Violations();
        // 时间超过17点或者12-14点不处理,案件为不处理
        if (alarmTime.getHour() >= 17 ||
                (alarmTime.getHour() < 14 && alarmTime.getHour() >= 12)) {
            baseCase.setState(4);
        }
        baseCase.setLatitude(alarmParam.getLatitude());
        baseCase.setLongitude(alarmParam.getLongitude());
        if (region != null) {
@@ -180,8 +219,10 @@
        VideoAlarmReport videoAlarmReport = new VideoAlarmReport();
        videoAlarmReport.setPlatResourceId(alarmParam.getEventNumber());
        String img0 = "";
        if (imgs.length > 0) {
            videoAlarmReport.setPicData(imgs[0]);
            img0 = saveOSS(imgs[0]);
            videoAlarmReport.setPicData(img0);
        }
        videoAlarmReport.setAlarmTime(alarmTime);
        videoAlarmReport.setAlarmId(alarmParam.getEventId());
@@ -197,11 +238,11 @@
                ImageResources imageResources = new ImageResources();
                imageResources.setType("04");
                imageResources.setBelongToId(baseCase.getId());
                imageResources.setUrl(imgs[i]);
                imageResources.setUrl(i == 0 ? img0 : saveOSS(imgs[i]));
                imageResources.setCreateTime(LocalDateTime.now());
                ImageResources imageResources1 = new ImageResources();
                BeanUtil.copyProperties(imageResources,imageResources1);
                BeanUtil.copyProperties(imageResources, imageResources1);
                imageResources1.setType("01");
                imageResourcesService.save(imageResources1);
@@ -213,6 +254,35 @@
    }
    private String saveOSS(String hkUrl) {
        InputStream inputStream = getImageStream(hkUrl);
        if (inputStream != null) {
            String picData = ossService.uploadImages(inputStream, "png", 0);
            return picData;
        } else return "";
    }
    private InputStream getImageStream(String url) {
        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setReadTimeout(5000);
            connection.setConnectTimeout(5000);
            connection.setRequestMethod("GET");
            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream inputStream = connection.getInputStream();
                ByteArrayOutputStream outs = new ByteArrayOutputStream();
                Thumbnails.of(inputStream).scale(0.6).outputQuality(1).toOutputStream(outs);
                InputStream ins = new ByteArrayInputStream(outs.toByteArray());
                return ins;
            }
        } catch (IOException e) {
            System.out.println("获取网络图片出现异常,图片路径为:" + url);
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public List<VideoAndAreaVO> selectType() {
        return baseCaseMapper.selectType();