From 470fe7b2da9e9011f680b845563c49bf49df6875 Mon Sep 17 00:00:00 2001 From: GUO <1923636941@qq.com> Date: Sun, 16 Jun 2024 18:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=B7=E5=BA=B7=E4=B8=8B=E5=8F=91=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 | 11 ++++-- .../com/zhgd/xmgl/call/HikvisionCall.java | 35 +++++++++++++------ src/main/java/com/zhgd/xmgl/constant/Cts.java | 5 +++ .../impl/EnterpriseInfoServiceImpl.java | 2 +- .../XzHikvisionCompareDataServiceImpl.java | 2 +- .../impl/XzHikvisionSyncServiceImpl.java | 13 +++++++ .../com/zhgd/xmgl/util/HikvisionUtil.java | 3 +- 7 files changed, 54 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 8ab043a3f..1c2583975 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.jeecg.common.execption.OpenPromptException; import com.zhgd.jeecg.common.util.SpringContextUtils; import com.zhgd.jeecg.common.util.pass.HttpUtils; +import com.zhgd.redis.lock.RedisRepository; import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.modules.basicdata.entity.Notice; @@ -93,6 +94,8 @@ public class AsyncHikvision { @Lazy @Autowired private XzHikvisionCompareDataServiceImpl xzHikvisionCompareDataService; + @Autowired + private RedisRepository redisRepository; public static Date getSyncTimeWithInitIfAbsent(int bigType, Long tableId) { Date now = ThreadLocalUtil.getNotNull().getDate(XZ_HIKVISION_SYNC_TIME); @@ -303,9 +306,9 @@ public class AsyncHikvision { } @Async("carInfoExecutor") - public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName) { + public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName, Long projectEnterpriseId) { try { - hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn, enterpriseName); + hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn, enterpriseName,projectEnterpriseId); } catch (Exception e) { log.error("海康:", e); sendNoticeForOrg(enterpriseName, e, "删除"); @@ -745,6 +748,10 @@ public class AsyncHikvision { //添加权限 if (Objects.equals(faceStatus, 3)) { hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); + Long syncId = ThreadLocalUtil.getByKey(Cts.TL_HK_SYNC_ID, Long.class); + if (syncId != null) { + redisRepository.set(Cts.HK_SYNC_AUTH_SUCCESS_KEY + syncId, 1, 60L); + } } else { hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); } diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 7d9d01004..40d878c05 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1777,7 +1777,7 @@ public class HikvisionCall { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } - Pair existAndIndexCode = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseInfo.getId())); + Pair existAndIndexCode = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseInfo.getId()), null); HikvisionOrganization hikvisionOrganization = getHikvisionOrganization(enterpriseInfo, existAndIndexCode.getRight()); if (existAndIndexCode.getLeft()) { editOrgFromHttp(project, hikvisionOrganization); @@ -1786,13 +1786,25 @@ public class HikvisionCall { } } - private Pair existAndGetEnterpriseOrgIndexCodeByEnterpriseId(Project project, String enterpriseId) throws Exception { - EnterpriseInfo enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder() - .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()), EnterpriseInfo.class); - JSONArray orgList = getOrgList(project, StrUtil.join(",", enterpriseId, enterpriseInfo != null ? enterpriseInfo.getProjectEnterprise().getId() : ""), project.getProjectSn()); + /** + * @param project + * @param enterpriseId + * @param projectEnterpriseId + * @return + * @throws Exception + */ + private Pair existAndGetEnterpriseOrgIndexCodeByEnterpriseId(Project project, String enterpriseId, Long projectEnterpriseId) throws Exception { + if (projectEnterpriseId == null) { + EnterpriseInfo enterpriseInfo = BeanUtil.toBean(enterpriseInfoService.getEnterpriseInfoById(new MapBuilder() + .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()), EnterpriseInfo.class); + if (enterpriseInfo.getProjectEnterprise() != null) { + projectEnterpriseId = enterpriseInfo.getProjectEnterprise().getId(); + } + } + JSONArray orgList = getOrgList(project, StrUtil.join(",", enterpriseId, projectEnterpriseId != null ? projectEnterpriseId : ""), project.getProjectSn()); String index = null; if (CollUtil.isEmpty(orgList)) { - index = enterpriseInfo != null ? String.valueOf(enterpriseInfo.getProjectEnterprise().getId()) : enterpriseId; + index = projectEnterpriseId != null ? String.valueOf(projectEnterpriseId) : enterpriseId; } else { index = orgList.getJSONObject(0).getString("orgIndexCode"); } @@ -1805,14 +1817,15 @@ public class HikvisionCall { * @param enterpriseId * @param projectSn * @param enterpriseName + * @param projectEnterpriseId */ - public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName) throws Exception { + public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName, Long projectEnterpriseId) throws Exception { Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, projectSn)); if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { return; } - Pair pair = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseId)); - String rs = HikvisionUtil.deleteOrgByIndexCodes(project, Arrays.asList(pair.getRight())); + Pair pair = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseId), projectEnterpriseId); + String rs = HikvisionUtil.deleteOrgByIndexCodes(project, Collections.singletonList(pair.getRight())); sendNoticeForOrg("删除组织到海康isc", rs, enterpriseName); } @@ -1835,7 +1848,7 @@ public class HikvisionCall { hikvisionOrganization.setClientId(null); hikvisionOrganization.setOrgIndexCode(String.valueOf(teamInfo.getId())); hikvisionOrganization.setOrgName(teamInfo.getTeamName()); - hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(teamInfo.getEnterpriseId())).getRight()); + hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(teamInfo.getEnterpriseId()), null).getRight()); return hikvisionOrganization; } @@ -1905,7 +1918,7 @@ public class HikvisionCall { hikvisionOrganization.setClientId(null); hikvisionOrganization.setOrgIndexCode(String.valueOf(departmentInfo.getId())); hikvisionOrganization.setOrgName(departmentInfo.getDepartmentName()); - hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(departmentInfo.getEnterpriseId())).getRight()); + hikvisionOrganization.setParentIndexCode(existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(departmentInfo.getEnterpriseId()), null).getRight()); return hikvisionOrganization; } diff --git a/src/main/java/com/zhgd/xmgl/constant/Cts.java b/src/main/java/com/zhgd/xmgl/constant/Cts.java index 7205c555a..274aaf7ec 100644 --- a/src/main/java/com/zhgd/xmgl/constant/Cts.java +++ b/src/main/java/com/zhgd/xmgl/constant/Cts.java @@ -53,4 +53,9 @@ public interface Cts { * 1添加权限2删除权限 */ String IS_ADD_AUTH = "isAddAuth"; + /** + * 1成功 + */ + String HK_SYNC_AUTH_SUCCESS_KEY = "hkSyncAuthSuccess:"; + String TL_HK_SYNC_ID = "tl_hk_sync_id"; } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java index c8154fb06..b4f981ca9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java @@ -258,7 +258,7 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); qw.lambda().eq(UfaceDev::getProjectSn, projectSn); List ufaceDevs = ufaceDevMapper.selectList(qw); + ThreadLocalUtil.addInKey(Cts.TL_HK_SYNC_ID, id); projectUfaceConfigService.buildAndSendOneWorkerAndDevForHk(ufaceDevs, workerInfo, xzHikvisionSync.getOperate(), xzHikvisionSync.getDeviceSn(), projectSn); + String redisKey = Cts.HK_SYNC_AUTH_SUCCESS_KEY + id; + Object success = redisRepository.get(redisKey); + redisRepository.del(redisKey); + if (!Objects.equals(success,1)) { + throw new OpenAlertException("重试失败"); + } + return; } } diff --git a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java index 874e18a9e..78ceea70b 100644 --- a/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/HikvisionUtil.java @@ -399,8 +399,7 @@ public class HikvisionUtil { String host = "https://" + project.getArtemisConfigHost(); JSONObject jo = new JSONObject(); jo.put("indexCodes", indexCodes); - String rs = doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - return rs; + return doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } /**