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());
|
}
|
|
}
|
|
}
|