diff --git a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java index 2bfe540ce..ae41d6334 100644 --- a/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java +++ b/src/main/java/com/zhgd/xmgl/config/AsyncConfig.java @@ -1,6 +1,5 @@ package com.zhgd.xmgl.config; -import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @@ -491,10 +490,10 @@ public class AsyncConfig { public MdcThreadPoolTaskExecutor syncXzHikvisionCompareData() { MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor(); /** 核心线程数(默认线程数) */ - executor.setCorePoolSize(2); + executor.setCorePoolSize(corePoolSize); /** 最大线程数 */ - executor.setMaxPoolSize(2); - executor.setQueueCapacity(10); + executor.setMaxPoolSize(maxPoolSize); + executor.setQueueCapacity(1000); /** 允许线程空闲时间(单位:默认为秒) */ executor.setKeepAliveSeconds(60); /** 线程池名前缀 */ @@ -507,4 +506,5 @@ public class AsyncConfig { } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java index 4ec2b88c9..c7a5bcaeb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzHikvisionCompareDataController.java @@ -140,6 +140,6 @@ public class XzHikvisionCompareDataController { @PostMapping(value = "/manualCompareData") public Result manualCompareData(@ApiIgnore @RequestBody Map param) { xzHikvisionCompareDataService.manualCompareData(param); - return Result.ok(); + return Result.ok("已在后台校验中"); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java index 67e396ffd..601c07ff2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionCompareDataServiceImpl.java @@ -15,6 +15,7 @@ import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.redis.lock.RedisRepository; import com.zhgd.xmgl.async.AsyncHikvision; +import com.zhgd.xmgl.async.AsyncXzHikvisionCompareData; import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.modules.car.entity.CarInfo; @@ -39,9 +40,9 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; import java.util.*; @@ -59,6 +60,12 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl idList = StrUtil.split(ids, ","); for (String id : idList) { XzHikvisionCompareData data = baseMapper.selectById(id); - Assert.notNull(data, "数据不存在"); - ThreadLocalUtil.addInKeyIfNotExist(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, data); - - Integer ourType = data.getOurType(); - if (ourType == 1) { - //企业 - syncEnterprise(data); - } else if (ourType == 2) { - //部门 - syncDepartment(data); - } else if (ourType == 3) { - //班组 - syncTeam(data); - } else if (ourType == 4 || ourType == 5) { - //人员和人脸 - syncWorker(data); - } else if (ourType == 6) { - //车辆 - syncCar(data); + if (data == null) { + continue; } + ThreadLocalUtil.addInKeyIfNotExist(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, data); + xzHikvisionCompareDataService.sync(data); + } + } + + @Async("syncXzHikvisionCompareData") + public void sync(XzHikvisionCompareData data) throws Exception { + Integer ourType = data.getOurType(); + if (ourType == 1) { + //企业 + syncEnterprise(data); + } else if (ourType == 2) { + //部门 + syncDepartment(data); + } else if (ourType == 3) { + //班组 + syncTeam(data); + } else if (ourType == 4 || ourType == 5) { + //人员和人脸 + syncWorker(data); + } else if (ourType == 6) { + //车辆 + syncCar(data); } } @@ -345,9 +358,8 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl param) { - Integer type = MapUtils.getInteger(param, "type"); String projectSn = MapUtils.getString(param, Cts.PROJECT_SN); - ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn); - addExceptionShowIfNull(projectSn); try { - if (Objects.equals(type, 1)) { - //人员 - xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() - .eq(XzHikvisionCompareData::getProjectSn, projectSn) - .ne(XzHikvisionCompareData::getType, 4) - ); - hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn); - } else if (Objects.equals(type, 2)) { - //车辆 - xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() - .eq(XzHikvisionCompareData::getProjectSn, projectSn) - .eq(XzHikvisionCompareData::getType, 4) - ); - hikvisionTask.compareHikvisionForCar(projectInfoBySn); - } + manualCompareDataAsync(param, projectSn); } catch (Exception e) { log.error("", e); addExceptionShowIfNull(projectSn); } } + @Async("syncXzHikvisionCompareData") + public void manualCompareDataAsync(Map param, String projectSn) throws Exception { + Integer type = MapUtils.getInteger(param, "type"); + ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn); + if (Objects.equals(type, 1)) { + //人员 + xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() + .eq(XzHikvisionCompareData::getProjectSn, projectSn) + .ne(XzHikvisionCompareData::getType, 4) + ); + hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn); + } else if (Objects.equals(type, 2)) { + //车辆 + xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper() + .eq(XzHikvisionCompareData::getProjectSn, projectSn) + .eq(XzHikvisionCompareData::getType, 4) + ); + hikvisionTask.compareHikvisionForCar(projectInfoBySn); + } + } + @Override public void deleteAllCompareData(Project project) { xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper()