From 7a4abfa7e9299f2aa416a836c705535a789232bd Mon Sep 17 00:00:00 2001 From: liuhuazhong Date: Tue, 11 Mar 2025 15:12:42 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(=E8=BD=AF=E4=BB=B6=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1):=20=E4=BB=8A=E6=97=A5=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=80=81=E5=8A=BF=E3=80=81=E5=91=A8=E6=9C=88=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=80=81=E5=8A=BF=E3=80=81=E9=A1=B9=E7=9B=AE=E7=A0=94=E5=8F=91?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/specialArea/constant/Constant.java | 30 ++ .../SoftwareFactStatisticsController.java | 38 +++ .../pms/specialArea/domain/ForgeProject.java | 25 ++ .../specialArea/domain/ZonePmsProject.java | 42 +++ .../pms/specialArea/domain/vo/KeyValVO.java | 9 + .../domain/vo/ProjectSituationVO.java | 19 ++ .../mapper/SoftwareFactStatisForgeMapper.java | 19 ++ .../mapper/SoftwareFactStatisPmsMapper.java | 30 ++ .../SoftwareFactStatisticsServiceImpl.java | 276 ++++++++++++++++++ .../pms/SoftwareFactStatisForgeMapper.xml | 82 ++++++ .../pms/SoftwareFactStatisPmsMapper.xml | 89 ++++++ 11 files changed, 659 insertions(+) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/constant/Constant.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ForgeProject.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ZonePmsProject.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/KeyValVO.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/ProjectSituationVO.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisForgeMapper.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisPmsMapper.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/service/SoftwareFactStatisticsServiceImpl.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisForgeMapper.xml create mode 100644 microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisPmsMapper.xml diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/constant/Constant.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/constant/Constant.java new file mode 100644 index 000000000..bd9227093 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/constant/Constant.java @@ -0,0 +1,30 @@ +package com.microservices.pms.specialArea.constant; + +import java.util.Arrays; +import java.util.List; + +public class Constant { + + private Constant() {} + + public static final List ISSUE_NOT_FINISHED = Arrays.asList(1,2); + public static final List ISSUE_FINISHED = Arrays.asList(3,5,6); + + public static final Integer NEED = 1; + public static final Integer TASK = 2; + public static final Integer BUG = 3; + + + public static final Integer TASK_CASE_STATUS_NOT_EXEC = 0; + public static final Integer TASK_CASE_STATUS_PASS = 1; + public static final Integer TASK_CASE_STATUS_FAIL = 2; + public static final Integer TASK_CASE_STATUS_BLOCK = 3; + public static final Integer TASK_CASE_STATUS_SKIP = 4; + + + public static final Integer SPRINT_STATUS_CLOSED = 2; + public static final Integer SPRINT_STATUS_PROCESSING = 1; + public static final Integer SPRINT_STATUS_NOT_START = 0; + + +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java new file mode 100644 index 000000000..90953edcf --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java @@ -0,0 +1,38 @@ +package com.microservices.pms.specialArea.controller; + +import com.microservices.common.core.web.domain.AjaxResult; +import com.microservices.pms.specialArea.service.SoftwareFactStatisticsServiceImpl; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController() +@RequestMapping("/specialArea/softwareFact/statis") +@Api(tags = "项目管理-软件工厂统计相关接口") +@RequiredArgsConstructor +public class SoftwareFactStatisticsController { + + private final SoftwareFactStatisticsServiceImpl softwareFactStatisticsService; + + @ApiOperation(value = "今日工作态势") + @GetMapping("/todayWorkSituation") + public AjaxResult todayWorkSituation(){ + return AjaxResult.success(softwareFactStatisticsService.todayWorkSituation()); + } + + @ApiOperation(value = "周、月工作态势") + @GetMapping("/weekMonthWorkSituation") + public AjaxResult weekMonthWorkSituation(String type){ + return AjaxResult.success(softwareFactStatisticsService.weekMonthWorkSituation(type)); + } + + @ApiOperation(value = "项目研发状态") + @GetMapping("/projectSituation") + public AjaxResult projectSituation(){ + return AjaxResult.success(softwareFactStatisticsService.projectSituation()); + } + +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ForgeProject.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ForgeProject.java new file mode 100644 index 000000000..e111a1ef3 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ForgeProject.java @@ -0,0 +1,25 @@ +package com.microservices.pms.specialArea.domain; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class ForgeProject { + + //项目ID + private Long pmProjectId; + // 需求1 任务2 缺陷3,默认为 1 + private Integer pmIssueType; + + //状态ID + private List statusIds; + //创建时间开始 + private Date createTimeS; + //创建时间结束 + private Date createTimeE; + //更新时间开始 + private Date updateTimeS; + private Date updateTimeE; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ZonePmsProject.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ZonePmsProject.java new file mode 100644 index 000000000..619ed55e4 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/ZonePmsProject.java @@ -0,0 +1,42 @@ +package com.microservices.pms.specialArea.domain; + +import com.microservices.common.core.annotation.Excel; +import lombok.Data; + +@Data +public class ZonePmsProject { + + /** 项目ID */ + private Long id; + + /** + * 组织Id + */ + private Long deptId; + + /** 项目标识 */ + @Excel(name = "项目标识") + private String projectIdentifier; + + /** 项目名称 */ + @Excel(name = "项目名称") + private String projectName; + + /** 项目负责人 */ + @Excel(name = "项目负责人") + private Long projectAssigneeId; + + /** 项目负责人 */ + @Excel(name = "项目负责人") + private String projectAssigneeName; + /** 所属企业ID */ + @Excel(name = "所属企业ID") + private Long pmsEnterpriseId; + /** 所属企业ID */ + @Excel(name = "所属企业") + private String pmsEnterpriseName; + + /** 状态 0关闭 1开启 2暂停 */ + @Excel(name = "状态 0关闭 1开启 2暂停") + private String status; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/KeyValVO.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/KeyValVO.java new file mode 100644 index 000000000..c45ea9b8b --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/KeyValVO.java @@ -0,0 +1,9 @@ +package com.microservices.pms.specialArea.domain.vo; + +import lombok.Data; + +@Data +public class KeyValVO { + private Integer key; + private Long val; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/ProjectSituationVO.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/ProjectSituationVO.java new file mode 100644 index 000000000..f90e70baa --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/domain/vo/ProjectSituationVO.java @@ -0,0 +1,19 @@ +package com.microservices.pms.specialArea.domain.vo; + +import com.microservices.pms.specialArea.domain.ZonePmsProject; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class ProjectSituationVO extends ZonePmsProject { + private Long needCount; + private Long needFinishedCount; + private Long taskCount; + private Long taskFinishedCount; + private Long sprintCount; + private Long sprintFinishedCount; + private Long testCaseCount; + private Long testBugCount; + private Long notExecTestCaseCount; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisForgeMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisForgeMapper.java new file mode 100644 index 000000000..a58a5e647 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisForgeMapper.java @@ -0,0 +1,19 @@ +package com.microservices.pms.specialArea.mapper; + +import com.microservices.common.datasource.annotation.Slave; +import com.microservices.pms.specialArea.domain.ForgeProject; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +@Slave +public interface SoftwareFactStatisForgeMapper { + + List selectForgeProject(ForgeProject forgeProject); + + Long countForgeProject(ForgeProject forgeProject); + Long countForgeProjectByCUES(ForgeProject forgeProject); + Long countForgeProjectByProject(ForgeProject forgeProject); + Long countForgeProjectByAssigner(ForgeProject forgeProject); +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisPmsMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisPmsMapper.java new file mode 100644 index 000000000..a9f75432f --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/mapper/SoftwareFactStatisPmsMapper.java @@ -0,0 +1,30 @@ +package com.microservices.pms.specialArea.mapper; + +import com.microservices.common.datasource.annotation.Master; +import com.microservices.pms.specialArea.domain.ForgeProject; +import com.microservices.pms.specialArea.domain.ZonePmsProject; +import com.microservices.pms.specialArea.domain.vo.KeyValVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Master +@Mapper +public interface SoftwareFactStatisPmsMapper { + + List selectPmsProjectList(); + + ZonePmsProject selectPmsProjectById(@Param("id") Long id); + // 状态 0待开始 1进行中 2已关闭 + List countSprintByStatus(Long projectId); + Long countSprintByCUES(ForgeProject forgeProject); + Long countTestCaseBy(Long projectId); + Long countTestCaseInSheet(ForgeProject forgeProject); + Long countTestCaseByCUES(ForgeProject forgeProject); + + String selectPmsUserByGitlinkId(@Param("gitlinkId") Long gitlinkId); + + List selectPmsProjectListByDict(); + +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/service/SoftwareFactStatisticsServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/service/SoftwareFactStatisticsServiceImpl.java new file mode 100644 index 000000000..3f216f91b --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/service/SoftwareFactStatisticsServiceImpl.java @@ -0,0 +1,276 @@ +package com.microservices.pms.specialArea.service; + +import com.microservices.common.core.web.controller.BaseController; +import com.microservices.pms.specialArea.domain.ForgeProject; +import com.microservices.pms.specialArea.domain.ZonePmsProject; +import com.microservices.pms.specialArea.domain.vo.KeyValVO; +import com.microservices.pms.specialArea.domain.vo.ProjectSituationVO; +import com.microservices.pms.specialArea.mapper.SoftwareFactStatisForgeMapper; +import com.microservices.pms.specialArea.mapper.SoftwareFactStatisPmsMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + +import static com.microservices.pms.specialArea.constant.Constant.*; + +@Service +@RequiredArgsConstructor +public class SoftwareFactStatisticsServiceImpl extends BaseController { + + private final SoftwareFactStatisPmsMapper statisPmsMapper; + private final SoftwareFactStatisForgeMapper statisForgeMapper; + + public static Date[] getDayStartAndEnd(int days) { + // 获取今天的日期 + LocalDate today = LocalDate.now(); + today = today.plusDays(days); + // 获取今天的开始时间(00:00:00) + LocalDateTime startOfDay = today.atStartOfDay(); + + // 获取今天的结束时间(23:59:59.999999999) + LocalDateTime endOfDay = today.atTime(LocalTime.MAX); + + // 转换为 Date 对象 + Date startDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); + Date endDate = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); + + return new Date[]{startDate, endDate}; + } + + public static Date[] getCurrentWeek() { + LocalDate today = LocalDate.now(); + LocalDate startOfWeek = today.with(java.time.DayOfWeek.MONDAY); + LocalDate endOfWeek = today.with(java.time.DayOfWeek.SUNDAY); + + LocalDateTime startDateTime = startOfWeek.atStartOfDay(); + LocalDateTime endDateTime = endOfWeek.atTime(23, 59, 59); + + return new Date[]{ + Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()) + }; + } + + public static Date[] getCurrentMonth() { + LocalDate today = LocalDate.now(); + LocalDate startOfMonth = today.withDayOfMonth(1); + LocalDate endOfMonth = today.withDayOfMonth(today.lengthOfMonth()); + + LocalDateTime startDateTime = startOfMonth.atStartOfDay(); + LocalDateTime endDateTime = endOfMonth.atTime(23, 59, 59); + + return new Date[]{ + Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()) + }; + } + + public Map todayWorkSituation() { + + Map res = new HashMap<>(); + + ForgeProject forgeProject = new ForgeProject(); + forgeProject.setStatusIds(ISSUE_NOT_FINISHED); + + //需求待评审 + forgeProject.setPmIssueType(NEED); + Long needNotFinishCount = statisForgeMapper.countForgeProject(forgeProject); + res.put("needNotFinishCount", needNotFinishCount); + + //任务待完成 + forgeProject.setPmIssueType(TASK); + Long taskNotFinishCount = statisForgeMapper.countForgeProject(forgeProject); + res.put("taskNotFinishCount", taskNotFinishCount); + + //缺陷待修复 + forgeProject.setPmIssueType(BUG); + Long bugNotFinishCount = statisForgeMapper.countForgeProject(forgeProject); + res.put("bugNotFinishCount", bugNotFinishCount); + //测试用例未执行数 + forgeProject.setStatusIds(Collections.singletonList(TASK_CASE_STATUS_NOT_EXEC)); + Long notExecTestCaseCount = statisPmsMapper.countTestCaseInSheet(forgeProject); + res.put("notExecTestCaseCount", notExecTestCaseCount); + + ForgeProject f2 = new ForgeProject(); + f2.setStatusIds(ISSUE_NOT_FINISHED); + f2.setPmIssueType(TASK); + //任务最多项目 + Long taskMaxProjectId = statisForgeMapper.countForgeProjectByProject(f2); + ZonePmsProject taskMaxProject = statisPmsMapper.selectPmsProjectById(taskMaxProjectId); + res.put("taskMaxProject", taskMaxProject == null ?"": taskMaxProject.getProjectName()); + //任务最多个人 + Long taskMaxAssignerId = statisForgeMapper.countForgeProjectByAssigner(f2); + String taskMaxAssigner = statisPmsMapper.selectPmsUserByGitlinkId(taskMaxAssignerId); + res.put("taskMaxAssigner", taskMaxAssigner); + f2.setPmIssueType(BUG); + //缺陷最多项目 + Long bugMaxProjectId = statisForgeMapper.countForgeProjectByProject(f2); + ZonePmsProject bugMaxProject = statisPmsMapper.selectPmsProjectById(bugMaxProjectId); + res.put("bugMaxProject", bugMaxProject == null ?"": bugMaxProject.getProjectName()); + //缺陷最多个人 + Long bugMaxAssignerId = statisForgeMapper.countForgeProjectByAssigner(f2); + String bugMaxAssigner = statisPmsMapper.selectPmsUserByGitlinkId(bugMaxAssignerId); + res.put("bugMaxAssigner", bugMaxAssigner); + + + // 昨日完成、昨日新增 + Date[] dayStartAndEnd = getDayStartAndEnd(-1); + ForgeProject forgeProjectTime = new ForgeProject(); + forgeProjectTime.setCreateTimeS(dayStartAndEnd[0]); + forgeProjectTime.setCreateTimeE(dayStartAndEnd[1]); + buildDayWeekMonthData(forgeProjectTime, res, dayStartAndEnd); + + return res; + } + + private void buildDayWeekMonthData(ForgeProject forgeProjectTime, Map res, Date[] dayStartAndEnd) { + // 昨日新增需求 + forgeProjectTime.setPmIssueType(NEED); + Long yesterdayAddNeed = statisForgeMapper.countForgeProject(forgeProjectTime); + res.put("yesterdayAddNeed", yesterdayAddNeed); +//昨日新增 任务 + forgeProjectTime.setPmIssueType(TASK); + Long yesterdayAddTask = statisForgeMapper.countForgeProject(forgeProjectTime); + res.put("yesterdayAddTask", yesterdayAddTask); +//昨日新增 缺陷 + forgeProjectTime.setPmIssueType(BUG); + Long yesterdayAddBug = statisForgeMapper.countForgeProject(forgeProjectTime); + res.put("yesterdayAddBug", yesterdayAddBug); + + ForgeProject forgeProjectFinish = new ForgeProject(); + forgeProjectFinish.setStatusIds(ISSUE_FINISHED); + forgeProjectFinish.setUpdateTimeS(dayStartAndEnd[0]); + forgeProjectFinish.setUpdateTimeE(dayStartAndEnd[1]); + //昨日任务完结 + forgeProjectFinish.setPmIssueType(TASK); + Long yesterdayFinishTask = statisForgeMapper.countForgeProject(forgeProjectFinish); + res.put("yesterdayFinishTask", yesterdayFinishTask); + //昨日缺陷关闭数 + forgeProjectFinish.setPmIssueType(BUG); + Long yesterdayFinishBug = statisForgeMapper.countForgeProject(forgeProjectFinish); + res.put("yesterdayFinishBug", yesterdayFinishBug); +// 昨日需求评审数 + forgeProjectFinish.setPmIssueType(NEED); + Long yesterdayFinishNeed = statisForgeMapper.countForgeProject(forgeProjectFinish); + res.put("yesterdayFinishNeed", yesterdayFinishNeed); + //昨日测试用例执行 + ForgeProject forgeProjectTest = new ForgeProject(); + forgeProjectFinish.setStatusIds(Arrays.asList(TASK_CASE_STATUS_PASS, TASK_CASE_STATUS_FAIL, TASK_CASE_STATUS_BLOCK, TASK_CASE_STATUS_SKIP)); + forgeProjectFinish.setUpdateTimeS(dayStartAndEnd[0]); + forgeProjectFinish.setUpdateTimeE(dayStartAndEnd[1]); + Long yesterdayTestCase = statisPmsMapper.countTestCaseInSheet(forgeProjectTest); + res.put("yesterdayTestCase", yesterdayTestCase); + + // 昨日最活跃项目 + List zonePmsProjects = statisPmsMapper.selectPmsProjectList(); + long pmsProjectIdMax = 0L, maxVal = -1L; + for (ZonePmsProject p : zonePmsProjects) { + ForgeProject f = new ForgeProject(); + f.setCreateTimeS(dayStartAndEnd[0]); + f.setCreateTimeE(dayStartAndEnd[1]); + f.setUpdateTimeS(dayStartAndEnd[0]); + f.setUpdateTimeE(dayStartAndEnd[1]); + f.setPmProjectId(p.getId()); + + f.setPmIssueType(NEED); + Long a = statisForgeMapper.countForgeProjectByCUES(f); + f.setPmIssueType(TASK); + Long b = statisForgeMapper.countForgeProjectByCUES(f); + f.setPmIssueType(BUG); + Long c = statisForgeMapper.countForgeProjectByCUES(f); + Long d = statisPmsMapper.countSprintByCUES(f); + Long e = statisPmsMapper.countTestCaseByCUES(f); + + long total = a + b + c + d + e; + if (total > maxVal) { + pmsProjectIdMax = p.getId(); + maxVal = total; + } + } + + ZonePmsProject zonePmsProjectMax = statisPmsMapper.selectPmsProjectById(pmsProjectIdMax); + res.put("zonePmsProjectMax", zonePmsProjectMax==null? "": zonePmsProjectMax.getProjectName()); + } + + public List projectSituation() { + + List zonePmsProjects = statisPmsMapper.selectPmsProjectList(); + List showProjectList = statisPmsMapper.selectPmsProjectListByDict() + .stream().filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (!showProjectList.isEmpty()) { + zonePmsProjects = zonePmsProjects.stream().filter(e->showProjectList.contains(e.getId())) + .collect(Collectors.toList()); + } + List res = new ArrayList<>(); + zonePmsProjects.forEach(zonePmsProject -> { + + ProjectSituationVO vo = new ProjectSituationVO(); + BeanUtils.copyProperties(zonePmsProject, vo); + + Map sprintCountMap = statisPmsMapper.countSprintByStatus(zonePmsProject.getId()) + .stream() + .collect(Collectors.toMap(KeyValVO::getKey, KeyValVO::getVal, (o, n) -> n)); + + vo.setSprintFinishedCount(sprintCountMap.getOrDefault(SPRINT_STATUS_CLOSED,0L)); + vo.setSprintCount(sprintCountMap.values().stream().reduce(0L, Long::sum)); + + ForgeProject forgeProject = new ForgeProject(); + forgeProject.setPmProjectId(zonePmsProject.getId()); + forgeProject.setPmIssueType(NEED); + Long planCount = statisForgeMapper.countForgeProject(forgeProject); + vo.setNeedCount(planCount); + forgeProject.setStatusIds(ISSUE_FINISHED); + Long planFinishCount = statisForgeMapper.countForgeProject(forgeProject); + vo.setNeedFinishedCount(planFinishCount); + forgeProject.setPmIssueType(TASK); + Long taskFinishCount = statisForgeMapper.countForgeProject(forgeProject); + vo.setTaskFinishedCount(taskFinishCount); + forgeProject.setStatusIds(new ArrayList<>()); + Long taskCount = statisForgeMapper.countForgeProject(forgeProject); + vo.setTaskCount(taskCount); + + // 测试相关 + //测试用例数 + Long testCaseCount = statisPmsMapper.countTestCaseBy(zonePmsProject.getId()); + forgeProject.setPmIssueType(BUG); + forgeProject.setStatusIds(ISSUE_NOT_FINISHED); + vo.setTestCaseCount(testCaseCount); +// 测试缺陷数 + Long testBugCount = statisForgeMapper.countForgeProject(forgeProject); + vo.setTestBugCount(testBugCount); +// 测试用例未执行数 + forgeProject.setStatusIds(Collections.singletonList(TASK_CASE_STATUS_NOT_EXEC)); + Long notExecTestCaseCount = statisPmsMapper.countTestCaseInSheet(forgeProject); + vo.setNotExecTestCaseCount(notExecTestCaseCount); + + res.add(vo); + }); + + return res; + } + + public Map weekMonthWorkSituation(String type) { + Map res = new HashMap<>(); + Date[] dayStartAndEnd = getDayStartAndEnd(-1); + if (Objects.equals(type, "week")) { + dayStartAndEnd = getCurrentWeek(); + } else if (Objects.equals(type, "month")) { + dayStartAndEnd = getCurrentMonth(); + } + ForgeProject forgeProjectTime = new ForgeProject(); + forgeProjectTime.setCreateTimeS(dayStartAndEnd[0]); + forgeProjectTime.setCreateTimeE(dayStartAndEnd[1]); + buildDayWeekMonthData(forgeProjectTime, res, dayStartAndEnd); + + return res; + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisForgeMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisForgeMapper.xml new file mode 100644 index 000000000..d82bf9417 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisForgeMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisPmsMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisPmsMapper.xml new file mode 100644 index 000000000..964903987 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/SoftwareFactStatisPmsMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b8fbf94be61a201a55054d9376cb008449675b6f Mon Sep 17 00:00:00 2001 From: liuhuazhong Date: Thu, 13 Mar 2025 14:28:20 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(=E4=B8=93=E5=8C=BA=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=83=BD=E5=8A=9B=E4=B8=8A=E7=BA=BF):=20?= =?UTF-8?q?=E8=BF=91=E4=B8=80=E5=91=A8=E7=9A=84=E6=96=87=E7=AB=A0=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=8F=91=E5=B8=83=E6=95=B0=E3=80=81=E8=BF=91=E4=B8=80?= =?UTF-8?q?=E5=91=A8PV=E6=95=B0=EF=BC=88=E6=80=BB=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E9=87=8F=EF=BC=89=E3=80=81=E8=BF=91=E4=B8=80=E5=91=A8UV?= =?UTF-8?q?=E6=95=B0=EF=BC=88=E7=82=B9=E5=87=BB=E5=8E=BB=E9=87=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detail/domain/vo/ZoneDetailDataVo.java | 18 + .../zone/detail/mapper/ZoneDetailMapper.java | 22 + .../service/impl/ZoneDetailServiceImpl.java | 37 +- .../mapper/zone/ZoneDetailMapper.xml | 432 +++++++++--------- 4 files changed, 299 insertions(+), 210 deletions(-) diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/domain/vo/ZoneDetailDataVo.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/domain/vo/ZoneDetailDataVo.java index 28d2e6f53..7a1fe28d2 100644 --- a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/domain/vo/ZoneDetailDataVo.java +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/domain/vo/ZoneDetailDataVo.java @@ -247,4 +247,22 @@ public class ZoneDetailDataVo extends BaseEntity { */ @ApiModelProperty(value = "数据集板块标题") private String sectionDataSetTitle; + + /** + * 近一周的文章新增发布数 + */ + @ApiModelProperty(value = "近一周的文章新增发布数") + private Long weekArticles = 0L; + + /** + * 近一周UV数(点击去重) + */ + @ApiModelProperty(value = "近一周UV数(点击去重)") + private Long weekUV = 0L; + + /** + * 近一周PV数(总访问量) + */ + @ApiModelProperty(value = "近一周PV数(总访问量)") + private Long weekPV = 0L; } diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/mapper/ZoneDetailMapper.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/mapper/ZoneDetailMapper.java index 4b92aa8ad..b2a0eda48 100644 --- a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/mapper/ZoneDetailMapper.java +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/mapper/ZoneDetailMapper.java @@ -2,9 +2,13 @@ package com.microservices.zone.detail.mapper; import com.microservices.common.datascope.annotation.DataScope; import com.microservices.zone.detail.domain.ZoneDetail; +import com.microservices.zone.detail.domain.vo.ZoneDetailDataVo; import com.microservices.zone.detail.domain.vo.ZoneDetailSearchVo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.security.access.method.P; +import java.util.Date; import java.util.List; /** @@ -95,4 +99,22 @@ public interface ZoneDetailMapper { * @return */ ZoneDetail selectZoneDetailByName(String name); + + /** + * 专区文章数统计 + * @param createTimeS + * @param createTimeE + * @param key + * @return + */ + ZoneDetailDataVo countArticlesGroupByKey(@Param("createTimeS") Date createTimeS, @Param("createTimeE") Date createTimeE, @Param("key") String key); + + /** + * 专区浏览数据统计 + * @param createTimeS + * @param createTimeE + * @param key + * @return + */ + ZoneDetailDataVo countPUVsGroupByKey(@Param("createTimeS") Date createTimeS, @Param("createTimeE") Date createTimeE, @Param("key") String key); } diff --git a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/service/impl/ZoneDetailServiceImpl.java b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/service/impl/ZoneDetailServiceImpl.java index 7eb151787..a84b8dc0d 100644 --- a/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/service/impl/ZoneDetailServiceImpl.java +++ b/microservices-modules/microservices-modules-zone/src/main/java/com/microservices/zone/detail/service/impl/ZoneDetailServiceImpl.java @@ -57,10 +57,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; import java.util.stream.Collectors; /** @@ -198,6 +198,22 @@ public class ZoneDetailServiceImpl implements IZoneDetailService { gitLinkRequestHelper.gitLinkUrl + "/zone/" + zoneDetail.getKey() ) ); + + Date[] lastWeek = getLastWeek(); + //专区文章数统计 + ZoneDetailDataVo articlesGroupByKey = zoneDetailMapper + .countArticlesGroupByKey(lastWeek[0],lastWeek[1],zoneDetail.getKey()) ; + if (articlesGroupByKey != null) { + zoneDetailDataVo.setWeekArticles(articlesGroupByKey.getWeekArticles()); + } + //专区浏览数据统计 + ZoneDetailDataVo puVsGroupByKey = zoneDetailMapper + .countPUVsGroupByKey(lastWeek[0],lastWeek[1],zoneDetail.getKey()) ; + if (puVsGroupByKey != null) { + zoneDetailDataVo.setWeekPV(puVsGroupByKey.getWeekPV()); + zoneDetailDataVo.setWeekUV(puVsGroupByKey.getWeekUV()); + } + return zoneDetailDataVo; } @@ -776,4 +792,17 @@ public class ZoneDetailServiceImpl implements IZoneDetailService { return zoneStatisticsVo; } + public Date[] getLastWeek() { + LocalDate today = LocalDate.now(); + LocalDate startOfWeek = today.with(java.time.DayOfWeek.MONDAY).minusDays(7); + LocalDate endOfWeek = today.with(java.time.DayOfWeek.SUNDAY).minusDays(7); + + LocalDateTime startDateTime = startOfWeek.atStartOfDay(); + LocalDateTime endDateTime = endOfWeek.atTime(23, 59, 59); + + return new Date[]{ + Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()) + }; + } } diff --git a/microservices-modules/microservices-modules-zone/src/main/resources/mapper/zone/ZoneDetailMapper.xml b/microservices-modules/microservices-modules-zone/src/main/resources/mapper/zone/ZoneDetailMapper.xml index 9bdfbe0df..c7cddd80d 100644 --- a/microservices-modules/microservices-modules-zone/src/main/resources/mapper/zone/ZoneDetailMapper.xml +++ b/microservices-modules/microservices-modules-zone/src/main/resources/mapper/zone/ZoneDetailMapper.xml @@ -192,215 +192,235 @@ - - - - - + + + + + - - insert into zone_detail - - name, - `key`, - dept_id, - del_flag, - create_by, - create_time, - update_by, - update_time, - main_title, - sub_title, - first_title, - banner_list, - introduction_title, - introduction_content, - introduction_image, - homepage_membership_size, - homepage_cms_size, - homepage_project_size, - cms_project_id, - gitlink_project_keys, - cms_show, - project_show, - member_show, - partners_show, - special_project_show, - homepage_special_project_title, - resource_show, - homepage_resource_title, - homepage_cms_title, - homepage_project_title, - homepage_member_title, - homepage_partners_title, - template, - helper_title, - helper_show, - doc_need_audit, - resource_need_audit, - is_lock_cms, - section_cms_show, - section_project_show, - section_member_show, - section_helper_show, - section_homepage_show, - section_resource_show, - section_dataset_show, - section_cms_title, - section_project_title, - section_member_title, - section_helper_title, - section_homepage_title, - section_resource_title, - section_dataset_title, - - - #{name}, - #{key}, - #{deptId}, - #{delFlag}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{mainTitle}, - #{subTitle}, - #{firstTitle}, - #{bannerList}, - #{introductionTitle}, - #{introductionContent}, - #{introductionImage}, - #{homepageMembershipSize}, - #{homepageCmsSize}, - #{homepageProjectSize}, - #{cmsProjectId}, - #{gitlinkProjectKeys}, - #{cmsShow}, - #{projectShow}, - #{memberShow}, - #{partnersShow}, - #{specialProjectShow}, - #{homepageSpecialProjectTitle}, - #{resourceShow}, - #{homepageResourceTitle}, - #{homepageCmsTitle}, - #{homepageProjectTitle}, - #{homepageMemberTitle}, - #{homepagePartnersTitle}, - #{template}, - #{helperTitle}, - #{helperShow}, - #{docNeedAudit}, - #{resourceNeedAudit}, - #{isLockCms}, - #{sectionCmsShow}, - #{sectionProjectShow}, - #{sectionMemberShow}, - #{sectionHelperShow}, - #{sectionHomepageShow}, - #{sectionResourceShow}, - #{sectionDataSetShow}, - #{sectionCmsTitle}, - #{sectionProjectTitle}, - #{sectionMemberTitle}, - #{sectionHelperTitle}, - #{sectionHomepageTitle}, - #{sectionResourceTitle}, - #{sectionDataSetTitle}, - - + - - update zone_detail - - name = #{name}, - `key` = #{key}, - dept_id = #{deptId}, - del_flag = #{delFlag}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - main_title = #{mainTitle}, - sub_title = #{subTitle}, - first_title = #{firstTitle}, - banner_list = #{bannerList}, - introduction_title = #{introductionTitle}, - introduction_content = #{introductionContent}, - introduction_image = #{introductionImage}, - homepage_membership_size = #{homepageMembershipSize}, - homepage_cms_size = #{homepageCmsSize}, - homepage_project_size = #{homepageProjectSize}, - cms_project_id = #{cmsProjectId}, - gitlink_project_keys = #{gitlinkProjectKeys}, - is_publish = #{isPublish}, - cms_show = #{cmsShow}, - project_show = #{projectShow}, - member_show = #{memberShow}, - partners_show = #{partnersShow}, - special_project_show = #{specialProjectShow}, - homepage_special_project_title = - #{homepageSpecialProjectTitle}, - - resource_show = #{resourceShow}, - homepage_resource_title = - #{homepageResourceTitle}, - - homepage_cms_title = #{homepageCmsTitle}, - homepage_project_title = #{homepageProjectTitle}, - homepage_member_title = #{homepageMemberTitle}, - homepage_partners_title = #{homepagePartnersTitle}, - template = #{template}, - helper_show = #{helperShow}, - helper_title = #{helperTitle}, - doc_need_audit = #{docNeedAudit}, - resource_need_audit = #{resourceNeedAudit}, - is_lock_cms = #{isLockCms}, - section_cms_show = #{sectionCmsShow}, - section_project_show = #{sectionProjectShow}, - section_member_show = #{sectionMemberShow}, - section_helper_show = #{sectionHelperShow}, - section_homepage_show = #{sectionHomepageShow}, - section_resource_show = #{sectionResourceShow}, - section_dataset_show = #{sectionDataSetShow}, - section_cms_title = #{sectionCmsTitle}, - section_project_title = #{sectionProjectTitle}, - section_member_title = #{sectionMemberTitle}, - section_helper_title = #{sectionHelperTitle}, - section_homepage_title = #{sectionHomepageTitle}, - section_resource_title = #{sectionResourceTitle}, - section_dataset_title = #{sectionDataSetTitle}, - + + + + insert into zone_detail + + name, + `key`, + dept_id, + del_flag, + create_by, + create_time, + update_by, + update_time, + main_title, + sub_title, + first_title, + banner_list, + introduction_title, + introduction_content, + introduction_image, + homepage_membership_size, + homepage_cms_size, + homepage_project_size, + cms_project_id, + gitlink_project_keys, + cms_show, + project_show, + member_show, + partners_show, + special_project_show, + homepage_special_project_title, + resource_show, + homepage_resource_title, + homepage_cms_title, + homepage_project_title, + homepage_member_title, + homepage_partners_title, + template, + helper_title, + helper_show, + doc_need_audit, + resource_need_audit, + is_lock_cms, + section_cms_show, + section_project_show, + section_member_show, + section_helper_show, + section_homepage_show, + section_resource_show, + section_dataset_show, + section_cms_title, + section_project_title, + section_member_title, + section_helper_title, + section_homepage_title, + section_resource_title, + section_dataset_title, + + + #{name}, + #{key}, + #{deptId}, + #{delFlag}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{mainTitle}, + #{subTitle}, + #{firstTitle}, + #{bannerList}, + #{introductionTitle}, + #{introductionContent}, + #{introductionImage}, + #{homepageMembershipSize}, + #{homepageCmsSize}, + #{homepageProjectSize}, + #{cmsProjectId}, + #{gitlinkProjectKeys}, + #{cmsShow}, + #{projectShow}, + #{memberShow}, + #{partnersShow}, + #{specialProjectShow}, + #{homepageSpecialProjectTitle}, + #{resourceShow}, + #{homepageResourceTitle}, + #{homepageCmsTitle}, + #{homepageProjectTitle}, + #{homepageMemberTitle}, + #{homepagePartnersTitle}, + #{template}, + #{helperTitle}, + #{helperShow}, + #{docNeedAudit}, + #{resourceNeedAudit}, + #{isLockCms}, + #{sectionCmsShow}, + #{sectionProjectShow}, + #{sectionMemberShow}, + #{sectionHelperShow}, + #{sectionHomepageShow}, + #{sectionResourceShow}, + #{sectionDataSetShow}, + #{sectionCmsTitle}, + #{sectionProjectTitle}, + #{sectionMemberTitle}, + #{sectionHelperTitle}, + #{sectionHomepageTitle}, + #{sectionResourceTitle}, + #{sectionDataSetTitle}, + + + + + update zone_detail + + name = #{name}, + `key` = #{key}, + dept_id = #{deptId}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + main_title = #{mainTitle}, + sub_title = #{subTitle}, + first_title = #{firstTitle}, + banner_list = #{bannerList}, + introduction_title = #{introductionTitle}, + introduction_content = #{introductionContent}, + introduction_image = #{introductionImage}, + homepage_membership_size = #{homepageMembershipSize}, + homepage_cms_size = #{homepageCmsSize}, + homepage_project_size = #{homepageProjectSize}, + cms_project_id = #{cmsProjectId}, + gitlink_project_keys = #{gitlinkProjectKeys}, + is_publish = #{isPublish}, + cms_show = #{cmsShow}, + project_show = #{projectShow}, + member_show = #{memberShow}, + partners_show = #{partnersShow}, + special_project_show = #{specialProjectShow}, + homepage_special_project_title = + #{homepageSpecialProjectTitle}, + + resource_show = #{resourceShow}, + homepage_resource_title = + #{homepageResourceTitle}, + + homepage_cms_title = #{homepageCmsTitle}, + homepage_project_title = #{homepageProjectTitle}, + homepage_member_title = #{homepageMemberTitle}, + homepage_partners_title = #{homepagePartnersTitle}, + template = #{template}, + helper_show = #{helperShow}, + helper_title = #{helperTitle}, + doc_need_audit = #{docNeedAudit}, + resource_need_audit = #{resourceNeedAudit}, + is_lock_cms = #{isLockCms}, + section_cms_show = #{sectionCmsShow}, + section_project_show = #{sectionProjectShow}, + section_member_show = #{sectionMemberShow}, + section_helper_show = #{sectionHelperShow}, + section_homepage_show = #{sectionHomepageShow}, + section_resource_show = #{sectionResourceShow}, + section_dataset_show = #{sectionDataSetShow}, + section_cms_title = #{sectionCmsTitle}, + section_project_title = #{sectionProjectTitle}, + section_member_title = #{sectionMemberTitle}, + section_helper_title = #{sectionHelperTitle}, + section_homepage_title = #{sectionHomepageTitle}, + section_resource_title = #{sectionResourceTitle}, + section_dataset_title = #{sectionDataSetTitle}, + - where id = #{id} - + where id = #{id} + - - delete - from zone_detail - where id = #{id} - + + delete + from zone_detail + where id = #{id} + - - delete from zone_detail where id in - - #{id} - - - \ No newline at end of file + + delete from zone_detail where id in + + #{id} + + + \ No newline at end of file From 99c029c59327f6a320a9152f67995623f405a2d8 Mon Sep 17 00:00:00 2001 From: liuhuazhong Date: Fri, 14 Mar 2025 09:22:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=EF=BC=8C=E7=A7=BB=E8=87=B3?= =?UTF-8?q?OpenController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/common/controller/OpenController.java | 24 ++++++++++++ .../SoftwareFactStatisticsController.java | 38 ------------------- 2 files changed, 24 insertions(+), 38 deletions(-) delete mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/controller/OpenController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/controller/OpenController.java index 6b14dde11..b9a1bedb6 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/controller/OpenController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/controller/OpenController.java @@ -3,8 +3,10 @@ package com.microservices.pms.common.controller; import com.microservices.common.core.utils.html.EscapeUtil; import com.microservices.common.core.web.controller.BaseController; import com.microservices.common.core.web.domain.AjaxResult; +import com.microservices.pms.specialArea.service.SoftwareFactStatisticsServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; @@ -23,6 +25,9 @@ public class OpenController extends BaseController { @Value("${http.gitLinkUrl}") public String gitLinkUrl; + @Autowired + private SoftwareFactStatisticsServiceImpl softwareFactStatisticsService; + /** * 查询项目管理企业列表 */ @@ -33,4 +38,23 @@ public class OpenController extends BaseController { (Object) EscapeUtil.removeExtraSlashOfUrl(gitLinkUrl + "/login") ); } + + @ApiOperation(value = "今日工作态势") + @GetMapping("/specialArea/softwareFact/statis/todayWorkSituation") + public AjaxResult todayWorkSituation(){ + return AjaxResult.success(softwareFactStatisticsService.todayWorkSituation()); + } + + @ApiOperation(value = "周、月工作态势") + @GetMapping("/specialArea/softwareFact/statis/weekMonthWorkSituation") + public AjaxResult weekMonthWorkSituation(String type){ + return AjaxResult.success(softwareFactStatisticsService.weekMonthWorkSituation(type)); + } + + @ApiOperation(value = "项目研发状态") + @GetMapping("/specialArea/softwareFact/statis/projectSituation") + public AjaxResult projectSituation(){ + return AjaxResult.success(softwareFactStatisticsService.projectSituation()); + } + } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java deleted file mode 100644 index 90953edcf..000000000 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/specialArea/controller/SoftwareFactStatisticsController.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.microservices.pms.specialArea.controller; - -import com.microservices.common.core.web.domain.AjaxResult; -import com.microservices.pms.specialArea.service.SoftwareFactStatisticsServiceImpl; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController() -@RequestMapping("/specialArea/softwareFact/statis") -@Api(tags = "项目管理-软件工厂统计相关接口") -@RequiredArgsConstructor -public class SoftwareFactStatisticsController { - - private final SoftwareFactStatisticsServiceImpl softwareFactStatisticsService; - - @ApiOperation(value = "今日工作态势") - @GetMapping("/todayWorkSituation") - public AjaxResult todayWorkSituation(){ - return AjaxResult.success(softwareFactStatisticsService.todayWorkSituation()); - } - - @ApiOperation(value = "周、月工作态势") - @GetMapping("/weekMonthWorkSituation") - public AjaxResult weekMonthWorkSituation(String type){ - return AjaxResult.success(softwareFactStatisticsService.weekMonthWorkSituation(type)); - } - - @ApiOperation(value = "项目研发状态") - @GetMapping("/projectSituation") - public AjaxResult projectSituation(){ - return AjaxResult.success(softwareFactStatisticsService.projectSituation()); - } - -}