update 优化代码结构

This commit is contained in:
疯狂的狮子Li 2023-11-29 00:34:43 +08:00
parent 2133a72c29
commit f943409382
60 changed files with 401 additions and 418 deletions

View File

@ -97,16 +97,6 @@
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-websocket</artifactId>
</dependency>
<!-- 短信 用哪个导入哪个依赖 -->
<!-- <dependency>-->
<!-- <groupId>com.aliyun</groupId>-->
<!-- <artifactId>dysmsapi20170525</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.tencentcloudapi</groupId>-->
<!-- <artifactId>tencentcloud-sdk-java-sms</artifactId>-->
<!-- </dependency>-->
</dependencies>

View File

@ -1,11 +1,14 @@
package org.dromara.workflow.common;
import lombok.Data;
/**
* 分页参数
*
* @author may
*/
@Data
public class PageEntity {
/**
@ -22,15 +25,4 @@ public class PageEntity {
return (pageNum - 1) * pageSize;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
}

View File

@ -6,6 +6,8 @@ import lombok.Getter;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StringUtils;
import java.util.Arrays;
/**
* 业务状态枚举
*
@ -58,17 +60,15 @@ public enum BusinessStatusEnum {
*
* @param status 状态
*/
public static String getEumByStatus(String status) {
public static String findByStatus(String status) {
if (StringUtils.isBlank(status)) {
return StrUtil.EMPTY;
}
for (BusinessStatusEnum statusEnum : BusinessStatusEnum.values()) {
if (statusEnum.getStatus().equals(status)) {
return statusEnum.getDesc();
}
}
return StrUtil.EMPTY;
return Arrays.stream(BusinessStatusEnum.values())
.filter(statusEnum -> statusEnum.getStatus().equals(status))
.findFirst()
.map(BusinessStatusEnum::getDesc)
.orElse(StrUtil.EMPTY);
}
/**

View File

@ -5,6 +5,8 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
/**
* 任务状态枚举
*
@ -73,17 +75,16 @@ public enum TaskStatusEnum {
*
* @param status 状态
*/
public static String getEnumsByStatus(String status) {
public static String findByStatus(String status) {
if (StringUtils.isBlank(status)) {
return StrUtil.EMPTY;
}
for (TaskStatusEnum statusEnum : TaskStatusEnum.values()) {
if (statusEnum.getStatus().equals(status)) {
return statusEnum.getDesc();
}
}
return StrUtil.EMPTY;
return Arrays.stream(TaskStatusEnum.values())
.filter(statusEnum -> statusEnum.getStatus().equals(status))
.findFirst()
.map(TaskStatusEnum::getDesc)
.orElse(StrUtil.EMPTY);
}
}

View File

@ -1,11 +1,13 @@
package org.dromara.workflow.controller;
import cn.hutool.core.convert.Convert;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.json.utils.JsonUtils;
@ -25,7 +27,7 @@ import org.springframework.util.MultiValueMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
import java.util.Arrays;
/**
* 模型管理 控制层
@ -40,7 +42,7 @@ public class ActModelController extends BaseController {
private final RepositoryService repositoryService;
private final IActModelService iActModelService;
private final IActModelService actModelService;
/**
@ -49,8 +51,8 @@ public class ActModelController extends BaseController {
* @param modelBo 模型参数
*/
@GetMapping("/list")
public TableDataInfo<Model> getByPage(ModelBo modelBo) {
return iActModelService.getByPage(modelBo);
public TableDataInfo<Model> page(ModelBo modelBo) {
return actModelService.page(modelBo);
}
/**
@ -59,10 +61,11 @@ public class ActModelController extends BaseController {
@GetMapping("/rest/account")
public String getAccount() {
AccountVo accountVo = new AccountVo();
accountVo.setId(Objects.requireNonNull(LoginHelper.getUserId()).toString());
LoginUser loginUser = LoginHelper.getLoginUser();
accountVo.setId(Convert.toStr(loginUser.getUserId()));
accountVo.setFirstName("");
accountVo.setLastName(LoginHelper.getUsername());
accountVo.setFullName(LoginHelper.getUsername());
accountVo.setLastName(loginUser.getUsername());
accountVo.setFullName(loginUser.getUsername());
return JsonUtils.toJsonString(accountVo);
}
@ -75,7 +78,7 @@ public class ActModelController extends BaseController {
@RepeatSubmit()
@PostMapping("/rest/models")
public R<Void> saveNewModel(@Validated(AddGroup.class) @RequestBody ModelBo modelBo) {
return toAjax(iActModelService.saveNewModel(modelBo));
return toAjax(actModelService.saveNewModel(modelBo));
}
/**
@ -85,7 +88,7 @@ public class ActModelController extends BaseController {
*/
@GetMapping("/rest/models/{modelId}/editor/json")
public ObjectNode getModelInfo(@NotBlank(message = "模型id不能为空") @PathVariable String modelId) {
return iActModelService.getModelInfo(modelId);
return actModelService.getModelInfo(modelId);
}
@ -99,7 +102,7 @@ public class ActModelController extends BaseController {
@RepeatSubmit()
@PostMapping(value = "/rest/models/{modelId}/editor/json")
public R<Void> editModel(@PathVariable String modelId, @RequestParam MultiValueMap<String, String> values) {
return toAjax(iActModelService.editModel(modelId, values));
return toAjax(actModelService.editModel(modelId, values));
}
/**
@ -112,9 +115,7 @@ public class ActModelController extends BaseController {
@DeleteMapping("/{ids}")
@Transactional(rollbackFor = Exception.class)
public R<Void> delete(@NotEmpty(message = "主键不能为空") @PathVariable String[] ids) {
for (String id : ids) {
repositoryService.deleteModel(id);
}
Arrays.stream(ids).parallel().forEachOrdered(repositoryService::deleteModel);
return R.ok();
}
@ -127,7 +128,7 @@ public class ActModelController extends BaseController {
@RepeatSubmit()
@PostMapping("/modelDeploy/{id}")
public R<Void> deploy(@NotBlank(message = "模型id不能为空") @PathVariable("id") String id) {
return toAjax(iActModelService.modelDeploy(id));
return toAjax(actModelService.modelDeploy(id));
}
/**
@ -139,7 +140,7 @@ public class ActModelController extends BaseController {
@GetMapping("/export/zip/{modelId}")
public void exportZip(@NotEmpty(message = "模型id不能为空") @PathVariable String modelId,
HttpServletResponse response) {
iActModelService.exportZip(modelId, response);
actModelService.exportZip(modelId, response);
}
/**
@ -148,8 +149,8 @@ public class ActModelController extends BaseController {
* @param filter 参数
*/
@GetMapping(value = "/rest/editor-users")
public ResultListDataRepresentation getUsers(@RequestParam(value = "filter", required = false) String filter) {
return iActModelService.getUsers(filter);
public ResultListDataRepresentation editorUsers(@RequestParam(value = "filter", required = false) String filter) {
return actModelService.getUsers(filter);
}
/**
@ -158,8 +159,8 @@ public class ActModelController extends BaseController {
* @param filter 参数
*/
@GetMapping(value = "/rest/editor-groups")
public ResultListDataRepresentation getGroups(@RequestParam(required = false, value = "filter") String filter) {
return iActModelService.getGroups(filter);
public ResultListDataRepresentation editorGroups(@RequestParam(required = false, value = "filter") String filter) {
return actModelService.getGroups(filter);
}
}

View File

@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -15,7 +16,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -29,7 +32,7 @@ import java.util.*;
@RequestMapping("/workflow/processDefinition")
public class ActProcessDefinitionController extends BaseController {
private final IActProcessDefinitionService iActProcessDefinitionService;
private final IActProcessDefinitionService actProcessDefinitionService;
/**
* 分页查询
@ -37,8 +40,8 @@ public class ActProcessDefinitionController extends BaseController {
* @param processDefinitionBo 参数
*/
@GetMapping("/list")
public TableDataInfo<ProcessDefinitionVo> getByPage(ProcessDefinitionBo processDefinitionBo) {
return iActProcessDefinitionService.getByPage(processDefinitionBo);
public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo) {
return actProcessDefinitionService.page(processDefinitionBo);
}
/**
@ -48,7 +51,7 @@ public class ActProcessDefinitionController extends BaseController {
*/
@GetMapping("/getProcessDefinitionListByKey/{key}")
public R<List<ProcessDefinitionVo>> getProcessDefinitionListByKey(@NotEmpty(message = "流程定义key不能为空") @PathVariable String key) {
return R.ok("操作成功", iActProcessDefinitionService.getProcessDefinitionListByKey(key));
return R.ok("操作成功", actProcessDefinitionService.getProcessDefinitionListByKey(key));
}
/**
@ -58,7 +61,7 @@ public class ActProcessDefinitionController extends BaseController {
*/
@GetMapping("/processDefinitionImage/{processDefinitionId}")
public R<String> processDefinitionImage(@PathVariable String processDefinitionId) {
return R.ok("操作成功", iActProcessDefinitionService.processDefinitionImage(processDefinitionId));
return R.ok("操作成功", actProcessDefinitionService.processDefinitionImage(processDefinitionId));
}
/**
@ -69,9 +72,8 @@ public class ActProcessDefinitionController extends BaseController {
@GetMapping("/processDefinitionXml/{processDefinitionId}")
public R<Map<String, Object>> getXml(@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) {
Map<String, Object> map = new HashMap<>();
String xmlStr = iActProcessDefinitionService.processDefinitionXml(processDefinitionId);
List<String> xml = new ArrayList<>(Arrays.asList(xmlStr.split("\n")));
map.put("xml", xml);
String xmlStr = actProcessDefinitionService.processDefinitionXml(processDefinitionId);
map.put("xml", StringUtils.splitList("\n"));
map.put("xmlStr", xmlStr);
return R.ok(map);
}
@ -86,7 +88,7 @@ public class ActProcessDefinitionController extends BaseController {
@DeleteMapping("/{deploymentId}/{processDefinitionId}")
public R<Void> deleteDeployment(@NotBlank(message = "流程部署id不能为空") @PathVariable String deploymentId,
@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) {
return toAjax(iActProcessDefinitionService.deleteDeployment(deploymentId, processDefinitionId));
return toAjax(actProcessDefinitionService.deleteDeployment(deploymentId, processDefinitionId));
}
/**
@ -97,7 +99,7 @@ public class ActProcessDefinitionController extends BaseController {
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
@PutMapping("/updateProcessDefState/{processDefinitionId}")
public R<Void> updateProcDefState(@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) {
return toAjax(iActProcessDefinitionService.updateProcessDefState(processDefinitionId));
return toAjax(actProcessDefinitionService.updateProcessDefState(processDefinitionId));
}
/**
@ -110,7 +112,7 @@ public class ActProcessDefinitionController extends BaseController {
@PutMapping("/migrationProcessDefinition/{currentProcessDefinitionId}/{fromProcessDefinitionId}")
public R<Void> migrationProcessDefinition(@NotBlank(message = "当前流程定义id") @PathVariable String currentProcessDefinitionId,
@NotBlank(message = "需要迁移到的流程定义id") @PathVariable String fromProcessDefinitionId) {
return toAjax(iActProcessDefinitionService.migrationProcessDefinition(currentProcessDefinitionId, fromProcessDefinitionId));
return toAjax(actProcessDefinitionService.migrationProcessDefinition(currentProcessDefinitionId, fromProcessDefinitionId));
}
/**
@ -121,7 +123,7 @@ public class ActProcessDefinitionController extends BaseController {
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
@PutMapping("/convertToModel/{processDefinitionId}")
public R<Void> convertToModel(@NotEmpty(message = "流程定义id不能为空") @PathVariable String processDefinitionId) {
return toAjax(iActProcessDefinitionService.convertToModel(processDefinitionId));
return toAjax(actProcessDefinitionService.convertToModel(processDefinitionId));
}
/**
@ -133,6 +135,6 @@ public class ActProcessDefinitionController extends BaseController {
@Log(title = "流程定义管理", businessType = BusinessType.INSERT)
@PostMapping("/deployByFile")
public R<Void> deployByFile(@RequestParam("file") MultipartFile file, @RequestParam("categoryCode") String categoryCode) {
return toAjax(iActProcessDefinitionService.deployByFile(file, categoryCode));
return toAjax(actProcessDefinitionService.deployByFile(file, categoryCode));
}
}

View File

@ -31,7 +31,7 @@ import java.util.Map;
@RequestMapping("/workflow/processInstance")
public class ActProcessInstanceController extends BaseController {
private final IActProcessInstanceService iActProcessInstanceService;
private final IActProcessInstanceService actProcessInstanceService;
/**
* 分页查询正在运行的流程实例
@ -40,7 +40,7 @@ public class ActProcessInstanceController extends BaseController {
*/
@GetMapping("/getProcessInstanceRunningByPage")
public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) {
return iActProcessInstanceService.getProcessInstanceRunningByPage(processInstanceBo);
return actProcessInstanceService.getProcessInstanceRunningByPage(processInstanceBo);
}
/**
@ -50,7 +50,7 @@ public class ActProcessInstanceController extends BaseController {
*/
@GetMapping("/getProcessInstanceFinishByPage")
public TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo) {
return iActProcessInstanceService.getProcessInstanceFinishByPage(processInstanceBo);
return actProcessInstanceService.getProcessInstanceFinishByPage(processInstanceBo);
}
/**
@ -60,7 +60,7 @@ public class ActProcessInstanceController extends BaseController {
*/
@GetMapping("/getHistoryProcessImage/{processInstanceId}")
public R<String> getHistoryProcessImage(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
return R.ok("操作成功", iActProcessInstanceService.getHistoryProcessImage(processInstanceId));
return R.ok("操作成功", actProcessInstanceService.getHistoryProcessImage(processInstanceId));
}
/**
@ -70,7 +70,7 @@ public class ActProcessInstanceController extends BaseController {
*/
@GetMapping("/getHistoryRecord/{processInstanceId}")
public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
return R.ok(iActProcessInstanceService.getHistoryRecord(processInstanceId));
return R.ok(actProcessInstanceService.getHistoryRecord(processInstanceId));
}
/**
@ -81,7 +81,7 @@ public class ActProcessInstanceController extends BaseController {
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@PostMapping("/deleteRuntimeProcessInst")
public R<Void> deleteRuntimeProcessInst(@Validated(AddGroup.class) @RequestBody ProcessInvalidBo processInvalidBo) {
return toAjax(iActProcessInstanceService.deleteRuntimeProcessInst(processInvalidBo));
return toAjax(actProcessInstanceService.deleteRuntimeProcessInst(processInvalidBo));
}
/**
@ -92,7 +92,7 @@ public class ActProcessInstanceController extends BaseController {
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceIds}")
public R<Void> deleteRuntimeProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) {
return toAjax(iActProcessInstanceService.deleteRuntimeProcessAndHisInst(Arrays.asList(processInstanceIds)));
return toAjax(actProcessInstanceService.deleteRuntimeProcessAndHisInst(Arrays.asList(processInstanceIds)));
}
/**
@ -103,7 +103,7 @@ public class ActProcessInstanceController extends BaseController {
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceIds}")
public R<Void> deleteFinishProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) {
return toAjax(iActProcessInstanceService.deleteFinishProcessAndHisInst(Arrays.asList(processInstanceIds)));
return toAjax(actProcessInstanceService.deleteFinishProcessAndHisInst(Arrays.asList(processInstanceIds)));
}
/**
@ -114,7 +114,7 @@ public class ActProcessInstanceController extends BaseController {
@Log(title = "流程实例管理", businessType = BusinessType.INSERT)
@PostMapping("/cancelProcessApply/{processInstanceId}")
public R<Void> cancelProcessApply(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
return toAjax(iActProcessInstanceService.cancelProcessApply(processInstanceId));
return toAjax(actProcessInstanceService.cancelProcessApply(processInstanceId));
}
/**
@ -124,7 +124,7 @@ public class ActProcessInstanceController extends BaseController {
*/
@GetMapping("/getCurrentSubmitByPage")
public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) {
return iActProcessInstanceService.getCurrentSubmitByPage(processInstanceBo);
return actProcessInstanceService.getCurrentSubmitByPage(processInstanceBo);
}
/**
@ -135,7 +135,7 @@ public class ActProcessInstanceController extends BaseController {
@Log(title = "流程实例管理", businessType = BusinessType.INSERT)
@PostMapping("/taskUrging")
public R<Void> taskUrging(@RequestBody TaskUrgingBo taskUrgingBo) {
return toAjax(iActProcessInstanceService.taskUrging(taskUrgingBo));
return toAjax(actProcessInstanceService.taskUrging(taskUrgingBo));
}
}

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.controller;
import cn.hutool.core.convert.Convert;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
@ -31,7 +32,7 @@ import java.util.Map;
@RequestMapping("/workflow/task")
public class ActTaskController extends BaseController {
private final IActTaskService iActTaskService;
private final IActTaskService actTaskService;
private final TaskService taskService;
@ -45,7 +46,7 @@ public class ActTaskController extends BaseController {
@RepeatSubmit()
@PostMapping("/startWorkFlow")
public R<Map<String, Object>> startWorkFlow(@RequestBody StartProcessBo startProcessBo) {
Map<String, Object> map = iActTaskService.startWorkFlow(startProcessBo);
Map<String, Object> map = actTaskService.startWorkFlow(startProcessBo);
return R.ok("提交成功", map);
}
@ -58,7 +59,7 @@ public class ActTaskController extends BaseController {
@RepeatSubmit()
@PostMapping("/completeTask")
public R<Void> completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) {
return toAjax(iActTaskService.completeTask(completeTaskBo));
return toAjax(actTaskService.completeTask(completeTaskBo));
}
/**
@ -68,7 +69,7 @@ public class ActTaskController extends BaseController {
*/
@GetMapping("/getTaskWaitByPage")
public TableDataInfo<TaskVo> getTaskWaitByPage(TaskBo taskBo) {
return iActTaskService.getTaskWaitByPage(taskBo);
return actTaskService.getTaskWaitByPage(taskBo);
}
/**
@ -78,7 +79,7 @@ public class ActTaskController extends BaseController {
*/
@GetMapping("/getAllTaskWaitByPage")
public TableDataInfo<TaskVo> getAllTaskWaitByPage(TaskBo taskBo) {
return iActTaskService.getAllTaskWaitByPage(taskBo);
return actTaskService.getAllTaskWaitByPage(taskBo);
}
/**
@ -88,7 +89,7 @@ public class ActTaskController extends BaseController {
*/
@GetMapping("/getTaskFinishByPage")
public TableDataInfo<TaskVo> getTaskFinishByPage(TaskBo taskBo) {
return iActTaskService.getTaskFinishByPage(taskBo);
return actTaskService.getTaskFinishByPage(taskBo);
}
/**
@ -98,7 +99,7 @@ public class ActTaskController extends BaseController {
*/
@GetMapping("/getAllTaskFinishByPage")
public TableDataInfo<TaskVo> getAllTaskFinishByPage(TaskBo taskBo) {
return iActTaskService.getAllTaskFinishByPage(taskBo);
return actTaskService.getAllTaskFinishByPage(taskBo);
}
/**
@ -110,7 +111,7 @@ public class ActTaskController extends BaseController {
@PostMapping("/claim/{taskId}")
public R<Void> claimTask(@NotBlank(message = "任务id不能为空") @PathVariable String taskId) {
try {
taskService.claim(taskId, String.valueOf(LoginHelper.getUserId()));
taskService.claim(taskId, Convert.toStr(LoginHelper.getUserId()));
return R.ok();
} catch (Exception e) {
e.printStackTrace();
@ -143,7 +144,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/delegateTask")
public R<Void> delegateTask(@Validated({AddGroup.class}) @RequestBody DelegateBo delegateBo) {
return toAjax(iActTaskService.delegateTask(delegateBo));
return toAjax(actTaskService.delegateTask(delegateBo));
}
/**
@ -154,7 +155,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.DELETE)
@PostMapping("/terminationTask")
public R<Void> terminationTask(@RequestBody TerminationBo terminationBo) {
return toAjax(iActTaskService.terminationTask(terminationBo));
return toAjax(actTaskService.terminationTask(terminationBo));
}
/**
@ -165,7 +166,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/transferTask")
public R<Void> transferTask(@Validated({AddGroup.class}) @RequestBody TransmitBo transmitBo) {
return toAjax(iActTaskService.transferTask(transmitBo));
return toAjax(actTaskService.transferTask(transmitBo));
}
/**
@ -176,7 +177,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/addMultiInstanceExecution")
public R<Void> addMultiInstanceExecution(@Validated({AddGroup.class}) @RequestBody AddMultiBo addMultiBo) {
return toAjax(iActTaskService.addMultiInstanceExecution(addMultiBo));
return toAjax(actTaskService.addMultiInstanceExecution(addMultiBo));
}
/**
@ -187,7 +188,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/deleteMultiInstanceExecution")
public R<Void> deleteMultiInstanceExecution(@Validated({AddGroup.class}) @RequestBody DeleteMultiBo deleteMultiBo) {
return toAjax(iActTaskService.deleteMultiInstanceExecution(deleteMultiBo));
return toAjax(actTaskService.deleteMultiInstanceExecution(deleteMultiBo));
}
/**
@ -198,7 +199,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/backProcess")
public R<String> backProcess(@RequestBody BackProcessBo backProcessBo) {
return R.ok(iActTaskService.backProcess(backProcessBo));
return R.ok(actTaskService.backProcess(backProcessBo));
}
/**
@ -221,6 +222,6 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.UPDATE)
@PutMapping("/updateAssignee/{taskIds}/{userId}")
public R<Void> updateAssignee(@PathVariable String[] taskIds, @PathVariable String userId) {
return toAjax(iActTaskService.updateAssignee(taskIds, userId));
return toAjax(actTaskService.updateAssignee(taskIds, userId));
}
}

View File

@ -12,8 +12,11 @@
*/
package org.dromara.workflow.controller;
import cn.hutool.core.io.resource.ResourceUtil;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@ -25,14 +28,12 @@ import java.nio.charset.StandardCharsets;
@RequestMapping("/workflow/model")
public class StencilsetRestResource {
@GetMapping(value="/rest/stencil-sets/editor")
public String getStencilset() {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("static/stencilset.json");
try {
assert inputStream != null;
return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
} catch (Exception e) {
throw new SecurityException("Error while loading stencil set", e);
@GetMapping(value = "/rest/stencil-sets/editor")
public String getStencilset() {
try (InputStream inputStream = ResourceUtil.getStream("static/stencilset.json")) {
return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
} catch (Exception e) {
throw new SecurityException("Error while loading stencil set", e);
}
}
}
}

View File

@ -1,27 +1,28 @@
package org.dromara.workflow.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.idempotent.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.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.bo.TestLeaveBo;
import org.dromara.workflow.domain.vo.TestLeaveVo;
import org.dromara.workflow.service.ITestLeaveService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 请假
@ -65,7 +66,7 @@ public class TestLeaveController extends BaseController {
@SaCheckPermission("demo:leave:query")
@GetMapping("/{id}")
public R<TestLeaveVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
@PathVariable Long id) {
return R.ok(testLeaveService.queryById(id));
}

View File

@ -1,27 +1,28 @@
package org.dromara.workflow.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.workflow.domain.WfBusinessForm;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.workflow.domain.bo.WfBusinessFormBo;
import org.dromara.workflow.service.IWfBusinessFormService;
import org.dromara.common.idempotent.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.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.domain.bo.WfBusinessFormBo;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.workflow.service.IWfBusinessFormService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 发起流程

View File

@ -1,24 +1,25 @@
package org.dromara.workflow.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.workflow.service.IWfCategoryService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 流程分类
@ -64,7 +65,7 @@ public class WfCategoryController extends BaseController {
@SaCheckPermission("workflow:category:query")
@GetMapping("/{id}")
public R<WfCategoryVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
@PathVariable Long id) {
return R.ok(wfCategoryService.queryById(id));
}

View File

@ -67,6 +67,7 @@ public class WfFormController extends BaseController {
/**
* 获取流程表单详细信息
*
* @param formId 主键
*/
@SaCheckPermission("workflow:form:query")
@ -97,6 +98,7 @@ public class WfFormController extends BaseController {
/**
* 删除流程表单
*
* @param formIds 主键串
*/
@SaCheckPermission("workflow:form:remove")

View File

@ -2,16 +2,19 @@ package org.dromara.workflow.controller;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.bo.WfFormDefinitionBo;
import org.dromara.workflow.service.IWfFormDefinitionService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 动态单与流程定义关联信息

View File

@ -9,7 +9,10 @@ import org.dromara.workflow.domain.bo.SysUserMultiBo;
import org.dromara.workflow.domain.vo.TaskVo;
import org.dromara.workflow.service.IWorkflowUserService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@ -25,7 +28,7 @@ import java.util.List;
@RequestMapping("/workflow/user")
public class WorkflowUserController extends BaseController {
private final IWorkflowUserService iWorkflowUserService;
private final IWorkflowUserService workflowUserService;
/**
* 分页查询工作流选择加签人员
@ -34,7 +37,7 @@ public class WorkflowUserController extends BaseController {
*/
@GetMapping("/getWorkflowAddMultiListByPage")
public TableDataInfo<SysUserVo> getWorkflowAddMultiInstanceByPage(SysUserMultiBo sysUserMultiBo) {
return iWorkflowUserService.getWorkflowAddMultiInstanceByPage(sysUserMultiBo);
return workflowUserService.getWorkflowAddMultiInstanceByPage(sysUserMultiBo);
}
/**
@ -44,7 +47,7 @@ public class WorkflowUserController extends BaseController {
*/
@GetMapping("/getWorkflowDeleteMultiInstanceList/{taskId}")
public R<List<TaskVo>> getWorkflowDeleteMultiInstanceList(@PathVariable String taskId) {
return R.ok(iWorkflowUserService.getWorkflowDeleteMultiInstanceList(taskId));
return R.ok(workflowUserService.getWorkflowDeleteMultiInstanceList(taskId));
}
/**
@ -54,6 +57,6 @@ public class WorkflowUserController extends BaseController {
*/
@GetMapping("/getUserListByIds/{userIds}")
public R<List<SysUserVo>> getUserListByIds(@PathVariable List<Long> userIds) {
return R.ok(iWorkflowUserService.getUserListByIds(userIds));
return R.ok(workflowUserService.getUserListByIds(userIds));
}
}

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.io.Serial;
/**
* 流程实例对象 act_hi_procinst
*

View File

@ -1,9 +1,10 @@
package org.dromara.workflow.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;

View File

@ -1,10 +1,12 @@
package org.dromara.workflow.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.util.Map;
@ -59,6 +61,6 @@ public class WfBusinessForm extends TenantEntity {
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String,Object> variable;
private Map<String, Object> variable;
}

View File

@ -1,9 +1,10 @@
package org.dromara.workflow.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;

View File

@ -1,9 +1,10 @@
package org.dromara.workflow.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain.bo;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.workflow.domain.TestLeave;
/**
* 请假业务对象 test_leave
@ -23,19 +24,19 @@ public class TestLeaveBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "标题不能为空", groups = {AddGroup.class, EditGroup.class})
private String title;
/**
* 请假天数
*/
@NotNull(message = "请假天数不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "请假天数不能为空", groups = {AddGroup.class, EditGroup.class})
private Integer leaveDays;
/**

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain.bo;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.workflow.domain.WfBusinessForm;
/**
* 发起流程业务对象 wf_business_form
@ -23,7 +24,7 @@ public class WfBusinessFormBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id;
/**
@ -34,19 +35,19 @@ public class WfBusinessFormBo extends BaseEntity {
/**
* 表单id
*/
@NotNull(message = "表单id不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "表单id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long formId;
/**
* 表单名称
*/
@NotBlank(message = "表单名称不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "表单名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String formName;
/**
* 表单内容
*/
@NotBlank(message = "表单内容不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "表单内容不能为空", groups = {AddGroup.class, EditGroup.class})
private String content;
/**

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain.bo;
import org.dromara.workflow.domain.WfCategory;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.workflow.domain.WfCategory;
/**
* 流程分类业务对象 wf_category
@ -23,25 +24,25 @@ public class WfCategoryBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id;
/**
* 分类名称
*/
@NotBlank(message = "分类名称不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "分类名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String categoryName;
/**
* 分类编码
*/
@NotBlank(message = "分类编码不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "分类编码不能为空", groups = {AddGroup.class, EditGroup.class})
private String categoryCode;
/**
* 父级id
*/
@NotNull(message = "父级id不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "父级id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long parentId;
/**

View File

@ -28,31 +28,31 @@ public class WfFormBo extends BaseEntity {
/**
* 表单主键
*/
@NotNull(message = "表单ID不能为空", groups = { EditGroup.class })
@NotNull(message = "表单ID不能为空", groups = {EditGroup.class})
private Long formId;
/**
* 表单名称
*/
@NotBlank(message = "表单名称不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "表单名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String formName;
/**
* 表单配置
*/
@NotBlank(message = "表单配置不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "表单配置不能为空", groups = {AddGroup.class, EditGroup.class})
private String formConfig;
/**
* 表单内容
*/
@NotBlank(message = "表单内容不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "表单内容不能为空", groups = {AddGroup.class, EditGroup.class})
private String content;
/**
* 状态0正常 1停用
*/
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "状态不能为空", groups = {AddGroup.class, EditGroup.class})
private String status;
/**

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain.bo;
import org.dromara.workflow.domain.WfFormDefinition;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.workflow.domain.WfFormDefinition;
/**
* 动态单与流程定义关联信息业务对象 wf_form_definition
@ -23,37 +24,37 @@ public class WfFormDefinitionBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id;
/**
* 动态表单id
*/
@NotNull(message = "动态表单id不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "动态表单id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long formId;
/**
* 流程定义id
*/
@NotBlank(message = "流程定义key不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "流程定义key不能为空", groups = {AddGroup.class, EditGroup.class})
private String processDefinitionKey;
/**
* 流程定义名称
*/
@NotBlank(message = "流程定义名称不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "流程定义名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String processDefinitionName;
/**
* 流程定义id
*/
@NotBlank(message = "流程定义id不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "流程定义id不能为空", groups = {AddGroup.class, EditGroup.class})
private String processDefinitionId;
/**
* 流程定义版本
*/
@NotNull(message = "流程定义版本不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "流程定义版本不能为空", groups = {AddGroup.class, EditGroup.class})
private Long processDefinitionVersion;

View File

@ -17,7 +17,7 @@ import java.util.Date;
public class ActHistoryInfoVo implements Serializable {
@Serial
private static final long serialVersionUID=1L;
private static final long serialVersionUID = 1L;
/**
* 任务id
*/

View File

@ -18,7 +18,7 @@ import lombok.Data;
* @author Joram Barrez
*/
@Data
public class GroupRepresentation{
public class GroupRepresentation {
protected String id;
protected String name;

View File

@ -12,22 +12,22 @@
*/
package org.dromara.workflow.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @author Tijs Rademakers
*/
@Data
public class ResultListDataRepresentation {
protected Integer size;
protected Long total;
protected Integer start;
protected List<? extends Object> data;
protected List<?> data;
public ResultListDataRepresentation() {
}
public ResultListDataRepresentation(List<? extends Object> data) {
public ResultListDataRepresentation(List<?> data) {
this.data = data;
if (data != null) {
size = data.size();
@ -36,35 +36,4 @@ public class ResultListDataRepresentation {
}
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
this.size = size;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public Integer getStart() {
return start;
}
public void setStart(Integer start) {
this.start = start;
}
public List<? extends Object> getData() {
return data;
}
public void setData(List<? extends Object> data) {
this.data = data;
}
}

View File

@ -1,11 +1,10 @@
package org.dromara.workflow.domain.vo;
import org.dromara.workflow.domain.TestLeave;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
import org.dromara.workflow.domain.TestLeave;
import java.io.Serial;
import java.io.Serializable;

View File

@ -1,10 +1,10 @@
package org.dromara.workflow.domain.vo;
import org.dromara.workflow.domain.WfBusinessForm;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.workflow.domain.WfBusinessForm;
import java.io.Serial;
import java.io.Serializable;

View File

@ -1,16 +1,15 @@
package org.dromara.workflow.domain.vo;
import org.dromara.workflow.domain.WfCategory;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.workflow.domain.WfCategory;
import java.io.Serial;
import java.io.Serializable;
/**
* 流程分类视图对象 wf_category
*

View File

@ -1,16 +1,15 @@
package org.dromara.workflow.domain.vo;
import org.dromara.workflow.domain.WfFormDefinition;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.workflow.domain.WfFormDefinition;
import java.io.Serial;
import java.io.Serializable;
/**
* 动态单与流程定义关联信息视图对象 wf_form_definition
*

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.flowable.cmd;
import cn.hutool.core.collection.CollUtil;
import org.flowable.common.engine.impl.interceptor.Command;
import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
@ -44,15 +45,17 @@ public class AddSequenceMultiInstanceCmd implements Command<Void> {
public Void execute(CommandContext commandContext) {
ExecutionEntityManager executionEntityManager = CommandContextUtil.getExecutionEntityManager();
ExecutionEntity entity = executionEntityManager.findById(executionId);
//多实例任务总数加assignees.size()
Integer nrOfInstances = (Integer) entity.getVariable(NUMBER_OF_INSTANCES);
entity.setVariable(NUMBER_OF_INSTANCES, nrOfInstances + assignees.size());
// 多实例任务总数加 assignees.size()
if (entity.getVariable(NUMBER_OF_INSTANCES) instanceof Integer nrOfInstances) {
entity.setVariable(NUMBER_OF_INSTANCES, nrOfInstances + assignees.size());
}
// 设置流程变量
List<Long> userIds = (List) entity.getVariable(assigneeList);
userIds.addAll(assignees);
Map<String, Object> variables = new HashMap<>(16);
variables.put(assigneeList, userIds);
entity.setVariables(variables);
if (entity.getVariable(assigneeList) instanceof List<?> userIds) {
CollUtil.addAll(userIds, assignees);
Map<String, Object> variables = new HashMap<>(16);
variables.put(assigneeList, userIds);
entity.setVariables(variables);
}
return null;
}
}

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.flowable.cmd;
import lombok.AllArgsConstructor;
import org.flowable.common.engine.impl.interceptor.Command;
import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
@ -20,6 +21,7 @@ import static org.dromara.workflow.common.constant.FlowConstant.NUMBER_OF_INSTAN
*
* @author may
*/
@AllArgsConstructor
public class DeleteSequenceMultiInstanceCmd implements Command<Void> {
/**
@ -42,19 +44,14 @@ public class DeleteSequenceMultiInstanceCmd implements Command<Void> {
*/
private final List<Long> assignees;
public DeleteSequenceMultiInstanceCmd(String currentUserId, String executionId, String assigneeList, List<Long> assignees) {
this.currentUserId = currentUserId;
this.executionId = executionId;
this.assigneeList = assigneeList;
this.assignees = assignees;
}
@Override
@SuppressWarnings("unchecked")
public Void execute(CommandContext commandContext) {
ExecutionEntityManager executionEntityManager = CommandContextUtil.getExecutionEntityManager();
ExecutionEntity entity = executionEntityManager.findById(executionId);
// 设置流程变量
List<Long> userIds = (List) entity.getVariable(assigneeList);
List<Long> userIds = (List<Long>) entity.getVariable(assigneeList);
List<Long> userIdList = new ArrayList<>();
userIds.forEach(e -> {
Long userId = assignees.stream().filter(id -> id.equals(e)).findFirst().orElse(null);
@ -62,7 +59,7 @@ public class DeleteSequenceMultiInstanceCmd implements Command<Void> {
userIdList.add(e);
}
});
//当前任务执行位置
// 当前任务执行位置
int loopCounterIndex = -1;
for (int i = 0; i < userIdList.size(); i++) {
Long userId = userIdList.get(i);

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.flowable.cmd;
import org.dromara.common.core.utils.StreamUtils;
import org.flowable.common.engine.impl.interceptor.Command;
import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
@ -8,7 +9,6 @@ import org.flowable.engine.impl.util.CommandContextUtil;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
/**
* 获取并行网关执行后保留的执行实例数据
@ -34,6 +34,6 @@ public class ExecutionChildByExecutionIdCmd implements Command<List<ExecutionEnt
// 通过当前执行数据的父执行查询所有子执行数据
List<ExecutionEntity> allChildrenExecution =
executionEntityManager.collectChildren(executionEntity.getParent());
return allChildrenExecution.stream().filter(e -> !e.isActive()).collect(Collectors.toList());
return StreamUtils.filter(allChildrenExecution, e -> !e.isActive());
}
}

View File

@ -19,6 +19,7 @@ public class FlowableConfig implements EngineConfigurationConfigurer<SpringProce
@Autowired
private GlobalFlowableListener globalFlowableListener;
@Override
public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
processEngineConfiguration.setIdGenerator(IdWorker::getIdStr);

View File

@ -2,7 +2,9 @@ package org.dromara.workflow.flowable.config;
import cn.hutool.core.collection.CollUtil;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.BoundaryEvent;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.common.engine.api.delegate.event.*;
import org.flowable.common.engine.impl.cfg.TransactionState;
import org.flowable.engine.RepositoryService;
@ -43,11 +45,7 @@ public class GlobalFlowableListener implements FlowableEventListener {
if (flowableEvent instanceof FlowableEngineEvent flowableEngineEvent) {
FlowableEngineEventType engineEventType = (FlowableEngineEventType) flowableEvent.getType();
switch (engineEventType) {
case JOB_EXECUTION_SUCCESS:
jobExecutionSuccess((FlowableEngineEntityEvent) flowableEngineEvent);
break;
default:
break;
case JOB_EXECUTION_SUCCESS -> jobExecutionSuccess((FlowableEngineEntityEvent) flowableEngineEvent);
}
}
}

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.ActHiProcinst;
/**
* 流程实例Mapper接口

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.vo.TestLeaveVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 请假Mapper接口

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 发起流程Mapper接口

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.WfCategory;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 流程分类Mapper接口

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.WfFormDefinition;
import org.dromara.workflow.domain.vo.WfFormDefinitionVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 动态单与流程定义关联信息Mapper接口

View File

@ -20,7 +20,7 @@ public interface IActModelService {
* @param modelBo 模型参数
* @return 返回分页列表
*/
TableDataInfo<Model> getByPage(ModelBo modelBo);
TableDataInfo<Model> page(ModelBo modelBo);
/**
* 新增模型

View File

@ -19,7 +19,7 @@ public interface IActProcessDefinitionService {
* @param processDefinitionBo 参数
* @return 返回分页列表
*/
TableDataInfo<ProcessDefinitionVo> getByPage(ProcessDefinitionBo processDefinitionBo);
TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo);
/**
* 查询历史流程定义列表

View File

@ -1,10 +1,10 @@
package org.dromara.workflow.service;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.vo.TestLeaveVo;
import org.dromara.workflow.domain.bo.TestLeaveBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.bo.TestLeaveBo;
import org.dromara.workflow.domain.vo.TestLeaveVo;
import java.util.Collection;
import java.util.List;

View File

@ -1,10 +1,10 @@
package org.dromara.workflow.service;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.workflow.domain.bo.WfBusinessFormBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.domain.bo.WfBusinessFormBo;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import java.util.Collection;
import java.util.List;

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.service;
import org.dromara.workflow.domain.WfCategory;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.workflow.domain.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import java.util.Collection;
import java.util.List;

View File

@ -1,9 +1,9 @@
package org.dromara.workflow.service;
import org.dromara.workflow.domain.vo.WfFormDefinitionVo;
import org.dromara.workflow.domain.bo.WfFormDefinitionBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.domain.bo.WfFormDefinitionBo;
import org.dromara.workflow.domain.vo.WfFormDefinitionVo;
import java.util.Collection;
import java.util.List;

View File

@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.domain.ActHiProcinst;
import org.springframework.stereotype.Service;
import org.dromara.workflow.mapper.ActHiProcinstMapper;
import org.dromara.workflow.service.IActHiProcinstService;
import org.springframework.stereotype.Service;
import java.util.List;
@ -32,8 +32,8 @@ public class ActHiProcinstServiceImpl implements IActHiProcinstService {
@Override
public List<ActHiProcinst> selectByBusinessKeyIn(List<String> businessKeys) {
return baseMapper.selectList(new LambdaQueryWrapper<ActHiProcinst>()
.in(ActHiProcinst::getBusinessKey, businessKeys)
.eq(ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
.in(ActHiProcinst::getBusinessKey, businessKeys)
.eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
}
/**
@ -44,8 +44,8 @@ public class ActHiProcinstServiceImpl implements IActHiProcinstService {
@Override
public ActHiProcinst selectByBusinessKey(String businessKey) {
return baseMapper.selectOne(new LambdaQueryWrapper<ActHiProcinst>()
.eq(ActHiProcinst::getBusinessKey, businessKey)
.eq(ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
.eq(ActHiProcinst::getBusinessKey, businessKey)
.eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
}
}

View File

@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper;
@ -76,7 +77,7 @@ public class ActModelServiceImpl implements IActModelService {
* @return 返回分页列表
*/
@Override
public TableDataInfo<Model> getByPage(ModelBo modelBo) {
public TableDataInfo<Model> page(ModelBo modelBo) {
ModelQuery query = repositoryService.createModelQuery();
query.modelTenantId(TenantHelper.getTenantId());
if (StringUtils.isNotEmpty(modelBo.getName())) {
@ -93,8 +94,8 @@ public class ActModelServiceImpl implements IActModelService {
query.orderByCreateTime().desc();
// 分页查询
List<Model> modelList = query.listPage(modelBo.getPageNum(), modelBo.getPageSize());
if (CollectionUtil.isNotEmpty(modelList)) {
modelList.forEach(e -> {
if (CollUtil.isNotEmpty(modelList)) {
modelList.parallelStream().forEach(e -> {
boolean isNull = JSONUtil.isNull(JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION));
if (!isNull) {
e.setMetaInfo((String) JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION));
@ -237,11 +238,11 @@ public class ActModelServiceImpl implements IActModelService {
JsonNode childShapes = jsonNode.get("childShapes");
for (JsonNode childShape : childShapes) {
JsonNode properties = childShape.get("properties");
if(!properties.path("usertaskassignment").isMissingNode()){
if (!properties.path("usertaskassignment").isMissingNode()) {
JsonNode usertaskassignment = properties.get("usertaskassignment");
if(!usertaskassignment.path("assignment").isMissingNode()){
if (!usertaskassignment.path("assignment").isMissingNode()) {
JsonNode assignment = usertaskassignment.get("assignment");
if(!assignment.path("assignee").isMissingNode()){
if (!assignment.path("assignee").isMissingNode()) {
if ("$INITIATOR".equals(assignment.get("assignee").textValue())) {
((ObjectNode) assignment).put("assignee", "${INITIATOR}");
}
@ -406,16 +407,15 @@ public class ActModelServiceImpl implements IActModelService {
public ResultListDataRepresentation getGroups(String filter) {
LambdaQueryWrapper<SysRole> wrapper = Wrappers.lambdaQuery();
wrapper.like(org.dromara.common.core.utils.StringUtils.isNotBlank(filter), SysRole::getRoleName, filter);
wrapper.like(StringUtils.isNotBlank(filter), SysRole::getRoleName, filter);
List<SysRole> sysRoles = sysRoleMapper.selectList(wrapper);
List<GroupRepresentation> result = new ArrayList<>();
for (SysRole sysRole : sysRoles) {
List<GroupRepresentation> result = StreamUtils.toList(sysRoles, sysRole -> {
GroupRepresentation groupRepresentation = new GroupRepresentation();
groupRepresentation.setId(sysRole.getRoleId().toString());
groupRepresentation.setName(sysRole.getRoleName());
groupRepresentation.setType(sysRole.getRoleKey());
result.add(groupRepresentation);
}
return groupRepresentation;
});
return new ResultListDataRepresentation(result);
}
}

View File

@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.commons.io.IOUtils;
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.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper;
@ -56,7 +57,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
private final ProcessMigrationService processMigrationService;
private final IWfCategoryService iWfCategoryService;
private final IWfCategoryService wfCategoryService;
/**
* 分页查询
@ -65,7 +66,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
* @return 返回分页列表
*/
@Override
public TableDataInfo<ProcessDefinitionVo> getByPage(ProcessDefinitionBo processDefinitionBo) {
public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo) {
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
query.processDefinitionTenantId(TenantHelper.getTenantId());
if (StringUtils.isNotEmpty(processDefinitionBo.getKey())) {
@ -82,9 +83,8 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
List<ProcessDefinition> definitionList = query.latestVersion().listPage(processDefinitionBo.getPageNum(), processDefinitionBo.getPageSize());
List<Deployment> deploymentList = null;
if (CollUtil.isNotEmpty(definitionList)) {
List<String> deploymentIds = definitionList.stream().map(ProcessDefinition::getDeploymentId).collect(Collectors.toList());
deploymentList = repositoryService.createDeploymentQuery()
.deploymentIds(deploymentIds).list();
List<String> deploymentIds = StreamUtils.toList(definitionList, ProcessDefinition::getDeploymentId);
deploymentList = repositoryService.createDeploymentQuery().deploymentIds(deploymentIds).list();
}
for (ProcessDefinition processDefinition : definitionList) {
ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class);
@ -281,7 +281,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
@Override
public boolean deployByFile(MultipartFile file, String categoryCode) {
try {
WfCategory wfCategory = iWfCategoryService.queryByCategoryCode(categoryCode);
WfCategory wfCategory = wfCategoryService.queryByCategoryCode(categoryCode);
if (wfCategory == null) {
throw new ServiceException("流程分类不存在");
}

View File

@ -21,14 +21,20 @@ import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
import org.dromara.workflow.domain.bo.TaskUrgingBo;
import org.dromara.workflow.domain.vo.*;
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
import org.dromara.workflow.domain.vo.GraphicInfoVo;
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
import org.dromara.workflow.domain.vo.TaskVo;
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd;
import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.GraphicInfo;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.*;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
@ -46,8 +52,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.awt.*;
import java.io.InputStream;
import java.util.*;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -64,7 +70,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
private final RuntimeService runtimeService;
private final HistoryService historyService;
private final TaskService taskService;
private final IActHiProcinstService iActHiProcinstService;
private final IActHiProcinstService actHiProcinstService;
private final ManagementService managementService;
@Value("${flowable.activity-font-name}")
@ -105,7 +111,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
for (ProcessInstance processInstance : processInstances) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class);
processInstanceVo.setIsSuspended(processInstance.isSuspended());
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstance.getBusinessStatus()));
list.add(processInstanceVo);
}
long count = query.count();
@ -141,7 +147,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
List<HistoricProcessInstance> historicProcessInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize());
for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class);
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(historicProcessInstance.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(historicProcessInstance.getBusinessStatus()));
list.add(processInstanceVo);
}
long count = query.count();
@ -212,7 +218,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Override
public Map<String, Object> getHistoryRecord(String processInstanceId) {
Map<String, Object> map = new HashMap<>();
//查询任务办理记录
// 查询任务办理记录
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list();
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
@ -230,7 +236,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
if (StringUtils.isNotBlank(e.getFullMessage())) {
actHistoryInfoVo.setComment(e.getFullMessage());
actHistoryInfoVo.setStatus(e.getType());
actHistoryInfoVo.setStatusName(TaskStatusEnum.getEnumsByStatus(e.getType()));
actHistoryInfoVo.setStatusName(TaskStatusEnum.findByStatus(e.getType()));
}
});
}
@ -245,13 +251,13 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
actHistoryInfoVoList.add(actHistoryInfoVo);
}
List<ActHistoryInfoVo> collect = new ArrayList<>();
//待办理
// 待办理
List<ActHistoryInfoVo> waitingTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null);
//已办理
// 已办理
List<ActHistoryInfoVo> finishTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null);
collect.addAll(waitingTask);
collect.addAll(finishTask);
//审批记录
// 审批记录
map.put("historyRecordList", collect);
List<ActHistoryInfoVo> nodeInfoList = new ArrayList<>();
Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey);
@ -275,7 +281,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
});
nodeInfoList.add(actHistoryInfoVo);
}
//节点信息
// 节点信息
map.put("nodeListInfo", nodeInfoList);
BpmnModel bpmnModel = repositoryService.getBpmnModel(list.get(0).getProcessDefinitionId());
List<GraphicInfoVo> graphicInfoVos = new ArrayList<>();
@ -367,7 +373,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class)
public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) {
try {
//1.删除运行中流程实例
// 1.删除运行中流程实例
List<Task> list = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds)
.taskTenantId(TenantHelper.getTenantId()).list();
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
@ -375,7 +381,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
}
runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
//2.删除历史记录
// 2.删除历史记录
List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list();
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
@ -397,8 +403,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class)
public boolean deleteRuntimeProcessAndHisInstByBusinessKeys(List<String> businessKeys) {
try {
//1.删除运行中流程实例
List<ActHiProcinst> actHiProcinsts = iActHiProcinstService.selectByBusinessKeyIn(businessKeys);
// 1.删除运行中流程实例
List<ActHiProcinst> actHiProcinsts = actHiProcinstService.selectByBusinessKeyIn(businessKeys);
if (CollUtil.isEmpty(actHiProcinsts)) {
log.warn("当前业务ID:{}查询到流程实例为空!", businessKeys);
return false;
@ -411,7 +417,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
}
runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
//2.删除历史记录
// 2.删除历史记录
List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list();
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
@ -522,7 +528,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
}
for (HistoricProcessInstance processInstance : historicProcessInstanceList) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class);
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstance.getBusinessStatus()));
if (CollUtil.isNotEmpty(taskVoList)) {
List<TaskVo> collect = StreamUtils.filter(taskVoList, e -> e.getProcessInstanceId().equals(processInstance.getId()));
processInstanceVo.setTaskVoList(CollUtil.isNotEmpty(collect) ? collect : Collections.emptyList());

View File

@ -3,6 +3,7 @@ package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
@ -218,12 +219,12 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(processInstanceList)) {
processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus()));
taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
});
}
taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null);
taskVo.setAssignee(Convert.toLong(task.getAssignee()));
taskVo.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId()));
taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null);
list.add(taskVo);
@ -261,7 +262,7 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(processInstanceList)) {
processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus()));
taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
});
@ -306,7 +307,7 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus()));
taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
});
@ -348,12 +349,12 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus()));
taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
});
}
taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null);
taskVo.setAssignee(Convert.toLong(task.getAssignee()));
list.add(taskVo);
}
long count = query.count();

View File

@ -1,28 +1,28 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
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.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
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 org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.springframework.stereotype.Service;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.domain.bo.TestLeaveBo;
import org.dromara.workflow.domain.vo.TestLeaveVo;
import org.dromara.workflow.domain.TestLeave;
import org.dromara.workflow.mapper.TestLeaveMapper;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.service.ITestLeaveService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 请假Service业务层处理

View File

@ -1,36 +1,35 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.DateUtils;
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.json.utils.JsonUtils;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.domain.WfFormDefinition;
import org.dromara.workflow.domain.bo.WfBusinessFormBo;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.workflow.domain.vo.WfFormDefinitionVo;
import org.dromara.workflow.mapper.WfBusinessFormMapper;
import org.dromara.workflow.mapper.WfFormDefinitionMapper;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.service.IWfBusinessFormService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.springframework.stereotype.Service;
import org.dromara.workflow.domain.bo.WfBusinessFormBo;
import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.mapper.WfBusinessFormMapper;
import org.dromara.workflow.service.IWfBusinessFormService;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
@ -45,8 +44,8 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
private final WfBusinessFormMapper baseMapper;
private final WfFormDefinitionMapper wfFormDefinitionMapper;
private final IActProcessInstanceService iActProcessInstanceService;
private final IActHiProcinstService iActHiProcinstService;
private final IActProcessInstanceService actProcessInstanceService;
private final IActHiProcinstService actHiProcinstService;
/**
* 查询发起流程
@ -104,8 +103,7 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
bo.setId(add.getId());
}
if (StringUtils.isNotBlank(add.getContentValue())) {
Map<String, Object> variable = JsonUtils.parseObject(add.getContentValue(), new TypeReference<>() {
});
Map<String, Object> variable = JsonUtils.parseMap(add.getContentValue());
add.setVariable(variable);
}
return add;
@ -119,8 +117,7 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
WfBusinessForm update = MapstructUtils.convert(bo, WfBusinessForm.class);
baseMapper.updateById(update);
if (StringUtils.isNotBlank(update.getContentValue())) {
Map<String, Object> variable = JsonUtils.parseObject(update.getContentValue(), new TypeReference<>() {
});
Map<String, Object> variable = JsonUtils.parseMap(update.getContentValue());
update.setVariable(variable);
}
return update;
@ -132,9 +129,9 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids) {
List<ActHiProcinst> actHiProcinsts = iActHiProcinstService.selectByBusinessKeyIn(StreamUtils.toList(ids, String::valueOf));
List<ActHiProcinst> actHiProcinsts = actHiProcinstService.selectByBusinessKeyIn(StreamUtils.toList(ids, String::valueOf));
if (CollUtil.isNotEmpty(actHiProcinsts)) {
iActProcessInstanceService.deleteRuntimeProcessAndHisInst(actHiProcinsts.stream().map(ActHiProcinst::getId).collect(Collectors.toList()));
actProcessInstanceService.deleteRuntimeProcessAndHisInst(actHiProcinsts.stream().map(ActHiProcinst::getId).collect(Collectors.toList()));
}
return baseMapper.deleteBatchIds(ids) > 0;
}

View File

@ -1,24 +1,24 @@
package org.dromara.workflow.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.workflow.domain.WfCategory;
import org.dromara.workflow.domain.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.workflow.mapper.WfCategoryMapper;
import org.dromara.workflow.service.IWfCategoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.Model;
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Service;
import org.dromara.workflow.domain.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.workflow.domain.WfCategory;
import org.dromara.workflow.mapper.WfCategoryMapper;
import org.dromara.workflow.service.IWfCategoryService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Collection;
import java.util.List;
/**
* 流程分类Service业务层处理
@ -84,11 +84,11 @@ public class WfCategoryServiceImpl implements IWfCategoryService {
WfCategoryVo wfCategoryVo = baseMapper.selectVoById(bo.getId());
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().processDefinitionCategory(wfCategoryVo.getCategoryCode()).list();
for (ProcessDefinition processDefinition : processDefinitionList) {
repositoryService.setProcessDefinitionCategory(processDefinition.getId(),bo.getCategoryCode());
repositoryService.setProcessDefinitionCategory(processDefinition.getId(), bo.getCategoryCode());
}
List<Deployment> deploymentList = repositoryService.createDeploymentQuery().deploymentCategory(wfCategoryVo.getCategoryCode()).list();
for (Deployment deployment : deploymentList) {
repositoryService.setDeploymentCategory(deployment.getId(),bo.getCategoryCode());
repositoryService.setDeploymentCategory(deployment.getId(), bo.getCategoryCode());
}
List<Model> modelList = repositoryService.createModelQuery().modelCategory(wfCategoryVo.getCategoryCode()).list();
for (Model model : modelList) {

View File

@ -1,24 +1,24 @@
package org.dromara.workflow.service.impl;
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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.common.core.utils.MapstructUtils;
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.workflow.domain.WfFormDefinition;
import org.dromara.workflow.domain.bo.WfFormDefinitionBo;
import org.dromara.workflow.domain.vo.WfFormDefinitionVo;
import org.dromara.workflow.domain.WfFormDefinition;
import org.dromara.workflow.mapper.WfFormDefinitionMapper;
import org.dromara.workflow.service.IWfFormDefinitionService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 动态单与流程定义关联信息Service业务层处理
@ -36,7 +36,7 @@ public class WfFormDefinitionServiceImpl implements IWfFormDefinitionService {
* 查询动态单与流程定义关联信息
*/
@Override
public WfFormDefinitionVo queryById(Long id){
public WfFormDefinitionVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
@ -98,9 +98,9 @@ public class WfFormDefinitionServiceImpl implements IWfFormDefinitionService {
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WfFormDefinition entity){
private void validEntityBeforeSave(WfFormDefinition entity) {
LambdaQueryWrapper<WfFormDefinition> wrapper = Wrappers.lambdaQuery();
wrapper.eq(WfFormDefinition::getFormId,entity.getFormId());
wrapper.eq(WfFormDefinition::getFormId, entity.getFormId());
baseMapper.delete(wrapper);
}
@ -109,7 +109,7 @@ public class WfFormDefinitionServiceImpl implements IWfFormDefinitionService {
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;

View File

@ -58,6 +58,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
* @param sysUserMultiBo 参数
*/
@Override
@SuppressWarnings("unchecked")
public TableDataInfo<SysUserVo> getWorkflowAddMultiInstanceByPage(SysUserMultiBo sysUserMultiBo) {
Task task = taskService.createTaskQuery().taskId(sysUserMultiBo.getTaskId()).singleResult();
if (task == null) {
@ -72,7 +73,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
queryWrapper.eq(StringUtils.isNotEmpty(sysUserMultiBo.getDeptId()), SysUser::getDeptId, sysUserMultiBo.getDeptId());
queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode());
if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) {
List<Long> assigneeList = (List) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList());
List<Long> assigneeList = (List<Long>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList());
queryWrapper.notIn(CollectionUtil.isNotEmpty(assigneeList), SysUser::getUserId, assigneeList);
} else {
List<Task> list = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
@ -92,6 +93,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
* @param taskId 任务id 任务id
*/
@Override
@SuppressWarnings("unchecked")
public List<TaskVo> getWorkflowDeleteMultiInstanceList(String taskId) {
Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult();
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
@ -161,11 +163,11 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
*/
private Page<SysUserVo> recordPage(Page<SysUserVo> page) {
List<SysUserVo> records = page.getRecords();
if (CollectionUtil.isEmpty(records)) {
if (CollUtil.isEmpty(records)) {
return page;
}
List<Long> collectDeptId = records.stream().map(SysUserVo::getDeptId).filter(Objects::nonNull).collect(Collectors.toList());
if (CollectionUtil.isEmpty(collectDeptId)) {
List<Long> collectDeptId = StreamUtils.toList(records, SysUserVo::getDeptId);
if (CollUtil.isEmpty(collectDeptId)) {
return page;
}
List<SysDeptVo> sysDeptList = sysDeptMapper.selectVoBatchIds(collectDeptId);
@ -187,7 +189,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
return Collections.emptyList();
}
LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery();
//检索条件
// 检索条件
queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode());
queryWrapper.in(SysUser::getUserId, userIds);
List<SysUserVo> sysUserVos = sysUserMapper.selectVoList(queryWrapper);

View File

@ -75,7 +75,7 @@ public class WorkflowUtils {
if (jsonBytes == null) {
return new byte[0];
}
//1. json字节码转成 BpmnModel 对象
// 1. json字节码转成 BpmnModel 对象
ObjectMapper objectMapper = JsonUtils.getObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonBytes);
BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(jsonNode);
@ -83,7 +83,7 @@ public class WorkflowUtils {
if (bpmnModel.getProcesses().isEmpty()) {
return new byte[0];
}
//2.将bpmnModel转为xml
// 2.将bpmnModel转为xml
return new BpmnXMLConverter().convertToXML(bpmnModel);
}
@ -127,32 +127,32 @@ public class WorkflowUtils {
private static void checkBpmnNode(Collection<FlowElement> flowElements, boolean subtask) throws ServerException {
if (CollUtil.isEmpty(flowElements)) {
throw new ServerException(subtask ? "子流程必须存在节点" : "" + "必须存在节点!");
throw new ServerException(subtask ? "子流程必须存在节点" : "必须存在节点!");
}
List<StartEvent> startEventList = flowElements.stream().filter(StartEvent.class::isInstance).map(StartEvent.class::cast).collect(Collectors.toList());
if (CollUtil.isEmpty(startEventList)) {
throw new ServerException(subtask ? "子流程必须存在开始节点" : "" + "必须存在开始节点!");
throw new ServerException(subtask ? "子流程必须存在开始节点" : "必须存在开始节点!");
}
if (startEventList.size() > 1) {
throw new ServerException(subtask ? "子流程只能存在一个开始节点" : "" + "只能存在一个开始节点!");
throw new ServerException(subtask ? "子流程只能存在一个开始节点" : "只能存在一个开始节点!");
}
StartEvent startEvent = startEventList.get(0);
List<SequenceFlow> outgoingFlows = startEvent.getOutgoingFlows();
if (CollUtil.isEmpty(outgoingFlows)) {
throw new ServerException(subtask ? "子流程流程节点为空,请至少设计一条主线流程!" : "" + "流程节点为空,请至少设计一条主线流程!");
throw new ServerException(subtask ? "子流程流程节点为空,请至少设计一条主线流程!" : "流程节点为空,请至少设计一条主线流程!");
}
FlowElement targetFlowElement = outgoingFlows.get(0).getTargetFlowElement();
if (!(targetFlowElement instanceof UserTask)) {
throw new ServerException(subtask ? "子流程开始节点后第一个节点必须是用户任务!" : "" + "开始节点后第一个节点必须是用户任务!");
throw new ServerException(subtask ? "子流程开始节点后第一个节点必须是用户任务!" : "开始节点后第一个节点必须是用户任务!");
}
List<EndEvent> endEventList = flowElements.stream().filter(EndEvent.class::isInstance).map(EndEvent.class::cast).collect(Collectors.toList());
if (CollUtil.isEmpty(endEventList)) {
throw new ServerException(subtask ? "子流程必须存在结束节点!" : "" + "必须存在结束节点!");
throw new ServerException(subtask ? "子流程必须存在结束节点!" : "必须存在结束节点!");
}
}
@ -298,7 +298,7 @@ public class WorkflowUtils {
return;
}
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(actHiProcinst, ProcessInstanceVo.class);
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstanceVo.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus()));
ReflectUtils.invokeSetter(obj, PROCESS_INSTANCE_VO, processInstanceVo);
}
@ -320,18 +320,18 @@ public class WorkflowUtils {
if (CollUtil.isEmpty(actHiProcinstList)) {
ProcessInstanceVo processInstanceVo = new ProcessInstanceVo();
processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstanceVo.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus()));
ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo);
} else {
ActHiProcinst actHiProcinst = actHiProcinstList.stream().filter(e -> e.getBusinessKey().equals(fieldValue)).findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(actHiProcinst)) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(actHiProcinst, ProcessInstanceVo.class);
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstanceVo.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus()));
ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo);
} else {
ProcessInstanceVo processInstanceVo = new ProcessInstanceVo();
processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstanceVo.getBusinessStatus()));
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus()));
ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo);
}
}

View File

@ -0,0 +1,3 @@
java包使用 `.` 分割 resource 目录使用 `/` 分割
<br>
此文件目的 防止文件夹粘连找不到 `xml` 文件