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>