全量提交
This commit is contained in:
@@ -32,17 +32,26 @@ public class MonthlyPerformanceReportVo {
|
|||||||
/** 明细:负责人项目(sys_oa_project.functionary) */
|
/** 明细:负责人项目(sys_oa_project.functionary) */
|
||||||
private List<SysOaProjectVo> responsibleProjects;
|
private List<SysOaProjectVo> responsibleProjects;
|
||||||
|
|
||||||
|
/** 明细:延期项目(从 responsibleProjects 中筛选出延期的) */
|
||||||
|
private List<SysOaProjectVo> postponedProjects;
|
||||||
|
|
||||||
/** 明细:项目进度步骤(oa_project_schedule_step) */
|
/** 明细:项目进度步骤(oa_project_schedule_step) */
|
||||||
private List<OaProjectScheduleStepVo> scheduleStepDetails;
|
private List<OaProjectScheduleStepVo> scheduleStepDetails;
|
||||||
|
|
||||||
/** 明细:本人负责的进度步骤(node_header=本人) */
|
/** 明细:本人负责的进度步骤(node_header=本人) */
|
||||||
private List<OaProjectScheduleStepVo> myScheduleStepDetails;
|
private List<OaProjectScheduleStepVo> myScheduleStepDetails;
|
||||||
|
|
||||||
|
/** 明细:延期进度步骤(从 myScheduleStepDetails 中筛选出延期的) */
|
||||||
|
private List<OaProjectScheduleStepVo> delayedScheduleStepDetails;
|
||||||
|
|
||||||
/** 明细:报工(oa_project_report) */
|
/** 明细:报工(oa_project_report) */
|
||||||
private List<OaProjectReportVo> projectReportDetails;
|
private List<OaProjectReportVo> projectReportDetails;
|
||||||
|
|
||||||
/** 明细:任务(sys_oa_task,含 task_item 子项) */
|
/** 明细:任务(sys_oa_task,含 task_item 子项) */
|
||||||
private List<SysOaTaskVo> taskDetails;
|
private List<SysOaTaskVo> taskDetails;
|
||||||
|
|
||||||
|
/** 明细:延期任务(从 taskDetails 中筛选出延期的) */
|
||||||
|
private List<SysOaTaskVo> delayedTaskDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,13 @@ public class MonthlyPerformanceSummaryVo {
|
|||||||
|
|
||||||
/** 项目 */
|
/** 项目 */
|
||||||
private Long responsibleProjectCount;
|
private Long responsibleProjectCount;
|
||||||
|
private Long postponedProjectCount; // 延期项目数量
|
||||||
|
private Long totalPostponeCount; // 总延期次数
|
||||||
|
|
||||||
/** 进度步骤(当前人作为步骤负责人 node_header) */
|
/** 进度步骤(当前人作为步骤负责人 node_header) */
|
||||||
private Long myScheduleStepCount;
|
private Long myScheduleStepCount;
|
||||||
private Long myScheduleStepCompletedCount;
|
private Long myScheduleStepCompletedCount;
|
||||||
|
private Long delayedScheduleStepCount; // 延期进度步骤数量
|
||||||
|
|
||||||
/** 报工 */
|
/** 报工 */
|
||||||
private Long projectReportCount;
|
private Long projectReportCount;
|
||||||
@@ -30,6 +33,7 @@ public class MonthlyPerformanceSummaryVo {
|
|||||||
private Long taskCount;
|
private Long taskCount;
|
||||||
private Long taskCompletedCount;
|
private Long taskCompletedCount;
|
||||||
private Long taskItemCount;
|
private Long taskItemCount;
|
||||||
|
private Long delayedTaskCount; // 延期任务数量
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
List<SysOaProjectVo> responsibleProjects = performanceReportMapper.selectResponsibleProjects(vo.getNickName());
|
List<SysOaProjectVo> responsibleProjects = performanceReportMapper.selectResponsibleProjects(vo.getNickName());
|
||||||
vo.setResponsibleProjects(responsibleProjects);
|
vo.setResponsibleProjects(responsibleProjects);
|
||||||
|
|
||||||
|
// 3.1) 延期项目(筛选出延期的项目)
|
||||||
|
List<SysOaProjectVo> postponedProjects = responsibleProjects.stream()
|
||||||
|
.filter(p -> p.getIsPostpone() != null && p.getIsPostpone() > 0)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
vo.setPostponedProjects(postponedProjects);
|
||||||
|
|
||||||
// 4) 项目进度步骤(按负责项目汇总出所有步骤;另给出本人负责步骤)
|
// 4) 项目进度步骤(按负责项目汇总出所有步骤;另给出本人负责步骤)
|
||||||
List<OaProjectScheduleStepVo> scheduleSteps = buildScheduleStepsByProjects(responsibleProjects, startDate, endDate);
|
List<OaProjectScheduleStepVo> scheduleSteps = buildScheduleStepsByProjects(responsibleProjects, startDate, endDate);
|
||||||
vo.setScheduleStepDetails(scheduleSteps);
|
vo.setScheduleStepDetails(scheduleSteps);
|
||||||
@@ -68,6 +74,25 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
vo.setMyScheduleStepDetails(mySteps);
|
vo.setMyScheduleStepDetails(mySteps);
|
||||||
|
|
||||||
|
// 4.1) 延期进度步骤(未完成 && planEnd < 当前时间)
|
||||||
|
// 注意:mySteps 已经是在查询时间范围内的步骤,所以不需要再限制 planEnd 的范围
|
||||||
|
Date now = new Date();
|
||||||
|
List<OaProjectScheduleStepVo> delayedSteps = mySteps.stream()
|
||||||
|
.filter(s -> {
|
||||||
|
// 未完成:status != 1
|
||||||
|
if (s.getStatus() == null || s.getStatus() == 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 有预计结束时间
|
||||||
|
if (s.getPlanEnd() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 预计结束时间已过期(当前时间已超过计划结束时间)
|
||||||
|
return s.getPlanEnd().before(now) || s.getPlanEnd().equals(now);
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
vo.setDelayedScheduleStepDetails(delayedSteps);
|
||||||
|
|
||||||
// 5) 报工明细(oa_project_report)
|
// 5) 报工明细(oa_project_report)
|
||||||
OaProjectReportBo reportBo = new OaProjectReportBo();
|
OaProjectReportBo reportBo = new OaProjectReportBo();
|
||||||
reportBo.setUserId(userId);
|
reportBo.setUserId(userId);
|
||||||
@@ -80,8 +105,26 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
List<SysOaTaskVo> taskDetails = sysOaTaskMapper.selectPerformanceTaskList(userId, startDate, endDate);
|
List<SysOaTaskVo> taskDetails = sysOaTaskMapper.selectPerformanceTaskList(userId, startDate, endDate);
|
||||||
vo.setTaskDetails(taskDetails);
|
vo.setTaskDetails(taskDetails);
|
||||||
|
|
||||||
|
// 6.1) 延期任务(未完成 && finishTime < 当前时间)
|
||||||
|
// 注意:taskDetails 已经是在查询时间范围内的任务,所以不需要再限制 finishTime 的范围
|
||||||
|
List<SysOaTaskVo> delayedTasks = taskDetails.stream()
|
||||||
|
.filter(t -> {
|
||||||
|
// 未完成:completedTime == null
|
||||||
|
if (t.getCompletedTime() != null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 有预计结束时间
|
||||||
|
if (t.getFinishTime() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 预计结束时间已过期(当前时间已超过预计结束时间)
|
||||||
|
return t.getFinishTime().before(now) || t.getFinishTime().equals(now);
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
vo.setDelayedTaskDetails(delayedTasks);
|
||||||
|
|
||||||
// 7) 汇总
|
// 7) 汇总
|
||||||
vo.setSummary(buildSummary(attendanceDetails, leaveDetails, responsibleProjects, mySteps, projectReports, taskDetails));
|
vo.setSummary(buildSummary(attendanceDetails, leaveDetails, responsibleProjects, mySteps, delayedSteps, projectReports, taskDetails, delayedTasks));
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
@@ -192,8 +235,10 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
List<HrmLeaveRequestVo> leaveDetails,
|
List<HrmLeaveRequestVo> leaveDetails,
|
||||||
List<SysOaProjectVo> responsibleProjects,
|
List<SysOaProjectVo> responsibleProjects,
|
||||||
List<OaProjectScheduleStepVo> mySteps,
|
List<OaProjectScheduleStepVo> mySteps,
|
||||||
|
List<OaProjectScheduleStepVo> delayedSteps,
|
||||||
List<OaProjectReportVo> projectReports,
|
List<OaProjectReportVo> projectReports,
|
||||||
List<SysOaTaskVo> tasks) {
|
List<SysOaTaskVo> tasks,
|
||||||
|
List<SysOaTaskVo> delayedTasks) {
|
||||||
MonthlyPerformanceSummaryVo s = new MonthlyPerformanceSummaryVo();
|
MonthlyPerformanceSummaryVo s = new MonthlyPerformanceSummaryVo();
|
||||||
|
|
||||||
// 考勤
|
// 考勤
|
||||||
@@ -228,6 +273,22 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
// 项目
|
// 项目
|
||||||
s.setResponsibleProjectCount(responsibleProjects == null ? 0L : (long) responsibleProjects.size());
|
s.setResponsibleProjectCount(responsibleProjects == null ? 0L : (long) responsibleProjects.size());
|
||||||
|
|
||||||
|
// 延期项目统计
|
||||||
|
long postponedCount = 0;
|
||||||
|
long totalPostponeCount = 0;
|
||||||
|
if (responsibleProjects != null) {
|
||||||
|
for (SysOaProjectVo p : responsibleProjects) {
|
||||||
|
if (p.getIsPostpone() != null && p.getIsPostpone() > 0) {
|
||||||
|
postponedCount++;
|
||||||
|
if (p.getPostponeCount() != null) {
|
||||||
|
totalPostponeCount += p.getPostponeCount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s.setPostponedProjectCount(postponedCount);
|
||||||
|
s.setTotalPostponeCount(totalPostponeCount);
|
||||||
|
|
||||||
// 进度步骤(本人负责)
|
// 进度步骤(本人负责)
|
||||||
s.setMyScheduleStepCount(mySteps == null ? 0L : (long) mySteps.size());
|
s.setMyScheduleStepCount(mySteps == null ? 0L : (long) mySteps.size());
|
||||||
long myCompleted = 0;
|
long myCompleted = 0;
|
||||||
@@ -239,6 +300,8 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.setMyScheduleStepCompletedCount(myCompleted);
|
s.setMyScheduleStepCompletedCount(myCompleted);
|
||||||
|
// 延期进度步骤统计
|
||||||
|
s.setDelayedScheduleStepCount(delayedSteps == null ? 0L : (long) delayedSteps.size());
|
||||||
|
|
||||||
// 报工
|
// 报工
|
||||||
s.setProjectReportCount(projectReports == null ? 0L : (long) projectReports.size());
|
s.setProjectReportCount(projectReports == null ? 0L : (long) projectReports.size());
|
||||||
@@ -259,6 +322,8 @@ public class PerformanceReportServiceImpl implements IPerformanceReportService {
|
|||||||
}
|
}
|
||||||
s.setTaskCompletedCount(taskCompleted);
|
s.setTaskCompletedCount(taskCompleted);
|
||||||
s.setTaskItemCount(taskItemCount);
|
s.setTaskItemCount(taskItemCount);
|
||||||
|
// 延期任务统计
|
||||||
|
s.setDelayedTaskCount(delayedTasks == null ? 0L : (long) delayedTasks.size());
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
functionary AS functionary,
|
functionary AS functionary,
|
||||||
begin_time AS beginTime,
|
begin_time AS beginTime,
|
||||||
finish_time AS finishTime,
|
finish_time AS finishTime,
|
||||||
|
original_finish_time AS originalFinishTime,
|
||||||
introduction AS introduction,
|
introduction AS introduction,
|
||||||
project_grade AS projectGrade,
|
project_grade AS projectGrade,
|
||||||
project_status AS projectStatus,
|
project_status AS projectStatus,
|
||||||
@@ -52,10 +53,13 @@
|
|||||||
create_by AS createBy,
|
create_by AS createBy,
|
||||||
create_time AS createTime,
|
create_time AS createTime,
|
||||||
update_by AS updateBy,
|
update_by AS updateBy,
|
||||||
update_time AS updateTime
|
update_time AS updateTime,
|
||||||
|
is_postpone AS isPostpone,
|
||||||
|
postpone_reason AS postponeReason,
|
||||||
|
postpone_time AS postponeTime,
|
||||||
|
postpone_count AS postponeCount
|
||||||
FROM sys_oa_project
|
FROM sys_oa_project
|
||||||
WHERE del_flag = 0
|
WHERE functionary IS NOT NULL
|
||||||
AND functionary IS NOT NULL
|
|
||||||
AND functionary LIKE CONCAT('%', #{nickName}, '%')
|
AND functionary LIKE CONCAT('%', #{nickName}, '%')
|
||||||
ORDER BY update_time DESC, create_time DESC
|
ORDER BY update_time DESC, create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Reference in New Issue
Block a user