diff --git a/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java b/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java index 35827c3c..7c73346e 100644 --- a/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java +++ b/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java @@ -75,27 +75,48 @@ public class BladeFlow implements Serializable { * 历史任务结束时间 */ private Date historyTaskEndTime; + /** + * 执行ID + */ private String executionId; /** * 流程实例ID */ private String processInstanceId; /** - * 流程信息 + * 流程ID */ private String processDefinitionId; + /** + * 流程标识 + */ private String processDefinitionKey; + /** + * 流程名 + */ private String processDefinitionName; + /** + * 流程版本 + */ private int processDefinitionVersion; + /** + * 流程说明 + */ private String processDefinitionDesc; + /** + * 流程简图名 + */ private String processDefinitionDiagramResName; + /** + * 流程重命名 + */ private String processDefinitionResName; /** - * 已办任务流程实例ID 查看流程图会用到 + * 历史任务流程实例ID 查看流程图会用到 */ private String historyProcessInstanceId; /** - * 流程实例是否结束(true:结束,false:未结束) + * 流程实例是否结束 */ private String processIsFinished; /** diff --git a/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClient.java b/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClient.java index 2711f7ac..1bf6c34f 100644 --- a/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClient.java +++ b/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClient.java @@ -37,7 +37,8 @@ import java.util.Map; public interface IFlowClient { String API_PREFIX = "/client"; - String START_PROCESS_INSTANCE_BY_Id = API_PREFIX + "start-process-instance-by-id"; + String START_PROCESS_INSTANCE_BY_ID = API_PREFIX + "start-process-instance-by-id"; + String START_PROCESS_INSTANCE_BY_KEY = API_PREFIX + "start-process-instance-by-key"; /** * 开启流程 @@ -47,7 +48,18 @@ public interface IFlowClient { * @param variables 参数 * @return BladeFlow */ - @PostMapping(START_PROCESS_INSTANCE_BY_Id) + @PostMapping(START_PROCESS_INSTANCE_BY_ID) BladeFlow startProcessInstanceById(@RequestParam("processDefinitionId") String processDefinitionId, @RequestParam("businessKey") String businessKey, @RequestBody Map variables); + /** + * 开启流程 + * + * @param processDefinitionKey 流程标识 + * @param businessKey 业务key + * @param variables 参数 + * @return BladeFlow + */ + @PostMapping(START_PROCESS_INSTANCE_BY_KEY) + BladeFlow startProcessInstanceByKey(@RequestParam("processDefinitionKey") String processDefinitionKey, @RequestParam("businessKey") String businessKey, @RequestBody Map variables); + } diff --git a/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClientFallback.java b/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClientFallback.java index fa9795fa..0e668f59 100644 --- a/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClientFallback.java +++ b/blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClientFallback.java @@ -32,4 +32,9 @@ public class IFlowClientFallback implements IFlowClient { public BladeFlow startProcessInstanceById(String processDefinitionId, String businessKey, Map variables) { return null; } + + @Override + public BladeFlow startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map variables) { + return null; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java index 3247455d..d90ea18a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java @@ -55,6 +55,10 @@ public class ProcessLeave extends BaseEntity { * 请假理由 */ private String reason; + /** + * 审批人 + */ + private String taskUser; /** * 批复 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java index 232e16b0..b1ffcf1b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java @@ -19,7 +19,6 @@ package org.springblade.desk.service.impl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.secure.utils.SecureUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.entity.ProcessLeave; import org.springblade.desk.mapper.LeaveMapper; @@ -57,7 +56,7 @@ public class LeaveServiceImpl extends BaseServiceImpl save(leave); // 启动流程 variables.put("businessId", leave.getId()); - variables.put("taskUser", SecureUtil.getUserAccount()); + variables.put("taskUser", leave.getTaskUser()); variables.put("days", Duration.between(leave.getStartTime(), leave.getEndTime()).toDays()); BladeFlow bladeFlow = flowClient.startProcessInstanceById(leave.getProcessId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(leave.getId())), variables); log.debug("流程已启动,流程ID:" + bladeFlow.getProcessInstanceId()); diff --git a/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/feign/FlowClient.java b/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/feign/FlowClient.java index 1c103a75..eddec464 100644 --- a/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/feign/FlowClient.java +++ b/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/feign/FlowClient.java @@ -42,10 +42,26 @@ public class FlowClient implements IFlowClient { private IdentityService identityService; @Override - @PostMapping(START_PROCESS_INSTANCE_BY_Id) + @PostMapping(START_PROCESS_INSTANCE_BY_ID) public BladeFlow startProcessInstanceById(String processDefinitionId, String businessKey, @RequestBody Map variables) { - identityService.setAuthenticatedUserId(SecureUtil.getUserAccount()); + // 设置流程启动用户 + identityService.setAuthenticatedUserId(String.valueOf(SecureUtil.getUserId())); + // 开启流程 ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, businessKey, variables); + // 组装流程通用类 + BladeFlow flow = new BladeFlow(); + flow.setProcessInstanceId(processInstance.getId()); + return flow; + } + + @Override + @PostMapping(START_PROCESS_INSTANCE_BY_KEY) + public BladeFlow startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map variables) { + // 设置流程启动用户 + identityService.setAuthenticatedUserId(String.valueOf(SecureUtil.getUserId())); + // 开启流程 + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables); + // 组装流程通用类 BladeFlow flow = new BladeFlow(); flow.setProcessInstanceId(processInstance.getId()); return flow; diff --git a/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java b/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java index 6c04961b..6d92ef35 100644 --- a/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java +++ b/blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java @@ -19,7 +19,6 @@ package org.springblade.flowable.business.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.flowable.engine.HistoryService; -import org.flowable.engine.RepositoryService; import org.flowable.engine.TaskService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; @@ -47,13 +46,12 @@ import java.util.List; @AllArgsConstructor public class FlowBusinessServiceImpl implements FlowBusinessService { - private RepositoryService repositoryService; private TaskService taskService; private HistoryService historyService; @Override public IPage selectClaimPage(IPage page, BladeFlow bladeFlow) { - String taskUser = SecureUtil.getUserAccount(); + String taskUser = String.valueOf(SecureUtil.getUserId()); List flowList = new LinkedList<>(); // 等待签收的任务 @@ -71,12 +69,12 @@ public class FlowBusinessServiceImpl implements FlowBusinessService { page.setTotal(count); // 设置数据 page.setRecords(flowList); - return null; + return page; } @Override public IPage selectTodoPage(IPage page, BladeFlow bladeFlow) { - String taskUser = SecureUtil.getUserAccount(); + String taskUser = String.valueOf(SecureUtil.getUserId()); List flowList = new LinkedList<>(); // 已签收的任务 @@ -99,7 +97,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService { @Override public IPage selectSendPage(IPage page, BladeFlow bladeFlow) { - String taskUser = SecureUtil.getUserAccount(); + String taskUser = String.valueOf(SecureUtil.getUserId()); List flowList = new LinkedList<>(); HistoricProcessInstanceQuery historyQuery = historyService.createHistoricProcessInstanceQuery().startedBy(taskUser).orderByProcessInstanceStartTime().desc(); @@ -148,7 +146,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService { @Override public IPage selectDonePage(IPage page, BladeFlow bladeFlow) { - String taskUser = SecureUtil.getUserAccount(); + String taskUser = String.valueOf(SecureUtil.getUserId()); List flowList = new LinkedList<>(); HistoricTaskInstanceQuery doneQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(taskUser).finished() diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java index 439de825..82cce269 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java @@ -20,9 +20,7 @@ import io.swagger.annotations.*; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; -import org.springblade.core.secure.annotation.PreAuth; import org.springblade.core.tool.api.R; -import org.springblade.core.tool.constant.RoleConstant; import org.springblade.core.tool.node.INode; import org.springblade.core.tool.utils.Func; import org.springblade.system.entity.Dict; @@ -49,7 +47,6 @@ import static org.springblade.common.cache.CacheNames.DICT_VALUE; @AllArgsConstructor @RequestMapping("/dict") @Api(value = "字典", tags = "字典") -@PreAuth(RoleConstant.HAS_ROLE_ADMIN) public class DictController extends BladeController { private IDictService dictService; diff --git a/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java b/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java index 1920ef95..3ede42bd 100644 --- a/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java +++ b/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java @@ -41,6 +41,7 @@ import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; +import java.util.List; import java.util.Map; /** @@ -128,10 +129,23 @@ public class UserController { } @PostMapping("/reset-password") - @ApiOperation(value = "初始化密码", notes = "传入userId集合", position = 5) + @ApiOperation(value = "初始化密码", notes = "传入userId集合", position = 6) public R resetPassword(@ApiParam(value = "userId集合", required = true) @RequestParam String userIds) { boolean temp = userService.resetPassword(userIds); return R.status(temp); } + /** + * 用户列表 + * + * @param user + * @return + */ + @GetMapping("/user-list") + @ApiOperation(value = "用户列表", notes = "传入user", position = 7) + public R> userList(User user) { + List list = userService.list(Condition.getQueryWrapper(user)); + return R.data(list); + } + } diff --git a/doc/sql/bladex-update-RC9.sql b/doc/sql/bladex-update-RC9.sql index 1abeb368..9f44f166 100644 --- a/doc/sql/bladex-update-RC9.sql +++ b/doc/sql/bladex-update-RC9.sql @@ -101,6 +101,20 @@ VALUES (@dictid, 'flow', 1, '请假流程', 1, NULL, 0); INSERT INTO `bladex`.`blade_dict`(`parent_id`, `code`, `dict_key`, `dict_value`, `sort`, `remark`, `is_deleted`) VALUES (@dictid, 'flow', 2, '报销流程', 2, NULL, 0); +-- ---------------------------- +-- 用户数据增加 +-- ---------------------------- +INSERT INTO `bladex`.`blade_user`(`tenant_code`, `account`, `password`, `name`, `real_name`, `email`, `phone`, `birthday`, `sex`, `role_id`, `dept_id`, `create_user`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) VALUES ('000000', 'hr', '5e79b90f7bba52d54115f086e48f539016a27ec6', '人事', '人事', NULL, NULL, NULL, NULL, '3', '1', 1, '2019-04-27 17:03:10', 1, '2019-04-27 17:03:10', 1, 0); +INSERT INTO `bladex`.`blade_user`(`tenant_code`, `account`, `password`, `name`, `real_name`, `email`, `phone`, `birthday`, `sex`, `role_id`, `dept_id`, `create_user`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) VALUES ('000000', 'manager', 'dfbaa3b61caa3a319f463cc165085aa8c822d2ce', '经理', '经理', NULL, NULL, NULL, NULL, '4', '1', 1, '2019-04-27 17:03:38', 1, '2019-04-27 17:03:38', 1, 0); +INSERT INTO `bladex`.`blade_user`(`tenant_code`, `account`, `password`, `name`, `real_name`, `email`, `phone`, `birthday`, `sex`, `role_id`, `dept_id`, `create_user`, `create_time`, `update_user`, `update_time`, `status`, `is_deleted`) VALUES ('000000', 'boss', 'abe57d23e18f7ad8ea99c86e430c90a05119a9d3', '老板', '老板', NULL, NULL, NULL, NULL, '5', '1', 1, '2019-04-27 17:03:55', 1, '2019-04-27 17:03:55', 1, 0); + +-- ---------------------------- +-- 角色数据增加 +-- ---------------------------- +INSERT INTO `bladex`.`blade_role`(`tenant_code`, `parent_id`, `role_name`, `sort`, `role_alias`, `is_deleted`) VALUES ('000000', 2, '人事', 1, 'hr', 0); +INSERT INTO `bladex`.`blade_role`(`tenant_code`, `parent_id`, `role_name`, `sort`, `role_alias`, `is_deleted`) VALUES ('000000', 2, '经理', 2, 'manager', 0); +INSERT INTO `bladex`.`blade_role`(`tenant_code`, `parent_id`, `role_name`, `sort`, `role_alias`, `is_deleted`) VALUES ('000000', 2, '老板', 3, 'boss', 0); + -- ---------------------------- -- 增加业务流程表 -- ---------------------------- @@ -112,6 +126,7 @@ CREATE TABLE `blade_process_leave` ( `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请假理由', +`task_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '审批人', `comment` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '领导意见', `apply_time` datetime(0) NULL DEFAULT NULL COMMENT '申请时间', `create_user` int(11) NULL DEFAULT NULL COMMENT '创建人',