| | |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.mail.MessagingException; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.flowable.engine.HistoryService; |
| | | import org.flowable.engine.RuntimeService; |
| | | import org.flowable.engine.TaskService; |
| | | import org.flowable.engine.task.Comment; |
| | | import org.flowable.task.api.history.HistoricTaskInstance; |
| | | import org.springblade.core.excel.util.ExcelUtil; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.mdm.basesetting.machine.vo.MachineExcelVO; |
| | | import org.springblade.mdm.commons.vo.IdsVO; |
| | | import org.springblade.mdm.flow.service.ApproveRecordService; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.mdm.flow.service.ApproveTableService; |
| | | import org.springblade.mdm.flow.service.FlowBusinessService; |
| | | import org.springblade.mdm.flow.service.WIthdrawService; |
| | | import org.springblade.mdm.flow.vo.FlowVO; |
| | | import org.springblade.mdm.flow.vo.OvertimeTaskExcelVO; |
| | | import org.springblade.mdm.flow.vo.TaskTraceVO; |
| | | import org.springblade.system.feign.IUserClient; |
| | | import org.springblade.system.pojo.entity.User; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | |
| | | @Autowired |
| | | private HistoryService historyService; |
| | | @Autowired |
| | | private RuntimeService runtimeService; |
| | | @Autowired |
| | | private ApproveTableService approveTableService; |
| | | @Autowired |
| | | private IUserClient userClient; |
| | | @Autowired |
| | | private WIthdrawService withdrawService; |
| | | |
| | | |
| | | @GetMapping("overtime-list") |
| | | @ApiOperationSupport(order = 3) |
| | |
| | | } |
| | | |
| | | |
| | | @Operation(summary = "流程执行轨迹", description = "流程执行轨迹") |
| | | @Operation(summary = "流程执行轨迹", description = "流程执行轨迹/审批记录") |
| | | @GetMapping("process-trace") |
| | | public R<List<TaskTraceVO>> processTrace(String processInstanceId){ |
| | | /* |
| | | List<ApproveRecord> records = approveRecordService.lambdaQuery().eq(ApproveRecord::getProcessInstanceId,processInstanceId).orderByAsc(ApproveRecord::getCreateTime).list(); |
| | | List<TaskTraceVO> result = new ArrayList<>(); |
| | | |
| | | for (ApproveRecord record : records) { |
| | | TaskTraceVO vo = new TaskTraceVO(); |
| | | vo.setComment(record.getComment()); |
| | | vo.setCreateTime(record.getCreateTime()); |
| | | vo.setAssigneeName(record.getUserNickname()); |
| | | |
| | | //vo.setEndTime(); |
| | | }*/ |
| | | |
| | | List<TaskTraceVO> result = new ArrayList<>(); |
| | | List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery() |
| | | .processInstanceId(processInstanceId).orderByTaskCreateTime().desc().list(); |
| | |
| | | if(!comments.isEmpty()) { |
| | | vo.setComment(comments.get(0).getFullMessage()); |
| | | } |
| | | |
| | | vo.setTaskName(hisTask.getName()); |
| | | |
| | | R<User> assigneeObj = userClient.userInfoById(Func.toLong(hisTask.getAssignee())); |
| | | if(assigneeObj.isSuccess()) { |
| | | vo.setAssigneeName(assigneeObj.getData().getName()); |
| | | } |
| | | |
| | | result.add(vo); |
| | | } |
| | | |
| | |
| | | @GetMapping("search-list") |
| | | @ApiOperationSupport(order = 3) |
| | | @Operation(summary = "流程查询", description = "查询进行中的所有流程") |
| | | public R<IPage<FlowVO>> overtimeList(@Parameter(description = "任务到达时间开始") LocalDate createTimeBegin, @Parameter(description = "任务到达时间截止")LocalDate createTimeEnd, @Parameter(description = "关键字") String keyword, Query query) { |
| | | IPage<FlowVO> pages = businessService.selectSearchPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword); |
| | | public R<IPage<FlowVO>> searchList(@Parameter(description = "流程名称")String myProcessName, @Parameter(description = "流程时间开始") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDate createTimeBegin, @Parameter(description = "流程创建时间截止")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDate createTimeEnd, @Parameter(description = "关键字") String keyword, Query query) { |
| | | IPage<FlowVO> pages = businessService.selectSearchPage(Condition.getPage(query),myProcessName,keyword, createTimeBegin,createTimeEnd); |
| | | return R.data(pages); |
| | | } |
| | | |
| | | @GetMapping("finished-list") |
| | | @ApiOperationSupport(order = 3) |
| | | @Operation(summary = "历史流程查询", description = "查询已完结的所有流程") |
| | | public R<IPage<FlowVO>> finishedList(@Parameter(description = "流程名称")String myProcessName, @Parameter(description = "流程创建时间开始") LocalDateTime createTimeBegin, @Parameter(description = "流程创建时间截止") LocalDateTime createTimeEnd, @Parameter(description = "关键字") String keyword, Query query) { |
| | | IPage<FlowVO> pages = businessService.selectFinishedPage(Condition.getPage(query), myProcessName,keyword,createTimeBegin,createTimeEnd); |
| | | return R.data(pages); |
| | | } |
| | | |
| | | @GetMapping("exception-list") |
| | | @ApiOperationSupport(order = 3) |
| | | @Operation(summary = "异常流程查询", description = "查询已完结的,异常流程") |
| | | public R<IPage<FlowVO>> exceptionList(@Parameter(description = "流程名称")String myProcessName, @Parameter(description = "流程创建时间开始") LocalDateTime createTimeBegin, @Parameter(description = "流程创建时间截止") LocalDateTime createTimeEnd, @Parameter(description = "关键字") String keyword, Query query) { |
| | | IPage<FlowVO> pages = businessService.selectExceptionPage(Condition.getPage(query), myProcessName,keyword,createTimeBegin,createTimeEnd); |
| | | return R.data(pages); |
| | | } |
| | | |
| | | @PostMapping("delete-instance") |
| | | @Operation(summary = "流程删除", description = "删除id指定的流程实例") |
| | | public R<Void> deleteInstance(@Parameter(description = "任务到达时间开始") String processInstancesId) { |
| | | public R<Void> deleteInstance(@Parameter(description = "任务到达时间开始") String processInstanceId) { |
| | | try { |
| | | businessService.deleteProcessInstance(processInstancesId); |
| | | businessService.deleteProcessInstance(processInstanceId); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("删除流程失败",e); |
| | |
| | | response.setContentType("application/octet-stream"); |
| | | approveTableService.exportApproveTable(processInstanceId,response.getOutputStream()); |
| | | } catch (Exception e) { |
| | | log.error("导出DNC异常", e); |
| | | log.error("导出审批表异常", e); |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | } |
| | | |
| | | @GetMapping("/withdraw") |
| | | @Operation(summary = "撤回任务", description = "从其他任务节点直接撤回编程员节点") |
| | | public R<Void> withdraw(String processInstanceId) { |
| | | try { |
| | | withdrawService.withdraw(processInstanceId); |
| | | return R.success(); |
| | | }catch(Exception e) { |
| | | log.error("<UNK>", e); |
| | | return R.fail(e.getMessage()); |
| | | } |
| | | } |
| | | } |