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> <groupId>org.dromara</groupId>
<artifactId>ruoyi-common-websocket</artifactId> <artifactId>ruoyi-common-websocket</artifactId>
</dependency> </dependency>
<!-- 短信 用哪个导入哪个依赖 -->
<!-- <dependency>-->
<!-- <groupId>com.aliyun</groupId>-->
<!-- <artifactId>dysmsapi20170525</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.tencentcloudapi</groupId>-->
<!-- <artifactId>tencentcloud-sdk-java-sms</artifactId>-->
<!-- </dependency>-->
</dependencies> </dependencies>

View File

@ -1,11 +1,14 @@
package org.dromara.workflow.common; package org.dromara.workflow.common;
import lombok.Data;
/** /**
* 分页参数 * 分页参数
* *
* @author may * @author may
*/ */
@Data
public class PageEntity { public class PageEntity {
/** /**
@ -22,15 +25,4 @@ public class PageEntity {
return (pageNum - 1) * pageSize; 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.exception.ServiceException;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import java.util.Arrays;
/** /**
* 业务状态枚举 * 业务状态枚举
* *
@ -58,17 +60,15 @@ public enum BusinessStatusEnum {
* *
* @param status 状态 * @param status 状态
*/ */
public static String getEumByStatus(String status) { public static String findByStatus(String status) {
if (StringUtils.isBlank(status)) { if (StringUtils.isBlank(status)) {
return StrUtil.EMPTY; return StrUtil.EMPTY;
} }
return Arrays.stream(BusinessStatusEnum.values())
for (BusinessStatusEnum statusEnum : BusinessStatusEnum.values()) { .filter(statusEnum -> statusEnum.getStatus().equals(status))
if (statusEnum.getStatus().equals(status)) { .findFirst()
return statusEnum.getDesc(); .map(BusinessStatusEnum::getDesc)
} .orElse(StrUtil.EMPTY);
}
return StrUtil.EMPTY;
} }
/** /**

View File

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

View File

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

View File

@ -4,6 +4,7 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; 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.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; 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") @RequestMapping("/workflow/processDefinition")
public class ActProcessDefinitionController extends BaseController { public class ActProcessDefinitionController extends BaseController {
private final IActProcessDefinitionService iActProcessDefinitionService; private final IActProcessDefinitionService actProcessDefinitionService;
/** /**
* 分页查询 * 分页查询
@ -37,8 +40,8 @@ public class ActProcessDefinitionController extends BaseController {
* @param processDefinitionBo 参数 * @param processDefinitionBo 参数
*/ */
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<ProcessDefinitionVo> getByPage(ProcessDefinitionBo processDefinitionBo) { public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo) {
return iActProcessDefinitionService.getByPage(processDefinitionBo); return actProcessDefinitionService.page(processDefinitionBo);
} }
/** /**
@ -48,7 +51,7 @@ public class ActProcessDefinitionController extends BaseController {
*/ */
@GetMapping("/getProcessDefinitionListByKey/{key}") @GetMapping("/getProcessDefinitionListByKey/{key}")
public R<List<ProcessDefinitionVo>> getProcessDefinitionListByKey(@NotEmpty(message = "流程定义key不能为空") @PathVariable String 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}") @GetMapping("/processDefinitionImage/{processDefinitionId}")
public R<String> processDefinitionImage(@PathVariable String 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}") @GetMapping("/processDefinitionXml/{processDefinitionId}")
public R<Map<String, Object>> getXml(@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) { public R<Map<String, Object>> getXml(@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
String xmlStr = iActProcessDefinitionService.processDefinitionXml(processDefinitionId); String xmlStr = actProcessDefinitionService.processDefinitionXml(processDefinitionId);
List<String> xml = new ArrayList<>(Arrays.asList(xmlStr.split("\n"))); map.put("xml", StringUtils.splitList("\n"));
map.put("xml", xml);
map.put("xmlStr", xmlStr); map.put("xmlStr", xmlStr);
return R.ok(map); return R.ok(map);
} }
@ -86,7 +88,7 @@ public class ActProcessDefinitionController extends BaseController {
@DeleteMapping("/{deploymentId}/{processDefinitionId}") @DeleteMapping("/{deploymentId}/{processDefinitionId}")
public R<Void> deleteDeployment(@NotBlank(message = "流程部署id不能为空") @PathVariable String deploymentId, public R<Void> deleteDeployment(@NotBlank(message = "流程部署id不能为空") @PathVariable String deploymentId,
@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) { @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) @Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
@PutMapping("/updateProcessDefState/{processDefinitionId}") @PutMapping("/updateProcessDefState/{processDefinitionId}")
public R<Void> updateProcDefState(@NotBlank(message = "流程定义id不能为空") @PathVariable String 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}") @PutMapping("/migrationProcessDefinition/{currentProcessDefinitionId}/{fromProcessDefinitionId}")
public R<Void> migrationProcessDefinition(@NotBlank(message = "当前流程定义id") @PathVariable String currentProcessDefinitionId, public R<Void> migrationProcessDefinition(@NotBlank(message = "当前流程定义id") @PathVariable String currentProcessDefinitionId,
@NotBlank(message = "需要迁移到的流程定义id") @PathVariable String fromProcessDefinitionId) { @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) @Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
@PutMapping("/convertToModel/{processDefinitionId}") @PutMapping("/convertToModel/{processDefinitionId}")
public R<Void> convertToModel(@NotEmpty(message = "流程定义id不能为空") @PathVariable String 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) @Log(title = "流程定义管理", businessType = BusinessType.INSERT)
@PostMapping("/deployByFile") @PostMapping("/deployByFile")
public R<Void> deployByFile(@RequestParam("file") MultipartFile file, @RequestParam("categoryCode") String categoryCode) { 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") @RequestMapping("/workflow/processInstance")
public class ActProcessInstanceController extends BaseController { public class ActProcessInstanceController extends BaseController {
private final IActProcessInstanceService iActProcessInstanceService; private final IActProcessInstanceService actProcessInstanceService;
/** /**
* 分页查询正在运行的流程实例 * 分页查询正在运行的流程实例
@ -40,7 +40,7 @@ public class ActProcessInstanceController extends BaseController {
*/ */
@GetMapping("/getProcessInstanceRunningByPage") @GetMapping("/getProcessInstanceRunningByPage")
public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) { 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") @GetMapping("/getProcessInstanceFinishByPage")
public TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo) { 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}") @GetMapping("/getHistoryProcessImage/{processInstanceId}")
public R<String> getHistoryProcessImage(@NotBlank(message = "流程实例id不能为空") @PathVariable String 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}") @GetMapping("/getHistoryRecord/{processInstanceId}")
public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String 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) @Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@PostMapping("/deleteRuntimeProcessInst") @PostMapping("/deleteRuntimeProcessInst")
public R<Void> deleteRuntimeProcessInst(@Validated(AddGroup.class) @RequestBody ProcessInvalidBo processInvalidBo) { 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) @Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceIds}") @DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceIds}")
public R<Void> deleteRuntimeProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] 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) @Log(title = "流程实例管理", businessType = BusinessType.DELETE)
@DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceIds}") @DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceIds}")
public R<Void> deleteFinishProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] 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) @Log(title = "流程实例管理", businessType = BusinessType.INSERT)
@PostMapping("/cancelProcessApply/{processInstanceId}") @PostMapping("/cancelProcessApply/{processInstanceId}")
public R<Void> cancelProcessApply(@NotBlank(message = "流程实例id不能为空") @PathVariable String 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") @GetMapping("/getCurrentSubmitByPage")
public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) { 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) @Log(title = "流程实例管理", businessType = BusinessType.INSERT)
@PostMapping("/taskUrging") @PostMapping("/taskUrging")
public R<Void> taskUrging(@RequestBody TaskUrgingBo taskUrgingBo) { 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; package org.dromara.workflow.controller;
import cn.hutool.core.convert.Convert;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
@ -31,7 +32,7 @@ import java.util.Map;
@RequestMapping("/workflow/task") @RequestMapping("/workflow/task")
public class ActTaskController extends BaseController { public class ActTaskController extends BaseController {
private final IActTaskService iActTaskService; private final IActTaskService actTaskService;
private final TaskService taskService; private final TaskService taskService;
@ -45,7 +46,7 @@ public class ActTaskController extends BaseController {
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/startWorkFlow") @PostMapping("/startWorkFlow")
public R<Map<String, Object>> startWorkFlow(@RequestBody StartProcessBo startProcessBo) { 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); return R.ok("提交成功", map);
} }
@ -58,7 +59,7 @@ public class ActTaskController extends BaseController {
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/completeTask") @PostMapping("/completeTask")
public R<Void> completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) { 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") @GetMapping("/getTaskWaitByPage")
public TableDataInfo<TaskVo> getTaskWaitByPage(TaskBo taskBo) { 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") @GetMapping("/getAllTaskWaitByPage")
public TableDataInfo<TaskVo> getAllTaskWaitByPage(TaskBo taskBo) { 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") @GetMapping("/getTaskFinishByPage")
public TableDataInfo<TaskVo> getTaskFinishByPage(TaskBo taskBo) { 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") @GetMapping("/getAllTaskFinishByPage")
public TableDataInfo<TaskVo> getAllTaskFinishByPage(TaskBo taskBo) { 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}") @PostMapping("/claim/{taskId}")
public R<Void> claimTask(@NotBlank(message = "任务id不能为空") @PathVariable String taskId) { public R<Void> claimTask(@NotBlank(message = "任务id不能为空") @PathVariable String taskId) {
try { try {
taskService.claim(taskId, String.valueOf(LoginHelper.getUserId())); taskService.claim(taskId, Convert.toStr(LoginHelper.getUserId()));
return R.ok(); return R.ok();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -143,7 +144,7 @@ public class ActTaskController extends BaseController {
@Log(title = "任务管理", businessType = BusinessType.INSERT) @Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/delegateTask") @PostMapping("/delegateTask")
public R<Void> delegateTask(@Validated({AddGroup.class}) @RequestBody DelegateBo delegateBo) { 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) @Log(title = "任务管理", businessType = BusinessType.DELETE)
@PostMapping("/terminationTask") @PostMapping("/terminationTask")
public R<Void> terminationTask(@RequestBody TerminationBo terminationBo) { 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) @Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/transferTask") @PostMapping("/transferTask")
public R<Void> transferTask(@Validated({AddGroup.class}) @RequestBody TransmitBo transmitBo) { 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) @Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/addMultiInstanceExecution") @PostMapping("/addMultiInstanceExecution")
public R<Void> addMultiInstanceExecution(@Validated({AddGroup.class}) @RequestBody AddMultiBo addMultiBo) { 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) @Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/deleteMultiInstanceExecution") @PostMapping("/deleteMultiInstanceExecution")
public R<Void> deleteMultiInstanceExecution(@Validated({AddGroup.class}) @RequestBody DeleteMultiBo deleteMultiBo) { 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) @Log(title = "任务管理", businessType = BusinessType.INSERT)
@PostMapping("/backProcess") @PostMapping("/backProcess")
public R<String> backProcess(@RequestBody BackProcessBo backProcessBo) { 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) @Log(title = "任务管理", businessType = BusinessType.UPDATE)
@PutMapping("/updateAssignee/{taskIds}/{userId}") @PutMapping("/updateAssignee/{taskIds}/{userId}")
public R<Void> updateAssignee(@PathVariable String[] taskIds, @PathVariable String 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; package org.dromara.workflow.controller;
import cn.hutool.core.io.resource.ResourceUtil;
import org.apache.commons.io.IOUtils; 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.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@ -25,14 +28,12 @@ import java.nio.charset.StandardCharsets;
@RequestMapping("/workflow/model") @RequestMapping("/workflow/model")
public class StencilsetRestResource { public class StencilsetRestResource {
@GetMapping(value="/rest/stencil-sets/editor") @GetMapping(value = "/rest/stencil-sets/editor")
public String getStencilset() { public String getStencilset() {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("static/stencilset.json"); try (InputStream inputStream = ResourceUtil.getStream("static/stencilset.json")) {
try { return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
assert inputStream != null; } catch (Exception e) {
return IOUtils.toString(inputStream, StandardCharsets.UTF_8); throw new SecurityException("Error while loading stencil set", e);
} catch (Exception e) { }
throw new SecurityException("Error while loading stencil set", e);
} }
}
} }

View File

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

View File

@ -1,27 +1,28 @@
package org.dromara.workflow.controller; 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 cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.workflow.domain.WfBusinessForm; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.*; import jakarta.validation.constraints.NotEmpty;
import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotNull;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import lombok.RequiredArgsConstructor;
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.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; 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.excel.utils.ExcelUtil;
import org.dromara.workflow.domain.vo.WfBusinessFormVo; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.workflow.domain.bo.WfBusinessFormBo; import org.dromara.common.log.annotation.Log;
import org.dromara.workflow.service.IWfBusinessFormService; 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.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; 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 cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotEmpty;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import jakarta.validation.constraints.NotNull;
import org.dromara.common.log.annotation.Log; import lombok.RequiredArgsConstructor;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; 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.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.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.workflow.service.IWfCategoryService; 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") @SaCheckPermission("workflow:category:query")
@GetMapping("/{id}") @GetMapping("/{id}")
public R<WfCategoryVo> getInfo(@NotNull(message = "主键不能为空") public R<WfCategoryVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) { @PathVariable Long id) {
return R.ok(wfCategoryService.queryById(id)); return R.ok(wfCategoryService.queryById(id));
} }

View File

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

View File

@ -2,16 +2,19 @@ package org.dromara.workflow.controller;
import lombok.RequiredArgsConstructor; 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.domain.R;
import org.dromara.common.core.validate.AddGroup; 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.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.bo.WfFormDefinitionBo; import org.dromara.workflow.domain.bo.WfFormDefinitionBo;
import org.dromara.workflow.service.IWfFormDefinitionService; 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.domain.vo.TaskVo;
import org.dromara.workflow.service.IWorkflowUserService; import org.dromara.workflow.service.IWorkflowUserService;
import org.springframework.validation.annotation.Validated; 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; import java.util.List;
@ -25,7 +28,7 @@ import java.util.List;
@RequestMapping("/workflow/user") @RequestMapping("/workflow/user")
public class WorkflowUserController extends BaseController { public class WorkflowUserController extends BaseController {
private final IWorkflowUserService iWorkflowUserService; private final IWorkflowUserService workflowUserService;
/** /**
* 分页查询工作流选择加签人员 * 分页查询工作流选择加签人员
@ -34,7 +37,7 @@ public class WorkflowUserController extends BaseController {
*/ */
@GetMapping("/getWorkflowAddMultiListByPage") @GetMapping("/getWorkflowAddMultiListByPage")
public TableDataInfo<SysUserVo> getWorkflowAddMultiInstanceByPage(SysUserMultiBo sysUserMultiBo) { 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}") @GetMapping("/getWorkflowDeleteMultiInstanceList/{taskId}")
public R<List<TaskVo>> getWorkflowDeleteMultiInstanceList(@PathVariable String 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}") @GetMapping("/getUserListByIds/{userIds}")
public R<List<SysUserVo>> getUserListByIds(@PathVariable List<Long> 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; 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 lombok.Data;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.io.Serial;
/** /**
* 流程实例对象 act_hi_procinst * 流程实例对象 act_hi_procinst
* *

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain.bo; 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 io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; 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 * 流程分类业务对象 wf_category
@ -23,25 +24,25 @@ public class WfCategoryBo extends BaseEntity {
/** /**
* 主键 * 主键
*/ */
@NotNull(message = "主键不能为空", groups = { EditGroup.class }) @NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/** /**
* 分类名称 * 分类名称
*/ */
@NotBlank(message = "分类名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "分类名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String categoryName; private String categoryName;
/** /**
* 分类编码 * 分类编码
*/ */
@NotBlank(message = "分类编码不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "分类编码不能为空", groups = {AddGroup.class, EditGroup.class})
private String categoryCode; private String categoryCode;
/** /**
* 父级id * 父级id
*/ */
@NotNull(message = "父级id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "父级id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long parentId; 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; private Long formId;
/** /**
* 表单名称 * 表单名称
*/ */
@NotBlank(message = "表单名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "表单名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String formName; private String formName;
/** /**
* 表单配置 * 表单配置
*/ */
@NotBlank(message = "表单配置不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "表单配置不能为空", groups = {AddGroup.class, EditGroup.class})
private String formConfig; private String formConfig;
/** /**
* 表单内容 * 表单内容
*/ */
@NotBlank(message = "表单内容不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "表单内容不能为空", groups = {AddGroup.class, EditGroup.class})
private String content; private String content;
/** /**
* 状态0正常 1停用 * 状态0正常 1停用
*/ */
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "状态不能为空", groups = {AddGroup.class, EditGroup.class})
private String status; private String status;
/** /**

View File

@ -1,13 +1,14 @@
package org.dromara.workflow.domain.bo; 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 io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; 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 * 动态单与流程定义关联信息业务对象 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; private Long id;
/** /**
* 动态表单id * 动态表单id
*/ */
@NotNull(message = "动态表单id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "动态表单id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long formId; private Long formId;
/** /**
* 流程定义id * 流程定义id
*/ */
@NotBlank(message = "流程定义key不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "流程定义key不能为空", groups = {AddGroup.class, EditGroup.class})
private String processDefinitionKey; private String processDefinitionKey;
/** /**
* 流程定义名称 * 流程定义名称
*/ */
@NotBlank(message = "流程定义名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "流程定义名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String processDefinitionName; private String processDefinitionName;
/** /**
* 流程定义id * 流程定义id
*/ */
@NotBlank(message = "流程定义id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "流程定义id不能为空", groups = {AddGroup.class, EditGroup.class})
private String processDefinitionId; private String processDefinitionId;
/** /**
* 流程定义版本 * 流程定义版本
*/ */
@NotNull(message = "流程定义版本不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "流程定义版本不能为空", groups = {AddGroup.class, EditGroup.class})
private Long processDefinitionVersion; private Long processDefinitionVersion;

View File

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

View File

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

View File

@ -12,22 +12,22 @@
*/ */
package org.dromara.workflow.domain.vo; package org.dromara.workflow.domain.vo;
import lombok.Data;
import java.util.List; import java.util.List;
/** /**
* @author Tijs Rademakers * @author Tijs Rademakers
*/ */
@Data
public class ResultListDataRepresentation { public class ResultListDataRepresentation {
protected Integer size; protected Integer size;
protected Long total; protected Long total;
protected Integer start; protected Integer start;
protected List<? extends Object> data; protected List<?> data;
public ResultListDataRepresentation() { public ResultListDataRepresentation(List<?> data) {
}
public ResultListDataRepresentation(List<? extends Object> data) {
this.data = data; this.data = data;
if (data != null) { if (data != null) {
size = data.size(); 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; package org.dromara.workflow.domain.vo;
import org.dromara.workflow.domain.TestLeave;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.workflow.domain.vo.ProcessInstanceVo; import org.dromara.workflow.domain.TestLeave;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.flowable.cmd; 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.Command;
import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity; 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.io.Serializable;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 获取并行网关执行后保留的执行实例数据 * 获取并行网关执行后保留的执行实例数据
@ -34,6 +34,6 @@ public class ExecutionChildByExecutionIdCmd implements Command<List<ExecutionEnt
// 通过当前执行数据的父执行查询所有子执行数据 // 通过当前执行数据的父执行查询所有子执行数据
List<ExecutionEntity> allChildrenExecution = List<ExecutionEntity> allChildrenExecution =
executionEntityManager.collectChildren(executionEntity.getParent()); 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 @Autowired
private GlobalFlowableListener globalFlowableListener; private GlobalFlowableListener globalFlowableListener;
@Override @Override
public void configure(SpringProcessEngineConfiguration processEngineConfiguration) { public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
processEngineConfiguration.setIdGenerator(IdWorker::getIdStr); processEngineConfiguration.setIdGenerator(IdWorker::getIdStr);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +1,10 @@
package org.dromara.workflow.service; 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.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.Collection;
import java.util.List; import java.util.List;

View File

@ -1,10 +1,10 @@
package org.dromara.workflow.service; 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.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.Collection;
import java.util.List; import java.util.List;

View File

@ -1,8 +1,8 @@
package org.dromara.workflow.service; package org.dromara.workflow.service;
import org.dromara.workflow.domain.WfCategory; 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.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;

View File

@ -1,9 +1,9 @@
package org.dromara.workflow.service; 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.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.Collection;
import java.util.List; import java.util.List;

View File

@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.domain.ActHiProcinst; import org.dromara.workflow.domain.ActHiProcinst;
import org.springframework.stereotype.Service;
import org.dromara.workflow.mapper.ActHiProcinstMapper; import org.dromara.workflow.mapper.ActHiProcinstMapper;
import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActHiProcinstService;
import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -32,8 +32,8 @@ public class ActHiProcinstServiceImpl implements IActHiProcinstService {
@Override @Override
public List<ActHiProcinst> selectByBusinessKeyIn(List<String> businessKeys) { public List<ActHiProcinst> selectByBusinessKeyIn(List<String> businessKeys) {
return baseMapper.selectList(new LambdaQueryWrapper<ActHiProcinst>() return baseMapper.selectList(new LambdaQueryWrapper<ActHiProcinst>()
.in(ActHiProcinst::getBusinessKey, businessKeys) .in(ActHiProcinst::getBusinessKey, businessKeys)
.eq(ActHiProcinst::getTenantId, TenantHelper.getTenantId())); .eq(TenantHelper.isEnable(), ActHiProcinst::getTenantId, TenantHelper.getTenantId()));
} }
/** /**
@ -44,8 +44,8 @@ public class ActHiProcinstServiceImpl implements IActHiProcinstService {
@Override @Override
public ActHiProcinst selectByBusinessKey(String businessKey) { public ActHiProcinst selectByBusinessKey(String businessKey) {
return baseMapper.selectOne(new LambdaQueryWrapper<ActHiProcinst>() return baseMapper.selectOne(new LambdaQueryWrapper<ActHiProcinst>()
.eq(ActHiProcinst::getBusinessKey, businessKey) .eq(ActHiProcinst::getBusinessKey, businessKey)
.eq(ActHiProcinst::getTenantId, TenantHelper.getTenantId())); .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.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.dromara.common.core.exception.ServiceException; 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.json.utils.JsonUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
@ -76,7 +77,7 @@ public class ActModelServiceImpl implements IActModelService {
* @return 返回分页列表 * @return 返回分页列表
*/ */
@Override @Override
public TableDataInfo<Model> getByPage(ModelBo modelBo) { public TableDataInfo<Model> page(ModelBo modelBo) {
ModelQuery query = repositoryService.createModelQuery(); ModelQuery query = repositoryService.createModelQuery();
query.modelTenantId(TenantHelper.getTenantId()); query.modelTenantId(TenantHelper.getTenantId());
if (StringUtils.isNotEmpty(modelBo.getName())) { if (StringUtils.isNotEmpty(modelBo.getName())) {
@ -93,8 +94,8 @@ public class ActModelServiceImpl implements IActModelService {
query.orderByCreateTime().desc(); query.orderByCreateTime().desc();
// 分页查询 // 分页查询
List<Model> modelList = query.listPage(modelBo.getPageNum(), modelBo.getPageSize()); List<Model> modelList = query.listPage(modelBo.getPageNum(), modelBo.getPageSize());
if (CollectionUtil.isNotEmpty(modelList)) { if (CollUtil.isNotEmpty(modelList)) {
modelList.forEach(e -> { modelList.parallelStream().forEach(e -> {
boolean isNull = JSONUtil.isNull(JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION)); boolean isNull = JSONUtil.isNull(JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION));
if (!isNull) { if (!isNull) {
e.setMetaInfo((String) JSONUtil.parseObj(e.getMetaInfo()).get(ModelDataJsonConstants.MODEL_DESCRIPTION)); 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"); JsonNode childShapes = jsonNode.get("childShapes");
for (JsonNode childShape : childShapes) { for (JsonNode childShape : childShapes) {
JsonNode properties = childShape.get("properties"); JsonNode properties = childShape.get("properties");
if(!properties.path("usertaskassignment").isMissingNode()){ if (!properties.path("usertaskassignment").isMissingNode()) {
JsonNode usertaskassignment = properties.get("usertaskassignment"); JsonNode usertaskassignment = properties.get("usertaskassignment");
if(!usertaskassignment.path("assignment").isMissingNode()){ if (!usertaskassignment.path("assignment").isMissingNode()) {
JsonNode assignment = usertaskassignment.get("assignment"); JsonNode assignment = usertaskassignment.get("assignment");
if(!assignment.path("assignee").isMissingNode()){ if (!assignment.path("assignee").isMissingNode()) {
if ("$INITIATOR".equals(assignment.get("assignee").textValue())) { if ("$INITIATOR".equals(assignment.get("assignee").textValue())) {
((ObjectNode) assignment).put("assignee", "${INITIATOR}"); ((ObjectNode) assignment).put("assignee", "${INITIATOR}");
} }
@ -406,16 +407,15 @@ public class ActModelServiceImpl implements IActModelService {
public ResultListDataRepresentation getGroups(String filter) { public ResultListDataRepresentation getGroups(String filter) {
LambdaQueryWrapper<SysRole> wrapper = Wrappers.lambdaQuery(); 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<SysRole> sysRoles = sysRoleMapper.selectList(wrapper);
List<GroupRepresentation> result = new ArrayList<>(); List<GroupRepresentation> result = StreamUtils.toList(sysRoles, sysRole -> {
for (SysRole sysRole : sysRoles) {
GroupRepresentation groupRepresentation = new GroupRepresentation(); GroupRepresentation groupRepresentation = new GroupRepresentation();
groupRepresentation.setId(sysRole.getRoleId().toString()); groupRepresentation.setId(sysRole.getRoleId().toString());
groupRepresentation.setName(sysRole.getRoleName()); groupRepresentation.setName(sysRole.getRoleName());
groupRepresentation.setType(sysRole.getRoleKey()); groupRepresentation.setType(sysRole.getRoleKey());
result.add(groupRepresentation); return groupRepresentation;
} });
return new ResultListDataRepresentation(result); return new ResultListDataRepresentation(result);
} }
} }

View File

@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.dromara.common.core.exception.ServiceException; 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.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
@ -56,7 +57,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
private final ProcessMigrationService processMigrationService; private final ProcessMigrationService processMigrationService;
private final IWfCategoryService iWfCategoryService; private final IWfCategoryService wfCategoryService;
/** /**
* 分页查询 * 分页查询
@ -65,7 +66,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
* @return 返回分页列表 * @return 返回分页列表
*/ */
@Override @Override
public TableDataInfo<ProcessDefinitionVo> getByPage(ProcessDefinitionBo processDefinitionBo) { public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo) {
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery(); ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
query.processDefinitionTenantId(TenantHelper.getTenantId()); query.processDefinitionTenantId(TenantHelper.getTenantId());
if (StringUtils.isNotEmpty(processDefinitionBo.getKey())) { 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<ProcessDefinition> definitionList = query.latestVersion().listPage(processDefinitionBo.getPageNum(), processDefinitionBo.getPageSize());
List<Deployment> deploymentList = null; List<Deployment> deploymentList = null;
if (CollUtil.isNotEmpty(definitionList)) { if (CollUtil.isNotEmpty(definitionList)) {
List<String> deploymentIds = definitionList.stream().map(ProcessDefinition::getDeploymentId).collect(Collectors.toList()); List<String> deploymentIds = StreamUtils.toList(definitionList, ProcessDefinition::getDeploymentId);
deploymentList = repositoryService.createDeploymentQuery() deploymentList = repositoryService.createDeploymentQuery().deploymentIds(deploymentIds).list();
.deploymentIds(deploymentIds).list();
} }
for (ProcessDefinition processDefinition : definitionList) { for (ProcessDefinition processDefinition : definitionList) {
ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class); ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class);
@ -281,7 +281,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
@Override @Override
public boolean deployByFile(MultipartFile file, String categoryCode) { public boolean deployByFile(MultipartFile file, String categoryCode) {
try { try {
WfCategory wfCategory = iWfCategoryService.queryByCategoryCode(categoryCode); WfCategory wfCategory = wfCategoryService.queryByCategoryCode(categoryCode);
if (wfCategory == null) { if (wfCategory == null) {
throw new ServiceException("流程分类不存在"); 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.ProcessInstanceBo;
import org.dromara.workflow.domain.bo.ProcessInvalidBo; import org.dromara.workflow.domain.bo.ProcessInvalidBo;
import org.dromara.workflow.domain.bo.TaskUrgingBo; 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.CustomDefaultProcessDiagramGenerator;
import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd; import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd;
import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd; import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd;
import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.WorkflowUtils; 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.*;
import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstance;
@ -46,8 +52,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.awt.*; import java.awt.*;
import java.io.InputStream; import java.io.InputStream;
import java.util.*;
import java.util.List; import java.util.List;
import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -64,7 +70,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
private final RuntimeService runtimeService; private final RuntimeService runtimeService;
private final HistoryService historyService; private final HistoryService historyService;
private final TaskService taskService; private final TaskService taskService;
private final IActHiProcinstService iActHiProcinstService; private final IActHiProcinstService actHiProcinstService;
private final ManagementService managementService; private final ManagementService managementService;
@Value("${flowable.activity-font-name}") @Value("${flowable.activity-font-name}")
@ -105,7 +111,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
for (ProcessInstance processInstance : processInstances) { for (ProcessInstance processInstance : processInstances) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class); ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class);
processInstanceVo.setIsSuspended(processInstance.isSuspended()); processInstanceVo.setIsSuspended(processInstance.isSuspended());
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus())); processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstance.getBusinessStatus()));
list.add(processInstanceVo); list.add(processInstanceVo);
} }
long count = query.count(); long count = query.count();
@ -141,7 +147,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
List<HistoricProcessInstance> historicProcessInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize()); List<HistoricProcessInstance> historicProcessInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize());
for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) { for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class); ProcessInstanceVo processInstanceVo = BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class);
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(historicProcessInstance.getBusinessStatus())); processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(historicProcessInstance.getBusinessStatus()));
list.add(processInstanceVo); list.add(processInstanceVo);
} }
long count = query.count(); long count = query.count();
@ -212,7 +218,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Override @Override
public Map<String, Object> getHistoryRecord(String processInstanceId) { public Map<String, Object> getHistoryRecord(String processInstanceId) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
//查询任务办理记录 // 查询任务办理记录
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery() List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list(); .processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).orderByHistoricTaskInstanceEndTime().desc().list();
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); 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())) { if (StringUtils.isNotBlank(e.getFullMessage())) {
actHistoryInfoVo.setComment(e.getFullMessage()); actHistoryInfoVo.setComment(e.getFullMessage());
actHistoryInfoVo.setStatus(e.getType()); 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); actHistoryInfoVoList.add(actHistoryInfoVo);
} }
List<ActHistoryInfoVo> collect = new ArrayList<>(); List<ActHistoryInfoVo> collect = new ArrayList<>();
//待办理 // 待办理
List<ActHistoryInfoVo> waitingTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null); List<ActHistoryInfoVo> waitingTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null);
//已办理 // 已办理
List<ActHistoryInfoVo> finishTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null); List<ActHistoryInfoVo> finishTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null);
collect.addAll(waitingTask); collect.addAll(waitingTask);
collect.addAll(finishTask); collect.addAll(finishTask);
//审批记录 // 审批记录
map.put("historyRecordList", collect); map.put("historyRecordList", collect);
List<ActHistoryInfoVo> nodeInfoList = new ArrayList<>(); List<ActHistoryInfoVo> nodeInfoList = new ArrayList<>();
Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey); Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey);
@ -275,7 +281,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
}); });
nodeInfoList.add(actHistoryInfoVo); nodeInfoList.add(actHistoryInfoVo);
} }
//节点信息 // 节点信息
map.put("nodeListInfo", nodeInfoList); map.put("nodeListInfo", nodeInfoList);
BpmnModel bpmnModel = repositoryService.getBpmnModel(list.get(0).getProcessDefinitionId()); BpmnModel bpmnModel = repositoryService.getBpmnModel(list.get(0).getProcessDefinitionId());
List<GraphicInfoVo> graphicInfoVos = new ArrayList<>(); List<GraphicInfoVo> graphicInfoVos = new ArrayList<>();
@ -367,7 +373,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) { public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) {
try { try {
//1.删除运行中流程实例 // 1.删除运行中流程实例
List<Task> list = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds) List<Task> list = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds)
.taskTenantId(TenantHelper.getTenantId()).list(); .taskTenantId(TenantHelper.getTenantId()).list();
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); 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())); subTasks.forEach(e -> taskService.deleteTask(e.getId()));
} }
runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请"); runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
//2.删除历史记录 // 2.删除历史记录
List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery() List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list(); .processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list();
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
@ -397,8 +403,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean deleteRuntimeProcessAndHisInstByBusinessKeys(List<String> businessKeys) { public boolean deleteRuntimeProcessAndHisInstByBusinessKeys(List<String> businessKeys) {
try { try {
//1.删除运行中流程实例 // 1.删除运行中流程实例
List<ActHiProcinst> actHiProcinsts = iActHiProcinstService.selectByBusinessKeyIn(businessKeys); List<ActHiProcinst> actHiProcinsts = actHiProcinstService.selectByBusinessKeyIn(businessKeys);
if (CollUtil.isEmpty(actHiProcinsts)) { if (CollUtil.isEmpty(actHiProcinsts)) {
log.warn("当前业务ID:{}查询到流程实例为空!", businessKeys); log.warn("当前业务ID:{}查询到流程实例为空!", businessKeys);
return false; return false;
@ -411,7 +417,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
subTasks.forEach(e -> taskService.deleteTask(e.getId())); subTasks.forEach(e -> taskService.deleteTask(e.getId()));
} }
runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请"); runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
//2.删除历史记录 // 2.删除历史记录
List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery() List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list(); .processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(processInstanceIds)).list();
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
@ -522,7 +528,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
} }
for (HistoricProcessInstance processInstance : historicProcessInstanceList) { for (HistoricProcessInstance processInstance : historicProcessInstanceList) {
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class); ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class);
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus())); processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstance.getBusinessStatus()));
if (CollUtil.isNotEmpty(taskVoList)) { if (CollUtil.isNotEmpty(taskVoList)) {
List<TaskVo> collect = StreamUtils.filter(taskVoList, e -> e.getProcessInstanceId().equals(processInstance.getId())); List<TaskVo> collect = StreamUtils.filter(taskVoList, e -> e.getProcessInstanceId().equals(processInstance.getId()));
processInstanceVo.setTaskVoList(CollUtil.isNotEmpty(collect) ? collect : Collections.emptyList()); 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.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -218,12 +219,12 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(processInstanceList)) { if (CollUtil.isNotEmpty(processInstanceList)) {
processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus()); taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus())); taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey()); taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName()); 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.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId()));
taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null);
list.add(taskVo); list.add(taskVo);
@ -261,7 +262,7 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(processInstanceList)) { if (CollUtil.isNotEmpty(processInstanceList)) {
processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { processInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus()); taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus())); taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey()); taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName()); taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
}); });
@ -306,7 +307,7 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(historicProcessInstanceList)) { if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus()); taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus())); taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey()); taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName()); taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
}); });
@ -348,12 +349,12 @@ public class ActTaskServiceImpl implements IActTaskService {
if (CollUtil.isNotEmpty(historicProcessInstanceList)) { if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> { historicProcessInstanceList.stream().filter(e -> e.getId().equals(task.getProcessInstanceId())).findFirst().ifPresent(e -> {
taskVo.setBusinessStatus(e.getBusinessStatus()); taskVo.setBusinessStatus(e.getBusinessStatus());
taskVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(taskVo.getBusinessStatus())); taskVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(taskVo.getBusinessStatus()));
taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey()); taskVo.setProcessDefinitionKey(e.getProcessDefinitionKey());
taskVo.setProcessDefinitionName(e.getProcessDefinitionName()); taskVo.setProcessDefinitionName(e.getProcessDefinitionName());
}); });
} }
taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null); taskVo.setAssignee(Convert.toLong(task.getAssignee()));
list.add(taskVo); list.add(taskVo);
} }
long count = query.count(); long count = query.count();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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