diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index dda48545f..6d81febe0 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -111,6 +111,7 @@ public class AsyncHikvision { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type); } + hikvisionCall.updateFailStatusByNow(workerInfo.getProjectSn(), workerInfo.getId(), 1, ThreadLocalUtil.getNotNull().getDate("now")); } @Async("hikvisionExecutor") @@ -167,6 +168,7 @@ public class AsyncHikvision { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type); } + hikvisionCall.updateFailStatusByNow(carInfo.getProjectSn(), carInfo.getId(), 4, ThreadLocalUtil.getNotNull().getDate("now")); } public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) { diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 723a1bfdb..cc41430ae 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -31,8 +31,8 @@ import com.zhgd.xmgl.modules.car.service.impl.CarPassRecordServiceImpl; import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetData; import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetDev; import com.zhgd.xmgl.modules.frontierprotectionnonet.mapper.FrontierProtectionNoNetDevMapper; -import com.zhgd.xmgl.modules.frontierprotectionnonet.service.impl.FrontierProtectionNoNetDataServiceImpl; import com.zhgd.xmgl.modules.frontierprotectionnonet.service.IFrontierProtectionNoNetDevService; +import com.zhgd.xmgl.modules.frontierprotectionnonet.service.impl.FrontierProtectionNoNetDataServiceImpl; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord; @@ -1086,7 +1086,7 @@ public class HikvisionCall { } if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, "24"); - } else if (carInfo.getUserIds() != null && carInfo.getUserIds().size() > 0) { + } else if (carInfo.getUserIds() != null && carInfo.getUserIds().size() > 0) { for (String userId : carInfo.getUserIds()) { noticeService.addUserNotice(Long.valueOf(userId), msg, title, "24"); } @@ -1173,7 +1173,17 @@ public class HikvisionCall { } } - private void updateSuccessStatusByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) { + public void updateFailStatusByNow(String projectSn, Long whoId, Integer type, Date now) { + xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper() + .set(XzHikvisionSync::getIsSuccess, 0) + .eq(XzHikvisionSync::getProjectSn, projectSn) + .eq(XzHikvisionSync::getWhoId, whoId) + .eq(XzHikvisionSync::getCreateDate, now) + ); + updateTotalStatus(projectSn, whoId, type, now); + } + + public void updateSuccessStatusByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getWhoId, whoId) @@ -1192,59 +1202,36 @@ public class HikvisionCall { xzHikvisionSync.setIsSuccess(1); xzHikvisionSyncMapper.updateById(xzHikvisionSync); - if (type >= 4) { - Integer fail = getFailOrSucCount(projectSn, whoId, now, 0); - if (fail == 0) { - carInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(CarInfo::getId, whoId) - .set(CarInfo::getSendSuccessStatus, 1) - ); - } else { - Integer sc = getFailOrSucCount(projectSn, whoId, now, 1); - if (sc == 0) { - carInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(CarInfo::getId, whoId) - .set(CarInfo::getSendSuccessStatus, 2) - ); - } else { - carInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(CarInfo::getId, whoId) - .set(CarInfo::getSendSuccessStatus, 3) - ); - } - } - } else { - Integer fail = getFailOrSucCount(projectSn, whoId, now, 0); - if (fail == 0) { - workerInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(WorkerInfo::getId, whoId) - .set(WorkerInfo::getSendSuccessStatus, 1) - ); - } else { - Integer sc = getFailOrSucCount(projectSn, whoId, now, 1); - if (sc == 0) { - workerInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(WorkerInfo::getId, whoId) - .set(WorkerInfo::getSendSuccessStatus, 2) - ); - } else { - workerInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(WorkerInfo::getId, whoId) - .set(WorkerInfo::getSendSuccessStatus, 3) - ); - } - } - } + updateTotalStatus(projectSn, whoId, type, now); } - private Integer getFailOrSucCount(String projectSn, Long whoId, Date now, int val) { - Integer fail = xzHikvisionSyncMapper.selectCount(new LambdaQueryWrapper() + private void updateTotalStatus(String projectSn, Long whoId, Integer type, Date now) { + List xzHikvisionSyncs = xzHikvisionSyncMapper.selectList(new LambdaQueryWrapper() .eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getWhoId, whoId) .eq(XzHikvisionSync::getCreateDate, now) - .eq(XzHikvisionSync::getIsSuccess, val) ); - return fail; + Integer sendSuccessStatus = null; + if (xzHikvisionSyncs.stream().allMatch(xzHikvisionSync1 -> Objects.equals(xzHikvisionSync1.getIsSuccess(), 1))) { + sendSuccessStatus = 1; + } else if (xzHikvisionSyncs.stream().allMatch(xzHikvisionSync1 -> Objects.equals(xzHikvisionSync1.getIsSuccess(), 0))) { + sendSuccessStatus = 2; + } else if (xzHikvisionSyncs.stream().allMatch(xzHikvisionSync1 -> xzHikvisionSync1.getIsSuccess() == null)) { + sendSuccessStatus = null; + } else { + sendSuccessStatus = 3; + } + if (type >= 4) { + carInfoMapper.update(null, new LambdaUpdateWrapper() + .eq(CarInfo::getId, whoId) + .set(CarInfo::getSendSuccessStatus, sendSuccessStatus) + ); + } else { + workerInfoMapper.update(null, new LambdaUpdateWrapper() + .eq(WorkerInfo::getId, whoId) + .set(WorkerInfo::getSendSuccessStatus, 1) + ); + } } /** diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java index eb393b0df..4461152dd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java @@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.car.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -17,7 +18,6 @@ import com.zhgd.xmgl.modules.car.mapper.*; import com.zhgd.xmgl.modules.car.service.ICarInfoService; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl; -import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.util.MessageUtil; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -134,6 +134,9 @@ public class CarInfoServiceImpl extends ServiceImpl impl private void editCar(CarInfo carInfo) { CarInfo old = carInfoMapper.selectById(carInfo.getId()); carInfoMapper.updateById(carInfo); + carInfoMapper.update(null, new LambdaUpdateWrapper() + .set(CarInfo::getSendSuccessStatus, null) + .eq(CarInfo::getId, carInfo.getId())); //同步海康 asyncHikvision.editCarInfoForHikvision(carInfo, old); diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 48f066d4b..31c1fbd73 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -14,6 +14,7 @@ import cn.hutool.poi.excel.ExcelWriter; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -433,6 +434,10 @@ public class WorkerInfoServiceImpl extends ServiceImpl() + .set(WorkerInfo::getSendSuccessStatus, null) + .eq(WorkerInfo::getId, workerInfo.getId()) + ); //同步海康 asyncHikvision.editWorkerForHikvision(workerInfo); 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 6510c1e01..11d7bb305 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 @@ -121,18 +121,14 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl