yangys
2025-09-18 0d61b9bfca526e9c3da2209de8f9f367e76fd013
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package org.springblade.mdm.flow.controller;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.DateUtil;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.flow.entity.TaskDispatch;
import org.springblade.mdm.flow.excution.StartDispatcher;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.service.TaskDispatchService;
import org.springblade.mdm.flow.service.execute.*;
import org.springblade.mdm.flow.vo.DispathTaskQueryVO;
import org.springblade.mdm.flow.vo.FlowStartResult;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
 
import java.time.LocalDateTime;
 
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/flow/task")
@Tag(name = "派工流程", description = "派工流程")
public class DispatchTaskController {
 
    private final StartDispatcher dispatcher;
 
    private final TaskService taskService;
    private final RuntimeService runtimeService;
    private final FlowProgramFileService flowProgramFileService;
 
 
    private final TryFlowCompleteService tryFlowCompleteService;
    private final DefaultFlowCompleteService defaultFlowCompleteService;
    private final TaskDispatchService taskDispatchService;
 
    @Operation(summary = "异常任务分页查询", description = "查询勤哲分工表数据")
    @GetMapping("/exception-page")
    public R<IPage<TaskDispatch>> exceptionTaskPage(DispathTaskQueryVO queryVO) {
        LocalDateTime end = null;
        if(queryVO.getCreateTimeEnd()!=null){
            end = DateUtil.toLocalDateTime(queryVO.getCreateTimeEnd()).plusDays(1);
        }
        return R.data(taskDispatchService.lambdaQuery()
            .like(StringUtils.isNotBlank(queryVO.getDrawingNo()), TaskDispatch::getDrawingNo,queryVO.getDrawingNo())
                .ne(TaskDispatch::getStatus,TaskDispatch.STATUS_INIT).ne(TaskDispatch::getStatus,TaskDispatch.STATUS_STARTED)
            .ge(queryVO.getCreateTimeBegin()!=null, TaskDispatch::getCreateTime,queryVO.getCreateTimeBegin())
            .le(queryVO.getCreateTimeEnd()!=null, TaskDispatch::getCreateTime,end).orderByDesc(TaskDispatch::getCreateTime)
            .page(Condition.getPage(queryVO)));
    }
    /**
     * 删除
     */
    @Operation(summary = "删除", description = "删除")
    @PostMapping("/remove")
    public R<Void> remove(@RequestParam String ids) {
        try {
            taskDispatchService.removeBatchByIds(Func.toLongList(ids));
        } catch (Exception e) {
            log.error("删除异常",e);
            return R.fail(e.getMessage());
        }
        return R.status(true);
    }
 
 
    @PostMapping("/force-start")
    @Operation(summary = "强制启动派工", description = "从任务异常记录启动派工流程")
    public R<Boolean> forceStart(long id) {
        try {
            TaskDispatch dispatch = taskDispatchService.getById(id);
 
            TaskAssignVO startVO = new TaskAssignVO();
            BeanUtils.copyProperties(dispatch, startVO);
            startVO.setTitle(startVO.getDrawingNo()+"-"+startVO.getProcessNo()+"-"+startVO.getProcessEdition()+"数控程序编制");
            try {
                FlowStartResult result = dispatcher.start(startVO);
                dispatch.setStatus(TaskDispatch.STATUS_STARTED);
                dispatch.setProcessInstanceId(result.getProcessInstanceId());
                dispatch.setProgramNo(result.getProgramNo());
                taskDispatchService.updateById(dispatch);
            } catch (Exception e) {
                log.error("流程启动异常",e);
                dispatch.setStatus(TaskDispatch.STATUS_EXCEPTION);
                dispatch.setErrMsg(e.getMessage());
                taskDispatchService.updateById(dispatch);
                return R.fail("任务启动异常");
            }
            return R.data(true);
 
        }catch(Exception e){
            return R.fail(e.getMessage());
        }
 
    }
 
}