diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java index 464379f0..f4e785e1 100644 --- a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/enums/FlowConfigEnum.java @@ -4,10 +4,9 @@ import lombok.Getter; import org.dromara.common.core.enums.OAStatusEnum; /** - * @description - * 流程配置枚举 - * 定义流程编码与业务实体的映射关系 * @author xins + * @description 流程配置枚举 + * 定义流程编码与业务实体的映射关系 * @date 2025/11/4 9:41 */ @Getter @@ -16,7 +15,7 @@ public enum FlowConfigEnum { /** * 预算流程 */ - BUDGET("HWOABudget", "erp_budget_info", "budget_status", OAStatusEnum.COMPLETED.getStatus(), "flow_status","预算审批","budget_id"); + BUDGET("HWOABudget", "erp_budget_info", "budget_status", OAStatusEnum.COMPLETED.getStatus(), OAStatusEnum.DRAFT.getStatus(), "flow_status", "预算审批", "budget_id"); /** @@ -39,6 +38,11 @@ public enum FlowConfigEnum { */ private final String completedBusinessStatus; + /** + * 流程暂存时状态值 + */ + private final String draftBusinessStatus; + /** * 流程状态字段名 */ @@ -57,11 +61,12 @@ public enum FlowConfigEnum { FlowConfigEnum(String flowCode, String tableName, String businessStatusField, - String completedBusinessStatus, String flowStatusField, String businessTitle, String businessPk) { + String completedBusinessStatus, String draftBusinessStatus, String flowStatusField, String businessTitle, String businessPk) { this.flowCode = flowCode; this.tableName = tableName; this.businessStatusField = businessStatusField; this.completedBusinessStatus = completedBusinessStatus; + this.draftBusinessStatus = draftBusinessStatus; this.flowStatusField = flowStatusField; this.businessTitle = businessTitle; this.businessPk = businessPk; diff --git a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java index 07b10229..b3ef75a4 100644 --- a/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java +++ b/ruoyi-common/hwbm-common-workflow/src/main/java/org/dromara/workflow/event/AbstractProcessEventHandler.java @@ -95,6 +95,8 @@ public abstract class AbstractProcessEventHandler implements IProcessEventHandle // 如果流程完成,更新业务状态 if (BusinessStatusEnum.FINISH.getStatus().equals(processEvent.getStatus())) { setFields.put(flowConfig.getBusinessStatusField(), flowConfig.getCompletedBusinessStatus()); + } else if (BusinessStatusEnum.BACK.getStatus().equals(processEvent.getStatus())) { + setFields.put(flowConfig.getBusinessStatusField(), flowConfig.getDraftBusinessStatus()); } // 处理特殊状态转换 diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java index d29a8ac6..b1ef5353 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/BaseMaterialInfoServiceImpl.java @@ -7,7 +7,6 @@ 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.oa.base.domain.BaseUnitInfo; import org.springframework.stereotype.Service; @@ -85,7 +84,9 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService { .eq(bo.getPurchasePrice() != null, BaseMaterialInfo::getPurchasePrice, bo.getPurchasePrice()) .eq(bo.getForeignPrice() != null, BaseMaterialInfo::getForeignPrice, bo.getForeignPrice()) .eq(bo.getStockingPeriod() != null, BaseMaterialInfo::getStockingPeriod, bo.getStockingPeriod()) - .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialInfo::getActiveFlag, bo.getActiveFlag()); + .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialInfo::getActiveFlag, bo.getActiveFlag()) + .eq("t.del_flag", "0") + .orderByDesc(BaseMaterialInfo::getCreateTime); return lqw; } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java index 97c669d1..bae87a5a 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpBudgetInfoServiceImpl.java @@ -1,9 +1,12 @@ package org.dromara.oa.erp.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.seata.spring.annotation.GlobalTransactional; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.OAStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; @@ -14,6 +17,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.oa.erp.domain.*; import org.dromara.oa.erp.enums.ProjectCategoryEnum; import org.dromara.oa.erp.enums.RdBudgetCostEnums; @@ -21,6 +25,7 @@ import org.dromara.oa.erp.mapper.*; import org.dromara.oa.workflow.strategy.BudgetWorkflowStrategy; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.enums.FlowConfigEnum; import org.dromara.workflow.strategy.AbstractWorkflowService; import org.springframework.stereotype.Service; import org.dromara.oa.erp.domain.bo.ErpBudgetInfoBo; @@ -29,10 +34,7 @@ import org.dromara.oa.erp.service.IErpBudgetInfoService; import org.dromara.workflow.strategy.WorkflowStrategy; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; import java.util.function.Consumer; import java.util.function.Function; @@ -250,7 +252,8 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService 0; @@ -692,8 +694,25 @@ public class ErpBudgetInfoServiceImpl extends AbstractWorkflowService ids, Boolean isValid) { if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + ids.forEach(id->{ + ErpBudgetInfo erpBudgetInfo = baseMapper.selectById(id); + if(!erpBudgetInfo.getBudgetStatus().equals(OAStatusEnum.DRAFT.getStatus()) + || !erpBudgetInfo.getFlowStatus().equals(BusinessStatusEnum.DRAFT.getStatus())){ + throw new ServiceException("此项目预算已进入审批,不能删除!"); + } + + LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); +// luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, ""); + luw.set(ErpBudgetInfo::getBudgetVersion,null); + luw.set(ErpBudgetInfo::getDelFlag,"1"); + luw.set(ErpBudgetInfo::getUpdateBy, LoginHelper.getUserId()); + luw.set(ErpBudgetInfo::getUpdateTime,new Date()); + luw.eq(ErpBudgetInfo::getBudgetId, erpBudgetInfo.getBudgetId()); + boolean flag = baseMapper.update(null, luw) > 0; + + }); } - return baseMapper.deleteByIds(ids) > 0; + return true; +// return baseMapper.deleteByIds(ids) > 0; } } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java index 14d9b08b..ddf6cd8c 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpProjectInfoServiceImpl.java @@ -222,10 +222,10 @@ public class ErpProjectInfoServiceImpl implements IErpProjectInfoService { } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { projectInfo.setProjectStatus(OAStatusEnum.COMPLETED.getStatus()); } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) - || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { projectInfo.setProjectStatus(OAStatusEnum.INVALID.getStatus()); } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) - || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { + || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { projectInfo.setProjectStatus(OAStatusEnum.DRAFT.getStatus()); } baseMapper.updateById(projectInfo); @@ -252,17 +252,20 @@ public class ErpProjectInfoServiceImpl implements IErpProjectInfoService { MPJLambdaWrapper wrapper = JoinWrappers.lambda(ErpProjectInfo.class); wrapper.like(StringUtils.isNotBlank(bo.getProjectCode()), ErpProjectInfo::getProjectCode, bo.getProjectCode()) .like(StringUtils.isNotBlank(bo.getProjectName()), ErpProjectInfo::getProjectName, bo.getProjectName()) + .eq(StringUtils.isNotBlank(bo.getProjectStatus()), ErpProjectInfo::getProjectStatus, bo.getProjectStatus()) + .eq("t.del_flag", "0") .and(w -> { - if(StringUtils.isNotBlank(bo.getProjectCategory()) && bo.getProjectCategory().equals(ProjectCategoryEnum.MARKET.getCode())){ - w.eq(StringUtils.isNotBlank(bo.getProjectCategory()) ,ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.MARKET.getCode()) - .or().eq(StringUtils.isNotBlank(bo.getProjectCategory()) ,ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.MARKET_PART.getCode()); - }else if(StringUtils.isNotBlank(bo.getProjectCategory()) && bo.getProjectCategory().equals(ProjectCategoryEnum.RD.getCode())){ - w.eq(StringUtils.isNotBlank(bo.getProjectCategory()) ,ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.RD.getCode()) - .or().eq(StringUtils.isNotBlank(bo.getProjectCategory()) ,ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.PRE_PRODUCTION.getCode()); + if (StringUtils.isNotBlank(bo.getProjectCategory()) && bo.getProjectCategory().equals(ProjectCategoryEnum.MARKET.getCode())) { + w.eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.MARKET.getCode()) + .or().eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.MARKET_PART.getCode()); + } else if (StringUtils.isNotBlank(bo.getProjectCategory()) && bo.getProjectCategory().equals(ProjectCategoryEnum.RD.getCode())) { + w.eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.RD.getCode()) + .or().eq(StringUtils.isNotBlank(bo.getProjectCategory()), ErpProjectInfo::getProjectCategory, ProjectCategoryEnum.PRE_PRODUCTION.getCode()); } - }).orderByDesc(ErpProjectInfo::getCreateTime);; + }).orderByDesc(ErpProjectInfo::getCreateTime); + ; return wrapper;