diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectWeeklyReportController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectWeeklyReportController.java index 5e1338d3d..55a18b7e4 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectWeeklyReportController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/controller/PmsProjectWeeklyReportController.java @@ -41,6 +41,28 @@ public class PmsProjectWeeklyReportController { return success(result); } + /** + * 查询周报-个人工作项统计 + */ + @GetMapping("/personal") + @ApiOperation(value = "周报-个人工作项统计") + public AjaxResult getPersonalWeeklyReport(@PathVariable String enterpriseIdentifier) + { + JSONObject result = pmsProjectIssuesService.getPersonalIssuesStatistics(enterpriseIdentifier); + return success(result); + } + + /** + * 查询周报-项目组工作项统计 + */ + @GetMapping("/projectTeam") + @ApiOperation(value = "周报-项目组工作项统计") + public AjaxResult getProjectTeamWeeklyReport(@PathVariable String enterpriseIdentifier) + { + JSONObject result = pmsProjectIssuesService.getProjectTeamIssuesStatistics(enterpriseIdentifier); + return success(result); + } + /** * 新增项目项目周报 */ diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectMapper.java index 068b1c6df..2437ae097 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectMapper.java @@ -89,4 +89,6 @@ public interface PmsProjectMapper void updatePmsProjectNoProduct(@Param("projectIdList") List projectIdList); PmsProject selectPmsProjectById(Long id); + + List selectProjectIdsByAssigneeUserId(@Param("enterpriseIdentifier") String enterpriseIdentifier, @Param("gitlinkUserId") Long gitlinkUserId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectSprintMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectSprintMapper.java index c4ffc5623..6ca659b20 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectSprintMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectSprintMapper.java @@ -80,4 +80,8 @@ public interface PmsProjectSprintMapper Integer selectOpeningSprintLastWeekIterationCount(@Param("pmProjectId") Long pmProjectId); PmsProjectSprintStatisticsVo selectPmsProjectSprintStatisticsByProjectId(@Param("pmProjectId") Long pmProjectId); + + int selectNewSprintCurrentNaturalWeekCount(@Param("projectId") Long projectId); + + int selectCompleteSprintCurrentNaturalWeekCount(@Param("projectId") Long projectId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectTestsheetMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectTestsheetMapper.java index 6144ef7ca..9917771fb 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectTestsheetMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/mapper/PmsProjectTestsheetMapper.java @@ -68,4 +68,8 @@ public interface PmsProjectTestsheetMapper int deletePmsProjectTestsheetByProjectId(@Param("projectId") Long projectId); Integer selectCountBySprintId(@Param("sprintId") Long sprintId); + + int selectNewTestSheetCurrentNaturalWeekCount(@Param("projectId") Long projectId); + + int selectCompleteTestSheetCurrentNaturalWeekCount(@Param("projectId") Long projectId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectService.java index 369d784eb..8f5895980 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectService.java @@ -5,7 +5,6 @@ import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.pms.project.domain.PmsProject; import com.microservices.pms.project.domain.vo.*; import com.microservices.system.api.domain.SimpleSysUser; -import com.microservices.system.api.domain.SysNotice; import java.util.List; @@ -100,4 +99,6 @@ public interface IPmsProjectService JSONObject getMyRepositoriesStatistics(Long repositoryId); PmsProject selectPmsProjectByIdNoCheckRole(Long pmsProjectId); + + List selectProjectIdsByAssigneeUserId(String enterpriseIdentifier, Long gitlinkUserId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java index 0b779aca9..dcb55164d 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/PmsProjectIssuesService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.microservices.common.core.exception.ServiceException; import com.microservices.common.core.utils.DateUtils; +import com.microservices.common.core.utils.StringUtils; import com.microservices.common.httpClient.util.GitLinkRequestHelper; import com.microservices.common.security.utils.SecurityUtils; import com.microservices.pms.common.service.IPmsCommonService; @@ -17,6 +18,8 @@ import com.microservices.pms.product.service.IPmsProductRequirementService; import com.microservices.pms.project.domain.PmsProject; import com.microservices.pms.project.domain.SimpleRepository; import com.microservices.pms.project.domain.vo.*; +import com.microservices.pms.project.mapper.PmsProjectSprintMapper; +import com.microservices.pms.project.mapper.PmsProjectTestsheetMapper; import com.microservices.pms.utils.PmsConstants; import com.microservices.pms.utils.PmsGitLinkRequestUrl; import com.microservices.pms.utils.PmsUtils; @@ -31,6 +34,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.net.URISyntaxException; import java.util.*; @@ -72,6 +76,10 @@ public class PmsProjectIssuesService { @Autowired private IPmsCommonService pmsCommonService; + @Resource + private PmsProjectSprintMapper pmsProjectSprintMapper; + @Resource + private PmsProjectTestsheetMapper pmsProjectTestsheetMapper; public JSONObject selectPmsProjectIssuesList(PmsProjectIssuesSearchVo pmsProjectIssuesSearchVo) { @@ -574,4 +582,52 @@ public class PmsProjectIssuesService { throw new RuntimeException(e); } } + + public JSONObject getPersonalIssuesStatistics(String enterpriseIdentifier) { + Long gitlinkUserId = SecurityUtils.getGitlinkUserId(); + return gitLinkRequestHelper.doGet(PmsGitLinkRequestUrl.GET_WEEKLY_ISSUES_PERSONAL(enterpriseIdentifier, gitlinkUserId)); + + } + + public JSONObject getProjectTeamIssuesStatistics(String enterpriseIdentifier) { + List pmProjectIds = pmsProjectService.selectProjectIdsByAssigneeUserId(enterpriseIdentifier, SecurityUtils.getGitlinkUserId()); + String pmProjectIdsStr = StringUtils.join(pmProjectIds, ","); + JSONObject result = gitLinkRequestHelper.doGet(PmsGitLinkRequestUrl.GET_WEEKLY_ISSUES_GROUP(enterpriseIdentifier, pmProjectIdsStr)); + enrichProjectInfo(result); + return result; + + } + + public void enrichProjectInfo(JSONObject inputJson) { + // 遍历最外层 key + for (String projectIdStr : inputJson.keySet()) { + Long projectId = Long.valueOf(projectIdStr); // 转换为 Long + + // 查询项目信息 + PmsProjectDetailVo project = pmsProjectService.selectPmsProjectById(projectId); + + if (project != null) { + // 将项目信息转换为 JSONObject + JSONObject projectInfo = new JSONObject(); + projectInfo.put("projectId", project.getId()); + projectInfo.put("projectName", project.getProjectName()); + projectInfo.put("enterpriseId", project.getPmsEnterpriseId()); + projectInfo.put("createdTime", project.getCreateTime()); + // 将 projectInfo 插入到原 JSON 的对应层级中 + JSONObject innerData = inputJson.getJSONObject(projectIdStr); + innerData.put("project_info", projectInfo); + } + + // 统计新建迭代数 + inputJson.put("this_week_new_sprint_count", pmsProjectSprintMapper.selectNewSprintCurrentNaturalWeekCount(projectId)); + // 统计完成迭代数 + inputJson.put("this_week_complete_sprint_count", pmsProjectSprintMapper.selectCompleteSprintCurrentNaturalWeekCount(projectId)); + // 统计新建测试单数 + inputJson.put("this_week_new_test_sheet_count", pmsProjectTestsheetMapper.selectNewTestSheetCurrentNaturalWeekCount(projectId)); + // 统计完成测试单数 + inputJson.put("this_week_complete_test_sheet_count", pmsProjectTestsheetMapper.selectCompleteTestSheetCurrentNaturalWeekCount(projectId)); + } + } + + } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectServiceImpl.java index ab4c215b4..25e0a9278 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectServiceImpl.java @@ -396,6 +396,11 @@ public class PmsProjectServiceImpl implements IPmsProjectService { return pmsProject; } + @Override + public List selectProjectIdsByAssigneeUserId(String enterpriseIdentifier, Long gitlinkUserId) { + return pmsProjectMapper.selectProjectIdsByAssigneeUserId(enterpriseIdentifier, gitlinkUserId); + } + @Override public PmsProject selectAndCheckPmsProjectById(String idStr) { if (StringUtils.isEmpty(idStr)) { diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java index 0fb7f7861..8b071af8d 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsGitLinkRequestUrl.java @@ -439,4 +439,14 @@ public class PmsGitLinkRequestUrl extends GitLinkRequestUrl { public static GitLinkRequestUrl GET_ACTION_RUN_DATA(String owner, String workflows) { return getGitLinkRequestUrl(String.format("/api/pm/action_runs?owner_id=%s&workflows=%s", owner, workflows), "data"); } + + public static GitLinkRequestUrl GET_WEEKLY_ISSUES_PERSONAL(String enterpriseIdentifier, Long gitlinkUserId){ + return getGitLinkRequestUrl( + String.format("/api/pm/weekly_issues/personal.json?enterprise_identifier=%s&user_id=%s", enterpriseIdentifier, gitlinkUserId)); + } + + public static GitLinkRequestUrl GET_WEEKLY_ISSUES_GROUP(String enterpriseIdentifier, String pmProjectIds){ + return getGitLinkRequestUrl( + String.format("/api/pm/weekly_issues/group.json?enterprise_identifier=%s&pm_project_ids=%s", enterpriseIdentifier, pmProjectIds)); + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectMapper.xml index 853b22e3c..6f92f0ed1 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectMapper.xml @@ -173,6 +173,13 @@ from pms_project + insert into pms_project diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectSprintMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectSprintMapper.xml index cc528b3bd..4fb8a0fb6 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectSprintMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectSprintMapper.xml @@ -221,4 +221,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE pms_project_id = #{pmProjectId} AND status = 2 ) AS `closed_sprint_count` + + \ No newline at end of file diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestsheetMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestsheetMapper.xml index ec6dd180c..35881dc70 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestsheetMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestsheetMapper.xml @@ -53,6 +53,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into pms_project_testsheet