diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 0134743ef..98f821da2 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -33,6 +33,7 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.util.Date; +import java.util.HashMap; import java.util.Objects; /** @@ -444,4 +445,14 @@ public class AsyncHikvision { log.error("海康:", e); } } + + @Async("getRecordForHikvisionTask") + public void getCrossRecordsAsync(HashMap paramMap) { + hikvisionCall.getCrossRecords(paramMap); + } + + @Async("getRecordForHikvisionTask") + public void getDoorEventsAsync(HashMap paramMap) { + hikvisionCall.getDoorEvents(paramMap); + } } diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index f7235ecb7..18286d1ad 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -67,7 +67,6 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import net.javacrumbs.shedlock.core.SchedulerLock; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; @@ -75,7 +74,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -89,7 +87,7 @@ import java.util.*; @RequestMapping("/xmgl/hikvision") public class HikvisionCall { private static final String FIXED_CAR_GROUP_NAME = "业主车辆"; - static String pageNo = "pageNo"; + public AsyncHikvision asyncHikvision; @Autowired XzHikvisionSyncServiceImpl xzHikvisionSyncService; @Lazy @@ -166,13 +164,10 @@ public class HikvisionCall { private UfaceDevMapper ufaceDevMapper; @Autowired private XzHikvisionSyncMapper xzHikvisionSyncMapper; - @Autowired private IAiAnalyseHardWareRecordService aiAnalyseHardWareRecordService; - @Autowired private IFrontierProtectionNoNetDevService frontierProtectionNoNetDevService; - @Lazy @Autowired private IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService; @@ -185,12 +180,10 @@ public class HikvisionCall { @Lazy @Autowired private FrontierProtectionNoNetDataServiceImpl frontierProtectionNoNetDataService; - @Lazy @Autowired private IXzHikvisionCompareDataService xzHikvisionCompareDataService; - /** * 获取图片 * @@ -544,7 +537,7 @@ public class HikvisionCall { .eq(UfaceDev::getProjectSn, project.getProjectSn())); for (UfaceDev ufaceDev : ufaceDevs) { param.put("doorIndexCodes", Collections.singletonList(ufaceDev.getDevSn())); - param.put(pageNo, 0); + param.put(Cts.PAGE_NO, 0); param.put("pageSize", 1000); Integer total = 0; JSONArray listJa = new JSONArray(); @@ -605,7 +598,7 @@ public class HikvisionCall { } } } - } while (total > param.getInteger(pageNo) * 1000); + } while (total > param.getInteger(Cts.PAGE_NO) * 1000); } try { workerAttendancePresenceService.addNowAllWorkerAttendancePresence(projectSn); @@ -661,10 +654,10 @@ public class HikvisionCall { param.put("parkSyscode", projectParkCode); Integer total = 0; JSONArray listJa = new JSONArray(); - param.put(pageNo, 0); + param.put(Cts.PAGE_NO, 0); do { String rs = null; - param.put(pageNo, param.getIntValue(pageNo) + 1); + param.put(Cts.PAGE_NO, param.getIntValue(Cts.PAGE_NO) + 1); try { rs = getCrossRecordsForHttp(project, param); } catch (Exception e) { @@ -730,67 +723,11 @@ public class HikvisionCall { } } } - } while (total > param.getInteger(pageNo) * 1000); + } while (total > param.getInteger(Cts.PAGE_NO) * 1000); } log.info("服务挂了主动获取车辆事件的车辆通行记录执行完成,startTime:{},endTime:{}", startTime, endTime); } - /** - * 定时一分钟获取海康数据 - */ - @SchedulerLock(name = "getRecordForHikvision", lockAtMostFor = 1000 * 30, lockAtLeastFor = 1000 * 30) - @Scheduled(cron = "0 */1 * * * ?") - @RequestMapping("getRecordForHikvision") - public void getRecordForHikvision() { - String startTime = DateUtil.formatDateTime(DateUtil.offsetMinute(new Date(), -2)); - String endTime = DateUtil.formatDateTime(new Date()); - List projects = projectMapper.selectList(new LambdaQueryWrapper() - .eq(Project::getSyncHikvision, 1)); - for (Project project : projects) { - log.info("定时获取海康记录,{}", project.getProjectName()); - HashMap map = new HashMap<>(); - map.put("projectSn", project.getProjectSn()); - map.put("startTime", startTime); - map.put("endTime", endTime); - hikvisionCall.getDoorEventsAsync(map); - hikvisionCall.getCrossRecordsAsync(map); - } - } - - @Async("getRecordForHikvisionTask") - public void getDoorEventsAsync(HashMap paramMap) { - getDoorEvents(paramMap); - } - - @Async("getRecordForHikvisionTask") - public void getCrossRecordsAsync(HashMap paramMap) { - getCrossRecords(paramMap); - } - - - /** - * 定时重试失败的记录 - */ - @SchedulerLock(name = "retrySyncHikvision", lockAtMostFor = 1000 * 30, lockAtLeastFor = 1000 * 30) - @Scheduled(cron = "0 */10 * * * ?") - @RequestMapping("retrySyncHikvision") - public void retrySyncHikvision() throws Exception { - HashMap newListMap = new HashMap<>(); - newListMap.put("isSuccess", 0); - newListMap.put("createDateBegin", DateUtil.formatDateTime(DateUtil.offsetHour(new Date(), -1))); - List newestList = xzHikvisionSyncService.getNewestList(newListMap); - for (XzHikvisionSync xzHikvisionSync : newestList) { - log.info("海康同步的定时重试失败的记录,id:{}", xzHikvisionSync.getId()); - HashMap retryMap = new HashMap<>(); - retryMap.put("id", xzHikvisionSync.getId()); - try { - xzHikvisionSyncService.retry(retryMap); - } catch (Exception e) { - log.error("海康同步的定时重试失败的记录:error:", e); - } - } - } - /** * 获取车辆颜色 * diff --git a/src/main/java/com/zhgd/xmgl/constant/Cts.java b/src/main/java/com/zhgd/xmgl/constant/Cts.java index 527694ec5..69f29f152 100644 --- a/src/main/java/com/zhgd/xmgl/constant/Cts.java +++ b/src/main/java/com/zhgd/xmgl/constant/Cts.java @@ -45,4 +45,5 @@ public interface Cts { String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; String YYYY_MM_DD = "yyyy-MM-dd"; String TL_AUTH_USER = "authUser"; + String PAGE_NO = "pageNo"; } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/IProjectCarCameraConfigService.java b/src/main/java/com/zhgd/xmgl/modules/car/service/IProjectCarCameraConfigService.java index 9fde3c7cb..80f3f2817 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/IProjectCarCameraConfigService.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/IProjectCarCameraConfigService.java @@ -29,4 +29,5 @@ public interface IProjectCarCameraConfigService extends IService implements ICarInfoService { - @Lazy @Autowired - private XzHikvisionSyncMapper xzHikvisionSyncMapper; + ProjectCarCameraConfigMapper projectCarCameraConfigMapper; @Autowired CarInfoApprovalFlowMapper carInfoApprovalFlowMapper; @Autowired ProjectMapper projectMapper; @Autowired + ProjectCarCameraConfigServiceImpl projectCarCameraConfigService; + @Lazy + @Autowired + private XzHikvisionSyncMapper xzHikvisionSyncMapper; + @Autowired private EnterpriseInfoServiceImpl enterpriseInfoService; @Autowired private SystemUserServiceImpl systemUserService; @@ -327,6 +331,11 @@ public class CarInfoServiceImpl extends ServiceImpl impl @Override public void addCarInfoForHikvision(CarInfo carInfo, AsyncHikvision asyncHikvision) { + boolean hikvisionConfig = projectCarCameraConfigService.isHikvisionConfig(carInfo.getProjectSn()); + if (!hikvisionConfig) { + return; + } + if (carInfo.getIsBlack() == 1) { deleteCarInfoForHikvision(carInfo, true); } else { @@ -342,6 +351,10 @@ public class CarInfoServiceImpl extends ServiceImpl impl @Override public void deleteCarInfoForHikvision(CarInfo carInfo, boolean isSetBlack) { + boolean hikvisionConfig = projectCarCameraConfigService.isHikvisionConfig(carInfo.getProjectSn()); + if (!hikvisionConfig) { + return; + } xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId()))); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId()))); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent(2, carInfo.getId()))); @@ -351,6 +364,11 @@ public class CarInfoServiceImpl extends ServiceImpl impl @Override public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) { + boolean hikvisionConfig = projectCarCameraConfigService.isHikvisionConfig(carInfo.getProjectSn()); + if (!hikvisionConfig) { + return; + } + if (carInfo.getIsBlack() == 1) { deleteCarInfoForHikvision(carInfo, true); } else { diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/ProjectCarCameraConfigServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/ProjectCarCameraConfigServiceImpl.java index fa602da40..120d9f164 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/ProjectCarCameraConfigServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/ProjectCarCameraConfigServiceImpl.java @@ -15,7 +15,6 @@ import com.zhgd.xmgl.util.RefUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; import java.util.HashMap; import java.util.List; @@ -102,4 +101,13 @@ public class ProjectCarCameraConfigServiceImpl extends ServiceImpl() + .eq(ProjectCarCameraConfig::getProjectSn, projectSn) + .eq(ProjectCarCameraConfig::getSupplierType, 1) + ); + return c > 0; + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectUfaceConfigService.java b/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectUfaceConfigService.java index c4e6d6339..76de7e55c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectUfaceConfigService.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectUfaceConfigService.java @@ -26,7 +26,9 @@ public interface IProjectUfaceConfigService extends IService void deleteWorkerInfo(WorkerInfo workerInfo); - void updateWorkerInfo(WorkerInfo newWorkerInfo,WorkerInfo oldWorkerInfo); + void updateWorkerInfo(WorkerInfo newWorkerInfo, WorkerInfo oldWorkerInfo); void sendBatchWorkerInfo(WorkerInfo workerInfo, ProjectUfaceConfig projectUfaceConfig, List list); + + boolean isHikvisionConfig(String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java index 244a1863a..1ee31c62c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectUfaceConfigServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.xmgl.async.AsyncHikvision; +import com.zhgd.xmgl.modules.car.entity.ProjectCarCameraConfig; import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig; import com.zhgd.xmgl.modules.project.mapper.ProjectUfaceConfigMapper; import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; @@ -464,6 +465,15 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl() + .eq(ProjectUfaceConfig::getProjectSn, projectSn) + .eq(ProjectUfaceConfig::getSupplierType, 9) + ); + return c > 0; + } + public void sendDev(ProjectUfaceConfig tempProjectUfaceConfig, WorkerInfo workerInfo, String devSns, String devIds) { log.info("supplierType:{}", tempProjectUfaceConfig.getSupplierType()); //1杭州宇泛智能科技,2用jdpush推送,3.mqtt,4.芊熠智能,5佳信捷,6佳信捷新设备 diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index a2baf5c51..eb775592c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -2339,7 +2339,10 @@ public class WorkerInfoServiceImpl extends ServiceImpl projects = projectMapper.selectList(new LambdaQueryWrapper() + .eq(Project::getSyncHikvision, 1)); + for (Project project : projects) { + log.info("定时获取海康记录,{}", project.getProjectName()); + HashMap map = new HashMap<>(); + map.put("projectSn", project.getProjectSn()); + map.put("startTime", startTime); + map.put("endTime", endTime); + String projectSn = project.getProjectSn(); + boolean carConfig = projectCarCameraConfigService.isHikvisionConfig(projectSn); + boolean ufaceConfig = projectUfaceConfigService.isHikvisionConfig(projectSn); + if (carConfig) { + asyncHikvision.getCrossRecordsAsync(map); + } + if (ufaceConfig) { + asyncHikvision.getDoorEventsAsync(map); + } + } + } + + /** + * 定时重试失败的记录 + */ + @SchedulerLock(name = "retrySyncHikvision", lockAtMostFor = 1000 * 30, lockAtLeastFor = 1000 * 30) + @Scheduled(cron = "0 */10 * * * ?") + @RequestMapping("retrySyncHikvision") + public void retrySyncHikvision() throws Exception { + HashMap newListMap = new HashMap<>(); + newListMap.put("isSuccess", 0); + newListMap.put("createDateBegin", DateUtil.formatDateTime(DateUtil.offsetHour(new Date(), -1))); + List newestList = xzHikvisionSyncService.getNewestList(newListMap); + for (XzHikvisionSync xzHikvisionSync : newestList) { + log.info("海康同步的定时重试失败的记录,id:{}", xzHikvisionSync.getId()); + HashMap retryMap = new HashMap<>(); + retryMap.put("id", xzHikvisionSync.getId()); + try { + xzHikvisionSyncService.retry(retryMap); + } catch (Exception e) { + log.error("海康同步的定时重试失败的记录:error:", e); + } + } + } + /** * 数据校验同步 @@ -93,8 +159,14 @@ public class HikvisionTask { for (Project project : projects) { try { xzHikvisionCompareDataService.deleteAllCompareData(project); - compareHikvisionForEnterpriseEtc(project); - compareHikvisionForCar(project); + boolean ufaceConfig = projectUfaceConfigService.isHikvisionConfig(project.getProjectSn()); + if (ufaceConfig) { + compareHikvisionForEnterpriseEtc(project); + } + boolean carConfig = projectCarCameraConfigService.isHikvisionConfig(project.getProjectSn()); + if (carConfig) { + compareHikvisionForCar(project); + } } catch (Exception e) { log.error("数据校验同步失败,projectSn:{} ", project.getProjectSn(), e); xzHikvisionCompareDataService.addExceptionShowIfNull(project.getProjectSn());