Merge remote-tracking branch 'origin/futuer/boot4' into futuer/boot4

This commit is contained in:
gssong
2026-03-20 10:18:17 +08:00
109 changed files with 421 additions and 259 deletions

View File

@@ -9,9 +9,9 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.constant.FlowConstant;

View File

@@ -1,13 +1,14 @@
package org.dromara.workflow.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.R;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.web.core.BaseController;
import org.dromara.warm.flow.core.entity.Definition;
import org.dromara.warm.flow.core.service.DefService;
@@ -46,6 +47,7 @@ public class FlwDefinitionController extends BaseController {
* @return 流程定义分页数据
*/
@GetMapping("/list")
@SaCheckPermission("workflow:definition:list")
public R<PageResult<FlowDefinitionVo>> list(FlowDefinition flowDefinition, PageQuery pageQuery) {
return R.ok(flwDefinitionService.queryList(flowDefinition, pageQuery));
}
@@ -58,6 +60,7 @@ public class FlwDefinitionController extends BaseController {
* @return 未发布流程定义分页数据
*/
@GetMapping("/unPublishList")
@SaCheckPermission("workflow:definition:list")
public R<PageResult<FlowDefinitionVo>> unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery) {
return R.ok(flwDefinitionService.unPublishList(flowDefinition, pageQuery));
}
@@ -69,6 +72,7 @@ public class FlwDefinitionController extends BaseController {
* @return 流程定义详情
*/
@GetMapping(value = "/{id}")
@SaCheckPermission("workflow:definition:query")
public R<Definition> getInfo(@PathVariable Long id) {
return R.ok(defService.getById(id));
}
@@ -83,6 +87,7 @@ public class FlwDefinitionController extends BaseController {
@PostMapping
@RepeatSubmit()
@Transactional(rollbackFor = Exception.class)
@SaCheckPermission("workflow:definition:add")
public R<Boolean> add(@RequestBody FlowDefinition flowDefinition) {
return R.ok(defService.checkAndSave(flowDefinition));
}
@@ -97,6 +102,7 @@ public class FlwDefinitionController extends BaseController {
@PutMapping
@RepeatSubmit()
@Transactional(rollbackFor = Exception.class)
@SaCheckPermission("workflow:definition:edit")
public R<Boolean> edit(@RequestBody FlowDefinition flowDefinition) {
return R.ok(defService.updateById(flowDefinition));
}
@@ -110,6 +116,7 @@ public class FlwDefinitionController extends BaseController {
@Log(title = "流程定义", businessType = BusinessType.INSERT)
@PutMapping("/publish/{id}")
@RepeatSubmit()
@SaCheckPermission("workflow:definition:publish")
public R<Boolean> publish(@PathVariable Long id) {
return R.ok(flwDefinitionService.publish(id));
}
@@ -124,6 +131,7 @@ public class FlwDefinitionController extends BaseController {
@PutMapping("/unPublish/{id}")
@RepeatSubmit()
@Transactional(rollbackFor = Exception.class)
@SaCheckPermission("workflow:definition:publish")
public R<Boolean> unPublish(@PathVariable Long id) {
return R.ok(defService.unPublish(id));
}
@@ -136,6 +144,7 @@ public class FlwDefinitionController extends BaseController {
*/
@Log(title = "流程定义", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@SaCheckPermission("workflow:definition:remove")
public R<Void> remove(@PathVariable List<Long> ids) {
return toAjax(flwDefinitionService.removeDef(ids));
}
@@ -150,6 +159,7 @@ public class FlwDefinitionController extends BaseController {
@PostMapping("/copy/{id}")
@RepeatSubmit()
@Transactional(rollbackFor = Exception.class)
@SaCheckPermission("workflow:definition:copy")
public R<Boolean> copy(@PathVariable Long id) {
return R.ok(defService.copyDef(id));
}
@@ -163,6 +173,7 @@ public class FlwDefinitionController extends BaseController {
*/
@Log(title = "流程定义", businessType = BusinessType.IMPORT)
@PostMapping("/importDef")
@SaCheckPermission("workflow:definition:import")
public R<Boolean> importDef(MultipartFile file, String category) {
return R.ok(flwDefinitionService.importJson(file, category));
}
@@ -176,6 +187,7 @@ public class FlwDefinitionController extends BaseController {
*/
@Log(title = "流程定义", businessType = BusinessType.EXPORT)
@PostMapping("/exportDef/{id}")
@SaCheckPermission("workflow:definition:export")
public void exportDef(@PathVariable Long id, HttpServletResponse response) throws IOException {
flwDefinitionService.exportDef(id, response);
}
@@ -187,6 +199,7 @@ public class FlwDefinitionController extends BaseController {
* @return 流程定义 JSON
*/
@GetMapping("/xmlString/{id}")
@SaCheckPermission("workflow:definition:query")
public R<String> xmlString(@PathVariable Long id) {
return R.ok("操作成功", defService.exportJson(id));
}
@@ -203,6 +216,7 @@ public class FlwDefinitionController extends BaseController {
@PutMapping("/active/{id}")
@Transactional(rollbackFor = Exception.class)
@Log(title = "流程定义", businessType = BusinessType.UPDATE)
@SaCheckPermission("workflow:definition:active")
public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) {
return R.ok(active ? defService.active(id) : defService.unActive(id));
}

View File

@@ -1,14 +1,15 @@
package org.dromara.workflow.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.convert.Convert;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.web.core.BaseController;
import org.dromara.warm.flow.core.service.InsService;
import org.dromara.workflow.common.ConditionalOnEnable;
@@ -47,6 +48,7 @@ public class FlwInstanceController extends BaseController {
* @return 正在运行的流程实例分页数据
*/
@GetMapping("/pageByRunning")
@SaCheckPermission("workflow:instance:list")
public R<PageResult<FlowInstanceVo>> selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) {
return R.ok(flwInstanceService.selectRunningInstanceList(flowInstanceBo, pageQuery));
}
@@ -59,6 +61,7 @@ public class FlwInstanceController extends BaseController {
* @return 已结束的流程实例分页数据
*/
@GetMapping("/pageByFinish")
@SaCheckPermission("workflow:instance:list")
public R<PageResult<FlowInstanceVo>> selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) {
return R.ok(flwInstanceService.selectFinishInstanceList(flowInstanceBo, pageQuery));
}
@@ -70,6 +73,7 @@ public class FlwInstanceController extends BaseController {
* @return 流程实例详情
*/
@GetMapping("/getInfo/{businessId}")
@SaCheckPermission("workflow:instance:query")
public R<FlowInstanceVo> getInfo(@PathVariable Long businessId) {
return R.ok(flwInstanceService.queryByBusinessId(businessId));
}
@@ -82,6 +86,7 @@ public class FlwInstanceController extends BaseController {
*/
@DeleteMapping("/deleteByBusinessIds/{businessIds}")
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@SaCheckPermission("workflow:instance:remove")
public R<Void> deleteByBusinessIds(@PathVariable List<Long> businessIds) {
return toAjax(flwInstanceService.deleteByBusinessIds(StreamUtils.toList(businessIds, Convert::toStr)));
}
@@ -94,6 +99,7 @@ public class FlwInstanceController extends BaseController {
*/
@DeleteMapping("/deleteByInstanceIds/{instanceIds}")
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@SaCheckPermission("workflow:instance:remove")
public R<Void> deleteByInstanceIds(@PathVariable List<Long> instanceIds) {
return toAjax(flwInstanceService.deleteByInstanceIds(instanceIds));
}
@@ -106,6 +112,7 @@ public class FlwInstanceController extends BaseController {
*/
@DeleteMapping("/deleteHisByInstanceIds/{instanceIds}")
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@SaCheckPermission("workflow:instance:remove")
public R<Void> deleteHisByInstanceIds(@PathVariable List<Long> instanceIds) {
return toAjax(flwInstanceService.deleteHisByInstanceIds(instanceIds));
}
@@ -119,6 +126,7 @@ public class FlwInstanceController extends BaseController {
@RepeatSubmit()
@PutMapping("/cancelProcessApply")
@Log(title = "流程实例管理", businessType = BusinessType.UPDATE)
@SaCheckPermission("workflow:instance:cancel")
public R<Void> cancelProcessApply(@RequestBody FlowCancelBo bo) {
return toAjax(flwInstanceService.cancelProcessApply(bo));
}
@@ -133,6 +141,7 @@ public class FlwInstanceController extends BaseController {
@RepeatSubmit()
@PutMapping("/active/{id}")
@Log(title = "流程实例管理", businessType = BusinessType.UPDATE)
@SaCheckPermission("workflow:instance:active")
public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) {
return R.ok(active ? insService.active(id) : insService.unActive(id));
}
@@ -145,6 +154,7 @@ public class FlwInstanceController extends BaseController {
* @return 当前用户发起的流程实例分页数据
*/
@GetMapping("/pageByCurrent")
@SaCheckPermission("workflow:instance:currentList")
public R<PageResult<FlowInstanceVo>> selectCurrentInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) {
return R.ok(flwInstanceService.selectCurrentInstanceList(flowInstanceBo, pageQuery));
}
@@ -156,6 +166,7 @@ public class FlwInstanceController extends BaseController {
* @return 流程图与历史节点信息
*/
@GetMapping("/flowHisTaskList/{businessId}")
@SaCheckPermission("workflow:instance:query")
public R<Map<String, Object>> flowHisTaskList(@PathVariable String businessId) {
return R.ok(flwInstanceService.flowHisTaskList(businessId));
}
@@ -167,6 +178,7 @@ public class FlwInstanceController extends BaseController {
* @return 流程变量
*/
@GetMapping("/instanceVariable/{instanceId}")
@SaCheckPermission("workflow:instance:variableQuery")
public R<Map<String, Object>> instanceVariable(@PathVariable Long instanceId) {
return R.ok(flwInstanceService.instanceVariable(instanceId));
}
@@ -180,6 +192,7 @@ public class FlwInstanceController extends BaseController {
@RepeatSubmit()
@PutMapping("/updateVariable")
@Log(title = "流程实例管理", businessType = BusinessType.UPDATE)
@SaCheckPermission("workflow:instance:variable")
public R<Void> updateVariable(@Validated @RequestBody FlowVariableBo bo) {
return toAjax(flwInstanceService.updateVariable(bo));
}
@@ -193,6 +206,7 @@ public class FlwInstanceController extends BaseController {
@Log(title = "流程实例管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/invalid")
@SaCheckPermission("workflow:instance:invalid")
public R<Boolean> invalid(@Validated @RequestBody FlowInvalidBo bo) {
return R.ok(flwInstanceService.processInvalid(bo));
}

View File

@@ -4,14 +4,14 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.domain.bo.FlowSpelBo;

View File

@@ -1,15 +1,15 @@
package org.dromara.workflow.controller;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.web.core.BaseController;
import org.dromara.warm.flow.core.entity.Node;
import org.dromara.warm.flow.orm.entity.FlowNode;

View File

@@ -5,15 +5,15 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.redis.annotation.RepeatSubmit;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.domain.bo.TestLeaveBo;

View File

@@ -1,9 +1,9 @@
package org.dromara.workflow.domain.vo;
import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.domain.FlowCategory;

View File

@@ -1,11 +1,11 @@
package org.dromara.workflow.domain.vo;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.workflow.domain.FlowSpel;
import java.io.Serial;

View File

@@ -1,10 +1,9 @@
package org.dromara.workflow.domain.vo;
import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty;
import org.dromara.workflow.domain.TestLeave;
import java.io.Serial;

View File

@@ -1,8 +1,6 @@
package org.dromara.workflow.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.helper.DataBaseHelper;
import org.dromara.workflow.domain.FlowCategory;

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import java.util.List;
import java.util.Collection;
/**
* 流程实例业务扩展Mapper接口
@@ -53,7 +53,7 @@ public interface FlwInstanceBizExtMapper extends BaseMapperPlus<FlowInstanceBizE
* @param instanceIds 流程实例ID列表
* @return 删除的行数
*/
default int deleteByInstIds(List<Long> instanceIds) {
default int deleteByInstIds(Collection<Long> instanceIds) {
return this.delete(new LambdaQueryWrapper<FlowInstanceBizExt>()
.in(FlowInstanceBizExt::getInstanceId, instanceIds));
}

View File

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseMapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.dromara.warm.flow.orm.entity.FlowInstance;
import org.dromara.workflow.domain.bo.FlowInstanceBo;
import org.dromara.workflow.domain.vo.FlowInstanceVo;
/**

View File

@@ -1,8 +1,8 @@
package org.dromara.workflow.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.FlowSpel;
import org.dromara.workflow.domain.vo.FlowSpelVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 流程spel表达式定义Mapper接口

View File

@@ -1,14 +1,14 @@
package org.dromara.workflow.service;
import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.warm.flow.orm.entity.FlowDefinition;
import org.dromara.workflow.domain.vo.FlowDefinitionVo;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Collection;
/**
* 流程定义 服务层
@@ -67,6 +67,6 @@ public interface IFlwDefinitionService {
* @param ids 流程定义id
* @return 是否删除成功
*/
boolean removeDef(List<Long> ids);
boolean removeDef(Collection<Long> ids);
}

View File

@@ -1,7 +1,7 @@
package org.dromara.workflow.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.warm.flow.orm.entity.FlowInstance;
import org.dromara.workflow.domain.bo.FlowCancelBo;
import org.dromara.workflow.domain.bo.FlowInstanceBo;
@@ -9,6 +9,7 @@ import org.dromara.workflow.domain.bo.FlowInvalidBo;
import org.dromara.workflow.domain.bo.FlowVariableBo;
import org.dromara.workflow.domain.vo.FlowInstanceVo;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -67,7 +68,7 @@ public interface IFlwInstanceService {
* @param instanceIds 实例id
* @return 结果
*/
List<FlowInstance> selectInstListByIdList(List<Long> instanceIds);
List<FlowInstance> selectInstListByIdList(Collection<Long> instanceIds);
/**
* 按照业务id删除流程实例
@@ -83,7 +84,7 @@ public interface IFlwInstanceService {
* @param instanceIds 实例id
* @return 结果
*/
boolean deleteByInstanceIds(List<Long> instanceIds);
boolean deleteByInstanceIds(Collection<Long> instanceIds);
/**
* 按照实例id删除已完成得流程实例
@@ -91,7 +92,7 @@ public interface IFlwInstanceService {
* @param instanceIds 删除的实例id
* @return 删除结果
*/
boolean deleteHisByInstanceIds(List<Long> instanceIds);
boolean deleteHisByInstanceIds(Collection<Long> instanceIds);
/**
* 撤销流程

View File

@@ -1,9 +1,9 @@
package org.dromara.workflow.service;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.workflow.domain.bo.FlowSpelBo;
import org.dromara.workflow.domain.vo.FlowSpelVo;

View File

@@ -1,9 +1,9 @@
package org.dromara.workflow.service;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.warm.flow.core.entity.Node;
import org.dromara.warm.flow.core.entity.Task;
import org.dromara.warm.flow.orm.entity.FlowHisTask;
@@ -13,6 +13,7 @@ import org.dromara.workflow.domain.bo.*;
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
import org.dromara.workflow.domain.vo.FlowTaskVo;
import java.util.Collection;
import java.util.List;
/**
@@ -98,7 +99,7 @@ public interface IFlwTaskService {
* @param userId 用户id
* @return 结果
*/
boolean updateAssignee(List<Long> taskIdList, String userId);
boolean updateAssignee(Collection<Long> taskIdList, String userId);
/**
* 驳回审批
@@ -111,8 +112,8 @@ public interface IFlwTaskService {
/**
* 获取可驳回的前置节点
*
* @param taskId 任务id
* @param nowNodeCode 当前节点
* @param taskId 任务id
* @param nowNodeCode 当前节点
* @return 结果
*/
List<Node> getBackTaskNode(Long taskId, String nowNodeCode);
@@ -131,7 +132,7 @@ public interface IFlwTaskService {
* @param taskIdList 任务id
* @return 任务列表
*/
List<FlowTask> selectByIdList(List<Long> taskIdList);
List<FlowTask> selectByIdList(Collection<Long> taskIdList);
/**
* 按照任务id查询任务
@@ -171,7 +172,7 @@ public interface IFlwTaskService {
* @param instanceIds 列表
* @return 任务列表
*/
List<FlowTask> selectByInstIds(List<Long> instanceIds);
List<FlowTask> selectByInstIds(Collection<Long> instanceIds);
/**
* 判断流程是否已结束(即该流程实例下是否还有未完成的任务)

View File

@@ -1,10 +1,11 @@
package org.dromara.workflow.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.workflow.domain.bo.TestLeaveBo;
import org.dromara.workflow.domain.vo.TestLeaveVo;
import java.util.Collection;
import java.util.List;
/**
@@ -70,5 +71,5 @@ public interface ITestLeaveService {
* @param ids 主键集合
* @return 删除结果
*/
Boolean deleteWithValidByIds(List<Long> ids);
Boolean deleteWithValidByIds(Collection<Long> ids);
}

View File

@@ -10,12 +10,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.warm.flow.core.dto.DefJson;
import org.dromara.warm.flow.core.enums.NodeType;
import org.dromara.warm.flow.core.enums.PublishStatus;
@@ -40,6 +40,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
/**
@@ -184,7 +185,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean removeDef(List<Long> ids) {
public boolean removeDef(Collection<Long> ids) {
LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery();
wrapper.in(FlowHisTask::getDefinitionId, ids);
List<FlowHisTask> flowHisTasks = flowHisTaskMapper.selectList(wrapper);
@@ -197,7 +198,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
}
}
try {
defService.removeDef(ids);
defService.removeDef((List<Long>) ids);
} catch (Exception e) {
log.error("Error removing flow definitions: {}", e.getMessage(), e);
throw new RuntimeException("Failed to remove flow definitions", e);

View File

@@ -11,12 +11,12 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.warm.flow.core.FlowEngine;
import org.dromara.warm.flow.core.constant.ExceptionCons;
@@ -206,7 +206,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
* @return 实例列表
*/
@Override
public List<FlowInstance> selectInstListByIdList(List<Long> instanceIds) {
public List<FlowInstance> selectInstListByIdList(Collection<Long> instanceIds) {
return flowInstanceMapper.selectByIds(instanceIds);
}
@@ -237,7 +237,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteByInstanceIds(List<Long> instanceIds) {
public boolean deleteByInstanceIds(Collection<Long> instanceIds) {
// 获取实例信息
List<FlowInstance> flowInstances = flowInstanceMapper.selectByIds(instanceIds);
if (CollUtil.isEmpty(flowInstances)) {
@@ -247,7 +247,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
// 发送事件
processDeleteHandler(flowInstances);
// 删除实例
return insService.remove(instanceIds);
return insService.remove((List<Long>) instanceIds);
}
/**
@@ -258,7 +258,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteHisByInstanceIds(List<Long> instanceIds) {
public boolean deleteHisByInstanceIds(Collection<Long> instanceIds) {
// 获取实例信息
List<FlowInstance> flowInstances = flowInstanceMapper.selectByIds(instanceIds);
if (CollUtil.isEmpty(flowInstances)) {
@@ -271,8 +271,8 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
if (CollUtil.isNotEmpty(flowTaskList)) {
FlowEngine.userService().deleteByTaskIds(StreamUtils.toList(flowTaskList, FlowTask::getId));
}
FlowEngine.taskService().deleteByInsIds(instanceIds);
FlowEngine.hisTaskService().deleteByInsIds(instanceIds);
FlowEngine.taskService().deleteByInsIds((List<Long>) instanceIds);
FlowEngine.hisTaskService().deleteByInsIds((List<Long>) instanceIds);
FlowEngine.insService().removeByIds(instanceIds);
return true;
}
@@ -323,8 +323,11 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
if (definition == null) {
throw new ServiceException(ExceptionCons.NOT_FOUNT_DEF);
}
String message = bo.message();
String userIdStr = LoginHelper.getUserIdStr();
if (!LoginHelper.isSuperAdmin() && !instance.getCreateBy().equals(userIdStr)) {
throw new ServiceException("权限不足,无法撤销流程!");
}
String message = bo.message();
BusinessStatusEnum.checkCancelStatus(instance.getFlowStatus());
FlowParams flowParams = FlowParams.build()
.message(message)

View File

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody;
import org.dromara.common.core.exception.ServiceException;
@@ -15,7 +16,6 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.domain.FlowSpel;
import org.dromara.workflow.domain.bo.FlowSpelBo;

View File

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.dto.StartProcessReturnDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.enums.BusinessStatusEnum;
@@ -23,7 +24,6 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.mybatis.utils.IdGeneratorUtil;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.warm.flow.core.FlowEngine;
@@ -589,7 +589,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
* @return 任务列表
*/
@Override
public List<FlowTask> selectByIdList(List<Long> taskIdList) {
public List<FlowTask> selectByIdList(Collection<Long> taskIdList) {
return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).in(FlowTask::getId, taskIdList));
}
@@ -725,7 +725,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
* @return 运行中的任务列表
*/
@Override
public List<FlowTask> selectByInstIds(List<Long> instanceIds) {
public List<FlowTask> selectByInstIds(Collection<Long> instanceIds) {
return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).in(FlowTask::getInstanceId, instanceIds));
}
@@ -843,7 +843,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateAssignee(List<Long> taskIdList, String userId) {
public boolean updateAssignee(Collection<Long> taskIdList, String userId) {
if (CollUtil.isEmpty(taskIdList)) {
return false;
}

View File

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.PageResult;
import org.dromara.common.core.domain.dto.StartProcessDTO;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
@@ -22,7 +23,6 @@ import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.PageResult;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.domain.TestLeave;
@@ -34,6 +34,7 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -198,7 +199,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(List<Long> ids) {
public Boolean deleteWithValidByIds(Collection<Long> ids) {
workflowService.deleteInstance(StreamUtils.toList(ids, Convert::toStr));
return baseMapper.deleteByIds(ids) > 0;
}