From ecc2b56c6f0120335062ec54241bd484457f1082 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Tue, 22 Oct 2024 14:44:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/business/project/domain/Project.java | 7 +++--- .../service/impl/ProjectServiceImpl.java | 6 ++--- .../service/impl/WorkLoggerServiceImpl.java | 22 ++++++++++++++++--- .../mapper/business/Project/ProjectMapper.xml | 11 +++++++--- .../ProjectTeam/ProjectTeamMapper.xml | 19 ++++++++-------- 5 files changed, 44 insertions(+), 21 deletions(-) diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java b/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java index f5697c3..b48bcb1 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/domain/Project.java @@ -1,10 +1,7 @@ package tech.unissense.pms.business.project.domain; -import lombok.AccessLevel; import lombok.Data; -import lombok.Getter; import tech.unissense.pms.common.core.domain.BaseEntity; -import tech.unissense.pms.common.utils.DateUtils; import java.util.Date; @@ -57,6 +54,10 @@ public class Project extends BaseEntity { * 0 -正常; 1-停用 */ private String state; + /** + * 数据状态 0-待启动 1-进行中 2-已完成 + */ + private String dataState; /** * 项目状态 0-待启动 1-进行中 2-已完成 */ diff --git a/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java index cb21f91..cc1c81f 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/project/service/impl/ProjectServiceImpl.java @@ -84,11 +84,11 @@ public class ProjectServiceImpl implements IProjectService { return; } if (nowDate.before(item.getStartDate())) { - item.setProjectState("0"); + item.setDataState("0"); } else if (nowDate.after(item.getStartDate()) && nowDate.before(item.getEndDate())) { - item.setProjectState("1"); + item.setDataState("1"); } else if (nowDate.after(item.getEndDate())) { - item.setProjectState("2"); + item.setDataState("2"); } }); diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java index 7e1132e..02be4ff 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java @@ -1,6 +1,7 @@ package tech.unissense.pms.business.work.logger.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; import org.springframework.stereotype.Service; import tech.unissense.pms.business.project.domain.Project; import tech.unissense.pms.business.work.logger.domain.WorkLogger; @@ -10,6 +11,7 @@ import tech.unissense.pms.business.work.logger.vo.CalendarVo; import tech.unissense.pms.business.work.logger.vo.StaticsHourVo; import tech.unissense.pms.common.utils.DateUtils; import tech.unissense.pms.common.utils.SecurityUtils; +import java.util.Objects; import javax.annotation.Resource; import java.math.BigDecimal; @@ -122,12 +124,20 @@ public class WorkLoggerServiceImpl implements IWorkLoggerService { @Override public List projectStatics(List projects, String userId) { + if (CollUtil.isEmpty(projects) || userId == null) { + return ListUtil.empty(); + } // 提取项目ID列表 List projectIds = projects.stream() .map(Project::getProjectId) + .filter(Objects::nonNull) // 检查ProjectId是否为null .collect(Collectors.toList()); + if (projectIds.isEmpty()) { + return ListUtil.empty(); + } // 创建一个Map用于快速查找项目的开始和结束日期 Map projectMap = projects.stream() + .filter(project -> project.getProjectId() != null) // 确保ProjectId不为null .collect(Collectors.toMap(Project::getProjectId, project -> project)); // 创建WorkHour对象并设置查询条件 WorkLogger workLogger = new WorkLogger(); @@ -136,21 +146,27 @@ public class WorkLoggerServiceImpl implements IWorkLoggerService { // 查询与项目ID和用户ID相关的工时记录 List list = workLoggerMapper.list(workLogger); + if (list == null) { + return ListUtil.empty(); + } + // 按项目ID汇总工时 Map workHourMap = list.stream().filter(item -> { + if (item == null || item.getProjectId() == null || item.getLoggerDate() == null) { + return false; + } Project project = projectMap.get(item.getProjectId()); - if (project == null) { + if (project == null || project.getStartDate() == null || project.getEndDate() == null) { return false; } return !item.getLoggerDate().before(project.getStartDate()) && !item.getLoggerDate().after(project.getEndDate()); }) .collect(Collectors.toMap( WorkLogger::getProjectId, - item->new BigDecimal(item.getWorkTime()), + item -> new BigDecimal(item.getWorkTime()), BigDecimal::add )); - return generateStaticsHourVoList(projects, workHourMap, Project::getProjectId, Project::getProjectName); } diff --git a/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml b/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml index a3c63a4..400aab5 100644 --- a/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml +++ b/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml @@ -13,6 +13,7 @@ + @@ -51,6 +52,7 @@ t1.budget_date, t1.state, t1.project_state, + t1.data_state, t1.create_by, t1.update_by, t1.update_time, @@ -64,7 +66,7 @@