feat(测试跟踪): tapd提交缺陷时增加处理人信息
This commit is contained in:
parent
14531a571a
commit
a325a18139
|
@ -1,6 +1,7 @@
|
||||||
package io.metersphere.track.controller;
|
package io.metersphere.track.controller;
|
||||||
|
|
||||||
import io.metersphere.base.domain.Issues;
|
import io.metersphere.base.domain.Issues;
|
||||||
|
import io.metersphere.track.domain.TapdUser;
|
||||||
import io.metersphere.track.service.IssuesService;
|
import io.metersphere.track.service.IssuesService;
|
||||||
import io.metersphere.track.request.testcase.IssuesRequest;
|
import io.metersphere.track.request.testcase.IssuesRequest;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
@ -35,4 +36,9 @@ public class TestCaseIssuesController {
|
||||||
issuesService.closeLocalIssue(id);
|
issuesService.closeLocalIssue(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/tapd/user/{caseId}")
|
||||||
|
public List<TapdUser> getTapdUsers(@PathVariable String caseId) {
|
||||||
|
return issuesService.getTapdProjectUsers(caseId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
package io.metersphere.track.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TapdUser implements Serializable {
|
||||||
|
private List<String> roleId;
|
||||||
|
private String name;
|
||||||
|
private String user;
|
||||||
|
}
|
|
@ -3,6 +3,8 @@ package io.metersphere.track.request.testcase;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class IssuesRequest {
|
public class IssuesRequest {
|
||||||
|
@ -10,4 +12,5 @@ public class IssuesRequest {
|
||||||
private String content;
|
private String content;
|
||||||
private String projectId;
|
private String projectId;
|
||||||
private String testCaseId;
|
private String testCaseId;
|
||||||
|
private List<String> tapdUsers;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package io.metersphere.track.service;
|
package io.metersphere.track.service;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.metersphere.base.domain.*;
|
import io.metersphere.base.domain.*;
|
||||||
import io.metersphere.base.mapper.IssuesMapper;
|
import io.metersphere.base.mapper.IssuesMapper;
|
||||||
|
@ -17,6 +18,7 @@ import io.metersphere.controller.ResultHolder;
|
||||||
import io.metersphere.controller.request.IntegrationRequest;
|
import io.metersphere.controller.request.IntegrationRequest;
|
||||||
import io.metersphere.service.IntegrationService;
|
import io.metersphere.service.IntegrationService;
|
||||||
import io.metersphere.service.ProjectService;
|
import io.metersphere.service.ProjectService;
|
||||||
|
import io.metersphere.track.domain.TapdUser;
|
||||||
import io.metersphere.track.request.testcase.IssuesRequest;
|
import io.metersphere.track.request.testcase.IssuesRequest;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
|
@ -188,10 +190,14 @@ public class IssuesService {
|
||||||
MSException.throwException("未关联Tapd 项目ID");
|
MSException.throwException("未关联Tapd 项目ID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> tapdUsers = issuesRequest.getTapdUsers();
|
||||||
|
String usersStr = String.join(";", tapdUsers);
|
||||||
|
|
||||||
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
|
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
|
||||||
paramMap.add("title", issuesRequest.getTitle());
|
paramMap.add("title", issuesRequest.getTitle());
|
||||||
paramMap.add("workspace_id", tapdId);
|
paramMap.add("workspace_id", tapdId);
|
||||||
paramMap.add("description", issuesRequest.getContent());
|
paramMap.add("description", issuesRequest.getContent());
|
||||||
|
paramMap.add("current_owner", usersStr);
|
||||||
|
|
||||||
ResultHolder result = call(url, HttpMethod.POST, paramMap);
|
ResultHolder result = call(url, HttpMethod.POST, paramMap);
|
||||||
|
|
||||||
|
@ -535,4 +541,19 @@ public class IssuesService {
|
||||||
issuesMapper.updateByPrimaryKeySelective(issues);
|
issuesMapper.updateByPrimaryKeySelective(issues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<TapdUser> getTapdProjectUsers(String caseId) {
|
||||||
|
List<TapdUser> users = new ArrayList<>();
|
||||||
|
String projectId = getTapdProjectId(caseId);
|
||||||
|
String url = "https://api.tapd.cn/workspaces/users?workspace_id=" + projectId;
|
||||||
|
ResultHolder call = call(url);
|
||||||
|
String listJson = JSON.toJSONString(call.getData());
|
||||||
|
JSONArray jsonArray = JSON.parseArray(listJson);
|
||||||
|
for (int i = 0; i < jsonArray.size(); i++) {
|
||||||
|
JSONObject o = jsonArray.getJSONObject(i);
|
||||||
|
TapdUser user = o.getObject("UserWorkspace", TapdUser.class);
|
||||||
|
users.add(user);
|
||||||
|
}
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,6 +218,12 @@
|
||||||
/>
|
/>
|
||||||
<ckeditor :editor="editor" :disabled="isReadOnly" :config="editorConfig"
|
<ckeditor :editor="editor" :disabled="isReadOnly" :config="editorConfig"
|
||||||
v-model="testCase.issues.content"/>
|
v-model="testCase.issues.content"/>
|
||||||
|
<el-row v-if="hasTapdId">
|
||||||
|
Tapd平台处理人:
|
||||||
|
<el-select v-model="testCase.tapdUsers" placeholder="请选择处理人" style="width: 20%" multiple collapse-tags>
|
||||||
|
<el-option v-for="(userInfo, index) in users" :key="index" :label="userInfo.user" :value="userInfo.user"/>
|
||||||
|
</el-select>
|
||||||
|
</el-row>
|
||||||
<el-button type="primary" size="small" @click="saveIssues">{{$t('commons.save')}}</el-button>
|
<el-button type="primary" size="small" @click="saveIssues">{{$t('commons.save')}}</el-button>
|
||||||
<el-button size="small" @click="issuesSwitch=false">{{$t('commons.cancel')}}</el-button>
|
<el-button size="small" @click="issuesSwitch=false">{{$t('commons.cancel')}}</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
@ -323,6 +329,8 @@
|
||||||
test: {},
|
test: {},
|
||||||
activeTab: 'detail',
|
activeTab: 'detail',
|
||||||
isFailure: true,
|
isFailure: true,
|
||||||
|
users: [],
|
||||||
|
hasTapdId: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
@ -490,6 +498,17 @@
|
||||||
executeResult += this.addPLabel(stepPrefix + (step.executeResult == undefined ? '' : step.executeResult));
|
executeResult += this.addPLabel(stepPrefix + (step.executeResult == undefined ? '' : step.executeResult));
|
||||||
});
|
});
|
||||||
this.testCase.issues.content = desc + this.addPLabel('') + result + this.addPLabel('') + executeResult + this.addPLabel('');
|
this.testCase.issues.content = desc + this.addPLabel('') + result + this.addPLabel('') + executeResult + this.addPLabel('');
|
||||||
|
|
||||||
|
this.$get("/test/case/project/" + this.testCase.caseId, res => {
|
||||||
|
const project = res.data;
|
||||||
|
if (project.tapdId) {
|
||||||
|
this.hasTapdId = true;
|
||||||
|
this.result = this.$get("/issues/tapd/user/" + this.testCase.caseId, response => {
|
||||||
|
let data = response.data;
|
||||||
|
this.users = data;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addPLabel(str) {
|
addPLabel(str) {
|
||||||
|
@ -515,6 +534,7 @@
|
||||||
param.title = this.testCase.issues.title;
|
param.title = this.testCase.issues.title;
|
||||||
param.content = this.testCase.issues.content;
|
param.content = this.testCase.issues.content;
|
||||||
param.testCaseId = this.testCase.caseId;
|
param.testCaseId = this.testCase.caseId;
|
||||||
|
param.tapdUsers = this.testCase.tapdUsers;
|
||||||
this.result = this.$post("/issues/add", param, () => {
|
this.result = this.$post("/issues/add", param, () => {
|
||||||
this.$success(this.$t('commons.save_success'));
|
this.$success(this.$t('commons.save_success'));
|
||||||
this.getIssues(param.testCaseId);
|
this.getIssues(param.testCaseId);
|
||||||
|
@ -522,6 +542,7 @@
|
||||||
this.issuesSwitch = false;
|
this.issuesSwitch = false;
|
||||||
this.testCase.issues.title = "";
|
this.testCase.issues.title = "";
|
||||||
this.testCase.issues.content = "";
|
this.testCase.issues.content = "";
|
||||||
|
this.testCase.tapdUsers = [];
|
||||||
},
|
},
|
||||||
getIssues(caseId) {
|
getIssues(caseId) {
|
||||||
this.result = this.$get("/issues/get/" + caseId, response => {
|
this.result = this.$get("/issues/get/" + caseId, response => {
|
||||||
|
|
Loading…
Reference in New Issue