feat(oa): 实现项目延期时原始完成时间记录功能

- 在项目首次延期时,将当前完成时间保存为原始完成时间
- 更新延期逻辑以支持 original_finish_time 字段的设置
- 保持原有延期次数统计和状态标记功能不变
This commit is contained in:
2025-10-18 17:39:18 +08:00
parent ad3d0324b0
commit d5947777e0

View File

@@ -510,8 +510,12 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
// 4. 构建更新条件,执行延期操作
LambdaUpdateWrapper<SysOaProject> 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