Browse Source

系统日志开发

master
luogw 1 month ago
parent
commit
adae676b03
  1. 11
      src/main/java/com/project/ding/application/DepartmentApplicationService.java
  2. 4
      src/main/java/com/project/ding/application/UserApplicationService.java
  3. 21
      src/main/java/com/project/ding/application/impl/DepartmentApplicationServiceImpl.java
  4. 8
      src/main/java/com/project/ding/application/impl/UserApplicationServiceImpl.java
  5. 13
      src/main/java/com/project/ding/domain/service/SearchDepartmentDomainService.java
  6. 5
      src/main/java/com/project/ding/domain/service/SearchUserDomainService.java
  7. 23
      src/main/java/com/project/ding/domain/service/impl/SearchDepartmentDomainServiceImpl.java
  8. 9
      src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java
  9. 11
      src/main/java/com/project/information/application/InformationApplicationService.java
  10. 15
      src/main/java/com/project/information/application/impl/InformationApplicationServiceImpl.java
  11. 7
      src/main/java/com/project/information/controller/InformationController.java
  12. 2
      src/main/java/com/project/information/controller/ProductLineController.java
  13. 7
      src/main/java/com/project/information/domain/service/DeleteInformationDomainService.java
  14. 3
      src/main/java/com/project/information/domain/service/SearchInformationDomainService.java
  15. 29
      src/main/java/com/project/information/domain/service/impl/DeleteInformationDomainServiceImpl.java
  16. 8
      src/main/java/com/project/information/domain/service/impl/SearchInformationDomainServiceImpl.java
  17. 12
      src/main/java/com/project/operation/domain/dto/OperationLogDTO.java
  18. 85
      src/main/java/com/project/operation/domain/service/impl/SearchOperationLogDomainServiceImpl.java
  19. 98
      src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java
  20. 19
      src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java

11
src/main/java/com/project/ding/application/DepartmentApplicationService.java

@ -0,0 +1,11 @@
package com.project.ding.application;
import com.project.ding.domain.dto.DepartmentDTO;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface DepartmentApplicationService {
List<DepartmentDTO> searchByIds(Set<String> deptIdSet);
}

4
src/main/java/com/project/ding/application/UserApplicationService.java

@ -5,6 +5,9 @@ import com.project.base.domain.result.Result;
import com.project.ding.domain.dto.UserDTO;
import com.project.ding.domain.param.UserParam;
import java.util.List;
import java.util.Set;
public interface UserApplicationService {
Result<PageResult<UserDTO>> search(UserParam param) throws Exception;
@ -15,4 +18,5 @@ public interface UserApplicationService {
Result<String> getLastSyncTime() throws Exception;
List<UserDTO> searchByIds(Set<Long> idSet);
}

21
src/main/java/com/project/ding/application/impl/DepartmentApplicationServiceImpl.java

@ -0,0 +1,21 @@
package com.project.ding.application.impl;
import com.project.ding.application.DepartmentApplicationService;
import com.project.ding.domain.dto.DepartmentDTO;
import com.project.ding.domain.service.SearchDepartmentDomainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
@Service
public class DepartmentApplicationServiceImpl implements DepartmentApplicationService {
@Autowired
private SearchDepartmentDomainService searchDepartmentDomainService;
@Override
public List<DepartmentDTO> searchByIds(Set<String> deptIdSet) {
return searchDepartmentDomainService.searchByIds(deptIdSet);
}
}

8
src/main/java/com/project/ding/application/impl/UserApplicationServiceImpl.java

@ -11,6 +11,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
@Service
public class UserApplicationServiceImpl implements UserApplicationService {
@Autowired
@ -33,5 +36,10 @@ public class UserApplicationServiceImpl implements UserApplicationService {
public Result<String> getLastSyncTime() throws Exception {
return getLastSyncTimeSyncLogDomainService.getLastSyncTime();
}
@Override
public List<UserDTO> searchByIds(Set<Long> idSet) {
return searchUserDomainService.searchByIds(idSet);
}
}

13
src/main/java/com/project/ding/domain/service/SearchDepartmentDomainService.java

@ -0,0 +1,13 @@
package com.project.ding.domain.service;
import com.project.ding.domain.dto.DepartmentDTO;
import java.util.List;
import java.util.Set;
public interface SearchDepartmentDomainService {
/**
* 查询部门信息
*/
List<DepartmentDTO> searchByIds(Set<String> deptIdSet);
}

5
src/main/java/com/project/ding/domain/service/SearchUserDomainService.java

@ -5,9 +5,14 @@ import com.project.base.domain.result.Result;
import com.project.ding.domain.dto.UserDTO;
import com.project.ding.domain.param.UserParam;
import java.util.List;
import java.util.Set;
public interface SearchUserDomainService {
Result<PageResult<UserDTO>> search(UserParam param) throws Exception;
Result<UserDTO> getDetail(Long id) throws Exception;
List<UserDTO> searchByIds(Set<Long> idSet);
}

23
src/main/java/com/project/ding/domain/service/impl/SearchDepartmentDomainServiceImpl.java

@ -0,0 +1,23 @@
package com.project.ding.domain.service.impl;
import com.project.ding.domain.dto.DepartmentDTO;
import com.project.ding.domain.service.DepartmentBaseService;
import com.project.ding.domain.service.SearchDepartmentDomainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SearchDepartmentDomainServiceImpl implements SearchDepartmentDomainService {
@Autowired
private DepartmentBaseService departmentBaseService;
@Override
public List<DepartmentDTO> searchByIds(Set<String> deptIdSet) {
return departmentBaseService.listByIds(deptIdSet).stream()
.map(departmentEntity -> departmentEntity.toDTO(DepartmentDTO::new)).collect(Collectors.toList());
}
}

9
src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java

@ -16,9 +16,10 @@ import com.project.task.domain.enums.TaskUserStatusEnum;
import com.project.task.domain.service.TaskUserBaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SearchUserDomainServiceImpl implements SearchUserDomainService {
@ -71,4 +72,10 @@ public class SearchUserDomainServiceImpl implements SearchUserDomainService {
UserEntity entity = userMapper.selectById(id);
return Result.success(buildDTO(entity));
}
@Override
public List<UserDTO> searchByIds(Set<Long> idSet) {
List<UserEntity> userEntities = userMapper.selectBatchIds(idSet);
return userEntities.stream().map(entity -> entity.toDTO(UserDTO::new)).collect(Collectors.toList());
}
}

11
src/main/java/com/project/information/application/InformationApplicationService.java

@ -5,6 +5,7 @@ import com.project.base.domain.result.Result;
import com.project.information.domain.dto.InformationDTO;
import com.project.information.domain.param.FileCheckItem;
import com.project.information.domain.param.InformationParam;
import com.project.task.domain.dto.TaskDTO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -19,4 +20,14 @@ public interface InformationApplicationService {
* 查询资料列表
*/
Result<PageResult<InformationDTO>> list(InformationParam informationParam);
/**
* 删除资料
*/
Result<String> batchDelete(String ids);
/**
* 查询资料列表
*/
List<InformationDTO> selectBatchIds(List<Long> idList);
}

15
src/main/java/com/project/information/application/impl/InformationApplicationServiceImpl.java

@ -6,9 +6,12 @@ import com.project.information.application.InformationApplicationService;
import com.project.information.domain.dto.InformationDTO;
import com.project.information.domain.param.FileCheckItem;
import com.project.information.domain.param.InformationParam;
import com.project.information.domain.service.DeleteInformationDomainService;
import com.project.information.domain.service.InformationBaseService;
import com.project.information.domain.service.SearchInformationDomainService;
import com.project.information.domain.service.UploadInformationDomainService;
import com.project.operation.annotation.OperationLog;
import com.project.task.domain.dto.TaskDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@ -22,6 +25,8 @@ public class InformationApplicationServiceImpl implements InformationApplication
private UploadInformationDomainService uploadInformationDomainService;
@Autowired
private SearchInformationDomainService searchInformationDomainService;
@Autowired
private DeleteInformationDomainService deleteInformationDomainService;
@Override
public Result<String> checkDuplicates(Long subLineId, List<FileCheckItem> files) throws Exception {
@ -37,4 +42,14 @@ public class InformationApplicationServiceImpl implements InformationApplication
public Result<PageResult<InformationDTO>> list(InformationParam informationParam) {
return searchInformationDomainService.list(informationParam);
}
@Override
public Result<String> batchDelete(String ids) {
return deleteInformationDomainService.batchDelete(ids);
}
@Override
public List<InformationDTO> selectBatchIds(List<Long> idList) {
return searchInformationDomainService.selectBatchIds(idList);
}
}

7
src/main/java/com/project/information/controller/InformationController.java

@ -11,6 +11,7 @@ import com.project.information.domain.param.CheckDuplicatesParam;
import com.project.information.domain.param.FileCheckItem;
import com.project.information.domain.param.InformationParam;
import com.project.information.domain.param.ProductLineParam;
import com.project.operation.annotation.OperationLog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -39,4 +40,10 @@ public class InformationController {
public Result<PageResult<InformationDTO>> list(InformationParam informationParam) throws Exception {
return informationApplicationService.list(informationParam);
}
@PostMapping("/batchDelete")
@OperationLog(module = "资料管理")
public Result<String> batchDelete(String ids){
return informationApplicationService.batchDelete(ids);
}
}

2
src/main/java/com/project/information/controller/ProductLineController.java

@ -25,6 +25,7 @@ public class ProductLineController {
private ProductLineApplicationService productLineApplicationService;
@PostMapping("/save")
@OperationLog(module = "资料管理")
public Result<ProductLineDTO> save(ProductLineDTO dto) throws Exception {
return productLineApplicationService.save(dto);
}
@ -40,6 +41,7 @@ public class ProductLineController {
}
@PostMapping("/delete")
@OperationLog(module = "资料管理")
public Result<String> delete(Long id) throws Exception {
return productLineApplicationService.delete(id);
}

7
src/main/java/com/project/information/domain/service/DeleteInformationDomainService.java

@ -0,0 +1,7 @@
package com.project.information.domain.service;
import com.project.base.domain.result.Result;
public interface DeleteInformationDomainService {
Result<String> batchDelete(String ids);
}

3
src/main/java/com/project/information/domain/service/SearchInformationDomainService.java

@ -4,9 +4,12 @@ import com.project.base.domain.result.PageResult;
import com.project.base.domain.result.Result;
import com.project.information.domain.dto.InformationDTO;
import com.project.information.domain.param.InformationParam;
import com.project.task.domain.dto.TaskDTO;
import java.util.List;
public interface SearchInformationDomainService {
Result<PageResult<InformationDTO>> list(InformationParam informationParam);
List<InformationDTO> selectBatchIds(List<Long> idList);
}

29
src/main/java/com/project/information/domain/service/impl/DeleteInformationDomainServiceImpl.java

@ -0,0 +1,29 @@
package com.project.information.domain.service.impl;
import com.project.base.domain.exception.BusinessErrorException;
import com.project.base.domain.result.Result;
import com.project.information.domain.service.DeleteInformationDomainService;
import com.project.information.domain.service.InformationBaseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class DeleteInformationDomainServiceImpl implements DeleteInformationDomainService {
@Autowired
private InformationBaseService informationBaseService;
@Override
public Result<String> batchDelete(String ids) {
if (StringUtils.isBlank(ids)) {
throw new BusinessErrorException("ids is empty");
}
List<Long> idList = Arrays.asList(ids.split(",")).stream().map(id -> Long.valueOf(id)).collect(Collectors.toList());
informationBaseService.removeBatchByIds(idList);
return Result.success("删除成功");
}
}

8
src/main/java/com/project/information/domain/service/impl/SearchInformationDomainServiceImpl.java

@ -14,9 +14,11 @@ import com.project.information.domain.entity.InformationEntity;
import com.project.information.domain.param.InformationParam;
import com.project.information.domain.service.SearchInformationDomainService;
import com.project.information.mapper.InformationMapper;
import com.project.task.domain.dto.TaskDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class SearchInformationDomainServiceImpl implements SearchInformationDomainService {
@ -39,4 +41,10 @@ public class SearchInformationDomainServiceImpl implements SearchInformationDoma
return Result.page(informationDTOIPage);
}
@Override
public List<InformationDTO> selectBatchIds(List<Long> idList) {
List<InformationEntity> informationEntities = informationMapper.selectBatchIds(idList);
return informationEntities.stream().map(entity -> entity.toDTO(InformationDTO::new)).collect(Collectors.toList());
}
}

12
src/main/java/com/project/operation/domain/dto/OperationLogDTO.java

@ -1,13 +1,7 @@
package com.project.operation.domain.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.project.base.domain.dto.BaseDTO;
import jakarta.persistence.Column;
import jakarta.persistence.Id;
import lombok.Data;
import org.hibernate.annotations.Comment;
@Data
public class OperationLogDTO extends BaseDTO {
@ -28,4 +22,10 @@ public class OperationLogDTO extends BaseDTO {
private Long costTime;
private String clientIp;
private String username;
private String department;
private String position;
}

85
src/main/java/com/project/operation/domain/service/impl/SearchOperationLogDomainServiceImpl.java

@ -1,23 +1,42 @@
package com.project.operation.domain.service.impl;
import cn.hutool.core.util.DesensitizedUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.project.base.domain.result.Result;
import com.project.base.domain.utils.PageConverter;
import com.project.ding.application.DepartmentApplicationService;
import com.project.ding.application.UserApplicationService;
import com.project.ding.domain.dto.DepartmentDTO;
import com.project.ding.domain.dto.UserDTO;
import com.project.ding.domain.service.DepartmentBaseService;
import com.project.operation.domain.dto.OperationLogDTO;
import com.project.operation.domain.entity.OperationLogEntity;
import com.project.operation.domain.param.OperationLogParam;
import com.project.operation.domain.service.OperationLogBaseService;
import com.project.operation.domain.service.SearchOperationLogDomainService;
import com.project.task.domain.entity.TaskEntity;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SearchOperationLogDomainServiceImpl implements SearchOperationLogDomainService {
@Autowired
private OperationLogBaseService operationLogBaseService;
@Autowired
private DepartmentApplicationService departmentApplicationService;
@Autowired
private UserApplicationService userApplicationService;
/**
* 查询日志
@ -38,10 +57,72 @@ public class SearchOperationLogDomainServiceImpl implements SearchOperationLogDo
if (param.getEndTime() != null) {
logQueryWrapper.le("create_time",param.getEndTime());
}
//只查执行成功的日志
logQueryWrapper.eq("result",0);
logQueryWrapper.orderByDesc("create_time");
List<OperationLogEntity> entityList = operationLogBaseService.list(logQueryWrapper);
Page<OperationLogEntity> page = new Page<>(param.getCurrent(), param.getSize());
List<OperationLogEntity> entityList = operationLogBaseService.page(page,logQueryWrapper).getRecords();
if (CollectionUtils.isEmpty(entityList)){
return Result.success(Lists.newArrayList());
}
//收集用户ID,冗余字段
Set<Long> idSet = entityList.stream().filter(entity -> entity.getId() != null)
.map(OperationLogEntity::getCreatorId).collect(Collectors.toSet());
List<UserDTO> userDTOList = userApplicationService.searchByIds(idSet);
Map<String, UserDTO> userDTOMap = userDTOList
.stream().collect(Collectors.toMap(userDTO -> userDTO.getId(), userDTO -> userDTO));
//收集部门ID,冗余字段
Set<String> deptIdSet = userDTOList.stream()
.filter(userDTO -> StringUtils.isNotBlank(userDTO.getDeptIdStr()))
.flatMap(userDTO ->
List.of(userDTO.getDeptIdStr().split(",")).stream().filter(StringUtils::isNoneBlank)
).collect(Collectors.toSet());
Map<Long, DepartmentDTO> departmentDTOMap = departmentApplicationService.searchByIds(deptIdSet)
.stream().collect(Collectors.toMap(departmentDTO -> departmentDTO.getId(), departmentDTO -> departmentDTO));
return Result.success(entityList.stream()
.map(entity -> entity.toDTO(OperationLogDTO::new))
.map(entity -> buildDTO(entity,userDTOMap,departmentDTOMap))
.collect(Collectors.toList()));
}
/**
* 构建日志DTO
*/
private OperationLogDTO buildDTO(OperationLogEntity operationLogEntity,Map<String, UserDTO> userDTOMap,Map<Long, DepartmentDTO> departmentDTOMap){
OperationLogDTO operationLogDTO = operationLogEntity.toDTO(OperationLogDTO::new);
if (!userDTOMap.containsKey(operationLogEntity.getCreatorId().toString())){
return operationLogDTO;
}
UserDTO userDTO = userDTOMap.get(operationLogEntity.getCreatorId().toString());
operationLogDTO.setUsername(DesensitizedUtil.chineseName(userDTO.getName()));
operationLogDTO.setPosition(userDTO.getTitle());
if (StringUtils.isBlank(userDTO.getDeptIdStr())) {
return operationLogDTO;
}
// 拆分部门ID → 过滤有效ID → 转换为Long → 匹配部门名称 → 拼接
String deptName = List.of(userDTO.getDeptIdStr().split(","))
.stream()
.filter(StringUtils::isNotBlank)
.map(idStr -> {
try {
return Long.valueOf(idStr.trim());
} catch (NumberFormatException e) {
return null;
}
})
.filter(Objects::nonNull)
.filter(departmentDTOMap::containsKey)
.map(departmentDTOMap::get)
.map(DepartmentDTO::getName)
.collect(Collectors.joining(","));
operationLogDTO.setDepartment(deptName);
return operationLogDTO;
}
}

98
src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java

@ -1,18 +1,114 @@
package com.project.operation.domain.service.impl.description;
import cn.hutool.core.util.ObjectUtil;
import com.project.base.domain.result.Result;
import com.project.information.application.InformationApplicationService;
import com.project.information.application.ProductLineApplicationService;
import com.project.information.domain.dto.InformationDTO;
import com.project.information.domain.dto.ProductLineDTO;
import com.project.information.domain.param.ProductLineParam;
import com.project.operation.domain.dto.OperationLogDTO;
import com.project.operation.domain.enums.ModuleEnum;
import com.project.operation.domain.service.DescriptionStrategy;
import com.project.task.domain.dto.TaskDTO;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 资料管理
*/
@Component
public class DataDescriptionStrategy implements DescriptionStrategy {
@Autowired
private ProductLineApplicationService productLineApplicationService;
@Autowired
private InformationApplicationService informationApplicationService;
@SneakyThrows
@Override
public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) {
return null;
if (methodName.equals("save")) {
ProductLineDTO productLineDTO = (ProductLineDTO) args[0];
if (productLineDTO.getLeaf() == null || StringUtils.isBlank(productLineDTO.getName())) {
return false;
}
if (productLineDTO.getLeaf()){
operationLogDTO.setAction("添加");
}else{
operationLogDTO.setAction("创建");
}
operationLogDTO.setDescription("【"+ productLineDTO.getName()+"】");
}
if(methodName.equals("delete")){
Long id = (Long) args[0];
if(id==null){
return false;
}
operationLogDTO.setAction("删除");
List<ProductLineDTO> treeList = productLineApplicationService.treeList(new ProductLineParam()).getData();
//查找匹配的父节点
Optional<String> parentName = treeList.stream()
.filter(parent -> id.equals(parent.getId()))
.map(ProductLineDTO::getName)
.findFirst();
// 父节点匹配成功,直接返回名称
if (parentName.isPresent()) {
String name = parentName.get();
operationLogDTO.setDescription("【"+ name+"】");
return true;
}
//查找匹配的子节点(拼接父+子名称)
Optional<String> childName = treeList.stream()
// 过滤掉子节点为空的父节点
.filter(parent -> parent.getChildrenList() != null && !parent.getChildrenList().isEmpty())
.flatMap(parent -> parent.getChildrenList().stream()
.map(child -> new AbstractMap.SimpleEntry<>(parent, child)))
.filter(entry -> id.equals(entry.getValue().getId()))
.map(entry ->"【"+entry.getKey().getName()+"】" + "/" + "【"+entry.getValue().getName()+"】")
.findFirst();
if (childName.isPresent()) {
operationLogDTO.setDescription(childName.get());
}
}
if (methodName.equals("batchDelete")) {
String ids = (String) args[0];
if (StringUtils.isBlank(ids)){
return false;
}
List<Long> idList = Arrays.asList(ids.split(",")).stream().map(id -> Long.valueOf(id)).collect(Collectors.toList());
List<InformationDTO> informationDTOList = informationApplicationService.selectBatchIds(idList);
operationLogDTO.setAction(idList.size() == 1 ? "删除" : "批量删除");
if (CollectionUtils.isEmpty(informationDTOList)){
return false;
}
String description = informationDTOList.stream()
.map(informationDTO ->{
String taskName = Optional.ofNullable(informationDTO.getName()).orElse("未知文件");
return "【" + informationDTO.getName() + "】";
})
.collect(Collectors.joining(","));
operationLogDTO.setDescription(description);
}
return true;
}
@Override

19
src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java

@ -5,6 +5,7 @@ import com.project.operation.domain.enums.ModuleEnum;
import com.project.operation.domain.service.DescriptionStrategy;
import com.project.task.application.TaskApplicationService;
import com.project.task.domain.dto.TaskDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -13,6 +14,7 @@ import org.springframework.stereotype.Component;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@ -46,14 +48,21 @@ public class TaskDescriptionStrategy implements DescriptionStrategy {
if (StringUtils.isBlank(taskIds)){
return false;
}
List<Long> taskIdList = Arrays.asList(taskIds.split(",")).stream().map(id -> Long.parseLong(id)).collect(Collectors.toList());
List<Long> taskIdList = Arrays.asList(taskIds.split(",")).stream().map(id -> Long.valueOf(id)).collect(Collectors.toList());
List<TaskDTO> taskDTOList = taskApplicationService.selectBatchIds(taskIdList);
if (taskIdList.size() == 1){
if (CollectionUtils.isEmpty(taskDTOList)) {
operationLogDTO.setAction("删除");
}else{
operationLogDTO.setAction("批量删除");
return false;
}
operationLogDTO.setDescription(taskDTOList.stream().map(taskDTO -> "【"+ taskDTO.getName() +"】").collect(Collectors.joining(",")));
operationLogDTO.setAction(taskIdList.size() == 1 ? "删除" : "批量删除");
String description = taskDTOList.stream()
.map(taskDTO -> {
String taskName = Optional.ofNullable(taskDTO.getName()).orElse("未知任务");
return "【" + taskName + "】";
})
.collect(Collectors.joining(","));
operationLogDTO.setDescription(description);
}
return true;

Loading…
Cancel
Save