diff --git a/src/main/java/com/project/ding/application/DepartmentApplicationService.java b/src/main/java/com/project/ding/application/DepartmentApplicationService.java new file mode 100644 index 0000000..b794a0e --- /dev/null +++ b/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 searchByIds(Set deptIdSet); +} diff --git a/src/main/java/com/project/ding/application/UserApplicationService.java b/src/main/java/com/project/ding/application/UserApplicationService.java index 8006fc3..709dc84 100644 --- a/src/main/java/com/project/ding/application/UserApplicationService.java +++ b/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> search(UserParam param) throws Exception; @@ -15,4 +18,5 @@ public interface UserApplicationService { Result getLastSyncTime() throws Exception; + List searchByIds(Set idSet); } diff --git a/src/main/java/com/project/ding/application/impl/DepartmentApplicationServiceImpl.java b/src/main/java/com/project/ding/application/impl/DepartmentApplicationServiceImpl.java new file mode 100644 index 0000000..1d8122e --- /dev/null +++ b/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 searchByIds(Set deptIdSet) { + return searchDepartmentDomainService.searchByIds(deptIdSet); + } +} diff --git a/src/main/java/com/project/ding/application/impl/UserApplicationServiceImpl.java b/src/main/java/com/project/ding/application/impl/UserApplicationServiceImpl.java index ce4fde7..281405c 100644 --- a/src/main/java/com/project/ding/application/impl/UserApplicationServiceImpl.java +++ b/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 getLastSyncTime() throws Exception { return getLastSyncTimeSyncLogDomainService.getLastSyncTime(); } + + @Override + public List searchByIds(Set idSet) { + return searchUserDomainService.searchByIds(idSet); + } } diff --git a/src/main/java/com/project/ding/domain/service/SearchDepartmentDomainService.java b/src/main/java/com/project/ding/domain/service/SearchDepartmentDomainService.java new file mode 100644 index 0000000..9dd2014 --- /dev/null +++ b/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 searchByIds(Set deptIdSet); +} diff --git a/src/main/java/com/project/ding/domain/service/SearchUserDomainService.java b/src/main/java/com/project/ding/domain/service/SearchUserDomainService.java index bfe6c7c..99779c4 100644 --- a/src/main/java/com/project/ding/domain/service/SearchUserDomainService.java +++ b/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> search(UserParam param) throws Exception; Result getDetail(Long id) throws Exception; + + List searchByIds(Set idSet); } diff --git a/src/main/java/com/project/ding/domain/service/impl/SearchDepartmentDomainServiceImpl.java b/src/main/java/com/project/ding/domain/service/impl/SearchDepartmentDomainServiceImpl.java new file mode 100644 index 0000000..cc83741 --- /dev/null +++ b/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 searchByIds(Set deptIdSet) { + return departmentBaseService.listByIds(deptIdSet).stream() + .map(departmentEntity -> departmentEntity.toDTO(DepartmentDTO::new)).collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java b/src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java index 30e8325..89724d6 100644 --- a/src/main/java/com/project/ding/domain/service/impl/SearchUserDomainServiceImpl.java +++ b/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 searchByIds(Set idSet) { + List userEntities = userMapper.selectBatchIds(idSet); + return userEntities.stream().map(entity -> entity.toDTO(UserDTO::new)).collect(Collectors.toList()); + } } diff --git a/src/main/java/com/project/information/application/InformationApplicationService.java b/src/main/java/com/project/information/application/InformationApplicationService.java index 9e9e801..1a6711c 100644 --- a/src/main/java/com/project/information/application/InformationApplicationService.java +++ b/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> list(InformationParam informationParam); + + /** + * 删除资料 + */ + Result batchDelete(String ids); + + /** + * 查询资料列表 + */ + List selectBatchIds(List idList); } diff --git a/src/main/java/com/project/information/application/impl/InformationApplicationServiceImpl.java b/src/main/java/com/project/information/application/impl/InformationApplicationServiceImpl.java index 70bcc55..4496a7e 100644 --- a/src/main/java/com/project/information/application/impl/InformationApplicationServiceImpl.java +++ b/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 checkDuplicates(Long subLineId, List files) throws Exception { @@ -37,4 +42,14 @@ public class InformationApplicationServiceImpl implements InformationApplication public Result> list(InformationParam informationParam) { return searchInformationDomainService.list(informationParam); } + + @Override + public Result batchDelete(String ids) { + return deleteInformationDomainService.batchDelete(ids); + } + + @Override + public List selectBatchIds(List idList) { + return searchInformationDomainService.selectBatchIds(idList); + } } diff --git a/src/main/java/com/project/information/controller/InformationController.java b/src/main/java/com/project/information/controller/InformationController.java index e8492bf..8d510d1 100644 --- a/src/main/java/com/project/information/controller/InformationController.java +++ b/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> list(InformationParam informationParam) throws Exception { return informationApplicationService.list(informationParam); } + + @PostMapping("/batchDelete") + @OperationLog(module = "资料管理") + public Result batchDelete(String ids){ + return informationApplicationService.batchDelete(ids); + } } diff --git a/src/main/java/com/project/information/controller/ProductLineController.java b/src/main/java/com/project/information/controller/ProductLineController.java index 2ffead1..e7fb38c 100644 --- a/src/main/java/com/project/information/controller/ProductLineController.java +++ b/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 save(ProductLineDTO dto) throws Exception { return productLineApplicationService.save(dto); } @@ -40,6 +41,7 @@ public class ProductLineController { } @PostMapping("/delete") + @OperationLog(module = "资料管理") public Result delete(Long id) throws Exception { return productLineApplicationService.delete(id); } diff --git a/src/main/java/com/project/information/domain/service/DeleteInformationDomainService.java b/src/main/java/com/project/information/domain/service/DeleteInformationDomainService.java new file mode 100644 index 0000000..aae6d0f --- /dev/null +++ b/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 batchDelete(String ids); +} diff --git a/src/main/java/com/project/information/domain/service/SearchInformationDomainService.java b/src/main/java/com/project/information/domain/service/SearchInformationDomainService.java index 37efea6..a77784d 100644 --- a/src/main/java/com/project/information/domain/service/SearchInformationDomainService.java +++ b/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> list(InformationParam informationParam); + + List selectBatchIds(List idList); } diff --git a/src/main/java/com/project/information/domain/service/impl/DeleteInformationDomainServiceImpl.java b/src/main/java/com/project/information/domain/service/impl/DeleteInformationDomainServiceImpl.java new file mode 100644 index 0000000..f74670f --- /dev/null +++ b/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 batchDelete(String ids) { + if (StringUtils.isBlank(ids)) { + throw new BusinessErrorException("ids is empty"); + } + List idList = Arrays.asList(ids.split(",")).stream().map(id -> Long.valueOf(id)).collect(Collectors.toList()); + informationBaseService.removeBatchByIds(idList); + return Result.success("删除成功"); + } +} diff --git a/src/main/java/com/project/information/domain/service/impl/SearchInformationDomainServiceImpl.java b/src/main/java/com/project/information/domain/service/impl/SearchInformationDomainServiceImpl.java index 3f5e977..fa94d61 100644 --- a/src/main/java/com/project/information/domain/service/impl/SearchInformationDomainServiceImpl.java +++ b/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 selectBatchIds(List idList) { + List informationEntities = informationMapper.selectBatchIds(idList); + return informationEntities.stream().map(entity -> entity.toDTO(InformationDTO::new)).collect(Collectors.toList()); + } } diff --git a/src/main/java/com/project/operation/domain/dto/OperationLogDTO.java b/src/main/java/com/project/operation/domain/dto/OperationLogDTO.java index 07ef702..4e2384c 100644 --- a/src/main/java/com/project/operation/domain/dto/OperationLogDTO.java +++ b/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; } diff --git a/src/main/java/com/project/operation/domain/service/impl/SearchOperationLogDomainServiceImpl.java b/src/main/java/com/project/operation/domain/service/impl/SearchOperationLogDomainServiceImpl.java index cf5095b..7ef8f28 100644 --- a/src/main/java/com/project/operation/domain/service/impl/SearchOperationLogDomainServiceImpl.java +++ b/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 entityList = operationLogBaseService.list(logQueryWrapper); + Page page = new Page<>(param.getCurrent(), param.getSize()); + List entityList = operationLogBaseService.page(page,logQueryWrapper).getRecords(); + + if (CollectionUtils.isEmpty(entityList)){ + return Result.success(Lists.newArrayList()); + } + //收集用户ID,冗余字段 + Set idSet = entityList.stream().filter(entity -> entity.getId() != null) + .map(OperationLogEntity::getCreatorId).collect(Collectors.toSet()); + List userDTOList = userApplicationService.searchByIds(idSet); + Map userDTOMap = userDTOList + .stream().collect(Collectors.toMap(userDTO -> userDTO.getId(), userDTO -> userDTO)); + + //收集部门ID,冗余字段 + Set deptIdSet = userDTOList.stream() + .filter(userDTO -> StringUtils.isNotBlank(userDTO.getDeptIdStr())) + .flatMap(userDTO -> + List.of(userDTO.getDeptIdStr().split(",")).stream().filter(StringUtils::isNoneBlank) + ).collect(Collectors.toSet()); + Map 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 userDTOMap,Map 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; + } } diff --git a/src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java b/src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java index d15e631..a865baa 100644 --- a/src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java +++ b/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 treeList = productLineApplicationService.treeList(new ProductLineParam()).getData(); + + //查找匹配的父节点 + Optional 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 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 idList = Arrays.asList(ids.split(",")).stream().map(id -> Long.valueOf(id)).collect(Collectors.toList()); + List 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 diff --git a/src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java b/src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java index acde953..bc6da9b 100644 --- a/src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java +++ b/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 taskIdList = Arrays.asList(taskIds.split(",")).stream().map(id -> Long.parseLong(id)).collect(Collectors.toList()); + List taskIdList = Arrays.asList(taskIds.split(",")).stream().map(id -> Long.valueOf(id)).collect(Collectors.toList()); List 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;