diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java index 77e5c1fe..1112921e 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectChangeServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.oa.erp.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -374,8 +375,8 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { if (lastChange != null) { // 复制上一次变更的项目当前情况说明等信息作为参考 vo.setCurrentStatus(lastChange.getCurrentStatus()); - vo.setChangeReason(""); // 变更原因需要重新填写 - vo.setFollowUpWork(""); // 后续工作需要重新填写 + vo.setChangeReason(lastChange.getChangeReason()); // 继承之前的变更原因,方便用户修改 + vo.setFollowUpWork(lastChange.getFollowUpWork()); // 继承之前的后续工作,方便用户修改 // 查询上一次变更的预算变更明细作为参考 List lastBudgetList = changeBudgetMapper.selectList( @@ -423,8 +424,8 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { // 设置申请变更日期为当前日期 vo.setApplyChangeDate(Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant())); - // 如果没有历史变更记录,从项目计划阶段和预算明细中初始化数据 - if (changeCount == 0) { + // 如果进度明细未被初始化(比如这是第1次变更,或过去的所有变更发生时还没有建立项目计划阶段) + if (CollUtil.isEmpty(vo.getProgressList())) { // 查询项目计划阶段,转换为进度变更明细 List planStages = planStageMapper.selectList( Wrappers.lambdaQuery() @@ -447,8 +448,10 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { progressList.add(progress); } vo.setProgressList(progressList); + } - // 查询项目预算明细,转换为预算变更明细 + // 如果预算明细未被初始化(比如这是第1次变更,或者过去的所有变更发生时项目还没有做过预算) + if (CollUtil.isEmpty(vo.getBudgetList())) { List budgetList = new ArrayList<>(); if (budgetInfo != null) { // 查询预算明细 @@ -707,12 +710,8 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { .orderByAsc(ErpProjectChangeBudget::getSortOrder) )); - vo.setProgressList(changeProgressMapper.selectList( - Wrappers.lambdaQuery(ErpProjectChangeProgress.class) - .eq(ErpProjectChangeProgress::getProjectChangeId, vo.getProjectChangeId()) - .eq(ErpProjectChangeProgress::getDelFlag, "0") - .orderByAsc(ErpProjectChangeProgress::getSortOrder) - )); + // 使用 selectProgressWithStageInfo 连表查询以带出 project_phases,否则在 @TableField(exist = false) 下字段会为空导致前端显示为“未知” + vo.setProgressList(changeProgressMapper.selectProgressWithStageInfo(vo.getProjectChangeId())); voList.add(vo); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectChangeMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectChangeMapper.xml index f5cde547..324f2cca 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectChangeMapper.xml +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpProjectChangeMapper.xml @@ -348,8 +348,6 @@ pi.manager_id as project_manager_id, pi.charge_id as dept_head_id, pi.deputy_id as responsible_vp_id, - pi.amount as contract_amount, - pi.amount as contract_net_amount, u1.nick_name as project_manager_name, u2.nick_name as dept_head_name, u3.nick_name as responsible_vp_name