diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 8fdd61838..f2f664bfe 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -97,10 +97,9 @@ public class AsyncHikvision { @Autowired private RedisRepository redisRepository; - public static Date getSyncTimeWithInitIfAbsent(int bigType, Long tableId) { + public static Date getSyncTimeWithInitIfAbsent() { Date now = ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME); if (now == null) { - //首次执行,清空以前同步记录 now = new Date(); ThreadLocalUtil.addInKey(XZ_HIKVISION_SYNC_TIME, now); } @@ -164,6 +163,10 @@ public class AsyncHikvision { projectUfaceConfigService.updateWorkerInfo(workerInfo, workerInfo); } + public void saveWorker(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { + this.saveWorkerAsync(workerInfo, isSaveWorker, isSaveWorkerFace); + } + @Async("workerHkExecutor") public void saveWorkerAsync(WorkerInfo workerInfo, boolean isSaveWorker, boolean isSaveWorkerFace) { try { @@ -490,10 +493,6 @@ public class AsyncHikvision { hikvisionCall.getDoorEvents(paramMap); } - public void sendBatchWorkerInfo(List allDevList, List workerList, List workerAndDevSnList, Long userId, String projectSn, boolean isRetry) { - this.sendBatchWorkerInfoAsync(allDevList, workerList, workerAndDevSnList, userId, projectSn, false, true, null); - } - /** * 批量下发人员 * @@ -541,7 +540,7 @@ public class AsyncHikvision { })); futures = new ArrayList<>(); for (Map.Entry> entry : devSnToJoMap.entrySet()) { - Future future = asyncHikvision.sendBatchWorkersForOneDevAsync(workerIdMap, devSnMap, project, devSnToIscDevSnMap, entry, projectSn, sendNotice, workerList,flowStartUser); + Future future = asyncHikvision.sendBatchWorkersForOneDevAsync(workerIdMap, devSnMap, project, devSnToIscDevSnMap, entry, projectSn, sendNotice, workerList, flowStartUser); futures.add(future); } for (Future future : futures) { @@ -568,7 +567,7 @@ public class AsyncHikvision { log.error("批量下发权限失败:", e); hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, workerList, 1, 1); hikvisionCall.updateAllFailStatusIfNullForAuth(projectSn, workerList, 1, 3); - sendExcNotice(e, workerList, null, projectSn,flowStartUser); + sendExcNotice(e, workerList, null, projectSn, flowStartUser); } } @@ -690,7 +689,7 @@ public class AsyncHikvision { Set rtWorkerIdSet; if (CollUtil.isNotEmpty(qaiList)) { for (int i = 0; i < qaiList.size(); i++) { - handlerBatchWorkersResult(workerIdMap, qaiList, i, devSn, projectSn, addAuthWorkerIds, sendNotice, dev,flowStartUser); + handlerBatchWorkersResult(workerIdMap, qaiList, i, devSn, projectSn, addAuthWorkerIds, sendNotice, dev, flowStartUser); } rtWorkerIdSet = qaiList.stream().map(o -> ((JSONObject) o).getString("personId")).collect(Collectors.toSet()); } else { diff --git a/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java b/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java index 0571d1677..6e514d1b8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/entity/CarInfo.java @@ -99,7 +99,9 @@ public class CarInfo implements Serializable { @ApiModelProperty(value = "报警推送人") private java.lang.String alarmPushWorkerId; - + /** + * 车辆类型(1、固定车,2、预约车辆(长期)3、预约车辆(临时) + */ @ApiModelProperty(value = "车辆类型(1、固定车,2、预约车辆(长期)3、预约车辆(临时)") private Integer carModuleType; 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 09079955d..09843e905 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 @@ -615,7 +615,7 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl nums = NumberUtils.getIntegersInStr(winSpeed); 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 07948d9a4..e7574b9fb 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 @@ -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.WorkerInfoServiceImpl; 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.XzHikvisionSyncMapper; import com.zhgd.xmgl.modules.xz.service.IXzHikvisionCompareDataService; import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.task.HikvisionTask; @@ -48,6 +50,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; +import static com.zhgd.xmgl.async.AsyncHikvision.getSyncTimeWithInitIfAbsent; + /** * @Description: 星纵-海康数据校验失败记录 * @author: pds @@ -98,6 +102,8 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl queryPageList(HashMap param) { @@ -257,7 +263,6 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl() + .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); } else { workerInfo = new WorkerInfo(); @@ -314,6 +325,13 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl() + .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)) { //新增 asyncHikvision.addWorkerAsync(workerInfo, isWorker, !isWorker); @@ -335,15 +353,15 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl() + .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); } } else { //更新 //同步海康 if (Objects.equals(carInfo.getIsBlack(), 1)) { - asyncHikvision.deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, true); + deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, 1, true); } else { - asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo); + editCarInfoForHikvisionAsync(carInfo); } } } else { @@ -384,6 +407,25 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl() + .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() + .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); + } + /** * 数据校验重试失败 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java index 195a60e42..1e53deac7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.redis.lock.RedisRepository; +import com.zhgd.redis.lock.redisson.DistributedLock; import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.constant.Cts; @@ -245,17 +246,17 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl