fuliqi
2024-09-03 ae0c129c499e7e166399f2e3e2ccca93a076a669
osd等待时间配置,安全资源手动打分
14个文件已修改
103 ■■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/DH/utils/InitUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/HK/HKApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/YS/YSApi.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/YS/YSInit.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/CheckScoreController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/OsdTask.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/VideoTask.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
@@ -74,7 +74,7 @@
        netsdk.CLIENT_SetAutoReconnect(haveReConnect, null);
        //设置登录超时时间和尝试次数,可选
        int waitTime = 5000; //登录请求响应超时时间设置为5S
        int waitTime = 3000; //登录请求响应超时时间设置为5S
        int tryTimes = 1;    //登录时尝试建立链接1次
        netsdk.CLIENT_SetConnectTime(waitTime, tryTimes);
@@ -82,7 +82,7 @@
        // 设置更多网络参数,NET_PARAM的nWaittime,nConnectTryNum成员与CLIENT_SetConnectTime
        // 接口设置的登录设备超时时间和尝试次数意义相同,可选
        NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
        netParam.nConnectTime = 10000;      // 登录时尝试建立链接的超时时间
        netParam.nConnectTime = 3000;      // 登录时尝试建立链接的超时时间
        netParam.nGetConnInfoTime = 3000;   // 设置子连接的超时时间
        netParam.nGetDevInfoTime = 3000;//获取设备信息超时时间,为0默认1000ms
        netsdk.CLIENT_SetNetworkParam(netParam);
@@ -181,12 +181,13 @@
            osdInfo.read();
            NET_GBMODE_CUSTOMTITLE_INFO[] stuCustomTitle = osdInfo.stuCustomTitle;
            for (NET_GBMODE_CUSTOMTITLE_INFO title : stuCustomTitle) {
                String position = new String(title.szPositon, StandardCharsets.UTF_8).trim();
                String position = new String(title.szPositon, StandardCharsets.UTF_8);
                if("LeftDown".equals(position)) {
                    NET_TITLE_OSD_INFO[] stuOSD = title.stuOSD;
                    for (NET_TITLE_OSD_INFO osd : stuOSD) {
                        String osdStr = null;
                        osdStr = new String(osd.szText, StandardCharsets.UTF_8).trim();
                        log.info("TEXT:"+osdStr);
                        if (!StringUtils.isEmpty(osdStr)) {
                            osdResult.setOSD4(osdStr);
                        }
@@ -197,6 +198,7 @@
                    for (NET_TITLE_OSD_INFO osd : stuOSD) {
                        String osdStr = null;
                        osdStr = new String(osd.szText, StandardCharsets.UTF_8).trim();
                        log.info("TEXT:"+osdStr);
                        if (!StringUtils.isEmpty(osdStr)) {
                            if(num ==0){
                                osdResult.setOSD1(osdStr);
ycl-server/src/main/java/com/ycl/api/DH/utils/InitUtils.java
@@ -107,7 +107,7 @@
                    NetSDKLib.DEV_EVENT_FACERECOGNITION_INFO msg = new NetSDKLib.DEV_EVENT_FACERECOGNITION_INFO();
                    // 耗时20ms左右
                    ToolKits.GetPointerData(pAlarmInfo, msg);
                    //todo 保存人脸对比信息
                    // 保存人脸对比信息
                    // 释放内存
                    msg = null;
@@ -119,7 +119,7 @@
                {
                    NetSDKLib.DEV_EVENT_FACEDETECT_INFO msg = new NetSDKLib.DEV_EVENT_FACEDETECT_INFO();
                    ToolKits.GetPointerData(pAlarmInfo, msg);
                    //todo 保存图片,获取图片缓存
                    // 保存图片,获取图片缓存
                    // 释放内存
                    msg = null;
ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
@@ -110,8 +110,8 @@
        // 设置请求配置
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(1000)
                .setSocketTimeout(1000)
                .setConnectTimeout(3000)
                .setSocketTimeout(3000)
                .build();
        httpGet.setConfig(requestConfig);
        try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
ycl-server/src/main/java/com/ycl/api/YS/YSApi.java
@@ -3,21 +3,14 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.ycl.api.DH.lib.ToolKits;
import com.ycl.api.DH.utils.DHApi;
import com.ycl.api.YS.lib.NetDEVSDKLib;
import com.ycl.api.YS.login.Login;
import com.ycl.api.YS.util.Common;
import com.ycl.platform.domain.result.OSDResult;
import com.ycl.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Vector;
import java.util.Date;
import static com.ycl.api.YS.lib.NetDEVSDKLib.NETDEV_LOGIN_PROTO_E.NETDEV_LOGIN_PROTO_ONVIF;
@@ -25,7 +18,6 @@
public class YSApi {
    public static OSDResult getOsd(String ip, String userName, String password) {
        log.info("ip:{},用户:{},密码:{}", ip, userName, password);
        //登录
        NetDEVSDKLib.NETDEV_DEVICE_LOGIN_INFO_S stDevLoginInfo = new NetDEVSDKLib.NETDEV_DEVICE_LOGIN_INFO_S();
        NetDEVSDKLib.NETDEV_SELOG_INFO_S stSELogInfo = new NetDEVSDKLib.NETDEV_SELOG_INFO_S();
@@ -44,15 +36,17 @@
            NetDEVSDKLib.NETDEV_VIDEO_CHL_DETAIL_INFO_EX_S[] stVideoChlList = (NetDEVSDKLib.NETDEV_VIDEO_CHL_DETAIL_INFO_EX_S[]) new NetDEVSDKLib.NETDEV_VIDEO_CHL_DETAIL_INFO_EX_S().toArray(nMaxChlCount);
            boolean bRe = YSInit.netdevsdk.NETDEV_QueryVideoChlDetailListEx(lpUserID, dwChlCount, stVideoChlList);
            if (!bRe) {
                log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
//                log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
                return null;
            }
            //获取时间
            NetDEVSDKLib.NETDEV_TIME_CFG_S stTimeCfg = new NetDEVSDKLib.NETDEV_TIME_CFG_S();
            stTimeCfg.write();
            boolean bRetime = NetDemo.netdevsdk.NETDEV_GetSystemTimeCfg(lpUserID, stTimeCfg);
            Date checkTime = new Date();
            osdResult.setCheckTime(checkTime);
            if (!bRetime) {
                log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
//                log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
                return null;
            } else {
                stTimeCfg.read();
@@ -82,7 +76,7 @@
                try {
                    osdResult.setOsdTime(format.parse(strTime));
                } catch (Exception e) {
                    log.error(ip + "时间解析有误");
//                    log.error(ip + "时间解析有误");
                }
            }
            //获取osd
@@ -92,7 +86,7 @@
            boolean bRet = YSInit.netdevsdk.NETDEV_GetDevConfig(lpUserID, stVideoChlList[0].dwChannelID, NetDEVSDKLib.NETDEV_CONFIG_COMMAND_E.NETDEV_GET_OSDCFG, stOSDInfo.getPointer(), 616, dwBytesReturned);
            if (!bRet) {
                log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
//                log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
                return null;
            }
            stOSDInfo.read();
@@ -117,9 +111,9 @@
            YSInit.netdevsdk.NETDEV_Logout(lpUserID);
            return osdResult;
        } else {
            log.error("error code" + YSInit.netdevsdk.NETDEV_GetLastError());
//            log.error("ip:"+ip+",error code" + YSInit.netdevsdk.NETDEV_GetLastError());
            return null;
        }
        return null;
    }
    public static void demo() {
ycl-server/src/main/java/com/ycl/api/YS/YSInit.java
@@ -49,11 +49,11 @@
            }
            NetDEVSDKLib.NETDEV_REV_TIMEOUT_S pstRevTimeout=new NetDEVSDKLib.NETDEV_REV_TIMEOUT_S();
            pstRevTimeout.dwRevTimeOut=2;
            pstRevTimeout.dwRevTimeOut=3;
            pstRevTimeout.dwFileReportTimeOut=30;
            pstRevTimeout.write();
            boolean rbet1=netdevsdk.NETDEV_SetRevTimeOut(pstRevTimeout);
            boolean rbet2=netdevsdk.NETDEV_SetConnectTime(2, 1);
            boolean rbet2=netdevsdk.NETDEV_SetConnectTime(3, 1);
        }
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -117,7 +117,6 @@
        stats.totalSites++;
        if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) {
            stats.onlineSites++;
        } else {
            stats.totalDataSum += result.getDataCount();
        }
    }
ycl-server/src/main/java/com/ycl/platform/controller/CheckScoreController.java
@@ -11,6 +11,7 @@
import enumeration.BusinessType;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@@ -33,7 +34,7 @@
    /**
     * 查询考核积分卡片列表
     */
//    @PreAuthorize("@ss.hasPermi('check:score:list')")
    @PreAuthorize("@ss.hasPermi('check:score:list')")
    @GetMapping("/list")
    public AjaxResult list(CheckScore checkScore)
    {
@@ -44,7 +45,7 @@
    /**
     * 查询考核积分折线图
     */
//    @PreAuthorize("@ss.hasPermi('check:score:chart')")
    @PreAuthorize("@ss.hasPermi('check:score:chart')")
    @GetMapping("/chart")
    public AjaxResult selectCheckScoreChart(CheckScore checkScore)
    {
@@ -55,7 +56,7 @@
    /**
     * 区县详情列表
     */
//    @PreAuthorize("@ss.hasPermi('check:score:list')")
    @PreAuthorize("@ss.hasPermi('check:score:list')")
    @GetMapping("/detail")
    public TableDataInfo detail(CheckScore checkScore)
    {
@@ -68,7 +69,7 @@
    /**
     * 获取考核指标详细信息
     */
//    @PreAuthorize("@ss.hasPermi('check:score:query')")
    @PreAuthorize("@ss.hasPermi('check:score:query')")
    @GetMapping(value = "/detail/index")
    public AjaxResult getIndex(CheckScoreIndexDTO checkScoreIndexDTO)
    {
@@ -79,7 +80,7 @@
    /**
     * 发布考核积分
     */
//    @PreAuthorize("@ss.hasPermi('check:score:edit')")
    @PreAuthorize("@ss.hasPermi('check:score:edit')")
    @Log(title = "发布考核积分", businessType = BusinessType.UPDATE)
    @PutMapping("/publish")
    public AjaxResult edit(@RequestBody CheckScoreDTO checkScoreDTO)
@@ -90,7 +91,7 @@
    /**
     * 导出考核积分列表
     */
//    @PreAuthorize("@ss.hasPermi('check:score:export')")
    @PreAuthorize("@ss.hasPermi('check:score:export')")
    @Log(title = "导出考核积分", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, CheckScore checkScore) throws IOException {
ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java
@@ -3,6 +3,7 @@
import com.ycl.platform.domain.entity.ImageResourceSecurity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -66,4 +67,6 @@
     * @param imageResourceSecurities 数据集合
     */
    void saveBatch(ArrayList<ImageResourceSecurity> imageResourceSecurities);
    ImageResourceSecurity getLatest(Long deptId, Date date);
}
ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java
@@ -2,9 +2,11 @@
import com.ycl.platform.domain.entity.ImageResourceSecurity;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -81,4 +83,7 @@
     * @param imageResourceSecurities 数据集合
     */
    void saveBatch(ArrayList<ImageResourceSecurity> imageResourceSecurities);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -140,6 +140,7 @@
        if (LocalDateTime.now().getDayOfMonth() == 1) { calendar.add(Calendar.DAY_OF_MONTH, -1); }
        List<CheckScore> checkScores = scoreMapper.selectCheckScoreMap(checkScore);
        // 如果数据为空,则查询之前的数据
        if (checkScores.isEmpty()) {
            CheckScore one = new LambdaQueryChainWrapper<>(baseMapper).select(CheckScore::getCreateTime).last("order by create_time desc limit 1").one();
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -193,7 +193,7 @@
            long checkTime = osdResult.getCheckTime().getTime();
            long osdTime = osdResult.getOsdTime().getTime();
            long timeDiff = (checkTime - osdTime) / 1000;
            if (timeDiff <=60) {
            if (timeDiff <= 60) {
                osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Correct);
            } else {
                osdCheckResult.setOsdTimeCorrect(ApiConstants.OSD_Error);
@@ -202,10 +202,10 @@
        //检查通道名是否正确
        //校验规则,这里暂时不比较全景和细节两字。
        if (!StringUtils.isEmpty(osdResult.getName()) && !StringUtils.isEmpty(monitor.getName())) {
            if (monitor.getName().equals(osdResult.getName()) || monitor.getName().replace("全景","细节").equals(osdResult.getName()) || monitor.getName().replace("细节","全景").equals(osdResult.getName())) {
            if (monitor.getName().equals(osdResult.getName()) || monitor.getName().replace("全景", "细节").equals(osdResult.getName()) || monitor.getName().replace("细节", "全景").equals(osdResult.getName())) {
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Correct);
                osdCheckResult.setOsdName(osdResult.getName());
            }else {
            } else {
                osdCheckResult.setOsdNameCorrect(ApiConstants.OSD_Error);
            }
        }
@@ -253,7 +253,7 @@
        OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
        if (hkosd != null) {
            hkosd.setSerialNumber(monitor.getSerialNumber());
            log.info("海康调用成功"+hkosd);
            log.info("海康调用成功" + hkosd);
            synchronized (hkList) {
                hkList.add(monitor.getSerialNumber());
            }
@@ -263,7 +263,7 @@
        OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
        if (dhosd != null) {
            dhosd.setSerialNumber(monitor.getSerialNumber());
            log.info("大华调用成功"+dhosd);
            log.info("大华调用成功" + dhosd);
            synchronized (dhList) {
                dhList.add(monitor.getSerialNumber());
            }
@@ -273,7 +273,7 @@
        OSDResult ysosd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
        if (ysosd != null) {
            ysosd.setSerialNumber(monitor.getSerialNumber());
            log.info("宇视调用成功"+ysosd);
            log.info("宇视调用成功" + ysosd);
            synchronized (ysList) {
                ysList.add(monitor.getSerialNumber());
            }
ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -9,10 +9,7 @@
import com.ycl.platform.domain.result.UY.*;
import com.ycl.platform.domain.vo.PlatformOnlineVO;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
import com.ycl.platform.mapper.PlatformOnlineMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.IImageResourceSecurityService;
import com.ycl.utils.DateUtils;
import com.ycl.utils.DictUtils;
@@ -51,6 +48,8 @@
    private final IImageResourceSecurityService imageResourceSecurityService;
    private final CheckIndexVideoMapper checkIndexVideoMapper;
    private final ImageResourceSecurityDetailMapper imageResourceSecurityDetailMapper;
    private final ImageResourceSecurityMapper imageResourceSecurityMapper;
    private static final BigDecimal NUM = new BigDecimal("0.15");
    public void siteOnlineTask() {
@@ -115,10 +114,10 @@
    public void osdTask() {
        log.info("开始计算Osd标注、时间准确率");
        //计算Osd标注、时间准确率
//        Date yesterday = DateUtils.addDays(new Date(), -1);
        Date yesterday = DateUtils.addDays(new Date(), -1);
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<OsdCheckResult> results = mongoTemplate.find(query, OsdCheckResult.class);
        CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_OsdTime);
        calculator.calculate(results);
@@ -128,7 +127,6 @@
    /**
     * 视频图像资源安全,需要排在平台在线率后面。
     */
    //手动打分取最近数据,前端页面加打分规则提示
    @Transactional
    public void videoSecurity() {
        ArrayList<ImageResourceSecurity> imageResourceSecurities = new ArrayList<>();
@@ -161,6 +159,9 @@
            imageResourceSecurity.setRiskProperty(BigDecimal.valueOf(count / onlineAssetsTotal));
            imageResourceSecurity.setCreateTime(DateUtils.getNowDate());
            imageResourceSecurities.add(imageResourceSecurity);
            //获取最近一次数据手动打分
            ImageResourceSecurity latest = imageResourceSecurityMapper.getLatest(checkIndexVideo.getDeptId(),new Date());
            imageResourceSecurity.setBoundaryIntegrity(latest.getBoundaryIntegrity());
            // 更新指标数据
            checkIndexVideo.setImageResourceSecurity(
                    imageResourceSecurity.getPlatformOnline()
ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml
@@ -138,7 +138,8 @@
        WHERE
            examine_tag = #{examineTag}
          AND DATE_FORMAT(tcs.create_time, '%Y-%m') BETWEEN DATE_FORMAT(#{startDate}, '%Y-%m') AND DATE_FORMAT(#{endDate}, '%Y-%m')
    </select>
        GROUP BY tcs.dept_id, examine_category,examine_tag
</select>
    <select id="home" resultType="java.util.Map">
        <![CDATA[
ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml
@@ -101,4 +101,10 @@
            #{id}
        </foreach>
    </delete>
    <select id="getLatest" resultType="com.ycl.platform.domain.entity.ImageResourceSecurity">
        select * from t_image_resource_security where dept_id = #{deptId}
        where date_format(create_time,'%Y-%m')  = DATE_FORMAT(#{date}, '%Y-%m')
        order by create_time desc
        limit 1
    </select>
</mapper>