From 1064f3ce229f748fe178dfa3bbc48693daa700a3 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Fri, 21 Nov 2025 11:19:42 +0800 Subject: [PATCH] =?UTF-8?q?change(erp):=20=E4=BF=AE=E6=AD=A3=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=8A=B6=E6=80=81=E5=AF=B9=E5=BA=94=E7=9A=84=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= =?UTF-8?q?(=E9=A1=B9=E7=9B=AE=E8=AE=A1=E5=88=92=E3=80=81=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=8F=98=E6=9B=B4=E3=80=81=E9=A1=B9=E7=9B=AE=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E3=80=81=E9=A1=B9=E7=9B=AE=E9=AA=8C=E6=94=B6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将流程状态 WAITING 对应业务状态设置为“审批中”状态,区分于完成状态 - 新增对流程 CANCEL 状态的处理,与 BACK 状态统一设置为草稿状态,支持重新编辑 - 统一调整验收、变更、计划、收货模块的状态更新逻辑 - 保持原有作废、终止状态业务状态不变,确保状态映射准确 - 补充注释明确驳回状态业务状态为暂存草稿,方便后续维护 --- .../impl/ErpProjectAcceptanceServiceImpl.java | 41 ++++++++++--------- .../impl/ErpProjectChangeServiceImpl.java | 32 ++++++++------- .../impl/ErpProjectPlanServiceImpl.java | 34 ++++++++------- .../impl/ErpProjectReceivingServiceImpl.java | 39 +++++++++--------- 4 files changed, 77 insertions(+), 69 deletions(-) diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectAcceptanceServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectAcceptanceServiceImpl.java index b95e23ea..0413a29b 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectAcceptanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectAcceptanceServiceImpl.java @@ -2,6 +2,10 @@ package org.dromara.oa.erp.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.seata.spring.annotation.GlobalTransactional; @@ -10,35 +14,29 @@ import org.dromara.common.core.enums.OAStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.oa.erp.domain.ErpProjectAcceptance; +import org.dromara.oa.erp.domain.ErpProjectInfo; +import org.dromara.oa.erp.domain.bo.ErpProjectAcceptanceBo; +import org.dromara.oa.erp.domain.vo.ErpProjectAcceptanceVo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.mapper.ErpProjectAcceptanceMapper; +import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; +import org.dromara.oa.erp.service.IErpProjectAcceptanceService; import org.dromara.system.api.RemoteCodeRuleService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.event.ProcessEvent; import org.springframework.context.event.EventListener; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; -import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import org.dromara.oa.erp.domain.bo.ErpProjectAcceptanceBo; -import org.dromara.oa.erp.domain.vo.ErpProjectAcceptanceVo; -import org.dromara.oa.erp.domain.ErpProjectAcceptance; -import org.dromara.oa.erp.domain.ErpProjectInfo; -import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; -import org.dromara.oa.erp.mapper.ErpProjectAcceptanceMapper; -import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; -import org.dromara.oa.erp.service.IErpProjectAcceptanceService; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; import java.util.Objects; /** @@ -324,7 +322,9 @@ public class ErpProjectAcceptanceServiceImpl implements IErpProjectAcceptanceSer String handler = Convert.toStr(params.get("handler")); } // 根据流程状态更新业务状态 - if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { + if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.WAITING.getStatus())) { + acceptance.setAcceptanceStatus(OAStatusEnum.APPROVING.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { acceptance.setAcceptanceStatus(OAStatusEnum.COMPLETED.getStatus()); // 审批完成后,更新项目信息的项目状态为 7(已验收) @@ -357,9 +357,10 @@ public class ErpProjectAcceptanceServiceImpl implements IErpProjectAcceptanceSer } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { acceptance.setAcceptanceStatus(OAStatusEnum.INVALID.getStatus()); - }else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())) { + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { // 流程驳回:业务状态还原为草稿,允许重新编辑和提交 - acceptance.setAcceptanceStatus(OAStatusEnum.DRAFT.getStatus()); + acceptance.setAcceptanceStatus(OAStatusEnum.DRAFT.getStatus());//暂存 } baseMapper.updateById(acceptance); } 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 9c7759f1..156b36a9 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 @@ -2,6 +2,12 @@ package org.dromara.oa.erp.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.seata.spring.annotation.GlobalTransactional; @@ -13,6 +19,7 @@ import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.oa.erp.domain.*; import org.dromara.oa.erp.domain.bo.ErpProjectChangeBo; @@ -26,20 +33,11 @@ import org.dromara.workflow.api.event.ProcessEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.dromara.common.satoken.utils.LoginHelper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; - -import java.util.*; -import java.util.stream.Collectors; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.ZoneId; -import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.github.yulichang.toolkit.JoinWrappers; -import java.math.BigDecimal; +import java.util.*; /** * 项目变更申请Service业务层处理 @@ -660,15 +658,19 @@ public class ErpProjectChangeServiceImpl implements IErpProjectChangeService { // 办理人 String handler = Convert.toStr(params.get("handler")); } - if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())){ + if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.WAITING.getStatus())) { + projectChange.setProjectChangeStatus(OAStatusEnum.APPROVING.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())){ // 流程完成:业务状态置为可用 projectChange.setProjectChangeStatus(OAStatusEnum.COMPLETED.getStatus()); - } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus())) { + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { // 流程作废:业务状态置为作废 projectChange.setProjectChangeStatus(OAStatusEnum.INVALID.getStatus()); - } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())) { + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { // 流程驳回:业务状态还原为草稿,允许重新编辑和提交 - projectChange.setProjectChangeStatus(OAStatusEnum.DRAFT.getStatus()); + projectChange.setProjectChangeStatus(OAStatusEnum.DRAFT.getStatus());//暂存 } baseMapper.updateById(projectChange); }); diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java index 6c9e6555..563a57c4 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectPlanServiceImpl.java @@ -2,6 +2,11 @@ package org.dromara.oa.erp.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.seata.spring.annotation.GlobalTransactional; @@ -11,30 +16,25 @@ import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.oa.erp.domain.ErpProjectInfo; +import org.dromara.oa.erp.domain.ErpProjectPlan; import org.dromara.oa.erp.domain.ErpProjectPlanStage; +import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo; import org.dromara.oa.erp.domain.vo.ErpProjectPlanStageVo; +import org.dromara.oa.erp.domain.vo.ErpProjectPlanVo; +import org.dromara.oa.erp.mapper.ErpProjectPlanMapper; import org.dromara.oa.erp.mapper.ErpProjectPlanStageMapper; +import org.dromara.oa.erp.service.IErpProjectPlanService; import org.dromara.system.api.RemoteCodeRuleService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.event.ProcessEvent; import org.springframework.context.event.EventListener; -import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.stereotype.Service; -import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo; -import org.dromara.oa.erp.domain.vo.ErpProjectPlanVo; -import org.dromara.oa.erp.domain.ErpProjectPlan; -import org.dromara.oa.erp.mapper.ErpProjectPlanMapper; -import org.dromara.oa.erp.service.IErpProjectPlanService; import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -369,11 +369,15 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService { // 办理人 String handler = Convert.toStr(params.get("handler")); } - if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { + if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.WAITING.getStatus())) { + projectPlan.setProjectPlanStatus(OAStatusEnum.APPROVING.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { projectPlan.setProjectPlanStatus(OAStatusEnum.COMPLETED.getStatus()); - }else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus())) { + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { projectPlan.setProjectPlanStatus(OAStatusEnum.INVALID.getStatus()); - }else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())) { + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { // 流程驳回:业务状态还原为草稿,允许重新编辑和提交 projectPlan.setProjectPlanStatus(OAStatusEnum.DRAFT.getStatus()); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReceivingServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReceivingServiceImpl.java index 5d0509d7..53bc28e5 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReceivingServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectReceivingServiceImpl.java @@ -2,6 +2,10 @@ package org.dromara.oa.erp.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.seata.spring.annotation.GlobalTransactional; @@ -10,31 +14,25 @@ import org.dromara.common.core.enums.OAStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.oa.erp.domain.ErpProjectInfo; +import org.dromara.oa.erp.domain.ErpProjectReceiving; +import org.dromara.oa.erp.domain.bo.ErpProjectReceivingBo; +import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; +import org.dromara.oa.erp.domain.vo.ErpProjectReceivingVo; +import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; +import org.dromara.oa.erp.mapper.ErpProjectReceivingMapper; +import org.dromara.oa.erp.service.IErpProjectReceivingService; import org.dromara.system.api.RemoteCodeRuleService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.event.ProcessEvent; import org.springframework.context.event.EventListener; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; -import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import org.dromara.oa.erp.domain.bo.ErpProjectReceivingBo; -import org.dromara.oa.erp.domain.vo.ErpProjectReceivingVo; -import org.dromara.oa.erp.domain.ErpProjectReceiving; -import org.dromara.oa.erp.domain.ErpProjectInfo; -import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo; -import org.dromara.oa.erp.mapper.ErpProjectReceivingMapper; -import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; -import org.dromara.oa.erp.service.IErpProjectReceivingService; import java.util.*; @@ -319,7 +317,9 @@ public class ErpProjectReceivingServiceImpl implements IErpProjectReceivingServi String handler = Convert.toStr(params.get("handler")); } // 根据流程状态更新业务状态 - if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { + if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.WAITING.getStatus())) { + receiving.setReceivingStatus(OAStatusEnum.APPROVING.getStatus()); + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { receiving.setReceivingStatus(OAStatusEnum.COMPLETED.getStatus()); // 审批完成后,更新项目信息的项目状态为 5(已收货) @@ -352,9 +352,10 @@ public class ErpProjectReceivingServiceImpl implements IErpProjectReceivingServi } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { receiving.setReceivingStatus(OAStatusEnum.INVALID.getStatus()); - }else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())) { + } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { // 流程驳回:业务状态还原为草稿,允许重新编辑和提交 - receiving.setReceivingStatus(OAStatusEnum.DRAFT.getStatus()); + receiving.setReceivingStatus(OAStatusEnum.DRAFT.getStatus());//暂存 } baseMapper.updateById(receiving); }