diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 1c2583975..7a4197108 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -308,7 +308,7 @@ public class AsyncHikvision { @Async("carInfoExecutor") public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName, Long projectEnterpriseId) { try { - hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn, enterpriseName,projectEnterpriseId); + hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn, enterpriseName, projectEnterpriseId); } catch (Exception e) { log.error("海康:", e); sendNoticeForOrg(enterpriseName, e, "删除"); @@ -594,8 +594,9 @@ public class AsyncHikvision { .in(WorkerInfo::getId, workerList.stream().map(WorkerInfo::getId).collect(Collectors.toList())) ); for (WorkerInfo workerInfo : failWorkers) { - if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { - noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), + Set noticeUserIds = hikvisionCall.getNoticeUserIds(workerInfo.getNoticeUserId(), workerInfo.getProjectSn()); + for (Long noticeUserId : noticeUserIds) { + noticeService.addUserNotice(noticeUserId, StrUtil.format("[{}]下发{}设备权限失败{}", workerInfo.getWorkerName(), dev != null ? "[" + dev.getDevName() + "]" : "有些", exc), "人员下发设备提醒", "1"); } @@ -699,8 +700,9 @@ public class AsyncHikvision { continue; } hikvisionCall.updateSuccessStatus(projectSn, Long.valueOf(workerId), 3, 3, devSn); - if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { - noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), + Set noticeUserIds = hikvisionCall.getNoticeUserIds(workerIdMap.get(workerId).getNoticeUserId(), projectSn); + for (Long noticeUserId : noticeUserIds) { + noticeService.addUserNotice(noticeUserId, StrUtil.format("[{}]取消下发到[{}]{}", workerIdMap.get(workerId).getWorkerName(), devSnMap.get(devSn).getDevName(), @@ -755,8 +757,9 @@ public class AsyncHikvision { } else { hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 1, dev.getDevSn()); } - if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { - noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), + Set noticeUserIds = hikvisionCall.getNoticeUserIds(workerIdMap.get(personId).getNoticeUserId(), projectSn); + for (Long noticeUserId : noticeUserIds) { + noticeService.addUserNotice(noticeUserId, StrUtil.format("[{}]下发到[{}]{}", workerIdMap.get(personId).getWorkerName(), dev.getDevName(), @@ -770,8 +773,9 @@ public class AsyncHikvision { } else { hikvisionCall.updateFailStatus(projectSn, Long.valueOf(personId), 3, 3, dev.getDevSn()); } - if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { - noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), + Set noticeUserIds = hikvisionCall.getNoticeUserIds(workerIdMap.get(personId).getNoticeUserId(), projectSn); + for (Long noticeUserId : noticeUserIds) { + noticeService.addUserNotice(noticeUserId, StrUtil.format("[{}]取消下发到[{}]{}", workerIdMap.get(personId).getWorkerName(), dev.getDevName(), diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 40d878c05..fffe5be73 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -23,6 +23,8 @@ import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.base.*; import com.zhgd.xmgl.call.entity.ChargeDeletionParam; import com.zhgd.xmgl.constant.Cts; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; +import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; import com.zhgd.xmgl.modules.basicdata.service.UploadFileService; import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; import com.zhgd.xmgl.modules.car.entity.CarCamera; @@ -89,6 +91,7 @@ import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; @Slf4j @RestController @@ -200,6 +203,9 @@ public class HikvisionCall { @Lazy @Resource private IProjectUfaceConfigService projectUfaceConfigService; + @Lazy + @Autowired + private ISystemUserService systemUserService; /** * 获取图片 @@ -1150,11 +1156,33 @@ public class HikvisionCall { updateFailStatus(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, null); xzHikvisionCompareDataService.compareRetryFail(); } - if (sendNotice && ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { - noticeService.addUserNotice(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId(), msg, title, noticeType); + Set userIdSet = getNoticeUserIds(workerInfo.getNoticeUserId(), workerInfo.getProjectSn()); + if (sendNotice) { + for (Long userId : userIdSet) { + noticeService.addUserNotice(userId, msg, title, noticeType); + } } } + /** + * 通知发起人,项目账号,操作的人 + * + * @param flowStartUser + * @param projectSn + * @return + */ + public Set getNoticeUserIds(Long flowStartUser, String projectSn) { + //项目级别账号 + List systemUsers = systemUserService.getSystemUsersBySn(new MapBuilder().put(Cts.SN, projectSn).put(Cts.QUERY_TYPE, Cts.PROJECT_LEVEL).build()); + Set userIdSet = systemUsers.stream().map(SystemUser::getUserId).collect(Collectors.toSet()); + //审批的发起人 + userIdSet.add(flowStartUser); + if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) { + userIdSet.add(ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class).getUserId()); + } + return userIdSet; + } + /** * 更新所有未同步失败状态 * 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 5f75ecd81..56dfbbd2b 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 @@ -155,9 +155,9 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(ProjectUfaceConfig::getProjectSn, workerInfo.getProjectSn()); - ProjectUfaceConfig tempProjectUfaceConfig = projectUfaceConfigMapper.selectOne(queryWrapper); + ProjectUfaceConfig ufaceConfig = projectUfaceConfigMapper.selectOne(queryWrapper); //判断是否配置并下发设备 - if (tempProjectUfaceConfig != null && tempProjectUfaceConfig.getIssueDev() == 1) { + if (ufaceConfig != null && ufaceConfig.getIssueDev() == 1) { String ufaceDevId = workerInfo.getUfaceDevId(); Map param = new HashMap<>(); param.put("projectSn", workerInfo.getProjectSn()); @@ -183,7 +183,7 @@ public class ProjectUfaceConfigServiceImpl extends ServiceImpl page = new Page<>(pageNo, pageSize); - List list=workerInfoAuditRecordMapper.selectWorkerInfoAuditList(page, map); + List list = workerInfoAuditRecordMapper.selectWorkerInfoAuditList(page, map); return page.setRecords(list); } @Override public List getPassList(Map map) { - Page page = new Page<>(1, 1000); + Page page = new Page<>(1, 1000); map.put("isExamPass", 1); return workerInfoAuditRecordMapper.selectWorkerInfoAuditList1(page, map); } @Override public void saveWorkerInfoAuditRecord(WorkerInfoAuditRecord workerInfoAuditRecord) { - QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.lambda().eq(WorkerInfo::getProjectSn,workerInfoAuditRecord.getProjectSn()) - .eq(WorkerInfo::getIdCard,workerInfoAuditRecord.getIdCard()); - int count=workerInfoService.count(queryWrapper); - if(count>0){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(WorkerInfo::getProjectSn, workerInfoAuditRecord.getProjectSn()) + .eq(WorkerInfo::getIdCard, workerInfoAuditRecord.getIdCard()); + int count = workerInfoService.count(queryWrapper); + if (count > 0) { throw new OpenAlertException(MessageUtil.get("existsIDCardErr")); } - QueryWrapper queryWrapper2=new QueryWrapper<>(); - queryWrapper2.lambda().eq(WorkerInfoAuditRecord::getProjectSn,workerInfoAuditRecord.getProjectSn()) - .eq(WorkerInfoAuditRecord::getIdCard,workerInfoAuditRecord.getIdCard()); + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.lambda().eq(WorkerInfoAuditRecord::getProjectSn, workerInfoAuditRecord.getProjectSn()) + .eq(WorkerInfoAuditRecord::getIdCard, workerInfoAuditRecord.getIdCard()); WorkerInfoAuditRecord workerInfoAuditRecord1 = workerInfoAuditRecordMapper.selectOne(queryWrapper2); - if(workerInfoAuditRecord1 != null){ + if (workerInfoAuditRecord1 != null) { if (workerInfoAuditRecord1.getIsExamPass() == 1) { throw new OpenAlertException("人员已通过培训,请勿重新添加人员信息"); } else { @@ -94,12 +92,12 @@ public class WorkerInfoAuditRecordServiceImpl extends ServiceImpl queryWrapper=new QueryWrapper<>(); - queryWrapper.lambda().eq(WorkerInfoAuditRecord::getProjectSn,workerInfoAuditRecord.getProjectSn()) - .eq(WorkerInfoAuditRecord::getIdCard,workerInfoAuditRecord.getIdCard()) - .ne(WorkerInfoAuditRecord::getId,workerInfoAuditRecord.getId()); - int count=workerInfoAuditRecordMapper.selectCount(queryWrapper); - if(count>0){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(WorkerInfoAuditRecord::getProjectSn, workerInfoAuditRecord.getProjectSn()) + .eq(WorkerInfoAuditRecord::getIdCard, workerInfoAuditRecord.getIdCard()) + .ne(WorkerInfoAuditRecord::getId, workerInfoAuditRecord.getId()); + int count = workerInfoAuditRecordMapper.selectCount(queryWrapper); + if (count > 0) { throw new OpenAlertException(MessageUtil.get("existsIDCardErr")); } workerInfoAuditRecordMapper.updateById(workerInfoAuditRecord); @@ -107,20 +105,21 @@ public class WorkerInfoAuditRecordServiceImpl extends ServiceImpl map) { - WorkerInfoAuditRecord workerInfoAuditRecord=workerInfoAuditRecordMapper.selectById(MapUtils.getString(map,"id")); - if(workerInfoAuditRecord==null){ + WorkerInfoAuditRecord workerInfoAuditRecord = workerInfoAuditRecordMapper.selectById(MapUtils.getString(map, "id")); + if (workerInfoAuditRecord == null) { throw new OpenAlertException(MessageUtil.get("notFindErr")); } - WorkerInfo workerInfo=new WorkerInfo(); + WorkerInfo workerInfo = new WorkerInfo(); BeanUtils.copyProperties(workerInfoAuditRecord, workerInfo); - workerInfo.setRegisterType(MapUtils.getInteger(map,"registerType")); - workerInfo.setAccountType(MapUtils.getInteger(map,"accountType")); - workerInfo.setUfaceDevId(MapUtils.getString(map,"ufaceDevId")); + workerInfo.setRegisterType(MapUtils.getInteger(map, "registerType")); + workerInfo.setAccountType(MapUtils.getInteger(map, "accountType")); + workerInfo.setUfaceDevId(MapUtils.getString(map, "ufaceDevId")); workerInfo.setInserviceType(1); //调用向正式表添加接口并下发设备 WorkerInfo workerInfo1 = new WorkerInfo(); try { + workerInfo1.setNoticeUserId(Long.valueOf(MapUtils.getString(map, "startUser"))); workerInfo1 = workerInfoService.saveWorkerInfo(workerInfo); } catch (Exception e) { log.error("同步人员信息失败:" + workerInfo.getWorkerName() + e.getMessage()); @@ -151,17 +150,17 @@ public class WorkerInfoAuditRecordServiceImpl extends ServiceImpl map) { - WorkerInfoAuditRecord workerInfoAuditRecord=workerInfoAuditRecordMapper.selectById(MapUtils.getString(map,"id")); - if(workerInfoAuditRecord==null){ + WorkerInfoAuditRecord workerInfoAuditRecord = workerInfoAuditRecordMapper.selectById(MapUtils.getString(map, "id")); + if (workerInfoAuditRecord == null) { throw new OpenAlertException(MessageUtil.get("notFindErr")); } - workerInfoAuditRecordMapper.deleteById(MapUtils.getString(map,"id")); + workerInfoAuditRecordMapper.deleteById(MapUtils.getString(map, "id")); } @Override