mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-06 14:21:52 +08:00
修改请假流程
This commit is contained in:
@@ -36,25 +36,21 @@ public class OALeaveController {
|
||||
@Resource
|
||||
private OALeaveService leaveService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("创建请假申请")
|
||||
@PreAuthorize("@ss.hasPermission('oa:leave:create')")
|
||||
public CommonResult<Long> createLeave(@Valid @RequestBody OALeaveCreateReqVO createReqVO) {
|
||||
// TODO @芋艿:processKey 自己去理解下。不过得把 leave 变成枚举
|
||||
// TODO @芋艿 该方法没有用到, 是前一个版本的, 可以删掉。
|
||||
createReqVO.setProcessKey("leave");
|
||||
return success(leaveService.createLeave(createReqVO));
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/form-key/create")
|
||||
@ApiOperation("创建外置请假申请")
|
||||
public CommonResult<Long> createFormKeyLeave(@Valid @RequestBody OALeaveCreateReqVO createReqVO) {
|
||||
// TODO @芋艿:processKey 自己去理解下。不过得把 formkey 变成枚举
|
||||
// TODO @芋艿 : processKey 是 bpmn <process> 中定义的id, 提交业务表单时候, 需要启动流程, 或许从前台传更合适
|
||||
createReqVO.setProcessKey("leave-formkey");
|
||||
// processKey 前台传入
|
||||
return success(leaveService.createLeave(createReqVO));
|
||||
}
|
||||
|
||||
@GetMapping("/getLeaveApplyMembers")
|
||||
@ApiOperation("获取本人请假申请流程中审批人员,可先检查这些人员是否存在")
|
||||
public CommonResult<OALeaveApplyMembersVO> getLeaveApplyMembers() {
|
||||
return success(leaveService.getLeaveApplyMembers());
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@ApiOperation("更新请假申请")
|
||||
@PreAuthorize("@ss.hasPermission('oa:leave:update')")
|
||||
|
@@ -0,0 +1,25 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
@ApiModel("请假申请审批人员 Response VO")
|
||||
@Data
|
||||
@Builder
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
public class OALeaveApplyMembersVO {
|
||||
|
||||
@ApiModelProperty(value = "部门的hr")
|
||||
private String hr;
|
||||
|
||||
@ApiModelProperty(value = "部门的项目经理")
|
||||
private String pm;
|
||||
|
||||
@ApiModelProperty(value = "部门的部门经理")
|
||||
private String bm;
|
||||
}
|
@@ -3,11 +3,21 @@ package cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo;
|
||||
import lombok.*;
|
||||
import io.swagger.annotations.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@ApiModel("请假申请创建 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class OALeaveCreateReqVO extends OALeaveBaseVO {
|
||||
|
||||
/**
|
||||
* 对应 bpmn 文件 <process> 的 id
|
||||
*/
|
||||
@ApiModelProperty(value = "流程key")
|
||||
private String processKey;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "流程用户任务的变量")
|
||||
private Map<String,Object> taskVariables;
|
||||
}
|
||||
|
@@ -0,0 +1,29 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum FlowStatusEnum {
|
||||
|
||||
HANDLE(1, "处理中"),
|
||||
|
||||
PASS(2, "审批通过"),
|
||||
|
||||
REJECTED(3, "审批不通过");
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private final Integer status;
|
||||
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private final String desc;
|
||||
}
|
@@ -10,4 +10,10 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
|
||||
*/
|
||||
public interface OAErrorCodeConstants {
|
||||
ErrorCode LEAVE_NOT_EXISTS = new ErrorCode(1003001001, "请假申请不存在");
|
||||
ErrorCode PM_POST_NOT_EXISTS = new ErrorCode(1003001002, "项目经理岗位未设置");
|
||||
ErrorCode DEPART_PM_POST_NOT_EXISTS = new ErrorCode(1003001003, "部门的项目经理不存在");
|
||||
ErrorCode BM_POST_NOT_EXISTS = new ErrorCode(1003001004, "部门经理岗位未设置");
|
||||
ErrorCode DEPART_BM_POST_NOT_EXISTS = new ErrorCode(1003001005, "部门的部门经理不存在");
|
||||
ErrorCode HR_POST_NOT_EXISTS = new ErrorCode(1003001006, "HR岗位未设置");
|
||||
ErrorCode DAY_LEAVE_ERROR = new ErrorCode(1003001007, "请假天数必须大于0");
|
||||
}
|
||||
|
@@ -2,16 +2,21 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.oa.OALeaveMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.enums.FlowStatusEnum;
|
||||
import org.activiti.engine.delegate.DelegateExecution;
|
||||
import org.activiti.engine.delegate.ExecutionListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Objects;
|
||||
|
||||
// TODO @jason:类注释
|
||||
|
||||
/**
|
||||
* 请假流程结束流程监听处理服务, 根据请假申请审批通过,还是未通过, 更新请假表单
|
||||
*/
|
||||
@Component
|
||||
public class ReportBackEndProcessor implements ExecutionListener {
|
||||
public class LeaveApplyEndProcessor implements ExecutionListener {
|
||||
|
||||
@Resource
|
||||
private OALeaveMapper leaveMapper;
|
||||
@@ -20,10 +25,14 @@ public class ReportBackEndProcessor implements ExecutionListener {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void notify(DelegateExecution delegateExecution) {
|
||||
final String businessKey = delegateExecution.getProcessInstanceBusinessKey();
|
||||
final Object approved = delegateExecution.getVariable("approved");
|
||||
OALeaveDO updateDo = new OALeaveDO();
|
||||
updateDo.setId(Long.valueOf(businessKey));
|
||||
// TODO @json:status 要枚举起来,不要出现 magic number
|
||||
updateDo.setStatus(2);
|
||||
if (Objects.equals(approved, true)) {
|
||||
updateDo.setStatus(FlowStatusEnum.PASS.getStatus());
|
||||
}else{
|
||||
updateDo.setStatus(FlowStatusEnum.REJECTED.getStatus());
|
||||
}
|
||||
leaveMapper.updateById(updateDo);
|
||||
}
|
||||
|
@@ -1,10 +1,7 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.service.oa;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveCreateReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveUpdateReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeavePageReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.*;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
@@ -73,4 +70,11 @@ public interface OALeaveService {
|
||||
*/
|
||||
List<OALeaveDO> getLeaveList(OALeaveExportReqVO exportReqVO);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取本人请假申请流程中审批人员
|
||||
* @return 包括,本人部门的项目经理, 部门经理, HR
|
||||
*/
|
||||
OALeaveApplyMembersVO getLeaveApplyMembers();
|
||||
}
|
||||
|
@@ -1,13 +1,19 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.bpm.service.oa.impl;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveCreateReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveUpdateReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeavePageReqVO;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.*;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.convert.oa.OALeaveConvert;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.oa.OALeaveMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.enums.FlowStatusEnum;
|
||||
import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.OALeaveService;
|
||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserBaseVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
|
||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
|
||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
|
||||
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import org.activiti.api.task.model.Task;
|
||||
@@ -20,9 +26,11 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.LEAVE_NOT_EXISTS;
|
||||
import static cn.iocoder.yudao.adminserver.modules.bpm.enums.oa.OAErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.POST_CODE_DUPLICATE;
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
/**
|
||||
@@ -46,23 +54,33 @@ public class OALeaveServiceImpl implements OALeaveService {
|
||||
@Resource
|
||||
private TaskRuntime taskRuntime;
|
||||
|
||||
@Resource
|
||||
private SysPostMapper sysPostMapper;
|
||||
|
||||
@Resource
|
||||
private SysUserMapper sysUserMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createLeave(OALeaveCreateReqVO createReqVO) {
|
||||
// 插入 OA 请假单
|
||||
OALeaveDO leave = OALeaveConvert.INSTANCE.convert(createReqVO);
|
||||
leave.setStatus(1);
|
||||
leave.setStatus(FlowStatusEnum.HANDLE.getStatus());
|
||||
// TODO @jason:应该是存储 userId??
|
||||
leave.setUserId(SecurityFrameworkUtils.getLoginUser().getUsername());
|
||||
leaveMapper.insert(leave);
|
||||
|
||||
Date startTime = createReqVO.getStartTime();
|
||||
Date endTime = createReqVO.getEndTime();
|
||||
long day = DateUtil.betweenDay(startTime, endTime, false);
|
||||
if (day <= 0) {
|
||||
throw ServiceExceptionUtil.exception(DAY_LEAVE_ERROR);
|
||||
}
|
||||
Map<String, Object> taskVariables = createReqVO.getTaskVariables();
|
||||
taskVariables.put("day", day);
|
||||
// 创建工作流
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
// 如何得到部门领导人,暂时写死
|
||||
variables.put("deptLeader", "admin"); // TODO @芋艿:需要部门的负责人
|
||||
Long id = leave.getId();
|
||||
String businessKey = String.valueOf(id);
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(createReqVO.getProcessKey(), businessKey, variables);
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(createReqVO.getProcessKey(), businessKey, taskVariables);
|
||||
String processInstanceId = processInstance.getProcessInstanceId();
|
||||
|
||||
// 将工作流的编号,更新到 OA 请假单中
|
||||
@@ -104,9 +122,6 @@ public class OALeaveServiceImpl implements OALeaveService {
|
||||
this.validateLeaveExists(id);
|
||||
// 删除
|
||||
leaveMapper.deleteById(id);
|
||||
// TODO @jason:需要调用 runtimeService 的 delete 方法,删除???
|
||||
// TOTO @芋道源码 目前页面暂时没有实现基于业务表单的删除, 该代码自动生成的。
|
||||
// TODO @芋道源码 我理解提交流程后,是不允许删除的? , 只能在流程处理中作废流程
|
||||
}
|
||||
|
||||
private void validateLeaveExists(Long id) {
|
||||
@@ -135,4 +150,64 @@ public class OALeaveServiceImpl implements OALeaveService {
|
||||
return leaveMapper.selectList(exportReqVO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取本人请假申请流程中审批人员
|
||||
* @return 包括,本人部门的项目经理, 部门经理, hr
|
||||
*/
|
||||
@Override
|
||||
public OALeaveApplyMembersVO getLeaveApplyMembers() {
|
||||
final Long id = SecurityFrameworkUtils.getLoginUser().getId();
|
||||
//项目经理
|
||||
//TODO jason 定义enum
|
||||
SysPostDO pmPostDO = sysPostMapper.selectByCode("pm");
|
||||
if (Objects.isNull(pmPostDO)) {
|
||||
throw ServiceExceptionUtil.exception(PM_POST_NOT_EXISTS);
|
||||
}
|
||||
SysUserDO userDO = sysUserMapper.selectById(id);
|
||||
Set<Long> postIds = new HashSet<>(8);
|
||||
postIds.add( pmPostDO.getId());
|
||||
SysUserBaseVO baseVO = new SysUserBaseVO();
|
||||
baseVO.setDeptId(userDO.getDeptId())
|
||||
.setPostIds(postIds);
|
||||
final List<SysUserDO> pmUsers = sysUserMapper.selectListByBaseVO(baseVO);
|
||||
if (CollUtil.isEmpty(pmUsers)) {
|
||||
throw ServiceExceptionUtil.exception(DEPART_PM_POST_NOT_EXISTS);
|
||||
}
|
||||
|
||||
//部门经理
|
||||
SysPostDO bmPostDO = sysPostMapper.selectByCode("bm");
|
||||
if (Objects.isNull(bmPostDO)) {
|
||||
throw ServiceExceptionUtil.exception(BM_POST_NOT_EXISTS);
|
||||
}
|
||||
userDO = sysUserMapper.selectById(id);
|
||||
postIds = new HashSet<>(8);
|
||||
postIds.add( bmPostDO.getId());
|
||||
baseVO = new SysUserBaseVO();
|
||||
baseVO.setDeptId(userDO.getDeptId())
|
||||
.setPostIds(postIds);
|
||||
final List<SysUserDO> bmUsers = sysUserMapper.selectListByBaseVO(baseVO);
|
||||
if (CollUtil.isEmpty(bmUsers)) {
|
||||
throw ServiceExceptionUtil.exception(DEPART_BM_POST_NOT_EXISTS);
|
||||
}
|
||||
//人事
|
||||
SysPostDO hrPostDO = sysPostMapper.selectByCode("hr");
|
||||
if (Objects.isNull(hrPostDO)) {
|
||||
throw ServiceExceptionUtil.exception(HR_POST_NOT_EXISTS);
|
||||
}
|
||||
userDO = sysUserMapper.selectById(id);
|
||||
postIds = new HashSet<>(8);
|
||||
postIds.add( hrPostDO.getId());
|
||||
baseVO = new SysUserBaseVO();
|
||||
baseVO.setDeptId(userDO.getDeptId())
|
||||
.setPostIds(postIds);
|
||||
final List<SysUserDO> hrUsers = sysUserMapper.selectListByBaseVO(baseVO);
|
||||
if (CollUtil.isEmpty(hrUsers)) {
|
||||
throw ServiceExceptionUtil.exception(DEPART_BM_POST_NOT_EXISTS);
|
||||
}
|
||||
return OALeaveApplyMembersVO.builder().pm(pmUsers.get(0).getUsername())
|
||||
.bm(bmUsers.get(0).getUsername())
|
||||
.hr(hrUsers.get(0).getUsername()).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -6,22 +6,50 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
// TODO @芋艿:前缀,注释
|
||||
// TODO @json:类和方法的注释。咱是开源项目,有注释,大家才能更容易读懂
|
||||
|
||||
/**
|
||||
* 用户任务服务接口
|
||||
*/
|
||||
public interface TaskService {
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前用户的待办任务, 分页
|
||||
*/
|
||||
PageResult<TodoTaskRespVO> getTodoTaskPage(TodoTaskPageReqVO pageReqVO);
|
||||
|
||||
|
||||
/**
|
||||
* 签收任务
|
||||
* @param taskId 用户任务id
|
||||
*/
|
||||
void claimTask(String taskId);
|
||||
|
||||
|
||||
/**
|
||||
* 办理完成用户任务
|
||||
* @param taskReq 任务参数, 包含任务的参数,和 评论
|
||||
*/
|
||||
void completeTask(TaskReqVO taskReq);
|
||||
|
||||
// void flowImage(String taskId, HttpServletResponse response);
|
||||
|
||||
/**
|
||||
* 根据任务id, 查询已经完成的用户任务,未完成的用户任务
|
||||
* @param taskQuery 查询参数 一般 taskId
|
||||
*/
|
||||
TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery);
|
||||
|
||||
/**
|
||||
* 根据流程实例id, 查询历史用户任务,包括已完成,未完成
|
||||
* @param processInstanceId 流程实例id
|
||||
*/
|
||||
List<TaskStepVO> getHistorySteps(String processInstanceId);
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户任务的 formKey, 对应外置表单, 需要根据formKey 对应业务表单
|
||||
* @param taskQuery 查询参数 ,一般taskId
|
||||
*/
|
||||
TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery);
|
||||
|
||||
|
||||
|
@@ -89,7 +89,7 @@ public class TaskServiceImpl implements TaskService {
|
||||
/**
|
||||
* 工作流,完成 userTask, 完成用户任务 一般传入参数 1。是否同意(variables). 2. 评论(comment)
|
||||
* variables 变量名 和 评论 由前台传入
|
||||
* @param taskReq
|
||||
* @param taskReq 任务参数
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -103,25 +103,7 @@ public class TaskServiceImpl implements TaskService {
|
||||
.build());
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void flowImage(String taskId, HttpServletResponse response) {
|
||||
//
|
||||
// final Task task = taskRuntime.task(taskId);
|
||||
// BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
|
||||
// final Process process = bpmnModel.getMainProcess();
|
||||
// ProcessDefinitionEntity processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
|
||||
// List<String> activeActivityIds = runtimeService.getActiveActivityIds(executionId);
|
||||
// List<String> highLightedFlows = getHighLightedFlows(processDefinition, processInstance.getId());
|
||||
// ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
|
||||
// InputStream imageStream =diagramGenerator.generateDiagram(bpmnModel, "png", activeActivityIds, highLightedFlows);
|
||||
//
|
||||
// // 输出资源内容到相应对象
|
||||
// byte[] b = new byte[1024];
|
||||
// int len;
|
||||
// while ((len = imageStream.read(b, 0, 1024)) != -1) {
|
||||
// response.getOutputStream().write(b, 0, len);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
@Override
|
||||
public TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery) {
|
||||
@@ -148,8 +130,7 @@ public class TaskServiceImpl implements TaskService {
|
||||
// TODO @jason:可以考虑把 comments 读取后,在统一调用 convert 拼接。另外 Comment 是废弃的类,有没其它可以使用的哈?
|
||||
List<Comment> comments = activitiTaskService.getTaskComments(instance.getTaskId());
|
||||
if (!CollUtil.isEmpty(comments)) {
|
||||
// TODO @jason:IDEA 在 t.getFullMessage() 有提示告警,可以解决下。
|
||||
stepVO.setComment(Optional.ofNullable(comments.get(0)).map(t->t.getFullMessage()).orElse(""));
|
||||
stepVO.setComment(Optional.ofNullable(comments.get(0)).map(Comment::getFullMessage).orElse(""));
|
||||
}
|
||||
steps.add(stepVO);
|
||||
});
|
||||
@@ -188,45 +169,11 @@ public class TaskServiceImpl implements TaskService {
|
||||
return respVO;
|
||||
}
|
||||
|
||||
// private List<String> getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) {
|
||||
//
|
||||
// List<String> highLightedFlows = new ArrayList<String>();
|
||||
// List<HistoricActivityInstance> historicActivityInstances = historyService
|
||||
// .createHistoricActivityInstanceQuery()
|
||||
// .processInstanceId(processInstanceId)
|
||||
// .orderByHistoricActivityInstanceStartTime().asc().list();
|
||||
//
|
||||
// List<String> historicActivityInstanceList = new ArrayList<String>();
|
||||
// for (HistoricActivityInstance hai : historicActivityInstances) {
|
||||
// historicActivityInstanceList.add(hai.getActivityId());
|
||||
// }
|
||||
|
||||
// // add current activities to list
|
||||
// List<String> highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId);
|
||||
// historicActivityInstanceList.addAll(highLightedActivities);
|
||||
|
||||
// activities and their sequence-flows
|
||||
// for (ActivityImpl activity : processDefinition.getActivities()) {
|
||||
// int index = historicActivityInstanceList.indexOf(activity.getId());
|
||||
//
|
||||
// if (index >= 0 && index + 1 < historicActivityInstanceList.size()) {
|
||||
// List<PvmTransition> pvmTransitionList = activity
|
||||
// .getOutgoingTransitions();
|
||||
// for (PvmTransition pvmTransition : pvmTransitionList) {
|
||||
// String destinationFlowId = pvmTransition.getDestination().getId();
|
||||
// if (destinationFlowId.equals(historicActivityInstanceList.get(index + 1))) {
|
||||
// highLightedFlows.add(pvmTransition.getId());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return highLightedFlows;
|
||||
// }
|
||||
|
||||
|
||||
@Override
|
||||
public void getHighlightImg(String processInstanceId, HttpServletResponse response) {
|
||||
// 查询历史
|
||||
//TODO 云扬四海 貌似流程结束后,点击审批进度会报错
|
||||
HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
|
||||
// 如果有结束时间
|
||||
if (hpi == null) {
|
||||
|
@@ -1,6 +1,8 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserBaseVO;
|
||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
|
||||
@@ -8,9 +10,11 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUs
|
||||
import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageReqVO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Mapper
|
||||
public interface SysUserMapper extends BaseMapperX<SysUserDO> {
|
||||
@@ -52,5 +56,13 @@ public interface SysUserMapper extends BaseMapperX<SysUserDO> {
|
||||
return selectList(new QueryWrapperX<SysUserDO>().like("username", username));
|
||||
}
|
||||
|
||||
default List<SysUserDO> selectListByBaseVO(SysUserBaseVO reqVO) {
|
||||
return selectList(new QueryWrapperX<SysUserDO>().likeIfPresent("username", reqVO.getUsername())
|
||||
.likeIfPresent("nickname", reqVO.getNickname())
|
||||
.eq("status", CommonStatusEnum.ENABLE.getStatus())
|
||||
.eq("dept_id", reqVO.getDeptId())
|
||||
.likeIfPresent("post_ids", Optional.ofNullable(reqVO.getPostIds()).map(t -> Strings.join(t, ',')).orElse("")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user