Commit 102d9040 authored by 黎博's avatar 黎博

修改JiraService服务名及在dingRobot和SubmitTestInstruction实体类新增jiraProjectName字段

parent d09591f2
......@@ -10,8 +10,10 @@ import cn.qg.holmes.entity.quality.SubmitTestInstruction;
import cn.qg.holmes.service.auth.TokenService;
import cn.qg.holmes.service.gitlab.PipelineService;
import cn.qg.holmes.service.quality.DingRobotService;
import cn.qg.holmes.service.quality.JiraService;
import cn.qg.holmes.service.quality.SubmitTestInstructionService;
import cn.qg.holmes.utils.DingdingUtils;
import com.atlassian.jira.rest.client.api.domain.BasicProject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -48,6 +50,9 @@ public class PipelineController {
@Autowired
SubmitTestInstructionService submitTestInstructionService;
@Autowired
JiraService jiraService;
/**
* gitlab webhook
* @param request
......@@ -91,7 +96,20 @@ public class PipelineController {
IPage<DingRobot> projectRobotIPage = dingRobotService.page(page, dingRobotQueryWrapper);
List<DingRobot> dingRobotList = projectRobotIPage.getRecords();
List<DingRobotPipelineVo> dingRobotPipelineVoList = new ArrayList<>();
// 获取jira项目Map
Map<String, String> projectMap = new HashMap<>();
try {
Iterable<BasicProject> projects = jiraService.getJiraProjectList();
for (BasicProject project: projects) {
projectMap.put(project.getKey(), project.getName());
}
} catch (Exception e) {
log.info("获取jira项目Map失败.");
e.printStackTrace();
}
for (DingRobot dingRobot: dingRobotList) {
// 设置jiraProjectName
dingRobot.setJiraProjectName(projectMap.get(dingRobot.getJiraProjectKey()));
DingRobotPipelineVo dingRobotPipelineVo = new DingRobotPipelineVo();
dingRobotPipelineVo.setDingRobot(dingRobot);
QueryWrapper<Pipeline> pipelineQueryWrapper = new QueryWrapper<>();
......
......@@ -7,13 +7,14 @@ import cn.qg.holmes.entity.quality.SendScheduleVo;
import cn.qg.holmes.entity.quality.SendSmokingResultVo;
import cn.qg.holmes.service.quality.DingRobotService;
import cn.qg.holmes.service.quality.JiraBugPoolService;
import cn.qg.holmes.service.quality.JiraIssueService;
import cn.qg.holmes.service.quality.JiraService;
import cn.qg.holmes.utils.DingdingUtils;
import com.atlassian.jira.rest.client.api.domain.BasicProject;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -24,13 +25,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@CrossOrigin
@RestController
@RequestMapping("/jira")
public class JiraController {
@Autowired
JiraIssueService jiraIssueService;
JiraService jiraService;
@Autowired
JiraBugPoolService jiraBugPoolService;
......@@ -66,7 +68,7 @@ public class JiraController {
@GetMapping("/list/project")
public JsonResult getJiraProjectKey() throws Exception {
List<Map<String, String>> jiraKeyList = new ArrayList<>();
Iterable<BasicProject> projects = jiraIssueService.getJiraProjectList();
Iterable<BasicProject> projects = jiraService.getJiraProjectList();
for (BasicProject project: projects) {
Map<String, String> map = new HashMap<>();
map.put("id", project.getId().toString());
......@@ -145,7 +147,7 @@ public class JiraController {
@GetMapping("/report/project")
public void sendReportToDingdingGroup(String project, String webhook) throws Exception {
Iterable<Issue> issues = jiraIssueService.getUnsolvedIssueListByProject(project);
Iterable<Issue> issues = jiraService.getUnsolvedIssueListByProject(project);
String markdownMsg = DingdingUtils.buildMarkdownMsgForUnsolvedIssueList(issues);
DingdingUtils.sendToDingding(markdownMsg, webhook);
}
......@@ -159,7 +161,7 @@ public class JiraController {
@PostMapping("/send/schedule")
public JsonResult sendTestReport(@RequestBody SendScheduleVo sendScheduleVo) throws Exception {
String JQL = "project = " + sendScheduleVo.getJiraProjectKey() + " AND resolution = Unresolved AND text ~ \"" + sendScheduleVo.getTestProjectName() + "\" ORDER BY priority DESC, updated DESC";
Iterable<Issue> issues = jiraIssueService.getIssueListByJQL(JQL);
Iterable<Issue> issues = jiraService.getIssueListByJQL(JQL);
String markdownMsg = DingdingUtils.buildTestScheduleMarkdownMsg(issues, sendScheduleVo.getProgress(), sendScheduleVo.getRisk());
return JsonResult.buildSuccessResult(DingdingUtils.sendToDingding(markdownMsg, sendScheduleVo.getWebhook()));
}
......@@ -174,7 +176,7 @@ public class JiraController {
public JsonResult sendSmokingResult(@RequestBody SendSmokingResultVo sendSmokingResultVo) throws Exception {
String JQL = "project = " + sendSmokingResultVo.getJiraProjectKey() + " AND resolution = Unresolved AND text ~ \""
+ sendSmokingResultVo.getTestProjectName() + "\" ORDER BY priority DESC, updated DESC";
Iterable<Issue> issues = jiraIssueService.getIssueListByJQL(JQL);
Iterable<Issue> issues = jiraService.getIssueListByJQL(JQL);
String markdownMsg = DingdingUtils.buildSmokingResultMarkdownMsg(issues, sendSmokingResultVo.getResult(), sendSmokingResultVo.getRisk());
return JsonResult.buildSuccessResult(DingdingUtils.sendToDingding(markdownMsg, sendSmokingResultVo.getWebhook()));
}
......@@ -196,7 +198,7 @@ public class JiraController {
} else {
JQL = "project = " + jiraProjectKey + " AND resolution = Unresolved AND text ~ \"" + projectName + "\" ORDER BY priority DESC, updated DESC";
}
Iterable<Issue> issues = jiraIssueService.getIssueListByJQL(JQL);
Iterable<Issue> issues = jiraService.getIssueListByJQL(JQL);
List<Map<String, Object>> mapList = new ArrayList<>();
for (Issue issue: issues) {
Map<String, Object> map = new HashMap<>();
......
......@@ -2,15 +2,19 @@ package cn.qg.holmes.controller.quality;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.quality.SubmitTestInstruction;
import cn.qg.holmes.service.quality.JiraService;
import cn.qg.holmes.service.quality.SubmitTestInstructionService;
import com.atlassian.jira.rest.client.api.domain.BasicProject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
......@@ -18,6 +22,7 @@ import java.util.Map;
* @author libo
* 2021-10-29
*/
@Slf4j
@CrossOrigin
@RestController
@RequestMapping("/quality")
......@@ -26,6 +31,9 @@ public class QualityController {
@Autowired
SubmitTestInstructionService instructionService;
@Autowired
JiraService jiraService;
/**
* 提测说明分页列表
* @param projectName 项目名称
......@@ -48,8 +56,25 @@ public class QualityController {
IPage<SubmitTestInstruction> instructionIPage = new Page<>(pageNum, pageSize);
IPage<SubmitTestInstruction> page = instructionService.page(instructionIPage, queryWrapper);
Map<String, Object> map = new HashMap<>();
map.put("list", page.getRecords());
// map.put("list", page.getRecords());
List<SubmitTestInstruction> submitTestInstructionList = page.getRecords();
map.put("total", page.getTotal());
// 获取jira项目Map
Map<String, String> projectMap = new HashMap<>();
try {
Iterable<BasicProject> projects = jiraService.getJiraProjectList();
for (BasicProject project: projects) {
projectMap.put(project.getKey(), project.getName());
}
} catch (Exception e) {
log.info("获取jira项目Map失败.");
e.printStackTrace();
}
// 循环设置列表字段jiraProjectName
for (SubmitTestInstruction submitTestInstruction: submitTestInstructionList) {
submitTestInstruction.setJiraProjectName(projectMap.get(submitTestInstruction.getJiraProjectKey()));
}
map.put("list", submitTestInstructionList);
return JsonResult.buildSuccessResult(map);
}
......
package cn.qg.holmes.entity.quality;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -47,4 +48,7 @@ public class DingRobot {
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@TableField(exist = false)
private String jiraProjectName;
}
......@@ -76,4 +76,7 @@ public class SubmitTestInstruction {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@TableField(exist = false)
private String jiraProjectName;
}
......@@ -4,7 +4,7 @@ import com.atlassian.jira.rest.client.api.domain.BasicProject;
import com.atlassian.jira.rest.client.api.domain.Issue;
import org.joda.time.DateTime;
public interface JiraIssueService {
public interface JiraService {
Iterable<Issue> getUnsolvedIssueListByProject(String project) throws Exception;
......
package cn.qg.holmes.service.quality.impl;
import cn.qg.holmes.service.quality.JiraIssueService;
import cn.qg.holmes.service.quality.JiraService;
import com.atlassian.jira.rest.client.api.JiraRestClient;
import com.atlassian.jira.rest.client.api.JiraRestClientFactory;
import com.atlassian.jira.rest.client.api.domain.BasicProject;
......@@ -16,7 +16,7 @@ import java.net.URI;
import java.net.URISyntaxException;
@Service
public class JiraIssueServiceImpl implements JiraIssueService {
public class JiraServiceImpl implements JiraService {
public static String url = "http://jira2.quantgroup.cn/";
public static String username = "test1";
......
......@@ -4,7 +4,7 @@ import cn.qg.holmes.entity.quality.DingRobot;
import cn.qg.holmes.entity.quality.JiraBugPool;
import cn.qg.holmes.service.quality.DingRobotService;
import cn.qg.holmes.service.quality.JiraBugPoolService;
import cn.qg.holmes.service.quality.JiraIssueService;
import cn.qg.holmes.service.quality.JiraService;
import cn.qg.holmes.utils.DingdingUtils;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -25,7 +25,7 @@ import java.util.List;
public class BugNotifyTask {
@Autowired
JiraIssueService jiraIssueService;
JiraService jiraService;
@Autowired
JiraBugPoolService jiraBugPoolService;
......@@ -47,7 +47,7 @@ public class BugNotifyTask {
public void SJGDJiraIssueStatisticsTimedJob() throws Exception {
if (taskDebug.equals("true")) {
log.info("开始执行数据工单BUG统计定时任务!");
Iterable<Issue> issues = jiraIssueService.getUnsolvedIssueListByProject("SJGD");
Iterable<Issue> issues = jiraService.getUnsolvedIssueListByProject("SJGD");
String markdownMsg = DingdingUtils.buildMarkdownMsgForUnsolvedIssueList(issues);
DingdingUtils.sendToDingding(markdownMsg, sjgdDingUrl);
} else {
......@@ -67,7 +67,7 @@ public class BugNotifyTask {
jiraBugPoolQueryWrapper.eq("enable", 1);
List<JiraBugPool> jiraBugPoolList = jiraBugPoolService.list(jiraBugPoolQueryWrapper);
for (JiraBugPool jiraBugPool: jiraBugPoolList) {
Issue issue = jiraIssueService.getJiraIssueByKey(jiraBugPool.getKey());
Issue issue = jiraService.getJiraIssueByKey(jiraBugPool.getKey());
if (issue != null) {
String resolveResult = issue.getStatus().getName();
// 如果已关闭,仅修改状态
......@@ -81,7 +81,7 @@ public class BugNotifyTask {
} else {
DateTime startDate = issue.getCreationDate();
DateTime curDate = new DateTime();
int duration = jiraIssueService.calculateBugFixTime(startDate, curDate);
int duration = jiraService.calculateBugFixTime(startDate, curDate);
log.info("{} BUG持续时间:{}小时", issue.getKey(), duration);
// 如果已超过4个小时,则发送钉钉通知
if (duration >= 4) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment