fix(用例评审): 修复移动用例时用例评审的日志未及时更新问题
--bug=1048758 --user=郭雨琦 修复脑图排序失败问题 https://www.tapd.cn/55049933/bugtrace/bugs/view/1155049933001048758
This commit is contained in:
parent
2893f1247e
commit
0aea5e2d2f
|
@ -128,6 +128,7 @@ public class CaseReviewController {
|
||||||
@Operation(summary = "用例管理-用例评审-拖拽排序")
|
@Operation(summary = "用例管理-用例评审-拖拽排序")
|
||||||
@RequiresPermissions(PermissionConstants.CASE_REVIEW_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.CASE_REVIEW_READ_UPDATE)
|
||||||
@CheckOwner(resourceId = "#request.getProjectId()", resourceType = "project")
|
@CheckOwner(resourceId = "#request.getProjectId()", resourceType = "project")
|
||||||
|
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateCaseReviewLogByPos(#request)", msClass = CaseReviewLogService.class)
|
||||||
public void editPos(@Validated @RequestBody PosRequest request) {
|
public void editPos(@Validated @RequestBody PosRequest request) {
|
||||||
caseReviewService.editPos(request);
|
caseReviewService.editPos(request);
|
||||||
}
|
}
|
||||||
|
@ -144,6 +145,7 @@ public class CaseReviewController {
|
||||||
@Operation(summary = "用例管理-用例评审-批量移动用例评审")
|
@Operation(summary = "用例管理-用例评审-批量移动用例评审")
|
||||||
@RequiresPermissions(PermissionConstants.CASE_REVIEW_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.CASE_REVIEW_READ_UPDATE)
|
||||||
@CheckOwner(resourceId = "#request.getSelectIds()", resourceType = "case_review")
|
@CheckOwner(resourceId = "#request.getSelectIds()", resourceType = "case_review")
|
||||||
|
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateBatchCaseReviewLog(#request)", msClass = CaseReviewLogService.class)
|
||||||
public void batchMoveCaseReview(@Validated @RequestBody CaseReviewBatchRequest request) {
|
public void batchMoveCaseReview(@Validated @RequestBody CaseReviewBatchRequest request) {
|
||||||
caseReviewService.batchMoveCaseReview(request, SessionUtils.getUserId());
|
caseReviewService.batchMoveCaseReview(request, SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,22 @@
|
||||||
package io.metersphere.functional.service;
|
package io.metersphere.functional.service;
|
||||||
|
|
||||||
import io.metersphere.functional.domain.CaseReview;
|
import io.metersphere.functional.domain.*;
|
||||||
import io.metersphere.functional.domain.CaseReviewFunctionalCase;
|
|
||||||
import io.metersphere.functional.domain.FunctionalCase;
|
|
||||||
import io.metersphere.functional.domain.FunctionalCaseExample;
|
|
||||||
import io.metersphere.functional.dto.BaseFunctionalCaseBatchDTO;
|
import io.metersphere.functional.dto.BaseFunctionalCaseBatchDTO;
|
||||||
import io.metersphere.functional.mapper.CaseReviewFunctionalCaseMapper;
|
import io.metersphere.functional.mapper.*;
|
||||||
import io.metersphere.functional.mapper.CaseReviewMapper;
|
import io.metersphere.functional.request.*;
|
||||||
import io.metersphere.functional.mapper.ExtFunctionalCaseMapper;
|
|
||||||
import io.metersphere.functional.mapper.FunctionalCaseMapper;
|
|
||||||
import io.metersphere.functional.request.BaseAssociateCaseRequest;
|
|
||||||
import io.metersphere.functional.request.BaseReviewCaseBatchRequest;
|
|
||||||
import io.metersphere.functional.request.CaseReviewAssociateRequest;
|
|
||||||
import io.metersphere.functional.request.CaseReviewRequest;
|
|
||||||
import io.metersphere.project.domain.Project;
|
import io.metersphere.project.domain.Project;
|
||||||
import io.metersphere.project.mapper.ProjectMapper;
|
import io.metersphere.project.mapper.ProjectMapper;
|
||||||
import io.metersphere.sdk.constants.HttpMethodConstants;
|
import io.metersphere.sdk.constants.HttpMethodConstants;
|
||||||
import io.metersphere.sdk.util.JSON;
|
import io.metersphere.sdk.util.JSON;
|
||||||
import io.metersphere.system.dto.builder.LogDTOBuilder;
|
import io.metersphere.system.dto.builder.LogDTOBuilder;
|
||||||
|
import io.metersphere.system.dto.sdk.request.PosRequest;
|
||||||
import io.metersphere.system.log.constants.OperationLogModule;
|
import io.metersphere.system.log.constants.OperationLogModule;
|
||||||
import io.metersphere.system.log.constants.OperationLogType;
|
import io.metersphere.system.log.constants.OperationLogType;
|
||||||
import io.metersphere.system.log.dto.LogDTO;
|
import io.metersphere.system.log.dto.LogDTO;
|
||||||
import io.metersphere.system.log.service.OperationLogService;
|
import io.metersphere.system.log.service.OperationLogService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@ -40,6 +33,9 @@ public class CaseReviewLogService {
|
||||||
@Resource
|
@Resource
|
||||||
private CaseReviewMapper caseReviewMapper;
|
private CaseReviewMapper caseReviewMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ExtCaseReviewMapper extCaseReviewMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private FunctionalCaseMapper functionalCaseMapper;
|
private FunctionalCaseMapper functionalCaseMapper;
|
||||||
|
|
||||||
|
@ -124,6 +120,32 @@ public class CaseReviewLogService {
|
||||||
dto.setOriginalValue(JSON.toJSONBytes(caseReview));
|
dto.setOriginalValue(JSON.toJSONBytes(caseReview));
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 排序更新用例评审 日志
|
||||||
|
*
|
||||||
|
* @param request 页面参数
|
||||||
|
* @return LogDTO
|
||||||
|
*/
|
||||||
|
public LogDTO updateCaseReviewLogByPos(PosRequest request) {
|
||||||
|
CaseReview caseReview = caseReviewMapper.selectByPrimaryKey(request.getTargetId());
|
||||||
|
if (caseReview == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
caseReview.getProjectId(),
|
||||||
|
null,
|
||||||
|
caseReview.getId(),
|
||||||
|
caseReview.getCreateUser(),
|
||||||
|
OperationLogType.UPDATE.name(),
|
||||||
|
OperationLogModule.CASE_MANAGEMENT_REVIEW_REVIEW,
|
||||||
|
caseReview.getName());
|
||||||
|
|
||||||
|
dto.setPath("/case/edit/pos");
|
||||||
|
dto.setMethod(HttpMethodConstants.POST.name());
|
||||||
|
dto.setOriginalValue(JSON.toJSONBytes(caseReview));
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除用例 日志
|
* 删除用例 日志
|
||||||
|
@ -238,6 +260,39 @@ public class CaseReviewLogService {
|
||||||
return dtoList;
|
return dtoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移动更新用例评审
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<LogDTO> updateBatchCaseReviewLog(CaseReviewBatchRequest request) {
|
||||||
|
if (StringUtils.isBlank(request.getMoveModuleId())) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
List<String> ids = doSelectReviewIds(request);
|
||||||
|
List<LogDTO> dtoList = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(ids)) {
|
||||||
|
CaseReviewExample caseReviewExample = new CaseReviewExample();
|
||||||
|
caseReviewExample.createCriteria().andIdIn(ids);
|
||||||
|
List<CaseReview> caseReviews = caseReviewMapper.selectByExample(caseReviewExample);
|
||||||
|
caseReviews.forEach(caseReview -> {
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
caseReview.getProjectId(),
|
||||||
|
null,
|
||||||
|
caseReview.getId(),
|
||||||
|
caseReview.getCreateUser(),
|
||||||
|
OperationLogType.UPDATE.name(),
|
||||||
|
OperationLogModule.CASE_MANAGEMENT_REVIEW_REVIEW,
|
||||||
|
caseReview.getName());
|
||||||
|
|
||||||
|
dto.setPath("/case/batch/move");
|
||||||
|
dto.setMethod(HttpMethodConstants.POST.name());
|
||||||
|
dtoList.add(dto);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return dtoList;
|
||||||
|
}
|
||||||
|
|
||||||
public <T> List<String> doSelectIds(T dto, String projectId) {
|
public <T> List<String> doSelectIds(T dto, String projectId) {
|
||||||
BaseFunctionalCaseBatchDTO request = (BaseFunctionalCaseBatchDTO) dto;
|
BaseFunctionalCaseBatchDTO request = (BaseFunctionalCaseBatchDTO) dto;
|
||||||
if (request.isSelectAll()) {
|
if (request.isSelectAll()) {
|
||||||
|
@ -251,6 +306,20 @@ public class CaseReviewLogService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String>doSelectReviewIds(CaseReviewBatchRequest request) {
|
||||||
|
List<String> ids;
|
||||||
|
if (request.isSelectAll()) {
|
||||||
|
ids = extCaseReviewMapper.getIds(request, request.getProjectId());
|
||||||
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(request.getExcludeIds())) {
|
||||||
|
ids.removeAll(request.getExcludeIds());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ids = request.getSelectIds();
|
||||||
|
}
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void createCaseAndAssociateLog(CaseReview caseReview, FunctionalCase functionalCase, String userId) {
|
public void createCaseAndAssociateLog(CaseReview caseReview, FunctionalCase functionalCase, String userId) {
|
||||||
Project project = projectMapper.selectByPrimaryKey(caseReview.getProjectId());
|
Project project = projectMapper.selectByPrimaryKey(caseReview.getProjectId());
|
||||||
LogDTO dto = LogDTOBuilder.builder()
|
LogDTO dto = LogDTOBuilder.builder()
|
||||||
|
|
Loading…
Reference in New Issue