Commit e6142b53088f9b7de60c1b6e1a72ffb4dca82c60

Authored by YunaiV
1 parent 54377751

实现 OA 请假的取消申请

Showing 18 changed files with 74 additions and 196 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/oa/BpmOALeaveController.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.oa; 1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.oa;
2 2
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeaveCreateReqVO; 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeaveCreateReqVO;
4 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeavePageReqVO;  
5 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveRespVO;  
6 -import cn.iocoder.yudao.adminserver.modules.bpm.convert.oa.OALeaveConvert;  
7 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO; 4 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeavePageReqVO;
  5 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeaveRespVO;
  6 +import cn.iocoder.yudao.adminserver.modules.bpm.convert.oa.BpmOALeaveConvert;
  7 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.BpmOALeaveDO;
8 import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.BpmOALeaveService; 8 import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.BpmOALeaveService;
9 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 9 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 10 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -43,27 +43,19 @@ public class BpmOALeaveController { @@ -43,27 +43,19 @@ public class BpmOALeaveController {
43 return success(leaveService.createLeave(getLoginUserId(), createReqVO)); 43 return success(leaveService.createLeave(getLoginUserId(), createReqVO));
44 } 44 }
45 45
46 - @DeleteMapping("/cancel")  
47 - @ApiOperation("取消请假申请")  
48 - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)  
49 - public CommonResult<Boolean> cancelLeave(@RequestParam("id") Long id) {  
50 - leaveService.cancelLeave(id);  
51 - return success(true);  
52 - }  
53 -  
54 @GetMapping("/get") 46 @GetMapping("/get")
55 @ApiOperation("获得请假申请") 47 @ApiOperation("获得请假申请")
56 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) 48 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
57 - public CommonResult<OALeaveRespVO> getLeave(@RequestParam("id") Long id) {  
58 - OALeaveDO leave = leaveService.getLeave(id);  
59 - return success(OALeaveConvert.INSTANCE.convert(leave)); 49 + public CommonResult<BpmOALeaveRespVO> getLeave(@RequestParam("id") Long id) {
  50 + BpmOALeaveDO leave = leaveService.getLeave(id);
  51 + return success(BpmOALeaveConvert.INSTANCE.convert(leave));
60 } 52 }
61 53
62 @GetMapping("/page") 54 @GetMapping("/page")
63 @ApiOperation("获得请假申请分页") 55 @ApiOperation("获得请假申请分页")
64 - public CommonResult<PageResult<OALeaveRespVO>> getLeavePage(@Valid OALeavePageReqVO pageVO) {  
65 - PageResult<OALeaveDO> pageResult = leaveService.getLeavePage(getLoginUserId(), pageVO);  
66 - return success(OALeaveConvert.INSTANCE.convertPage(pageResult)); 56 + public CommonResult<PageResult<BpmOALeaveRespVO>> getLeavePage(@Valid BpmOALeavePageReqVO pageVO) {
  57 + PageResult<BpmOALeaveDO> pageResult = leaveService.getLeavePage(getLoginUserId(), pageVO);
  58 + return success(BpmOALeaveConvert.INSTANCE.convertPage(pageResult));
67 } 59 }
68 60
69 } 61 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/oa/vo/OALeavePageReqVO.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/oa/vo/BpmOALeavePageReqVO.java
@@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
12 @Data 12 @Data
13 @EqualsAndHashCode(callSuper = true) 13 @EqualsAndHashCode(callSuper = true)
14 @ToString(callSuper = true) 14 @ToString(callSuper = true)
15 -public class OALeavePageReqVO extends PageParam { 15 +public class BpmOALeavePageReqVO extends PageParam {
16 16
17 @ApiModelProperty(value = "状态", example = "1", notes = "参见 bpm_process_instance_result 枚举") 17 @ApiModelProperty(value = "状态", example = "1", notes = "参见 bpm_process_instance_result 枚举")
18 private Integer result; 18 private Integer result;
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/oa/vo/OALeaveRespVO.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/oa/vo/BpmOALeaveRespVO.java
@@ -13,7 +13,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -13,7 +13,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
13 @Data 13 @Data
14 @EqualsAndHashCode(callSuper = true) 14 @EqualsAndHashCode(callSuper = true)
15 @ToString(callSuper = true) 15 @ToString(callSuper = true)
16 -public class OALeaveRespVO extends BpmOALeaveBaseVO { 16 +public class BpmOALeaveRespVO extends BpmOALeaveBaseVO {
17 17
18 @ApiModelProperty(value = "请假表单主键", required = true, example = "1024") 18 @ApiModelProperty(value = "请假表单主键", required = true, example = "1024")
19 private Long id; 19 private Long id;
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/oa/OALeaveConvert.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/oa/BpmOALeaveConvert.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.oa; 1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.oa;
2 2
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeaveCreateReqVO; 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeaveCreateReqVO;
4 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeaveRespVO;  
5 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO; 4 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeaveRespVO;
  5 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.BpmOALeaveDO;
6 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
8 import org.mapstruct.factory.Mappers; 8 import org.mapstruct.factory.Mappers;
@@ -15,16 +15,16 @@ import java.util.List; @@ -15,16 +15,16 @@ import java.util.List;
15 * @author 芋艿 15 * @author 芋艿
16 */ 16 */
17 @Mapper 17 @Mapper
18 -public interface OALeaveConvert { 18 +public interface BpmOALeaveConvert {
19 19
20 - OALeaveConvert INSTANCE = Mappers.getMapper(OALeaveConvert.class); 20 + BpmOALeaveConvert INSTANCE = Mappers.getMapper(BpmOALeaveConvert.class);
21 21
22 - OALeaveDO convert(BpmOALeaveCreateReqVO bean); 22 + BpmOALeaveDO convert(BpmOALeaveCreateReqVO bean);
23 23
24 - OALeaveRespVO convert(OALeaveDO bean); 24 + BpmOALeaveRespVO convert(BpmOALeaveDO bean);
25 25
26 - List<OALeaveRespVO> convertList(List<OALeaveDO> list); 26 + List<BpmOALeaveRespVO> convertList(List<BpmOALeaveDO> list);
27 27
28 - PageResult<OALeaveRespVO> convertPage(PageResult<OALeaveDO> page); 28 + PageResult<BpmOALeaveRespVO> convertPage(PageResult<BpmOALeaveDO> page);
29 29
30 } 30 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/leave/OALeaveDO.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/leave/BpmOALeaveDO.java
@@ -22,7 +22,7 @@ import org.activiti.engine.runtime.ProcessInstance; @@ -22,7 +22,7 @@ import org.activiti.engine.runtime.ProcessInstance;
22 @Builder 22 @Builder
23 @NoArgsConstructor 23 @NoArgsConstructor
24 @AllArgsConstructor 24 @AllArgsConstructor
25 -public class OALeaveDO extends BaseDO { 25 +public class BpmOALeaveDO extends BaseDO {
26 26
27 /** 27 /**
28 * 请假表单主键 28 * 请假表单主键
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/leave/package-info.java deleted
1 -/**  
2 - * TODO 芋艿:实现请假流程,接入工作流  
3 - */  
4 -package cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave;  
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/oa/BpmOALeaveMapper.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.oa; 1 package cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.oa;
2 2
3 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.OALeavePageReqVO;  
4 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO; 3 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.BpmOALeavePageReqVO;
  4 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.BpmOALeaveDO;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 6 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
7 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 7 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -14,16 +14,16 @@ import org.apache.ibatis.annotations.Mapper; @@ -14,16 +14,16 @@ import org.apache.ibatis.annotations.Mapper;
14 * @author 芋道源码 14 * @author 芋道源码
15 */ 15 */
16 @Mapper 16 @Mapper
17 -public interface BpmOALeaveMapper extends BaseMapperX<OALeaveDO> { 17 +public interface BpmOALeaveMapper extends BaseMapperX<BpmOALeaveDO> {
18 18
19 - default PageResult<OALeaveDO> selectPage(Long userId, OALeavePageReqVO reqVO) {  
20 - return selectPage(reqVO, new LambdaQueryWrapperX<OALeaveDO>()  
21 - .eqIfPresent(OALeaveDO::getUserId, userId)  
22 - .eqIfPresent(OALeaveDO::getResult, reqVO.getResult())  
23 - .eqIfPresent(OALeaveDO::getType, reqVO.getType())  
24 - .likeIfPresent(OALeaveDO::getReason, reqVO.getReason())  
25 - .betweenIfPresent(OALeaveDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())  
26 - .orderByDesc(OALeaveDO::getId)); 19 + default PageResult<BpmOALeaveDO> selectPage(Long userId, BpmOALeavePageReqVO reqVO) {
  20 + return selectPage(reqVO, new LambdaQueryWrapperX<BpmOALeaveDO>()
  21 + .eqIfPresent(BpmOALeaveDO::getUserId, userId)
  22 + .eqIfPresent(BpmOALeaveDO::getResult, reqVO.getResult())
  23 + .eqIfPresent(BpmOALeaveDO::getType, reqVO.getType())
  24 + .likeIfPresent(BpmOALeaveDO::getReason, reqVO.getReason())
  25 + .betweenIfPresent(BpmOALeaveDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
  26 + .orderByDesc(BpmOALeaveDO::getId));
27 } 27 }
28 28
29 } 29 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/BpmOALeaveService.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa;
2 2
3 3
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.*; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.*;
5 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO; 5 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.BpmOALeaveDO;
6 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 7
8 import javax.validation.Valid; 8 import javax.validation.Valid;
@@ -33,19 +33,12 @@ public interface BpmOALeaveService { @@ -33,19 +33,12 @@ public interface BpmOALeaveService {
33 void updateLeaveResult(Long id, Integer result); 33 void updateLeaveResult(Long id, Integer result);
34 34
35 /** 35 /**
36 - * 删除请假申请  
37 - *  
38 - * @param id 编号  
39 - */  
40 - void cancelLeave(Long id);  
41 -  
42 - /**  
43 * 获得请假申请 36 * 获得请假申请
44 * 37 *
45 * @param id 编号 38 * @param id 编号
46 * @return 请假申请 39 * @return 请假申请
47 */ 40 */
48 - OALeaveDO getLeave(Long id); 41 + BpmOALeaveDO getLeave(Long id);
49 42
50 /** 43 /**
51 * 获得请假申请分页 44 * 获得请假申请分页
@@ -54,6 +47,6 @@ public interface BpmOALeaveService { @@ -54,6 +47,6 @@ public interface BpmOALeaveService {
54 * @param pageReqVO 分页查询 47 * @param pageReqVO 分页查询
55 * @return 请假申请分页 48 * @return 请假申请分页
56 */ 49 */
57 - PageResult<OALeaveDO> getLeavePage(Long userId, OALeavePageReqVO pageReqVO); 50 + PageResult<BpmOALeaveDO> getLeavePage(Long userId, BpmOALeavePageReqVO pageReqVO);
58 51
59 } 52 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/impl/OALeaveServiceImpl.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/impl/BpmOALeaveServiceImpl.java
@@ -2,14 +2,13 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa.impl; @@ -2,14 +2,13 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa.impl;
2 2
3 import cn.hutool.core.date.DateUtil; 3 import cn.hutool.core.date.DateUtil;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.*; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.oa.vo.*;
5 -import cn.iocoder.yudao.adminserver.modules.bpm.convert.oa.OALeaveConvert;  
6 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.OALeaveDO; 5 +import cn.iocoder.yudao.adminserver.modules.bpm.convert.oa.BpmOALeaveConvert;
  6 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave.BpmOALeaveDO;
7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.oa.BpmOALeaveMapper; 7 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.oa.BpmOALeaveMapper;
8 import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceResultEnum; 8 import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceResultEnum;
9 import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.BpmOALeaveService; 9 import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.BpmOALeaveService;
10 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; 10 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService;
11 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.dto.BpmProcessInstanceCreateReqDTO; 11 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.dto.BpmProcessInstanceCreateReqDTO;
12 -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;  
13 import cn.iocoder.yudao.framework.common.pojo.PageResult; 12 import cn.iocoder.yudao.framework.common.pojo.PageResult;
14 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
15 import org.springframework.transaction.annotation.Transactional; 14 import org.springframework.transaction.annotation.Transactional;
@@ -29,7 +28,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU @@ -29,7 +28,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
29 */ 28 */
30 @Service 29 @Service
31 @Validated 30 @Validated
32 -public class OALeaveServiceImpl implements BpmOALeaveService { 31 +public class BpmOALeaveServiceImpl implements BpmOALeaveService {
33 32
34 /** 33 /**
35 * OA 请假对应的流程定义 KEY 34 * OA 请假对应的流程定义 KEY
@@ -47,7 +46,7 @@ public class OALeaveServiceImpl implements BpmOALeaveService { @@ -47,7 +46,7 @@ public class OALeaveServiceImpl implements BpmOALeaveService {
47 public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) { 46 public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) {
48 // 插入 OA 请假单 47 // 插入 OA 请假单
49 long day = DateUtil.betweenDay(createReqVO.getStartTime(), createReqVO.getEndTime(), false); 48 long day = DateUtil.betweenDay(createReqVO.getStartTime(), createReqVO.getEndTime(), false);
50 - OALeaveDO leave = OALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day) 49 + BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day)
51 .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); 50 .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
52 leaveMapper.insert(leave); 51 leaveMapper.insert(leave);
53 52
@@ -59,22 +58,13 @@ public class OALeaveServiceImpl implements BpmOALeaveService { @@ -59,22 +58,13 @@ public class OALeaveServiceImpl implements BpmOALeaveService {
59 .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(leave.getId()))); 58 .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(leave.getId())));
60 59
61 // 将工作流的编号,更新到 OA 请假单中 60 // 将工作流的编号,更新到 OA 请假单中
62 - leaveMapper.updateById(new OALeaveDO().setId(leave.getId()).setProcessInstanceId(processInstanceId)); 61 + leaveMapper.updateById(new BpmOALeaveDO().setId(leave.getId()).setProcessInstanceId(processInstanceId));
63 return leave.getId(); 62 return leave.getId();
64 } 63 }
65 64
66 @Override 65 @Override
67 public void updateLeaveResult(Long id, Integer result) { 66 public void updateLeaveResult(Long id, Integer result) {
68 - leaveMapper.updateById(new OALeaveDO().setId(id).setResult(result));  
69 - }  
70 -  
71 - @Override  
72 - public void cancelLeave(Long id) {  
73 - // TODO 需要重新实现  
74 - // 校验存在  
75 - this.validateLeaveExists(id);  
76 - // 删除  
77 - leaveMapper.deleteById(id); 67 + leaveMapper.updateById(new BpmOALeaveDO().setId(id).setResult(result));
78 } 68 }
79 69
80 private void validateLeaveExists(Long id) { 70 private void validateLeaveExists(Long id) {
@@ -84,12 +74,12 @@ public class OALeaveServiceImpl implements BpmOALeaveService { @@ -84,12 +74,12 @@ public class OALeaveServiceImpl implements BpmOALeaveService {
84 } 74 }
85 75
86 @Override 76 @Override
87 - public OALeaveDO getLeave(Long id) { 77 + public BpmOALeaveDO getLeave(Long id) {
88 return leaveMapper.selectById(id); 78 return leaveMapper.selectById(id);
89 } 79 }
90 80
91 @Override 81 @Override
92 - public PageResult<OALeaveDO> getLeavePage(Long userId, OALeavePageReqVO pageReqVO) { 82 + public PageResult<BpmOALeaveDO> getLeavePage(Long userId, BpmOALeavePageReqVO pageReqVO) {
93 return leaveMapper.selectPage(userId, pageReqVO); 83 return leaveMapper.selectPage(userId, pageReqVO);
94 } 84 }
95 85
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/oa/listener/BpmOALeaveResultListener.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa.listener; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.oa.listener;
3 import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.event.BpmProcessInstanceResultEvent; 3 import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.event.BpmProcessInstanceResultEvent;
4 import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.event.BpmProcessInstanceResultEventListener; 4 import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.event.BpmProcessInstanceResultEventListener;
5 import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.BpmOALeaveService; 5 import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.BpmOALeaveService;
6 -import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.impl.OALeaveServiceImpl; 6 +import cn.iocoder.yudao.adminserver.modules.bpm.service.oa.impl.BpmOALeaveServiceImpl;
7 import org.springframework.stereotype.Component; 7 import org.springframework.stereotype.Component;
8 8
9 import javax.annotation.Resource; 9 import javax.annotation.Resource;
@@ -21,7 +21,7 @@ public class BpmOALeaveResultListener extends BpmProcessInstanceResultEventListe @@ -21,7 +21,7 @@ public class BpmOALeaveResultListener extends BpmProcessInstanceResultEventListe
21 21
22 @Override 22 @Override
23 protected String getProcessDefinitionKey() { 23 protected String getProcessDefinitionKey() {
24 - return OALeaveServiceImpl.PROCESS_KEY; 24 + return BpmOALeaveServiceImpl.PROCESS_KEY;
25 } 25 }
26 26
27 @Override 27 @Override
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java
@@ -255,7 +255,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -255,7 +255,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
255 } 255 }
256 256
257 // 需要主动查询,因为 instance 只有 id 属性 257 // 需要主动查询,因为 instance 只有 id 属性
258 - ProcessInstance processInstance = getProcessInstance(instance.getId()); 258 + // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance
  259 + HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId());
259 // 更新拓展表 260 // 更新拓展表
260 BpmProcessInstanceExtDO instanceExtDO = BpmProcessInstanceConvert.INSTANCE.convert(instance) 261 BpmProcessInstanceExtDO instanceExtDO = BpmProcessInstanceConvert.INSTANCE.convert(instance)
261 .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 262 .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置
yudao-admin-ui/src/api/oa/leave.js renamed to yudao-admin-ui/src/api/bpm/leave.js
@@ -9,14 +9,6 @@ export function createLeave(data) { @@ -9,14 +9,6 @@ export function createLeave(data) {
9 }) 9 })
10 } 10 }
11 11
12 -// 删除请假申请  
13 -export function deleteLeave(id) {  
14 - return request({  
15 - url: '/oa/leave/delete?id=' + id,  
16 - method: 'delete'  
17 - })  
18 -}  
19 -  
20 // 获得请假申请 12 // 获得请假申请
21 export function getLeave(id) { 13 export function getLeave(id) {
22 return request({ 14 return request({
yudao-admin-ui/src/api/oa/flow.js deleted
1 -import request from '@/utils/request'  
2 -  
3 -  
4 -export function getStartForm(processKey) {  
5 - return request({  
6 - url: '/workflow/process/definition/getStartForm?processKey='+processKey,  
7 - method: 'get'  
8 - })  
9 -}  
yudao-admin-ui/src/api/oa/todo.js deleted
1 -import request from '@/utils/request'  
2 -  
3 -// 创建请假申请  
4 -export function createLeave(data) {  
5 - return request({  
6 - url: '/oa/leave/create',  
7 - method: 'post',  
8 - data: data  
9 - })  
10 -}  
11 -  
12 -// 更新请假申请  
13 -export function updateLeave(data) {  
14 - return request({  
15 - url: '/oa/leave/update',  
16 - method: 'put',  
17 - data: data  
18 - })  
19 -}  
20 -  
21 -// 删除请假申请  
22 -export function deleteLeave(id) {  
23 - return request({  
24 - url: '/oa/leave/delete?id=' + id,  
25 - method: 'delete'  
26 - })  
27 -}  
28 -  
29 -// 获得请假申请  
30 -export function getLeave(id) {  
31 - return request({  
32 - url: '/oa/leave/get?id=' + id,  
33 - method: 'get'  
34 - })  
35 -}  
36 -  
37 -// 获得待办任务分页  
38 -export function getTodoTaskPage(query) {  
39 - return request({  
40 - url: '/workflow/task/todo/page',  
41 - method: 'get',  
42 - params: query  
43 - })  
44 -}  
45 -  
46 -// 签收任务  
47 -export function claimTask(id) {  
48 - return request({  
49 - url: '/workflow/task/claim?id=' + id,  
50 - method: 'get'  
51 - })  
52 -}  
53 -  
54 -export function completeTask(data) {  
55 - return request({  
56 - url: '/workflow/task/complete',  
57 - method: 'post',  
58 - data: data  
59 - })  
60 -}  
61 -  
62 -export function taskSteps(data) {  
63 - return request({  
64 - url: '/workflow/task/task-steps',  
65 - method: 'post',  
66 - data: data  
67 - })  
68 -}  
69 -  
70 -export function getTaskFormKey(data) {  
71 - return request({  
72 - url: '/workflow/task/formKey',  
73 - method: 'post',  
74 - data: data  
75 - })  
76 -}  
77 -  
78 -export function processHistorySteps(id) {  
79 - return request({  
80 - url: '/workflow/task/process/history-steps?id='+id,  
81 - method: 'get'  
82 - })  
83 -}  
84 -  
85 -  
86 -export function getHighlightImg(id) {  
87 - return request({  
88 - url: '/workflow/task/process/highlight-img?processInstanceId='+id,  
89 - method: 'get'  
90 - })  
91 -}  
yudao-admin-ui/src/views/bpm/oa/leave/create.vue
@@ -26,8 +26,9 @@ @@ -26,8 +26,9 @@
26 </template> 26 </template>
27 27
28 <script> 28 <script>
29 -import { createLeave} from "@/api/oa/leave" 29 +import { createLeave} from "@/api/bpm/leave"
30 import { getDictDatas, DICT_TYPE } from '@/utils/dict' 30 import { getDictDatas, DICT_TYPE } from '@/utils/dict'
  31 +
31 export default { 32 export default {
32 name: "LeaveCreate", 33 name: "LeaveCreate",
33 components: { 34 components: {
yudao-admin-ui/src/views/bpm/oa/leave/detail.vue
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 </template> 11 </template>
12 12
13 <script> 13 <script>
14 -import { getLeave} from "@/api/oa/leave" 14 +import { getLeave} from "@/api/bpm/leave"
15 import {getDictDatas, DICT_TYPE, getDictDataLabel} from '@/utils/dict' 15 import {getDictDatas, DICT_TYPE, getDictDataLabel} from '@/utils/dict'
16 export default { 16 export default {
17 name: "LeaveDetail", 17 name: "LeaveDetail",
yudao-admin-ui/src/views/bpm/oa/leave/index.vue
@@ -56,8 +56,10 @@ @@ -56,8 +56,10 @@
56 <span>{{ parseTime(scope.row.createTime) }}</span> 56 <span>{{ parseTime(scope.row.createTime) }}</span>
57 </template> 57 </template>
58 </el-table-column> 58 </el-table-column>
59 - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> 59 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
60 <template slot-scope="scope"> 60 <template slot-scope="scope">
  61 + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleCancel(scope.row)"
  62 + v-if="scope.row.result === 1">取消请假</el-button>
61 <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">详情</el-button> 63 <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">详情</el-button>
62 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleProcessDetail(scope.row)">审批进度</el-button> 64 <el-button size="mini" type="text" icon="el-icon-edit" @click="handleProcessDetail(scope.row)">审批进度</el-button>
63 </template> 65 </template>
@@ -71,8 +73,9 @@ @@ -71,8 +73,9 @@
71 </template> 73 </template>
72 74
73 <script> 75 <script>
74 -import { createLeave, getLeaveApplyMembers, getLeave, getLeavePage} from "@/api/oa/leave" 76 +import { getLeavePage } from "@/api/bpm/leave"
75 import { getDictDataLabel, getDictDatas, DICT_TYPE } from '@/utils/dict' 77 import { getDictDataLabel, getDictDatas, DICT_TYPE } from '@/utils/dict'
  78 +import {cancelProcessInstance} from "@/api/bpm/processInstance";
76 79
77 export default { 80 export default {
78 name: "Leave", 81 name: "Leave",
@@ -88,20 +91,14 @@ export default { @@ -88,20 +91,14 @@ export default {
88 total: 0, 91 total: 0,
89 // 请假申请列表 92 // 请假申请列表
90 list: [], 93 list: [],
91 - // 弹出层标题  
92 - title: "",  
93 - // 是否显示弹出层  
94 - open: false,  
95 //审批进度弹出层 94 //审批进度弹出层
96 dateRangeCreateTime: [], 95 dateRangeCreateTime: [],
97 // 查询参数 96 // 查询参数
98 queryParams: { 97 queryParams: {
99 pageNo: 1, 98 pageNo: 1,
100 pageSize: 10, 99 pageSize: 10,
101 - processInstanceId: null,  
102 - status: null,  
103 - userId: null,  
104 - leaveType: null, 100 + result: null,
  101 + type: null,
105 reason: null, 102 reason: null,
106 }, 103 },
107 104
@@ -149,6 +146,22 @@ export default { @@ -149,6 +146,22 @@ export default {
149 handleProcessDetail(row) { 146 handleProcessDetail(row) {
150 this.$router.push({ path: "/bpm/process-instance/detail", query: { id: row.processInstanceId}}); 147 this.$router.push({ path: "/bpm/process-instance/detail", query: { id: row.processInstanceId}});
151 }, 148 },
  149 + /** 取消请假 */
  150 + handleCancel(row) {
  151 + const id = row.processInstanceId;
  152 + this.$prompt('请输入取消原因?', "取消流程", {
  153 + type: 'warning',
  154 + confirmButtonText: "确定",
  155 + cancelButtonText: "取消",
  156 + inputPattern: /^[\s\S]*.*[^\s][\s\S]*$/, // 判断非空,且非空格
  157 + inputErrorMessage: "取消原因不能为空",
  158 + }).then(({ value }) => {
  159 + return cancelProcessInstance(id, value);
  160 + }).then(() => {
  161 + this.getList();
  162 + this.msgSuccess("取消成功");
  163 + })
  164 + },
152 resultFormat(row, column) { 165 resultFormat(row, column) {
153 return getDictDataLabel(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, row.result) 166 return getDictDataLabel(DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT, row.result)
154 }, 167 },
yudao-admin-ui/src/views/bpm/processInstance/index.vue
@@ -192,7 +192,7 @@ export default { @@ -192,7 +192,7 @@ export default {
192 /** 取消按钮操作 */ 192 /** 取消按钮操作 */
193 handleCancel(row) { 193 handleCancel(row) {
194 const id = row.id; 194 const id = row.id;
195 - this.$prompt('请输出取消原因?', "取消流程", { 195 + this.$prompt('请输入取消原因?', "取消流程", {
196 type: 'warning', 196 type: 'warning',
197 confirmButtonText: "确定", 197 confirmButtonText: "确定",
198 cancelButtonText: "取消", 198 cancelButtonText: "取消",