Parcourir la source

外出审批调整

liangwenxuan il y a 1 semaine
Parent
commit
7ee3b008ba

+ 8 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApiImpl.java

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCancelReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.business.BpmBusinessFormDO;
 import cn.iocoder.yudao.module.bpm.dal.mysql.business.BpmBusinessFormMapper;
+import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnVariableConstants;
 import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceCopyService;
@@ -119,11 +120,17 @@ public class BpmProcessInstanceApiImpl implements BpmProcessInstanceApi {
         if (processInstanceId == null || processInstanceId.isEmpty()) {
             return Boolean.FALSE;
         }
+        String deleteReason = reason == null ? "" : reason;
+        if (processInstanceService.getProcessInstance(processInstanceId) != null) {
+            runtimeService.setVariable(processInstanceId, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_STATUS,
+                    BpmProcessInstanceStatusEnum.CANCEL.getStatus());
+            runtimeService.setVariable(processInstanceId, BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_REASON, deleteReason);
+            runtimeService.deleteProcessInstance(processInstanceId, deleteReason);
+        }
         processInstanceCopyService.deleteProcessInstanceCopy(processInstanceId);
         notifyMessageSendApi.deleteByPkMessage(processInstanceId);
         businessFormMapper.delete(new LambdaQueryWrapperX<BpmBusinessFormDO>()
                 .eq(BpmBusinessFormDO::getProcessInstanceId, processInstanceId));
-        runtimeService.deleteProcessInstance(processInstanceId, reason == null ? "" : reason);
         historyService.deleteHistoricProcessInstance(processInstanceId);
         return Boolean.TRUE;
     }

+ 3 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java

@@ -893,6 +893,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
                         BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceRejectMessage(instance, reason));
             }
             BpmBusinessFormDO businessFormDO = businessFormService.selectOneByProcessInstanceId(instance.getProcessInstanceId());
+            if (businessFormDO == null) {
+                return;
+            }
             // 3. 发送流程实例的状态事件
             processInstanceEventPublisher.sendProcessInstanceResultEvent(
                     BpmProcessInstanceConvert.INSTANCE.buildProcessInstanceStatusEvent(this, instance, status, businessFormDO.getStartTenantId(), 0));

+ 1 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/biz/ElderlyAskLeaveController.java

@@ -86,6 +86,7 @@ public class ElderlyAskLeaveController {
     @GetMapping("/findPage")
     @Operation(summary = "老人外出请假列表")
     @TenantIgnore
+    @PermitAll
     public CommonResult<PageResult<ElderlyAskLeaveDO>> findPage(@Valid AskLeavePageReqVO reqVO) {
         reqVO.setTenantIds(Objects.isNull(reqVO.getTenantIds()) ? new Long[]{TenantContextHolder.getTenantId()} : reqVO.getTenantIds());
         PageResult<ElderlyAskLeaveDO> pageResult = elderlyAskLeaveService.findPage(reqVO);

+ 2 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyAskLeaveServiceImpl.java

@@ -756,7 +756,7 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void delete(Long id) {
         ElderlyAskLeaveDO askLeave = elderlyAskLeaveMapper.selectById(id);
         if (askLeave == null) {
@@ -777,6 +777,7 @@ public class ElderlyAskLeaveServiceImpl implements ElderlyAskLeaveService {
                 }
             } catch (Exception e) {
                 log.warn("删除外出登记流程失败,askLeaveId={}, tenantId={}", id, tenantId, e);
+                throw new RuntimeException("删除外出登记流程失败", e);
             }
 
             List<ElderlyAskLeaveDailyExpenseRelationDO> elderlyAskLeaveDailyExpenseRelationList = elderlyAskLeaveDailyExpenseRelationMapper.selectList(

+ 1 - 0
yudao-server/src/main/resources/application.yaml

@@ -250,6 +250,7 @@ yudao:
       - /admin-api/elderly-safe-check/create
       - /admin-api/food-satisfaction-survey/create
       - /admin-api/elderly/askLeave/createBpm
+      - /admin-api/elderly/askLeave/findPage
       - /admin-api/elderly/outboundRefundConfig/findList
 #      - /admin-api/bpm/check-in-wait/create
     ignore-tables: