数据校验修改

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;
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 {
}
}

View File

@ -140,6 +140,6 @@ public class XzHikvisionCompareDataController {
@PostMapping(value = "/manualCompareData")
public Result manualCompareData(@ApiIgnore @RequestBody Map<String ,Object> 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.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<XzHikvisionCo
private ICarInfoService carInfoService;
@Lazy
@Autowired
private AsyncXzHikvisionCompareData asyncXzHikvisionCompareData;
@Lazy
@Autowired
private XzHikvisionCompareDataServiceImpl xzHikvisionCompareDataService;
@Lazy
@Autowired
private HikvisionTask hikvisionTask;
@Autowired
private XzHikvisionCompareDataMapper xzHikvisionCompareDataMapper;
@ -150,26 +157,32 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
List<String> 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<XzHikvisionCo
*/
@Override
public void compareRetryFail() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, JSONObject.class);
if (tlJo != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
if (data != null) {
data.setSyncResult(2);
xzHikvisionCompareDataMapper.updateById(data);
}
@ -358,9 +370,8 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
*/
@Override
public void compareRetrySuc() {
JSONObject tlJo = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, JSONObject.class);
if (tlJo != null) {
XzHikvisionCompareData data = BeanUtil.toBean(tlJo, XzHikvisionCompareData.class);
XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
if (data != null) {
xzHikvisionCompareDataMapper.deleteById(data.getId());
}
}
@ -470,37 +481,41 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
if (hashValues == null) {
return new JoBuilder().put(Cts.SUCCESS, true).put(Cts.MSG, "未执行校验数据").build();
}
return (JSONObject) hashValues;
return JSONObject.parseObject(hashValues.toString());
}
@Override
public void manualCompareData(Map<String, Object> 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<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);
}
manualCompareDataAsync(param, projectSn);
} catch (Exception e) {
log.error("", e);
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
public void deleteAllCompareData(Project project) {
xzHikvisionCompareDataMapper.delete(new LambdaQueryWrapper<XzHikvisionCompareData>()