From b8cbea24548242d2496792fac17f12caf247e64a Mon Sep 17 00:00:00 2001 From: GUO <1923636941@qq.com> Date: Wed, 29 May 2024 23:48:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=8A=B6=E6=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/async/AsyncHikvision.java | 31 +++++++++++-------- .../java/com/zhgd/xmgl/async/AsyncWorker.java | 5 +++ .../com/zhgd/xmgl/call/HikvisionCall.java | 4 +-- .../service/impl/UfaceDevServiceImpl.java | 4 +++ .../service/impl/WorkerInfoServiceImpl.java | 6 ++-- 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 042ea7d7c..ff40f25d0 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -64,8 +64,13 @@ public class AsyncHikvision { @Autowired private XzHikvisionSyncMapper xzHikvisionSyncMapper; - public static Date getSyncLotNow() { - return ThreadLocalUtil.getNotNull().getDate("now"); + public static Date getSyncLotNowOrSetIfNull() { + Date now = ThreadLocalUtil.getNotNull().getDate("now"); + if (now == null) { + now = new Date(); + ThreadLocalUtil.addInKey("now", now); + } + return now; } /** @@ -86,7 +91,7 @@ public class AsyncHikvision { } public void addWorkerForHikvision(WorkerInfo workerInfo) { - Date now = getSyncLotNow(); + Date now = getSyncLotNowOrSetIfNull(); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(1).setWhoId(workerInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(1).setWhoId(workerInfo.getId()).setCreateDate(now)); asyncHikvision.addWorkerForHikvisionAsync(workerInfo, now); @@ -104,7 +109,7 @@ public class AsyncHikvision { } public void editWorkerForHikvision(WorkerInfo workerInfo) { - Date now = getSyncLotNow(); + Date now = getSyncLotNowOrSetIfNull(); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(2).setWhoId(workerInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(2).setWhoId(workerInfo.getId()).setCreateDate(now)); asyncHikvision.editWorkerForHikvisionAsync(workerInfo, now); @@ -124,7 +129,7 @@ public class AsyncHikvision { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type); } - hikvisionCall.updateAllFailStatusIfNullByNow(workerInfo.getProjectSn(), workerInfo.getId(), 1, getSyncLotNow()); + hikvisionCall.updateAllFailStatusIfNullByNow(workerInfo.getProjectSn(), workerInfo.getId(), 1, getSyncLotNowOrSetIfNull()); } @Async("hikvisionExecutor") @@ -139,7 +144,7 @@ public class AsyncHikvision { } public void deleteWorkerForHikvision(WorkerInfo workerInfo) { - Date now = getSyncLotNow(); + Date now = getSyncLotNowOrSetIfNull(); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(1).setOperate(3).setWhoId(workerInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(2).setOperate(3).setWhoId(workerInfo.getId()).setCreateDate(now)); asyncHikvision.deleteWorkerForHikvisionAsync(workerInfo, now); @@ -202,7 +207,7 @@ public class AsyncHikvision { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), msg, title, type); } - hikvisionCall.updateAllFailStatusIfNullByNow(carInfo.getProjectSn(), carInfo.getId(), 4, getSyncLotNow()); + hikvisionCall.updateAllFailStatusIfNullByNow(carInfo.getProjectSn(), carInfo.getId(), 4, getSyncLotNowOrSetIfNull()); } public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) { @@ -374,7 +379,7 @@ public class AsyncHikvision { if (StringUtils.isBlank(devSn)) { return; } - Date now = getSyncLotNow(); + Date now = getSyncLotNowOrSetIfNull(); String[] devSnArr = StringUtils.split(devSn, ","); for (String ds : devSnArr) { xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(1).setWhoId(workerInfo.getId()).setDeviceSn(ds).setCreateDate(now)); @@ -399,7 +404,7 @@ public class AsyncHikvision { } else { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), e.getMessage(), "人员下发设备提醒", "1"); } - hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 1, getSyncLotNow()); + hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 1, getSyncLotNowOrSetIfNull()); return; } @@ -419,7 +424,7 @@ public class AsyncHikvision { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), StringUtils.substring(msg, 0, msg.length() - 1), title, type); } - hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 1, getSyncLotNow()); + hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 1, getSyncLotNowOrSetIfNull()); } catch (Exception e) { log.error("海康:", e); } @@ -435,7 +440,7 @@ public class AsyncHikvision { if (StringUtils.isBlank(devSns)) { return; } - Date now = getSyncLotNow(); + Date now = getSyncLotNowOrSetIfNull(); String[] devSnArr = StringUtils.split(devSns, ","); for (String ds : devSnArr) { xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(workerInfo.getProjectSn()).setType(3).setOperate(3).setWhoId(workerInfo.getId()).setDeviceSn(ds).setCreateDate(now)); @@ -463,7 +468,7 @@ public class AsyncHikvision { } else { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), e.getMessage(), "人员下发设备提醒", "1"); } - hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 3, getSyncLotNow()); + hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 3, getSyncLotNowOrSetIfNull()); return; } @@ -483,7 +488,7 @@ public class AsyncHikvision { if (SecurityUtils.getUser() != null && SecurityUtils.getUser().getUserId() != null) { noticeService.addUserNotice(SecurityUtils.getUser().getUserId(), StringUtils.substring(msg, 0, msg.length() - 1), title, type); } - hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 3, getSyncLotNow()); + hikvisionCall.updateAllFailStatusIfNullByNowForAuth(workerInfo.getProjectSn(), workerInfo.getId(), 3, 3, getSyncLotNowOrSetIfNull()); } catch (Exception e) { log.error("海康:", e); } diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java b/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java index 8c21d4ca5..3d889d00e 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncWorker.java @@ -9,6 +9,7 @@ import com.zhgd.xmgl.modules.project.entity.ProjectUfaceConfig; import com.zhgd.xmgl.modules.project.service.IProjectUfaceConfigService; import com.zhgd.xmgl.modules.worker.entity.*; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; +import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +30,9 @@ import java.util.Map; @Slf4j @Component public class AsyncWorker { + @Lazy + @Autowired + private WorkerInfoServiceImpl workerInfoService; @Autowired private WorkerInfoMapper workerInfoMapper; @Autowired @@ -82,6 +86,7 @@ public class AsyncWorker { try { info.setNoticeUserId(userId); projectUfaceConfigService.sendBatchWorkerInfo(info, projectUfaceConfig, devList); + workerInfoService.resetHkStatus(info); } catch (Exception e) { log.error("下发人员异常,人员名称:{}", info.getWorkerName() + "," + e.getMessage()); noticeFail(info.getWorkerName(), userId, e); diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 44764dece..8437be184 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1220,10 +1220,10 @@ public class HikvisionCall { 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 if (xzHikvisionSyncs.stream().allMatch(xzHikvisionSync1 -> xzHikvisionSync1.getIsSuccess() == null || Objects.equals(xzHikvisionSync1.getIsSuccess(), 0))) { + sendSuccessStatus = 2; } else { sendSuccessStatus = 3; } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java index 6b2b02ee9..a08f323ef 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/UfaceDevServiceImpl.java @@ -25,6 +25,7 @@ import com.zhgd.xmgl.util.*; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,7 +43,10 @@ import java.util.stream.Stream; @Service @Transactional(rollbackFor = Exception.class) public class UfaceDevServiceImpl extends ServiceImpl implements IUfaceDevService { + @Lazy @Autowired + private WorkerInfoServiceImpl workerInfoService; + @Autowired private IUserDevAuthorityService userDevAuthorityService; @Autowired private UfaceDevMapper ufaceDevMapper; 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 51a5dc611..d7dc4d9ce 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 @@ -456,7 +456,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl