Browse Source

增加流程历史记录

test
smallchill 6 years ago
parent
commit
5eef42af38
  1. 7
      blade-common/src/main/java/org/springblade/common/cache/CacheNames.java
  2. 5
      blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java
  3. 16
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  4. 5
      blade-service/blade-flow/pom.xml
  5. 31
      blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java
  6. 6
      blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/constant/FlowConstant.java
  7. 35
      blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/controller/FlowProcessController.java
  8. 3
      blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/entity/FlowProcess.java
  9. 11
      blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/service/FlowService.java
  10. 108
      blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/service/impl/FlowServiceImpl.java
  11. 39
      blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/utils/FlowCache.java
  12. 7
      blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java
  13. 3
      blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
  14. 5
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java
  15. 2
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java
  16. 9
      blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

7
blade-common/src/main/java/org/springblade/common/cache/CacheNames.java vendored

@ -23,11 +23,6 @@ package org.springblade.common.cache;
*/
public interface CacheNames {
String NOTICE_ONE = "blade_notice:one";
String DICT_VALUE = "blade_dict:value";
String DICT_LIST = "blade_dict:list";
String AUTH_ROUTES = "blade_menu:auth_routes";
String NOTICE_ONE = "blade:notice:one";
}

5
blade-service-api/blade-flow-api/src/main/java/org/springblade/flowable/core/entity/BladeFlow.java

@ -122,11 +122,11 @@ public class BladeFlow implements Serializable {
/**
* 历史活动流程
*/
private String hisActInsActName;
private String historyActivityName;
/**
* 历史活动耗时
*/
private String hisActInsDuTime;
private String historyActivityDurationTime;
/**
* 业务绑定Table
*/
@ -159,4 +159,5 @@ public class BladeFlow implements Serializable {
* 流程参数
*/
private Map<String, Object> variables;
}

16
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@ -19,6 +19,7 @@ package org.springblade.system.user.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@ -34,7 +35,18 @@ import org.springframework.web.bind.annotation.RequestParam;
)
public interface IUserClient {
String API_PREFIX = "/user";
String API_PREFIX = "/client";
String USER_INFO = API_PREFIX + "/user-info";
String USER_INFO_BY_ID = API_PREFIX + "/user-info-by-id";
/**
* 获取用户信息
*
* @param userId 用户id
* @return
*/
@GetMapping(USER_INFO_BY_ID)
R<User> userInfoById(@RequestParam("userId") Integer userId);
/**
* 获取用户信息
@ -43,7 +55,7 @@ public interface IUserClient {
* @param account 账号
* @return
*/
@GetMapping(API_PREFIX + "/user-info")
@GetMapping(USER_INFO)
R<UserInfo> userInfo(@RequestParam("tenantCode") String tenantCode, @RequestParam("account") String account);
}

5
blade-service/blade-flow/pom.xml

@ -37,6 +37,11 @@
<version>${bladex.tool.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-user-api</artifactId>
<version>${bladex.tool.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-flow-api</artifactId>

31
blade-service/blade-flow/src/main/java/org/springblade/flowable/business/service/impl/FlowBusinessServiceImpl.java

@ -19,6 +19,7 @@ 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;
@ -31,7 +32,7 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.flowable.business.service.FlowBusinessService;
import org.springblade.flowable.core.entity.BladeFlow;
import org.springblade.flowable.engine.constant.FlowableConstant;
import org.springblade.flowable.engine.constant.FlowConstant;
import org.springblade.flowable.engine.utils.FlowCache;
import org.springframework.stereotype.Service;
@ -47,6 +48,7 @@ import java.util.List;
@AllArgsConstructor
public class FlowBusinessServiceImpl implements FlowBusinessService {
private RepositoryService repositoryService;
private TaskService taskService;
private HistoryService historyService;
@ -60,7 +62,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
.includeProcessVariables().active().orderByTaskCreateTime().desc();
// 构建列表数据
buildFlowTaskList(bladeFlow, flowList, claimQuery, FlowableConstant.STATUS_CLAIM);
buildFlowTaskList(bladeFlow, flowList, claimQuery, FlowConstant.STATUS_CLAIM);
// 计算总数
long count = claimQuery.count();
@ -83,7 +85,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
.includeProcessVariables().orderByTaskCreateTime().desc();
// 构建列表数据
buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowableConstant.STATUS_TODO);
buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowConstant.STATUS_TODO);
// 计算总数
long count = todoQuery.count();
@ -116,7 +118,7 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
flow.setBusinessTable(businessKey[0]);
flow.setBusinessId(businessKey[1]);
}
flow.setHisActInsActName(historicProcessInstance.getName());
flow.setHistoryActivityName(historicProcessInstance.getName());
flow.setProcessInstanceId(historicProcessInstance.getId());
flow.setHistoryProcessInstanceId(historicProcessInstance.getId());
// ProcessDefinition
@ -133,11 +135,11 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
flow.setTaskDefinitionKey(historyTask.getTaskDefinitionKey());
// Status
if (historicProcessInstance.getEndActivityId() != null) {
flow.setProcessIsFinished(FlowableConstant.STATUS_FINISHED);
flow.setProcessIsFinished(FlowConstant.STATUS_FINISHED);
} else {
flow.setProcessIsFinished(FlowableConstant.STATUS_UNFINISHED);
flow.setProcessIsFinished(FlowConstant.STATUS_UNFINISHED);
}
flow.setStatus(FlowableConstant.STATUS_FINISH);
flow.setStatus(FlowConstant.STATUS_FINISH);
flowList.add(flow);
});
@ -191,17 +193,14 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
flow.setBusinessTable(businessKey[0]);
flow.setBusinessId(businessKey[1]);
if (historicProcessInstance.getEndActivityId() != null) {
flow.setProcessIsFinished(FlowableConstant.STATUS_FINISHED);
flow.setProcessIsFinished(FlowConstant.STATUS_FINISHED);
} else {
flow.setProcessIsFinished(FlowableConstant.STATUS_UNFINISHED);
flow.setProcessIsFinished(FlowConstant.STATUS_UNFINISHED);
}
}
flow.setStatus(FlowableConstant.STATUS_FINISH);
flow.setStatus(FlowConstant.STATUS_FINISH);
flowList.add(flow);
});
// 计算总数
long count = doneQuery.count();
// 设置总数
@ -235,8 +234,10 @@ public class FlowBusinessServiceImpl implements FlowBusinessService {
flow.setClaimTime(task.getClaimTime());
flow.setExecutionId(task.getExecutionId());
flow.setVariables(task.getProcessVariables());
flow.setCategory(task.getCategory());
flow.setCategoryName(FlowCache.getCategoryName(task.getCategory()));
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
flow.setCategory(processDefinition.getCategory());
flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory()));
HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(task.getProcessInstanceId());
if (Func.isNotEmpty(historicProcessInstance)) {

6
blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/constant/FlowableConstant.java → blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/constant/FlowConstant.java

@ -21,7 +21,7 @@ package org.springblade.flowable.engine.constant;
*
* @author zhuangqian
*/
public interface FlowableConstant {
public interface FlowConstant {
String FLOWABLE_BASE_PACKAGES = "org.flowable.ui";
@ -45,4 +45,8 @@ public interface FlowableConstant {
String STATUS_FINISH = "finish";
String START_EVENT = "startEvent";
String END_EVENT = "endEvent";
}

35
blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/controller/FlowProcessController.java

@ -25,8 +25,11 @@ import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.image.ProcessDiagramGenerator;
import org.springblade.flowable.core.entity.BladeFlow;
import org.springblade.flowable.engine.service.FlowService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
@ -51,41 +54,55 @@ public class FlowProcessController {
private RuntimeService runtimeService;
private HistoryService historyService;
private ProcessEngine processEngine;
private FlowService flowService;
/**
* 获取流转历史列表
*
* @param processId 流程实例id
* @param startActivityId 开始节点id
* @param endActivityId 结束节点id
*/
@GetMapping(value = "history-flow-list")
public List<BladeFlow> historyFlowList(@RequestParam String processId, String startActivityId, String endActivityId) {
return flowService.historyFlowList(processId, startActivityId, endActivityId);
}
/**
* 获取流程节点进程图
*
* @param processInstanceId 流程实例id
* @param processId 流程实例id
* @param httpServletResponse http响应
*/
@GetMapping(value = "diagram-view")
public void diagramView(String processInstanceId, HttpServletResponse httpServletResponse) {
diagram(processInstanceId, httpServletResponse);
public void diagramView(String processId, HttpServletResponse httpServletResponse) {
diagram(processId, httpServletResponse);
}
/**
* 根据流程节点绘图
*
* @param processInstanceId 流程实例id
* @param processId 流程实例id
* @param httpServletResponse http响应
*/
private void diagram(String processInstanceId, HttpServletResponse httpServletResponse) {
private void diagram(String processId, HttpServletResponse httpServletResponse) {
// 获得当前活动的节点
String processDefinitionId;
// 如果流程已经结束,则得到结束节点
if (this.isFinished(processInstanceId)) {
HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
if (this.isFinished(processId)) {
HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).singleResult();
processDefinitionId = pi.getProcessDefinitionId();
} else {
// 如果流程没有结束,则取当前活动节点
// 根据流程实例ID获得当前处于活动状态的ActivityId合集
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
processDefinitionId = pi.getProcessDefinitionId();
}
List<String> highLightedActivities = new ArrayList<>();
// 获得活动的节点
List<HistoricActivityInstance> highLightedActivityList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
List<HistoricActivityInstance> highLightedActivityList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processId).orderByHistoricActivityInstanceStartTime().asc().list();
for (HistoricActivityInstance tempActivity : highLightedActivityList) {
String activityId = tempActivity.getActivityId();

3
blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/entity/FlowProcess.java

@ -18,10 +18,7 @@ package org.springblade.flowable.engine.entity;
import lombok.Data;
import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.flowable.engine.utils.FlowCache;
import org.springblade.system.utils.DictUtil;
import java.io.Serializable;
import java.util.Date;

11
blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/service/FlowService.java

@ -18,6 +18,7 @@ package org.springblade.flowable.engine.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.flowable.core.entity.BladeFlow;
import org.springblade.flowable.engine.entity.FlowModel;
import org.springblade.flowable.engine.entity.FlowProcess;
import org.springframework.web.multipart.MultipartFile;
@ -50,6 +51,16 @@ public interface FlowService extends IService<FlowModel> {
*/
IPage<FlowProcess> selectProcessPage(IPage<FlowProcess> page, String category);
/**
* 获取流转历史列表
*
* @param processId 流程实例id
* @param startActivityId 开始节点id
* @param endActivityId 结束节点id
* @return
*/
List<BladeFlow> historyFlowList(String processId, String startActivityId, String endActivityId);
/**
* 变更流程状态
*

108
blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/service/impl/FlowServiceImpl.java

@ -27,31 +27,37 @@ import org.flowable.bpmn.converter.BpmnXMLConverter;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.Process;
import org.flowable.editor.language.json.converter.BpmnJsonConverter;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.repository.ProcessDefinitionQuery;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.task.Comment;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.flowable.engine.constant.FlowableConstant;
import org.springblade.flowable.core.entity.BladeFlow;
import org.springblade.flowable.engine.constant.FlowConstant;
import org.springblade.flowable.engine.entity.FlowModel;
import org.springblade.flowable.engine.entity.FlowProcess;
import org.springblade.flowable.engine.mapper.FlowMapper;
import org.springblade.flowable.engine.service.FlowService;
import org.springblade.flowable.engine.utils.FlowCache;
import org.springblade.system.user.entity.User;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 工作流服务实现类
@ -69,6 +75,8 @@ public class FlowServiceImpl extends ServiceImpl<FlowMapper, FlowModel> implemen
private ObjectMapper objectMapper;
private RepositoryService repositoryService;
private RuntimeService runtimeService;
private HistoryService historyService;
private TaskService taskService;
@Override
public IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel) {
@ -95,12 +103,94 @@ public class FlowServiceImpl extends ServiceImpl<FlowMapper, FlowModel> implemen
return page;
}
@Override
public List<BladeFlow> historyFlowList(String processId, String startActivityId, String endActivityId) {
List<BladeFlow> flowList = new LinkedList<>();
List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processId).orderByHistoricActivityInstanceStartTime().asc().orderByHistoricActivityInstanceEndTime().asc().list();
boolean start = false;
Map<String, Integer> activityMap = new HashMap<>(16);
for (int i = 0; i < historicActivityInstanceList.size(); i++) {
HistoricActivityInstance historicActivityInstance = historicActivityInstanceList.get(i);
// 过滤开始节点前的节点
if (StringUtil.isNotBlank(startActivityId) && startActivityId.equals(historicActivityInstance.getActivityId())) {
start = true;
}
if (StringUtil.isNotBlank(startActivityId) && !start) {
continue;
}
// 显示开始节点和结束节点,并且执行人不为空的任务
if (StringUtils.isNotBlank(historicActivityInstance.getAssignee())
|| FlowConstant.START_EVENT.equals(historicActivityInstance.getActivityType())
|| FlowConstant.END_EVENT.equals(historicActivityInstance.getActivityType())) {
// 给节点增加序号
Integer activityNum = activityMap.get(historicActivityInstance.getActivityId());
if (activityNum == null) {
activityMap.put(historicActivityInstance.getActivityId(), activityMap.size());
}
BladeFlow flow = new BladeFlow();
flow.setHistoryActivityName(historicActivityInstance.getActivityName());
flow.setCreateTime(historicActivityInstance.getStartTime());
flow.setEndTime(historicActivityInstance.getEndTime());
flow.setHistoryActivityDurationTime(DateUtil.secondToTime(historicActivityInstance.getDurationInMillis()));
// 获取流程发起人名称
if (FlowConstant.START_EVENT.equals(historicActivityInstance.getActivityType())) {
List<HistoricProcessInstance> processInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).orderByProcessInstanceStartTime().asc().list();
if (processInstanceList.size() > 0) {
if (StringUtil.isNotBlank(processInstanceList.get(0).getStartUserId())) {
String userId = processInstanceList.get(0).getStartUserId();
User user = FlowCache.getUser(Func.toInt(userId));
if (user != null) {
flow.setAssignee(historicActivityInstance.getAssignee());
flow.setAssigneeName(user.getName());
}
}
}
}
// 获取任务执行人名称
if (StringUtil.isNotBlank(historicActivityInstance.getAssignee())) {
User user = FlowCache.getUser(Func.toInt(historicActivityInstance.getAssignee()));
if (user != null) {
flow.setAssignee(historicActivityInstance.getAssignee());
flow.setAssigneeName(user.getName());
}
}
// 获取意见评论内容
if (StringUtil.isNotBlank(historicActivityInstance.getTaskId())) {
List<Comment> commentList = taskService.getTaskComments(historicActivityInstance.getTaskId());
if (commentList.size() > 0) {
flow.setComment(commentList.get(0).getFullMessage());
}
}
flowList.add(flow);
}
// 过滤结束节点后的节点
if (StringUtils.isNotBlank(endActivityId) && endActivityId.equals(historicActivityInstance.getActivityId())) {
boolean temp = false;
Integer activityNum = activityMap.get(historicActivityInstance.getActivityId());
// 该活动节点,后续节点是否在结束节点之前,在后续节点中是否存在
for (int j = i + 1; j < historicActivityInstanceList.size(); j++) {
HistoricActivityInstance hi = historicActivityInstanceList.get(j);
Integer activityNumA = activityMap.get(hi.getActivityId());
boolean numberTemp = activityNumA != null && activityNumA < activityNum;
boolean equalsTemp = StringUtils.equals(hi.getActivityId(), historicActivityInstance.getActivityId());
if (numberTemp || equalsTemp) {
temp = true;
}
}
if (!temp) {
break;
}
}
}
return flowList;
}
@Override
public String changeState(String state, String processId) {
if (state.equals(FlowableConstant.ACTIVE)) {
if (state.equals(FlowConstant.ACTIVE)) {
repositoryService.activateProcessDefinitionById(processId, true, null);
return StringUtil.format("激活ID为 [{}] 的流程成功", processId);
} else if (state.equals(FlowableConstant.SUSPEND)) {
} else if (state.equals(FlowConstant.SUSPEND)) {
repositoryService.suspendProcessDefinitionById(processId, true, null);
return StringUtil.format("挂起ID为 [{}] 的流程成功", processId);
} else {
@ -153,8 +243,8 @@ public class FlowServiceImpl extends ServiceImpl<FlowMapper, FlowModel> implemen
}
byte[] bytes = getBpmnXML(model);
String processName = model.getName();
if (!StringUtil.endsWithIgnoreCase(processName, FlowableConstant.SUFFIX)) {
processName += FlowableConstant.SUFFIX;
if (!StringUtil.endsWithIgnoreCase(processName, FlowConstant.SUFFIX)) {
processName += FlowConstant.SUFFIX;
}
Deployment deployment = repositoryService.createDeployment().addBytes(processName, bytes).name(model.getName()).key(model.getModelKey()).deploy();
return deploy(deployment, category);

39
blade-service/blade-flow/src/main/java/org/springblade/flowable/engine/utils/FlowCache.java

@ -19,9 +19,12 @@ package org.springblade.flowable.engine.utils;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.ProcessDefinition;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springblade.system.utils.DictUtil;
/**
@ -32,26 +35,30 @@ import org.springblade.system.utils.DictUtil;
public class FlowCache {
private static final String FLOW_CACHE = "flow:process";
private static final String FLOW_CACHE_PD_ID_ = "definition_id_";
private static final String FLOW_CACHE_ID_ = "definition:id";
private static final String USER_CACHE = "blade:user";
private static final String USER_CACHE_ID_ = "user:id";
private static RepositoryService repositoryService;
private static IUserClient userClient;
static {
repositoryService = SpringUtil.getBean(RepositoryService.class);
userClient = SpringUtil.getBean(IUserClient.class);
}
/**
* 获得流程定义对象
*
* @param procDefId 流程对象id
* @param processDefinitionId 流程对象id
* @return
*/
public static ProcessDefinition getProcessDefinition(String procDefId) {
ProcessDefinition pd = CacheUtil.get(FLOW_CACHE, FLOW_CACHE_PD_ID_ + procDefId, ProcessDefinition.class);
public static ProcessDefinition getProcessDefinition(String processDefinitionId) {
ProcessDefinition pd = CacheUtil.get(FLOW_CACHE, FLOW_CACHE_ID_ + processDefinitionId, ProcessDefinition.class);
if (Func.isEmpty(pd)) {
pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult();
pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
if (Func.isNotEmpty(pd)) {
CacheUtil.put(FLOW_CACHE, FLOW_CACHE_PD_ID_ + procDefId, pd);
CacheUtil.put(FLOW_CACHE, FLOW_CACHE_ID_ + processDefinitionId, pd);
}
}
return pd;
@ -70,4 +77,24 @@ public class FlowCache {
return DictUtil.getValue(category.split(StringPool.UNDERSCORE)[0], Func.toInt(category.split(StringPool.UNDERSCORE)[1]));
}
/**
* 获取用户名
*
* @param userId 用户id
* @return
*/
public static User getUser(Integer userId) {
User user = CacheUtil.get(USER_CACHE, USER_CACHE_ID_ + userId, User.class);
if (Func.isEmpty(user)) {
R<User> result = userClient.userInfoById(userId);
if (result.isSuccess()) {
user = result.getData();
if (Func.isNotEmpty(user)) {
CacheUtil.put(USER_CACHE, USER_CACHE_ID_ + userId, user);
}
}
}
return user;
}
}

7
blade-service/blade-system/src/main/java/org/springblade/system/controller/DictController.java

@ -35,8 +35,9 @@ import javax.validation.Valid;
import java.util.List;
import java.util.Map;
import static org.springblade.common.cache.CacheNames.DICT_LIST;
import static org.springblade.common.cache.CacheNames.DICT_VALUE;
import static org.springblade.core.cache.constant.CacheConstant.DICT_LIST;
import static org.springblade.core.cache.constant.CacheConstant.DICT_VALUE;
/**
* 控制器
@ -104,7 +105,7 @@ public class DictController extends BladeController {
* 删除
*/
@PostMapping("/remove")
@CacheEvict(cacheNames = {DICT_LIST, DICT_VALUE})
@CacheEvict(cacheNames = {DICT_LIST, DICT_VALUE}, allEntries = true)
@ApiOperation(value = "删除", notes = "传入ids", position = 7)
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(dictService.removeByIds(Func.toIntList(ids)));

3
blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java

@ -39,7 +39,8 @@ import javax.validation.Valid;
import java.util.List;
import java.util.Map;
import static org.springblade.common.cache.CacheNames.AUTH_ROUTES;
import static org.springblade.core.cache.constant.CacheConstant.AUTH_ROUTES;
/**
* 控制器

5
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java

@ -34,8 +34,9 @@ import org.springframework.stereotype.Service;
import java.util.List;
import static org.springblade.common.cache.CacheNames.DICT_LIST;
import static org.springblade.common.cache.CacheNames.DICT_VALUE;
import static org.springblade.core.cache.constant.CacheConstant.DICT_VALUE;
import static org.springblade.core.cache.constant.CacheConstant.DICT_LIST;
/**
* 服务实现类

2
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java

@ -39,7 +39,7 @@ import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
import static org.springblade.common.cache.CacheNames.AUTH_ROUTES;
import static org.springblade.core.cache.constant.CacheConstant.AUTH_ROUTES;
/**
* 服务实现类

9
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@ -18,6 +18,7 @@ package org.springblade.system.user.feign;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
import org.springblade.system.user.service.IUserService;
import org.springframework.web.bind.annotation.GetMapping;
@ -35,7 +36,13 @@ public class UserClient implements IUserClient {
IUserService service;
@Override
@GetMapping(API_PREFIX + "/user-info")
@GetMapping(USER_INFO_BY_ID)
public R<User> userInfoById(Integer userId) {
return R.data(service.getById(userId));
}
@Override
@GetMapping(USER_INFO)
public R<UserInfo> userInfo(String tenantCode, String account) {
return R.data(service.userInfo(tenantCode, account));
}

Loading…
Cancel
Save