数据校验修改

This commit is contained in:
GUO 2024-06-01 23:53:10 +08:00
parent 5f35885ba5
commit ee1e10b237
3 changed files with 65 additions and 50 deletions

View File

@ -1,6 +1,5 @@
package com.zhgd.xmgl.config; package com.zhgd.xmgl.config;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
@ -491,10 +490,10 @@ public class AsyncConfig {
public MdcThreadPoolTaskExecutor syncXzHikvisionCompareData() { public MdcThreadPoolTaskExecutor syncXzHikvisionCompareData() {
MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor(); MdcThreadPoolTaskExecutor executor = new MdcThreadPoolTaskExecutor();
/** 核心线程数(默认线程数) */ /** 核心线程数(默认线程数) */
executor.setCorePoolSize(2); executor.setCorePoolSize(corePoolSize);
/** 最大线程数 */ /** 最大线程数 */
executor.setMaxPoolSize(2); executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(10); executor.setQueueCapacity(1000);
/** 允许线程空闲时间(单位:默认为秒) */ /** 允许线程空闲时间(单位:默认为秒) */
executor.setKeepAliveSeconds(60); executor.setKeepAliveSeconds(60);
/** 线程池名前缀 */ /** 线程池名前缀 */
@ -507,4 +506,5 @@ public class AsyncConfig {
} }
} }

View File

@ -140,6 +140,6 @@ public class XzHikvisionCompareDataController {
@PostMapping(value = "/manualCompareData") @PostMapping(value = "/manualCompareData")
public Result manualCompareData(@ApiIgnore @RequestBody Map<String ,Object> param) { public Result manualCompareData(@ApiIgnore @RequestBody Map<String ,Object> param) {
xzHikvisionCompareDataService.manualCompareData(param); xzHikvisionCompareDataService.manualCompareData(param);
return Result.ok(); return Result.ok("已在后台校验中");
} }
} }

View File

@ -15,6 +15,7 @@ import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.redis.lock.RedisRepository; import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncXzHikvisionCompareData;
import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.modules.car.entity.CarInfo; 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.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.*; import java.util.*;
@ -59,6 +60,12 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
private ICarInfoService carInfoService; private ICarInfoService carInfoService;
@Lazy @Lazy
@Autowired @Autowired
private AsyncXzHikvisionCompareData asyncXzHikvisionCompareData;
@Lazy
@Autowired
private XzHikvisionCompareDataServiceImpl xzHikvisionCompareDataService;
@Lazy
@Autowired
private HikvisionTask hikvisionTask; private HikvisionTask hikvisionTask;
@Autowired @Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper; private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@ -150,26 +157,32 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
List<String> idList = StrUtil.split(ids, ","); List<String> idList = StrUtil.split(ids, ",");
for (String id : idList) { for (String id : idList) {
XzHikvisionCompareData data = baseMapper.selectById(id); XzHikvisionCompareData data = baseMapper.selectById(id);
Assert.notNull(data, "数据不存在"); if (data == null) {
ThreadLocalUtil.addInKeyIfNotExist(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, data); continue;
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);
} }
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<XzHikvisionCo
*/ */
@Override @Override
public void compareRetryFail() { public void compareRetryFail() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, JSONObject.class); XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
if (tlJo != null) { if (data != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
data.setSyncResult(2); data.setSyncResult(2);
xzHikvisionCompareDataMapper.updateById(data); xzHikvisionCompareDataMapper.updateById(data);
} }
@ -358,9 +370,8 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
*/ */
@Override @Override
public void compareRetrySuc() { public void compareRetrySuc() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, JSONObject.class); XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
if (tlJo != null) { if (data != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
xzHikvisionCompareDataMapper.deleteById(data.getId()); xzHikvisionCompareDataMapper.deleteById(data.getId());
} }
} }
@ -470,37 +481,41 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
if (hashValues == null) { if (hashValues == null) {
return new JoBuilder().put(Cts.SUCCESS, true).put(Cts.MSG, "未执行校验数据").build(); return new JoBuilder().put(Cts.SUCCESS, true).put(Cts.MSG, "未执行校验数据").build();
} }
return (JSONObject) hashValues; return JSONObject.parseObject(hashValues.toString());
} }
@Override @Override
public void manualCompareData(Map<String, Object> param) { public void manualCompareData(Map<String, Object> param) {
Integer type = MapUtils.getInteger(param, "type");
String projectSn = MapUtils.getString(param, Cts.PROJECT_SN); String projectSn = MapUtils.getString(param, Cts.PROJECT_SN);
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn);
addExceptionShowIfNull(projectSn);
try { try {
if (Objects.equals(type, 1)) { manualCompareDataAsync(param, projectSn);
//人员
xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>()
.eq(XzHikvisionCompareData::getProjectSn, projectSn)
.ne(XzHikvisionCompareData::getType, 4)
);
hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn);
} else if (Objects.equals(type, 2)) {
//车辆
xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>()
.eq(XzHikvisionCompareData::getProjectSn, projectSn)
.eq(XzHikvisionCompareData::getType, 4)
);
hikvisionTask.compareHikvisionForCar(projectInfoBySn);
}
} catch (Exception e) { } catch (Exception e) {
log.error("", e); log.error("", e);
addExceptionShowIfNull(projectSn); addExceptionShowIfNull(projectSn);
} }
} }
@Async("syncXzHikvisionCompareData")
public void manualCompareDataAsync(Map<String, Object> 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<XzHikvisionCompareData>()
.eq(XzHikvisionCompareData::getProjectSn, projectSn)
.ne(XzHikvisionCompareData::getType, 4)
);
hikvisionTask.compareHikvisionForEnterpriseEtc(projectInfoBySn);
} else if (Objects.equals(type, 2)) {
//车辆
xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>()
.eq(XzHikvisionCompareData::getProjectSn, projectSn)
.eq(XzHikvisionCompareData::getType, 4)
);
hikvisionTask.compareHikvisionForCar(projectInfoBySn);
}
}
@Override @Override
public void deleteAllCompareData(Project project) { public void deleteAllCompareData(Project project) {
xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>() xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>()