Browse Source

事务第一层流转

test
smallchill 6 years ago
parent
commit
e7474300f7
  1. 27
      blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java
  2. 16
      blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClient.java
  3. 5
      blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/feign/IFlowClientFallback.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java
  5. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/service/impl/LeaveServiceImpl.java
  6. 20
      blade-service/blade-flow/src/main/java/org/springblade/flowable/business/feign/FlowClient.java
  7. 12
      blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java
  8. 3
      blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java
  9. 16
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  10. 15
      doc/sql/bladex-update-RC9.sql

27
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;
/**

16
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<String, Object> 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<String, Object> variables);
}

5
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<String, Object> variables) {
return null;
}
@Override
public BladeFlow startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String, Object> variables) {
return null;
}
}

4
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;
/**
* 批复
*/

3
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<LeaveMapper, ProcessLeave>
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());

20
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<String, Object> 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<String, Object> variables) {
// 设置流程启动用户
identityService.setAuthenticatedUserId(String.valueOf(SecureUtil.getUserId()));
// 开启流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
// 组装流程通用类
BladeFlow flow = new BladeFlow();
flow.setProcessInstanceId(processInstance.getId());
return flow;

12
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<BladeFlow> selectClaimPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
String taskUser = SecureUtil.getUserAccount();
String taskUser = String.valueOf(SecureUtil.getUserId());
List<BladeFlow> 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<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
String taskUser = SecureUtil.getUserAccount();
String taskUser = String.valueOf(SecureUtil.getUserId());
List<BladeFlow> flowList = new LinkedList<>();
// 已签收的任务
@ -99,7 +97,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
@Override
public IPage<BladeFlow> selectSendPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
String taskUser = SecureUtil.getUserAccount();
String taskUser = String.valueOf(SecureUtil.getUserId());
List<BladeFlow> flowList = new LinkedList<>();
HistoricProcessInstanceQuery historyQuery = historyService.createHistoricProcessInstanceQuery().startedBy(taskUser).orderByProcessInstanceStartTime().desc();
@ -148,7 +146,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
@Override
public IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
String taskUser = SecureUtil.getUserAccount();
String taskUser = String.valueOf(SecureUtil.getUserId());
List<BladeFlow> flowList = new LinkedList<>();
HistoricTaskInstanceQuery doneQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(taskUser).finished()

3
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;

16
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<List<User>> userList(User user) {
List<User> list = userService.list(Condition.getQueryWrapper(user));
return R.data(list);
}
}

15
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 '创建人',

Loading…
Cancel
Save