diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java index ec9a3ce..93c839a 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java @@ -510,8 +510,12 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService { // 4. 构建更新条件,执行延期操作 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(SysOaProject::getProjectId, bo.getProjectId()) // 锁定指定项目 - .set(SysOaProject::getFinishTime, bo.getFinishTime()) // 延期日期赋值给finish_time + updateWrapper.eq(SysOaProject::getProjectId, bo.getProjectId()); // 锁定指定项目 + // 关键逻辑:如果原始结束时间为空(首次延期),则将当前finish_time赋值给original_finish_time + if (project.getOriginalFinishTime() == null) { + updateWrapper.set(SysOaProject::getOriginalFinishTime, project.getFinishTime()); + } + updateWrapper.set(SysOaProject::getFinishTime, bo.getFinishTime()) // 延期日期赋值给finish_time .set(SysOaProject::getPostponeTime, bo.getFinishTime()) // 同步更新“延期至日期” .set(SysOaProject::getIsPostpone, 1) // 标记为已延期(1=是) .setSql("postpone_count = postpone_count + 1") // 延期次数+1