diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java index 3ca0cd0..756cba9 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java @@ -95,4 +95,14 @@ public class OaProjectScheduleVo { //进度负责人 private String steward; + + + //"总数量" + private Long totalCount; + + //"未完成数量" + private Long unFinishCount; + + //"延迟数量" + private Long delayCount; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java index 7d0c2a3..c73c1b1 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java @@ -8,6 +8,8 @@ import com.ruoyi.oa.domain.vo.OaProjectScheduleVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; +import java.util.Map; + /** * 项目进度Mapper接口 * diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java index 104cab6..95424a2 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java @@ -191,7 +191,7 @@ public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepS } // 3. 处理结束时间逻辑(此时 original 一定非 null,可安全调用方法) - if (original.getEndTime() == null) { + if (original.getEndTime() == null && bo.getEndTime() != null) { // 首次修改:设置结束时间和原始结束时间 update.setEndTime(bo.getEndTime()); update.setOriginalEndTime(bo.getEndTime()); diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml index c829933..4e8dc54 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml @@ -27,13 +27,11 @@ ops.project_id, ops.template_id, ops.current_step, - opss.step_name AS currentStepName, ops.start_time, ops.end_time, ops.status, ops.steward, ops.remark, - /* ======================== 项目信息 ==================== */ op.project_id AS opProjectId, op.project_name, @@ -51,31 +49,22 @@ op.project_code, op.pre_pay, op.is_top AS isTop, - opss.plan_end, - opss.header, - DATEDIFF(DATE(opss.plan_end), CURDATE()) AS remainTime, - ROUND( - ( - (ops.current_step - CASE WHEN opss.status = 0 THEN 1 ELSE 0 END) - / NULLIF(maxs.max_order, 0) - ) * 100, - 2 - ) AS schedulePercentage - + (SELECT COUNT(*) FROM oa_project_schedule_step opss + WHERE opss.schedule_id = ops.schedule_id AND opss.del_flag = '0') AS totalCount, + (SELECT COUNT(*) FROM oa_project_schedule_step opss + WHERE opss.schedule_id = ops.schedule_id AND opss.del_flag = '0' AND opss.status IN (0,1)) AS unFinishCount, + (SELECT COUNT(*) FROM oa_project_schedule_step opss + WHERE opss.schedule_id = ops.schedule_id AND opss.del_flag = '0' + AND ( + opss.use_flag = 0 + OR (opss.original_end_time IS NOT NULL AND opss.end_time IS NOT NULL AND opss.end_time > opss.original_end_time) + OR (opss.status = 0 AND opss.original_end_time IS NOT NULL AND CURDATE() > DATE(opss.original_end_time)) + ) + ) AS delayCount FROM oa_project_schedule AS ops LEFT JOIN sys_oa_project AS op ON ops.project_id = op.project_id - LEFT JOIN oa_project_schedule_step AS opss - ON ops.schedule_id = opss.schedule_id - AND opss.step_order = ops.current_step - AND opss.use_flag = '1' - LEFT JOIN (SELECT schedule_id, - MAX(step_order) AS max_order - FROM oa_project_schedule_step - WHERE use_flag = '1' - GROUP BY schedule_id) AS maxs ON maxs.schedule_id = ops.schedule_id ${ew.getCustomSqlSegment} -