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

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

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