refactor(缺陷管理): 优化缺陷插件逻辑

This commit is contained in:
song-cc-rock 2024-05-08 17:25:34 +08:00 committed by Craftsman
parent 102aa3a88e
commit 7fb02e6c4e
8 changed files with 27 additions and 11 deletions

View File

@ -34,4 +34,8 @@ public class PlatformBugUpdateRequest extends PlatformBugDTO {
* MS平台缺陷富文本文件集合 * MS平台缺陷富文本文件集合
*/ */
private Map<String, File> richFileMap = new HashMap<>(); private Map<String, File> richFileMap = new HashMap<>();
/**
* 当前MS站点URL
*/
private String baseUrl;
} }

View File

@ -72,10 +72,11 @@ public interface Platform extends ExtensionPoint {
* 获取第三方平台缺陷状态选项 * 获取第三方平台缺陷状态选项
* @param projectConfig 项目配置信息 * @param projectConfig 项目配置信息
* @param issueKey 缺陷ID * @param issueKey 缺陷ID
* @param previousStatus 当前状态
* @return 缺陷平台状态 * @return 缺陷平台状态
* @throws Exception 获取平台状态异常 * @throws Exception 获取平台状态异常
*/ */
List<SelectOption> getStatusTransitions(String projectConfig, String issueKey) throws Exception; List<SelectOption> getStatusTransitions(String projectConfig, String issueKey, String previousStatus) throws Exception;
/** /**
* 获取第三方平台关联需求列表 * 获取第三方平台关联需求列表

View File

@ -12,7 +12,11 @@ public enum BugPlatform {
/** /**
* 本地 * 本地
*/ */
LOCAL("Local"); LOCAL("Local"),
JIRA("JIRA"),
ZENTAO("禅道"),
TAPD("TAPD");
private final String name; private final String name;

View File

@ -46,10 +46,7 @@ import io.metersphere.system.log.dto.LogDTO;
import io.metersphere.system.log.service.OperationLogService; import io.metersphere.system.log.service.OperationLogService;
import io.metersphere.system.mapper.BaseUserMapper; import io.metersphere.system.mapper.BaseUserMapper;
import io.metersphere.system.mapper.TemplateMapper; import io.metersphere.system.mapper.TemplateMapper;
import io.metersphere.system.service.BaseTemplateCustomFieldService; import io.metersphere.system.service.*;
import io.metersphere.system.service.BaseTemplateService;
import io.metersphere.system.service.PlatformPluginService;
import io.metersphere.system.service.UserPlatformAccountService;
import io.metersphere.system.uid.IDGenerator; import io.metersphere.system.uid.IDGenerator;
import io.metersphere.system.uid.NumGenerator; import io.metersphere.system.uid.NumGenerator;
import io.metersphere.system.utils.ServiceUtils; import io.metersphere.system.utils.ServiceUtils;
@ -160,6 +157,8 @@ public class BugService {
private BugAttachmentService bugAttachmentService; private BugAttachmentService bugAttachmentService;
@Resource @Resource
private BugPlatformService bugPlatformService; private BugPlatformService bugPlatformService;
@Resource
private SystemParameterService systemParameterService;
public static final Long INTERVAL_POS = 5000L; public static final Long INTERVAL_POS = 5000L;
@ -1193,6 +1192,7 @@ public class BugService {
} }
}); });
} }
platformRequest.setBaseUrl(systemParameterService.getBaseInfo().getUrl());
return platformRequest; return platformRequest;
} }

View File

@ -43,10 +43,17 @@ public class BugStatusService {
// 第三方平台状态流 // 第三方平台状态流
Platform platform = projectApplicationService.getPlatform(projectId, true); Platform platform = projectApplicationService.getPlatform(projectId, true);
String projectConfig = projectApplicationService.getProjectBugThirdPartConfig(projectId); String projectConfig = projectApplicationService.getProjectBugThirdPartConfig(projectId);
// 获取一条最新的Jira默认模板缺陷Key String issueKey;
if (StringUtils.equals(platformName, BugPlatform.JIRA.name())) {
// 如果是Jira平台, 获取一条最新的缺陷默认Key作为参数
issueKey = getJiraPlatformBugKeyLatest(projectId);
} else {
// 其余平台获取表头状态流暂不需要issue key参数
issueKey = platformName;
}
List<SelectOption> platformStatusOption = new ArrayList<>(); List<SelectOption> platformStatusOption = new ArrayList<>();
try { try {
platformStatusOption = platform.getStatusTransitions(projectConfig, getJiraPlatformBugKeyLatest(projectId)); platformStatusOption = platform.getStatusTransitions(projectConfig, issueKey, null);
} catch (Exception e) { } catch (Exception e) {
LogUtils.error("获取平台状态选项有误: " + e.getMessage()); LogUtils.error("获取平台状态选项有误: " + e.getMessage());
} }
@ -73,7 +80,7 @@ public class BugStatusService {
String projectConfig = projectApplicationService.getProjectBugThirdPartConfig(projectId); String projectConfig = projectApplicationService.getProjectBugThirdPartConfig(projectId);
List<SelectOption> platformOption = new ArrayList<>(); List<SelectOption> platformOption = new ArrayList<>();
try { try {
platformOption = platform.getStatusTransitions(projectConfig, platformBugKey); platformOption = platform.getStatusTransitions(projectConfig, platformBugKey, fromStatusId);
} catch (Exception e) { } catch (Exception e) {
LogUtils.error("获取平台状态选项有误: " + e.getMessage()); LogUtils.error("获取平台状态选项有误: " + e.getMessage());
} }
@ -102,7 +109,7 @@ public class BugStatusService {
public String getJiraPlatformBugKeyLatest(String projectId) { public String getJiraPlatformBugKeyLatest(String projectId) {
BugExample example = new BugExample(); BugExample example = new BugExample();
example.createCriteria().andPlatformEqualTo("JIRA").andProjectIdEqualTo(projectId); example.createCriteria().andPlatformEqualTo(BugPlatform.JIRA.name()).andProjectIdEqualTo(projectId);
example.setOrderByClause("create_time desc"); example.setOrderByClause("create_time desc");
List<Bug> bugs = bugMapper.selectByExample(example); List<Bug> bugs = bugMapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(bugs)) { if (CollectionUtils.isNotEmpty(bugs)) {

View File

@ -694,7 +694,7 @@ public class BugControllerTests extends BaseTest {
@Test @Test
@Order(99) @Order(99)
void coverZentaoBugTests() throws Exception { void coverExtraBugTests() throws Exception {
// 批量删除 // 批量删除
BugBatchRequest request = new BugBatchRequest(); BugBatchRequest request = new BugBatchRequest();
request.setProjectId("default-project-for-bug"); request.setProjectId("default-project-for-bug");