bug修复

This commit is contained in:
guoshengxiong 2024-06-21 19:19:37 +08:00
parent f764c944f6
commit b6f81d98a8
7 changed files with 75 additions and 31 deletions

View File

@ -97,10 +97,9 @@ public class AsyncHikvision {
@Autowired @Autowired
private RedisRepository redisRepository; private RedisRepository redisRepository;
public static Date getSyncTimeWithInitIfAbsent(int bigType, Long tableId) { public static Date getSyncTimeWithInitIfAbsent() {
Date now = ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME); Date now = ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME);
if (now == null) { if (now == null) {
//首次执行清空以前同步记录
now = new Date(); now = new Date();
ThreadLocalUtil.addInKey(XZ_HIKVISION_SYNC_TIME, now); ThreadLocalUtil.addInKey(XZ_HIKVISION_SYNC_TIME, now);
} }
@ -164,6 +163,10 @@ public class AsyncHikvision {
projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo); projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo);
} }
public void saveWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace);
}
@Async("workerHkExecutor") @Async("workerHkExecutor")
public void saveWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { public void saveWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) {
try { try {
@ -490,10 +493,6 @@ public class AsyncHikvision {
hikvisionCall.getDoorEvents(paramMap); hikvisionCall.getDoorEvents(paramMap);
} }
public void sendBatchWorkerInfo(List<UfaceDev> allDevList, List<WorkerInfo> workerList, List<JSONObject> workerAndDevSnList, Long userId, String projectSn, boolean isRetry) {
this.sendBatchWorkerInfoAsync(allDevList, workerList, workerAndDevSnList, userId, projectSn, false, true, null);
}
/** /**
* 批量下发人员 * 批量下发人员
* *

View File

@ -99,7 +99,9 @@ public class CarInfo implements Serializable {
@ApiModelProperty(value = "报警推送人") @ApiModelProperty(value = "报警推送人")
private java.lang.String alarmPushWorkerId; private java.lang.String alarmPushWorkerId;
/**
* 车辆类型1固定车2预约车辆长期3预约车辆临时
*/
@ApiModelProperty(value = "车辆类型1、固定车2、预约车辆长期3、预约车辆临时") @ApiModelProperty(value = "车辆类型1、固定车2、预约车辆长期3、预约车辆临时")
private Integer carModuleType; private Integer carModuleType;

View File

@ -615,7 +615,7 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl<ProjectUfaceConfi
log.info("未找到设备,无需下发,人员:{}", workerInfo.getWorkerName()); log.info("未找到设备,无需下发,人员:{}", workerInfo.getWorkerName());
return; return;
} }
asyncHikvision.sendBatchWorkerInfo(allDevList, Collections.singletonList(workerInfo), workerAndDevSnList, null, projectSn, isRetry); asyncHikvision.sendBatchWorkerInfoAsync(allDevList, Collections.singletonList(workerInfo), workerAndDevSnList, null, projectSn, false, true, null);
} }

View File

@ -2522,9 +2522,9 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
@Override @Override
@Async("workerHkExecutor") @Async("workerHkExecutor")
public Future editWorkerAsyncForSendBatchAuth(WorkerInfo workerInfo) { public Future editWorkerAsyncForSendBatchAuth(WorkerInfo workerInfo) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId()))); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent()));
if (StrUtil.isNotBlank(workerInfo.getFieldAcquisitionUrl())) { if (StrUtil.isNotBlank(workerInfo.getFieldAcquisitionUrl())) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent(1, workerInfo.getId()))); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(2).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent()));
} }
asyncHikvision.editWorker(workerInfo, true, true); asyncHikvision.editWorker(workerInfo, true, true);
return null; return null;

View File

@ -491,7 +491,7 @@ public class XzRiskPredictionController {
int temLow = 0; int temLow = 0;
int temHighLow = 0; int temHighLow = 0;
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
com.gexin.fastjson.JSONObject jo = ja.getJSONObject(i); com.gexin.fastjson.JSONObject jo = ja.getJSONObject(i + 1);
String winSpeed = jo.getString("win_speed"); String winSpeed = jo.getString("win_speed");
String weaImg = jo.getString("wea_img"); String weaImg = jo.getString("wea_img");
Double temDay = jo.getDouble("tem_day"); Double temDay = jo.getDouble("tem_day");
@ -591,7 +591,7 @@ public class XzRiskPredictionController {
String weatherData = AqiUtil.getWeatherData(weathercityid); String weatherData = AqiUtil.getWeatherData(weathercityid);
JSONArray ja = JSON.parseArray(weatherData); JSONArray ja = JSON.parseArray(weatherData);
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
com.gexin.fastjson.JSONObject jo = ja.getJSONObject(i); com.gexin.fastjson.JSONObject jo = ja.getJSONObject(i + 1);
String winSpeed = jo.getString("win_speed"); String winSpeed = jo.getString("win_speed");
String weaImg = jo.getString("wea_img"); String weaImg = jo.getString("wea_img");
List<Integer> nums = NumberUtils.getIntegersInStr(winSpeed); List<Integer> nums = NumberUtils.getIntegersInStr(winSpeed);

View File

@ -33,7 +33,9 @@ import com.zhgd.xmgl.modules.worker.service.impl.DepartmentInfoServiceImpl;
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl; import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionCompareData; import com.zhgd.xmgl.modules.xz.entity.XzHikvisionCompareData;
import com.zhgd.xmgl.modules.xz.entity.XzHikvisionSync;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper; import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionCompareDataMapper;
import com.zhgd.xmgl.modules.xz.mapper.XzHikvisionSyncMapper;
import com.zhgd.xmgl.modules.xz.service.IXzHikvisionCompareDataService; import com.zhgd.xmgl.modules.xz.service.IXzHikvisionCompareDataService;
import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.security.util.SecurityUtils;
import com.zhgd.xmgl.task.HikvisionTask; import com.zhgd.xmgl.task.HikvisionTask;
@ -48,6 +50,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import static com.zhgd.xmgl.async.AsyncHikvision.getSyncTimeWithInitIfAbsent;
/** /**
* @Description: 星纵-海康数据校验失败记录 * @Description: 星纵-海康数据校验失败记录
* @author pds * @author pds
@ -98,6 +102,8 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
@Lazy @Lazy
@Autowired @Autowired
private RedisRepository redisRepository; private RedisRepository redisRepository;
@Autowired
private XzHikvisionSyncMapper xzHikvisionSyncMapper;
@Override @Override
public IPage<XzHikvisionCompareData> queryPageList(HashMap<String, Object> param) { public IPage<XzHikvisionCompareData> queryPageList(HashMap<String, Object> param) {
@ -257,7 +263,6 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} }
} }
private void syncDepartment(XzHikvisionCompareData data) throws Exception { private void syncDepartment(XzHikvisionCompareData data) throws Exception {
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn()); ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn());
DepartmentInfo departmentInfo = departmentInfoService.queryById(data.getUniqueId()); DepartmentInfo departmentInfo = departmentInfoService.queryById(data.getUniqueId());
@ -291,7 +296,6 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} }
} }
private void syncWorker(XzHikvisionCompareData data) throws Exception { private void syncWorker(XzHikvisionCompareData data) throws Exception {
boolean isWorker = data.getOurType() == 4; boolean isWorker = data.getOurType() == 4;
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn()); ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(data.getProjectSn());
@ -300,6 +304,13 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
//查询id是否存在平台存在就更新不存在就删除 //查询id是否存在平台存在就更新不存在就删除
if (workerInfo != null) { if (workerInfo != null) {
//同步海康 //同步海康
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getBigType, 1)
.eq(XzHikvisionSync::getWhoId, workerInfo.getId())
);
if (isWorker) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(isWorker ? 1 : 2).setOperate(1).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent()));
}
asyncHikvision.saveWorkerAsync(workerInfo, isWorker, !isWorker); asyncHikvision.saveWorkerAsync(workerInfo, isWorker, !isWorker);
} else { } else {
workerInfo = new WorkerInfo(); workerInfo = new WorkerInfo();
@ -314,6 +325,13 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
JSONObject rtJo = HikvisionUtil.queryWorkerByCondition(projectInfoBySn, param); JSONObject rtJo = HikvisionUtil.queryWorkerByCondition(projectInfoBySn, param);
if (HikvisionUtil.isSuccess(rtJo)) { if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list"); JSONArray list = HikvisionUtil.getJSONObjectData(rtJo).getJSONArray("list");
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getBigType, 1)
.eq(XzHikvisionSync::getWhoId, workerInfo.getId())
);
if (isWorker) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(isWorker ? 1 : 2).setOperate(1).setWhoId(workerInfo.getId()).setBigType(1).setCreateDate(getSyncTimeWithInitIfAbsent()));
}
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
//新增 //新增
asyncHikvision.addWorkerAsync(workerInfo, isWorker, !isWorker); asyncHikvision.addWorkerAsync(workerInfo, isWorker, !isWorker);
@ -335,15 +353,15 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
if (carInfo != null) { if (carInfo != null) {
//同步海康 //同步海康
if (Objects.equals(carInfo.getIsBlack(), 1)) { if (Objects.equals(carInfo.getIsBlack(), 1)) {
asyncHikvision.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, true); deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, 1, true);
} else { } else {
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo); editCarInfoForHikvisionAsync(carInfo);
} }
} else { } else {
carInfo = new CarInfo(); carInfo = new CarInfo();
carInfo.setCarNumber(data.getCarNumber()); carInfo.setCarNumber(data.getCarNumber());
carInfo.setProjectSn(data.getProjectSn()); carInfo.setProjectSn(data.getProjectSn());
asyncHikvision.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, false); deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, 3, false);
} }
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) { } else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
//查询id是否存在isc存在就更新不存在就新增 //查询id是否存在isc存在就更新不存在就新增
@ -364,17 +382,22 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
//新增 //新增
if (carInfo.getIsBlack() == 1) { if (carInfo.getIsBlack() == 1) {
asyncHikvision.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, true); deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, 1, true);
} else { } else {
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getBigType, 2)
.eq(XzHikvisionSync::getWhoId, carInfo.getId())
);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(Objects.equals(carInfo.getCarModuleType(), 1) ? 4 : 6).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
asyncHikvision.addCarInfoForHikvisionAsync(carInfo); asyncHikvision.addCarInfoForHikvisionAsync(carInfo);
} }
} else { } else {
//更新 //更新
//同步海康 //同步海康
if (Objects.equals(carInfo.getIsBlack(), 1)) { if (Objects.equals(carInfo.getIsBlack(), 1)) {
asyncHikvision.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, true); deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, 1, true);
} else { } else {
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo); editCarInfoForHikvisionAsync(carInfo);
} }
} }
} else { } else {
@ -384,6 +407,25 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} }
} }
private void deleteCarInfoAndSetBlackForHikvisionAsync(CarInfo carInfo, int operate, boolean isSetBlack) {
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getBigType, 2)
.eq(XzHikvisionSync::getWhoId, carInfo.getId())
);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(Objects.equals(carInfo.getCarModuleType(), 1) ? 4 : 6).setOperate(3).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(operate).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
asyncHikvision.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, isSetBlack);
}
private void editCarInfoForHikvisionAsync(CarInfo carInfo) {
xzHikvisionSyncMapper.delete(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getBigType, 2)
.eq(XzHikvisionSync::getWhoId, carInfo.getId())
);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(Objects.equals(carInfo.getCarModuleType(), 1) ? 4 : 6).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo);
}
/** /**
* 数据校验重试失败 * 数据校验重试失败
*/ */

View File

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException; 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.redis.lock.redisson.DistributedLock;
import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.constant.Cts;
@ -245,17 +246,17 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
String redisKey = Cts.HK_SYNC_AUTH_SUCCESS_KEY + id; String redisKey = Cts.HK_SYNC_AUTH_SUCCESS_KEY + id;
Object success = redisRepository.get(redisKey); Object success = redisRepository.get(redisKey);
redisRepository.del(redisKey); redisRepository.del(redisKey);
if (!Objects.equals(success,1)) { //if (!Objects.equals(success,1)) {
throw new OpenAlertException("重试失败"); // throw new OpenAlertException("重试失败");
} //}
return; //return;
} }
} }
XzHikvisionSync xzHikvisionSync1 = baseMapper.selectById(id); //XzHikvisionSync xzHikvisionSync1 = baseMapper.selectById(id);
if (!Objects.equals(xzHikvisionSync1.getIsSuccess(), 1)) { //if (!Objects.equals(xzHikvisionSync1.getIsSuccess(), 1)) {
throw new OpenAlertException("重试失败"); // throw new OpenAlertException("重试失败");
} //}
} }
} }