feat:优化问题
parent
d14740474c
commit
ecc2b56c6f
|
@ -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-已完成
|
||||
*/
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -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<StaticsHourVo> projectStatics(List<Project> projects, String userId) {
|
||||
if (CollUtil.isEmpty(projects) || userId == null) {
|
||||
return ListUtil.empty();
|
||||
}
|
||||
// 提取项目ID列表
|
||||
List<Integer> projectIds = projects.stream()
|
||||
.map(Project::getProjectId)
|
||||
.filter(Objects::nonNull) // 检查ProjectId是否为null
|
||||
.collect(Collectors.toList());
|
||||
if (projectIds.isEmpty()) {
|
||||
return ListUtil.empty();
|
||||
}
|
||||
// 创建一个Map用于快速查找项目的开始和结束日期
|
||||
Map<Integer, Project> 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<WorkLogger> list = workLoggerMapper.list(workLogger);
|
||||
|
||||
if (list == null) {
|
||||
return ListUtil.empty();
|
||||
}
|
||||
|
||||
// 按项目ID汇总工时
|
||||
Map<Integer, BigDecimal> 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);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<result property="endDate" column="end_date" jdbcType="TIMESTAMP"/>
|
||||
<result property="budgetDate" column="budget_date" jdbcType="INTEGER"/>
|
||||
<result property="state" column="state" jdbcType="VARCHAR"/>
|
||||
<result property="dataState" column="data_state" jdbcType="VARCHAR"/>
|
||||
<result property="projectState" column="project_state" jdbcType="VARCHAR"/>
|
||||
<result property="createBy" column="create_by" jdbcType="INTEGER"/>
|
||||
<result property="updateBy" column="update_by" jdbcType="INTEGER"/>
|
||||
|
@ -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 @@
|
|||
<select id="list" resultMap="ProjectMap">
|
||||
select
|
||||
t1.project_id, t1.tenant_id, t1.project_name, t1.project_code, t1.project_leader,t4.nick_name project_leader_name, t1.start_date, t1.end_date, t1.budget_date, t1.state,
|
||||
t1.project_state, t1.create_by, t1.update_by, t1.update_time, t1.create_time,t2.team_num,t3.nick_name create_by_name
|
||||
t1.project_state, t1.data_state, t1.create_by, t1.update_by, t1.update_time, t1.create_time,t2.team_num,t3.nick_name create_by_name
|
||||
from pms_project t1 left join (select count(1) team_num,project_id from pms_project_team group by project_id) t2 on t1.project_id=t2.project_id
|
||||
left join sys_user t3 on t1.create_by=t3.user_id
|
||||
left join sys_user t4 on t1.project_leader=t4.user_id
|
||||
|
@ -195,10 +197,10 @@
|
|||
<!--新增所有列-->
|
||||
<insert id="insert" keyProperty="projectId" useGeneratedKeys="true">
|
||||
insert into pms_project(tenant_id, project_name, project_code, project_leader, start_date, end_date,
|
||||
budget_date, state, project_state, create_by, update_by,
|
||||
budget_date, state, project_state, data_state, create_by, update_by,
|
||||
update_time, create_time)
|
||||
values (#{tenantId}, #{projectName}, #{projectCode}, #{projectLeader}, #{startDate}, #{endDate}, #{budgetDate},
|
||||
#{state}, #{projectState}, #{createBy}, #{updateBy}, #{updateTime},
|
||||
#{state}, #{projectState},#{dataState}, #{createBy}, #{updateBy}, #{updateTime},
|
||||
#{createTime})
|
||||
</insert>
|
||||
|
||||
|
@ -271,6 +273,9 @@
|
|||
<if test="state != null and state != ''">
|
||||
state = #{state},
|
||||
</if>
|
||||
<if test="dataState != null and dataState != ''">
|
||||
data_state = #{dataState},
|
||||
</if>
|
||||
<if test="projectState != null and projectState != ''">
|
||||
project_state = #{projectState},
|
||||
</if>
|
||||
|
|
|
@ -47,37 +47,38 @@
|
|||
left join sys_user t2 on t1.user_id=t2.user_id
|
||||
<where>
|
||||
<if test="projectId != null">
|
||||
and project_id = #{projectId}
|
||||
and t1.project_id = #{projectId}
|
||||
</if>
|
||||
<if test="projectIdList != null and projectIdList.size>0">
|
||||
and project_id in
|
||||
and t1.project_id in
|
||||
<foreach collection="projectIdList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
|
||||
</if>
|
||||
<if test="teamId != null">
|
||||
and team_id = #{teamId}
|
||||
and t1.team_id = #{teamId}
|
||||
</if>
|
||||
<if test="userId != null">
|
||||
and user_id = #{userId}
|
||||
and t1.user_id = #{userId}
|
||||
</if>
|
||||
<if test="postId != null and postId != ''">
|
||||
and post_id = #{postId}
|
||||
and t1.post_id = #{postId}
|
||||
</if>
|
||||
<if test="createBy != null and createBy != ''">
|
||||
and create_by = #{createBy}
|
||||
and t1.create_by = #{createBy}
|
||||
</if>
|
||||
<if test="updateBy != null and updateBy != ''">
|
||||
and update_by = #{updateBy}
|
||||
and t1.update_by = #{updateBy}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
and update_time = #{updateTime}
|
||||
and t1.update_time = #{updateTime}
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
and create_time = #{createTime}
|
||||
and t1.create_time = #{createTime}
|
||||
</if>
|
||||
</where>
|
||||
order by t1.create_time desc
|
||||
</select>
|
||||
|
||||
<!--统计总行数-->
|
||||
|
|
Loading…
Reference in New Issue