|
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.zksy.common.exception.ServiceException;
|
|
import com.zksy.common.exception.ServiceException;
|
|
|
|
|
+import com.zksy.common.utils.DictUtils;
|
|
|
|
|
+import com.zksy.common.utils.SecurityUtils;
|
|
|
import com.zksy.dispatch.domain.DisEvent;
|
|
import com.zksy.dispatch.domain.DisEvent;
|
|
|
import com.zksy.dispatch.domain.DisEventLog;
|
|
import com.zksy.dispatch.domain.DisEventLog;
|
|
|
import com.zksy.dispatch.domain.DisPlan;
|
|
import com.zksy.dispatch.domain.DisPlan;
|
|
@@ -21,7 +23,7 @@ import com.zksy.dispatch.dto.EventUrgeDTO;
|
|
|
import com.zksy.dispatch.dto.EventUrgePageDTO;
|
|
import com.zksy.dispatch.dto.EventUrgePageDTO;
|
|
|
import com.zksy.dispatch.dto.EventUrgeRowVO;
|
|
import com.zksy.dispatch.dto.EventUrgeRowVO;
|
|
|
import com.zksy.dispatch.dto.EventVerifyDTO;
|
|
import com.zksy.dispatch.dto.EventVerifyDTO;
|
|
|
-import com.zksy.dispatch.dto.EventReleaseDTO;
|
|
|
|
|
|
|
+import com.zksy.dispatch.dto.EventAuditDTO;
|
|
|
import com.zksy.dispatch.support.DispatchAttachUrlSupport;
|
|
import com.zksy.dispatch.support.DispatchAttachUrlSupport;
|
|
|
import com.zksy.dispatch.dto.SseMessageDto;
|
|
import com.zksy.dispatch.dto.SseMessageDto;
|
|
|
import com.zksy.dispatch.enums.EventLogOperTypeEnum;
|
|
import com.zksy.dispatch.enums.EventLogOperTypeEnum;
|
|
@@ -36,6 +38,7 @@ import com.zksy.dispatch.service.DispatchNotifyService;
|
|
|
import com.zksy.dispatch.support.DispatchNumberSupport;
|
|
import com.zksy.dispatch.support.DispatchNumberSupport;
|
|
|
import com.zksy.dispatch.support.DispatchUserSupport;
|
|
import com.zksy.dispatch.support.DispatchUserSupport;
|
|
|
import com.zksy.dispatch.support.SseEmitterManager;
|
|
import com.zksy.dispatch.support.SseEmitterManager;
|
|
|
|
|
+import com.zksy.system.service.ISysMenuService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -92,6 +95,9 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private DispatchUserMapper userMapper;
|
|
private DispatchUserMapper userMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ISysMenuService sysMenuService;
|
|
|
|
|
+
|
|
|
// ==================== 查询 ====================
|
|
// ==================== 查询 ====================
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -157,6 +163,10 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
}
|
|
}
|
|
|
DisEventVO vo = toVO(event, loadUserNames(Collections.singletonList(event)));
|
|
DisEventVO vo = toVO(event, loadUserNames(Collections.singletonList(event)));
|
|
|
List<DisEventLog> logs = eventLogService.listByEventId(id);
|
|
List<DisEventLog> logs = eventLogService.listByEventId(id);
|
|
|
|
|
+ logs.forEach(item -> {
|
|
|
|
|
+ item.setTrendName(dictName("dis_event_trend", item.getTrend()));
|
|
|
|
|
+ item.setNeedUpgradeName(dictName("dis_yes_no", item.getNeedUpgrade() == null ? null : item.getNeedUpgrade().toString()));
|
|
|
|
|
+ });
|
|
|
vo.setLogs(logs);
|
|
vo.setLogs(logs);
|
|
|
long urgeCount = 0L;
|
|
long urgeCount = 0L;
|
|
|
for (DisEventLog item : logs) {
|
|
for (DisEventLog item : logs) {
|
|
@@ -180,8 +190,36 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public List<DisUserOptionVO> listUserOptions() {
|
|
|
|
|
- return userMapper.selectUserOptions();
|
|
|
|
|
|
|
+ public List<DisUserOptionVO> listHandlerOptions() {
|
|
|
|
|
+ return listUsersWithPermission("dispatch:event:handle");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<DisUserOptionVO> listVerifierOptions() {
|
|
|
|
|
+ return listUsersWithPermission("dispatch:event:audit");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private List<DisUserOptionVO> listUsersWithPermission(String permission) {
|
|
|
|
|
+ return userMapper.selectUserOptions().stream()
|
|
|
|
|
+ .filter(user -> userHasPermission(user.getUserId(), permission))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private boolean userHasPermission(Long userId, String permission) {
|
|
|
|
|
+ if (userId == null) return false;
|
|
|
|
|
+ if (SecurityUtils.isAdmin(userId)) return true;
|
|
|
|
|
+ java.util.Set<String> permissions = sysMenuService.selectMenuPermsByUserId(userId);
|
|
|
|
|
+ return permissions != null && SecurityUtils.hasPermi(permissions, permission);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private DisUserOptionVO requireUserWithPermission(Long userId, String permission, String label) {
|
|
|
|
|
+ DisUserOptionVO user = userMapper.selectUserOptions().stream()
|
|
|
|
|
+ .filter(option -> userId != null && userId.equals(option.getUserId()))
|
|
|
|
|
+ .findFirst().orElseThrow(() -> new ServiceException(label + "必须从有效系统用户中选择"));
|
|
|
|
|
+ if (!userHasPermission(userId, permission)) {
|
|
|
|
|
+ throw new ServiceException(label + "未配置对应事件操作权限");
|
|
|
|
|
+ }
|
|
|
|
|
+ return user;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -350,7 +388,6 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
row.setHandler(resolveUserName(userNames, event.getHandlerId(), event.getHandler()));
|
|
row.setHandler(resolveUserName(userNames, event.getHandlerId(), event.getHandler()));
|
|
|
row.setHandlerId(event.getHandlerId());
|
|
row.setHandlerId(event.getHandlerId());
|
|
|
row.setHandlerPhone(event.getHandlerPhone());
|
|
row.setHandlerPhone(event.getHandlerPhone());
|
|
|
- row.setDepartment(event.getDepartment());
|
|
|
|
|
List<DisEventLog> urges = urgeMap.get(event.getId());
|
|
List<DisEventLog> urges = urgeMap.get(event.getId());
|
|
|
row.setUrgeCount(CollectionUtils.isEmpty(urges) ? 0L : (long) urges.size());
|
|
row.setUrgeCount(CollectionUtils.isEmpty(urges) ? 0L : (long) urges.size());
|
|
|
if (!CollectionUtils.isEmpty(urges)) {
|
|
if (!CollectionUtils.isEmpty(urges)) {
|
|
@@ -465,16 +502,22 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
if (StringUtils.isBlank(dto.getEventLevel())) {
|
|
if (StringUtils.isBlank(dto.getEventLevel())) {
|
|
|
throw new ServiceException("请选择事件等级");
|
|
throw new ServiceException("请选择事件等级");
|
|
|
}
|
|
}
|
|
|
|
|
+ if (dto.getHandlerId() == null) {
|
|
|
|
|
+ throw new ServiceException("请选择处置人");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (dto.getVerifierId() == null && DispatchUserSupport.currentUserId() == null) {
|
|
|
|
|
+ throw new ServiceException("请选择核验人");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
db.setVerifyResult(dto.getVerifyResult());
|
|
db.setVerifyResult(dto.getVerifyResult());
|
|
|
- Long verifierId = dto.getVerifierId() == null ? DispatchUserSupport.currentUserId() : dto.getVerifierId();
|
|
|
|
|
|
|
+ Long verifierId = falseEvent ? DispatchUserSupport.currentUserId()
|
|
|
|
|
+ : (dto.getVerifierId() == null ? DispatchUserSupport.currentUserId() : dto.getVerifierId());
|
|
|
String verifierName = DispatchUserSupport.currentUserName();
|
|
String verifierName = DispatchUserSupport.currentUserName();
|
|
|
- if (dto.getVerifierId() != null) {
|
|
|
|
|
- DisUserOptionVO verifier = userMapper.selectUserOptions().stream()
|
|
|
|
|
- .filter(user -> dto.getVerifierId().equals(user.getUserId()))
|
|
|
|
|
- .findFirst().orElseThrow(() -> new ServiceException("核验人必须从有效系统用户中选择"));
|
|
|
|
|
|
|
+ if (!falseEvent) {
|
|
|
|
|
+ DisUserOptionVO verifier = requireUserWithPermission(
|
|
|
|
|
+ verifierId, "dispatch:event:audit", "核验人");
|
|
|
verifierName = verifier.getNickName();
|
|
verifierName = verifier.getNickName();
|
|
|
}
|
|
}
|
|
|
db.setVerifier(verifierName);
|
|
db.setVerifier(verifierName);
|
|
@@ -486,43 +529,15 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
} else {
|
|
} else {
|
|
|
db.setEventCategory(dto.getEventCategory());
|
|
db.setEventCategory(dto.getEventCategory());
|
|
|
db.setEventLevel(dto.getEventLevel());
|
|
db.setEventLevel(dto.getEventLevel());
|
|
|
- Long deptId = dto.getDeptId();
|
|
|
|
|
- if (deptId == null || StringUtils.isBlank(dto.getDepartment())) {
|
|
|
|
|
- throw new ServiceException("请选择处置单位");
|
|
|
|
|
- }
|
|
|
|
|
- List<DisDeptOptionVO> departments = userMapper.selectDeptOptions();
|
|
|
|
|
- DisDeptOptionVO selectedDept = departments.stream()
|
|
|
|
|
- .filter(dept -> deptId.equals(dept.getDeptId()))
|
|
|
|
|
- .findFirst().orElseThrow(() -> new ServiceException("处置单位无效"));
|
|
|
|
|
- db.setDepartment(selectedDept.getDeptName());
|
|
|
|
|
-
|
|
|
|
|
- // 处置人可选;如指定,必须属于所选单位或其下级部门。
|
|
|
|
|
|
|
+ // 处置人从有效系统用户中选择,不再依赖处置单位。
|
|
|
Long handlerId = dto.getHandlerId();
|
|
Long handlerId = dto.getHandlerId();
|
|
|
if (handlerId == null && StringUtils.isNotBlank(dto.getHandler())) {
|
|
if (handlerId == null && StringUtils.isNotBlank(dto.getHandler())) {
|
|
|
handlerId = userMapper.selectUserIdByName(dto.getHandler());
|
|
handlerId = userMapper.selectUserIdByName(dto.getHandler());
|
|
|
}
|
|
}
|
|
|
if (handlerId != null) {
|
|
if (handlerId != null) {
|
|
|
Long selectedHandlerId = handlerId;
|
|
Long selectedHandlerId = handlerId;
|
|
|
- DisUserOptionVO handler = userMapper.selectUserOptions().stream()
|
|
|
|
|
- .filter(user -> selectedHandlerId.equals(user.getUserId()))
|
|
|
|
|
- .findFirst().orElseThrow(() -> new ServiceException("处置人必须从有效系统用户中选择"));
|
|
|
|
|
- Long handlerDeptId = handler.getDeptId();
|
|
|
|
|
- boolean inScope = false;
|
|
|
|
|
- for (int depth = 0; handlerDeptId != null && !Objects.equals(handlerDeptId, 0L)
|
|
|
|
|
- && depth <= departments.size(); depth++) {
|
|
|
|
|
- if (deptId.equals(handlerDeptId)) {
|
|
|
|
|
- inScope = true;
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- Long currentDeptId = handlerDeptId;
|
|
|
|
|
- DisDeptOptionVO currentDept = departments.stream()
|
|
|
|
|
- .filter(dept -> currentDeptId.equals(dept.getDeptId()))
|
|
|
|
|
- .findFirst().orElse(null);
|
|
|
|
|
- handlerDeptId = currentDept == null ? null : currentDept.getParentId();
|
|
|
|
|
- }
|
|
|
|
|
- if (!inScope) {
|
|
|
|
|
- throw new ServiceException("处置人须属于所选处置单位或其下级部门");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DisUserOptionVO handler = requireUserWithPermission(
|
|
|
|
|
+ selectedHandlerId, "dispatch:event:handle", "处置人");
|
|
|
db.setHandler(handler.getNickName());
|
|
db.setHandler(handler.getNickName());
|
|
|
db.setHandlerId(selectedHandlerId);
|
|
db.setHandlerId(selectedHandlerId);
|
|
|
db.setHandlerPhone(null);
|
|
db.setHandlerPhone(null);
|
|
@@ -589,6 +604,7 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
if (!EventStatusEnum.canStartDispose(db.getStatus())) {
|
|
if (!EventStatusEnum.canStartDispose(db.getStatus())) {
|
|
|
throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可开始处置");
|
|
throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可开始处置");
|
|
|
}
|
|
}
|
|
|
|
|
+ requireHandler(db, "开始处置");
|
|
|
Integer statusFrom = db.getStatus();
|
|
Integer statusFrom = db.getStatus();
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
db.setStatus(EventStatusEnum.DISPOSING.getCode());
|
|
db.setStatus(EventStatusEnum.DISPOSING.getCode());
|
|
@@ -610,6 +626,7 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
if (!EventStatusEnum.canTrack(db.getStatus())) {
|
|
if (!EventStatusEnum.canTrack(db.getStatus())) {
|
|
|
throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可跟踪");
|
|
throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可跟踪");
|
|
|
}
|
|
}
|
|
|
|
|
+ requireHandler(db, "跟踪");
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
db.setLastVisitTime(now);
|
|
db.setLastVisitTime(now);
|
|
|
if (dto.getNextVisitTime() != null) {
|
|
if (dto.getNextVisitTime() != null) {
|
|
@@ -633,29 +650,68 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void release(Long id, EventReleaseDTO dto) {
|
|
|
|
|
- if (StringUtils.isBlank(dto.getReleaseReason())) {
|
|
|
|
|
- throw new ServiceException("请选择解除原因");
|
|
|
|
|
|
|
+ public void submitVerify(EventTrackDTO dto) {
|
|
|
|
|
+ DisEvent db = requireForUpdate(dto.getEventId());
|
|
|
|
|
+ if (!EventStatusEnum.canSubmitVerify(db.getStatus())) {
|
|
|
|
|
+ throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可提交核验");
|
|
|
|
|
+ }
|
|
|
|
|
+ requireHandler(db, "提交核验");
|
|
|
|
|
+ Integer statusFrom = db.getStatus();
|
|
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
+ db.setStatus(EventStatusEnum.PENDING_ACCEPTANCE.getCode());
|
|
|
|
|
+ db.setUpdateUserId(DispatchUserSupport.currentUserId());
|
|
|
|
|
+ db.setUpdateTime(now);
|
|
|
|
|
+ updateById(db);
|
|
|
|
|
+
|
|
|
|
|
+ DisEventLog log = buildLog(db, EventLogOperTypeEnum.SUBMIT_VERIFY, statusFrom, db.getStatus());
|
|
|
|
|
+ log.setOperDesc(StringUtils.defaultIfBlank(dto.getOperDesc(), "处置人提交核验"));
|
|
|
|
|
+ log.setAttachUrl(attachUrlSupport.toRelative(dto.getAttachUrl()));
|
|
|
|
|
+ eventLogService.append(log);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public void audit(Long id, EventAuditDTO dto) {
|
|
|
|
|
+ if (dto.getResolved() == null) {
|
|
|
|
|
+ throw new ServiceException("请选择核验结果");
|
|
|
}
|
|
}
|
|
|
DisEvent db = requireForUpdate(id);
|
|
DisEvent db = requireForUpdate(id);
|
|
|
- if (!EventStatusEnum.canRelease(db.getStatus())) {
|
|
|
|
|
- throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可解除");
|
|
|
|
|
|
|
+ if (!EventStatusEnum.canAudit(db.getStatus())) {
|
|
|
|
|
+ throw new ServiceException("当前状态【" + EventStatusEnum.getDescByCode(db.getStatus()) + "】不可核验");
|
|
|
|
|
+ }
|
|
|
|
|
+ Long currentUserId = DispatchUserSupport.currentUserId();
|
|
|
|
|
+ if (currentUserId == null || !Objects.equals(currentUserId, db.getVerifierId())) {
|
|
|
|
|
+ throw new ServiceException("仅指定核验人可以执行最终核验");
|
|
|
}
|
|
}
|
|
|
Integer statusFrom = db.getStatus();
|
|
Integer statusFrom = db.getStatus();
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
- db.setStatus(EventStatusEnum.RELEASED.getCode());
|
|
|
|
|
- db.setReleaseTime(now);
|
|
|
|
|
- db.setReleaseReason(dto.getReleaseReason());
|
|
|
|
|
- db.setReleaseNote(dto.getReleaseNote());
|
|
|
|
|
- db.setUpdateUserId(DispatchUserSupport.currentUserId());
|
|
|
|
|
|
|
+ if (Boolean.TRUE.equals(dto.getResolved())) {
|
|
|
|
|
+ db.setStatus(EventStatusEnum.RELEASED.getCode());
|
|
|
|
|
+ db.setReleaseTime(now);
|
|
|
|
|
+ db.setReleaseNote(dto.getAuditOpinion());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ db.setStatus(EventStatusEnum.DISPOSING.getCode());
|
|
|
|
|
+ db.setReleaseTime(null);
|
|
|
|
|
+ db.setReleaseReason(null);
|
|
|
|
|
+ db.setReleaseNote(null);
|
|
|
|
|
+ }
|
|
|
|
|
+ db.setUpdateUserId(currentUserId);
|
|
|
db.setUpdateTime(now);
|
|
db.setUpdateTime(now);
|
|
|
updateById(db);
|
|
updateById(db);
|
|
|
|
|
|
|
|
- DisEventLog log = buildLog(db, EventLogOperTypeEnum.RELEASE, statusFrom, db.getStatus());
|
|
|
|
|
- log.setOperDesc(StringUtils.defaultIfBlank(dto.getReleaseNote(), dto.getReleaseReason()));
|
|
|
|
|
|
|
+ DisEventLog log = buildLog(db, EventLogOperTypeEnum.AUDIT, statusFrom, db.getStatus());
|
|
|
|
|
+ log.setOperDesc(StringUtils.defaultIfBlank(dto.getAuditOpinion(), Boolean.TRUE.equals(dto.getResolved()) ? "核验结果:已解除" : "核验结果:未解除,继续处置"));
|
|
|
|
|
+ log.setAttachUrl(attachUrlSupport.toRelative(dto.getAttachUrl()));
|
|
|
eventLogService.append(log);
|
|
eventLogService.append(log);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void requireHandler(DisEvent event, String operation) {
|
|
|
|
|
+ Long currentUserId = DispatchUserSupport.currentUserId();
|
|
|
|
|
+ if (currentUserId == null || !Objects.equals(currentUserId, event.getHandlerId())) {
|
|
|
|
|
+ throw new ServiceException("仅指定处置人可以" + operation);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ==================== 工作催办(留痕,不改状态) ====================
|
|
// ==================== 工作催办(留痕,不改状态) ====================
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -706,13 +762,17 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
*/
|
|
*/
|
|
|
private LambdaQueryWrapper<DisEvent> buildWrapper(DisEventPageDTO dto) {
|
|
private LambdaQueryWrapper<DisEvent> buildWrapper(DisEventPageDTO dto) {
|
|
|
LambdaQueryWrapper<DisEvent> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<DisEvent> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.like(StringUtils.isNotBlank(dto.getEventNo()), DisEvent::getEventNo, dto.getEventNo());
|
|
|
|
|
- wrapper.like(StringUtils.isNotBlank(dto.getDescription()), DisEvent::getDescription, dto.getDescription());
|
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(dto.getKeyword())) {
|
|
|
|
|
+ wrapper.and(w -> w.like(DisEvent::getEventNo, dto.getKeyword())
|
|
|
|
|
+ .or().like(DisEvent::getDescription, dto.getKeyword()));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ wrapper.like(StringUtils.isNotBlank(dto.getEventNo()), DisEvent::getEventNo, dto.getEventNo());
|
|
|
|
|
+ wrapper.like(StringUtils.isNotBlank(dto.getDescription()), DisEvent::getDescription, dto.getDescription());
|
|
|
|
|
+ }
|
|
|
wrapper.eq(StringUtils.isNotBlank(dto.getEventCategory()), DisEvent::getEventCategory, dto.getEventCategory());
|
|
wrapper.eq(StringUtils.isNotBlank(dto.getEventCategory()), DisEvent::getEventCategory, dto.getEventCategory());
|
|
|
wrapper.eq(StringUtils.isNotBlank(dto.getEventLevel()), DisEvent::getEventLevel, dto.getEventLevel());
|
|
wrapper.eq(StringUtils.isNotBlank(dto.getEventLevel()), DisEvent::getEventLevel, dto.getEventLevel());
|
|
|
wrapper.eq(StringUtils.isNotBlank(dto.getEventSource()), DisEvent::getEventSource, dto.getEventSource());
|
|
wrapper.eq(StringUtils.isNotBlank(dto.getEventSource()), DisEvent::getEventSource, dto.getEventSource());
|
|
|
wrapper.like(StringUtils.isNotBlank(dto.getLocation()), DisEvent::getLocation, dto.getLocation());
|
|
wrapper.like(StringUtils.isNotBlank(dto.getLocation()), DisEvent::getLocation, dto.getLocation());
|
|
|
- wrapper.like(StringUtils.isNotBlank(dto.getDepartment()), DisEvent::getDepartment, dto.getDepartment());
|
|
|
|
|
wrapper.like(StringUtils.isNotBlank(dto.getHandler()), DisEvent::getHandler, dto.getHandler());
|
|
wrapper.like(StringUtils.isNotBlank(dto.getHandler()), DisEvent::getHandler, dto.getHandler());
|
|
|
if (!CollectionUtils.isEmpty(dto.getStatusList())) {
|
|
if (!CollectionUtils.isEmpty(dto.getStatusList())) {
|
|
|
wrapper.in(DisEvent::getStatus, dto.getStatusList());
|
|
wrapper.in(DisEvent::getStatus, dto.getStatusList());
|
|
@@ -750,11 +810,23 @@ public class DisEventServiceImpl extends ServiceImpl<DisEventMapper, DisEvent>
|
|
|
vo.setVerifier(resolveUserName(userNames, event.getVerifierId(), event.getVerifier()));
|
|
vo.setVerifier(resolveUserName(userNames, event.getVerifierId(), event.getVerifier()));
|
|
|
vo.setHandler(resolveUserName(userNames, event.getHandlerId(), event.getHandler()));
|
|
vo.setHandler(resolveUserName(userNames, event.getHandlerId(), event.getHandler()));
|
|
|
vo.setStatusName(EventStatusEnum.getDescByCode(event.getStatus()));
|
|
vo.setStatusName(EventStatusEnum.getDescByCode(event.getStatus()));
|
|
|
|
|
+ vo.setEventSourceName(dictName("dis_event_source", event.getEventSource()));
|
|
|
|
|
+ vo.setChannelName(dictName("dis_event_channel", event.getChannel()));
|
|
|
|
|
+ vo.setEventCategoryName(dictName("dis_event_category", event.getEventCategory()));
|
|
|
|
|
+ vo.setEventLevelName(dictName("dis_event_level", event.getEventLevel()));
|
|
|
|
|
+ vo.setReleaseReasonName(dictName("dis_event_release_reason", event.getReleaseReason()));
|
|
|
|
|
+ vo.setNeedUpgradeName(dictName("dis_yes_no", event.getNeedUpgrade() == null ? null : event.getNeedUpgrade().toString()));
|
|
|
vo.setEditable(EventStatusEnum.canEdit(event.getStatus()));
|
|
vo.setEditable(EventStatusEnum.canEdit(event.getStatus()));
|
|
|
vo.setElapsed(formatElapsed(event.getCreateTime()));
|
|
vo.setElapsed(formatElapsed(event.getCreateTime()));
|
|
|
return vo;
|
|
return vo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private String dictName(String type, String value) {
|
|
|
|
|
+ if (StringUtils.isBlank(value)) return null;
|
|
|
|
|
+ String label = DictUtils.getDictLabel(type, value);
|
|
|
|
|
+ return StringUtils.isBlank(label) ? value : label;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 批量取出事件列表里出现的人员ID,一次查询回昵称映射,避免逐行查库。
|
|
* 批量取出事件列表里出现的人员ID,一次查询回昵称映射,避免逐行查库。
|
|
|
* @return 用户ID -> 昵称;列表里没有任何人员ID时返回空映射
|
|
* @return 用户ID -> 昵称;列表里没有任何人员ID时返回空映射
|