package com.ycl.controller; import com.ycl.common.annotation.Log; import com.ycl.common.core.controller.BaseController; import com.ycl.common.core.domain.AjaxResult; import com.ycl.common.core.domain.entity.SysUser; import com.ycl.common.core.page.TableDataInfo; import com.ycl.common.enums.BusinessType; import com.ycl.common.utils.SecurityUtils; import com.ycl.common.utils.poi.ExcelUtil; import com.ycl.system.domain.Leaveapply; import com.ycl.service.ILeaveapplyService; import com.ycl.system.service.ISysUserService; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Date; import java.util.List; /** * 请假Controller * * @author shenzhanwang * @date 2022-04-02 */ @Controller @RequiredArgsConstructor @RequestMapping("/leaveapply") public class LeaveapplyController extends BaseController { private static final String prefix = "flowable/leaveapply"; private final ILeaveapplyService leaveapplyService; private final ISysUserService userService; private final RuntimeService runtimeService; private final TaskService taskService; @GetMapping() public String leaveapply() { return prefix + "/leaveapply"; } /** * 部门领导审批 * @return */ @ApiOperation("部门领导审批") @GetMapping("/deptleadercheck") @ResponseBody public AjaxResult deptleadercheck(String taskid) { Task t = taskService.createTaskQuery().taskId(taskid).singleResult(); String processId = t.getProcessInstanceId(); ProcessInstance p = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); if (p != null) { Leaveapply apply = leaveapplyService.selectLeaveapplyById(Long.parseLong(p.getBusinessKey())); return AjaxResult.success(apply); } return AjaxResult.error("流程不存在"); } /** * 人事审批 * @return */ @ApiOperation("人事审批") @GetMapping("/hrcheck") @ResponseBody public AjaxResult hrcheck(String taskid) { Task t = taskService.createTaskQuery().taskId(taskid).singleResult(); String processId = t.getProcessInstanceId(); ProcessInstance p = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); if (p != null) { Leaveapply apply = leaveapplyService.selectLeaveapplyById(Long.parseLong(p.getBusinessKey())); return AjaxResult.success(apply); } return AjaxResult.error("流程不存在"); } /** * 销假 * @return */ @ApiOperation("销假") @GetMapping("/destroyapply") @ResponseBody public AjaxResult destroyapply(String taskid) { Task t = taskService.createTaskQuery().taskId(taskid).singleResult(); String processId = t.getProcessInstanceId(); ProcessInstance p = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); if (p != null) { Leaveapply apply = leaveapplyService.selectLeaveapplyById(Long.parseLong(p.getBusinessKey())); return AjaxResult.success(apply); } return AjaxResult.error("流程不存在"); } /** * 调整申请 * @return */ @ApiOperation("调整申请") @GetMapping("/modifyapply") @ResponseBody public AjaxResult modifyapply(String taskid) { Task t = taskService.createTaskQuery().taskId(taskid).singleResult(); String processId = t.getProcessInstanceId(); ProcessInstance p = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); if (p != null) { Leaveapply apply = leaveapplyService.selectLeaveapplyById(Long.parseLong(p.getBusinessKey())); return AjaxResult.success(apply); } return AjaxResult.error("流程不存在"); } /** * 发起请假申请 * 驳回后使用 * @return */ @ApiOperation("发起请假申请-驳回后使用") @GetMapping("/addleave") @ResponseBody public AjaxResult addLeave(String taskid) { Task t = taskService.createTaskQuery().taskId(taskid).singleResult(); String processId = t.getProcessInstanceId(); ProcessInstance p = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult(); if (p != null) { Leaveapply apply = leaveapplyService.selectLeaveapplyById(Long.parseLong(p.getBusinessKey())); return AjaxResult.success(apply); } return AjaxResult.error("流程不存在"); } /** * 查询请假列表 */ @PostMapping("/list") @ResponseBody public TableDataInfo list(Leaveapply leaveapply) { String username = getUsername(); leaveapply.setUserId(username); startPage(); List list = leaveapplyService.selectLeaveapplyList(leaveapply); return getDataTable(list); } /** * 导出请假列表 */ @Log(title = "请假", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(Leaveapply leaveapply) { SysUser user = SecurityUtils.getLoginUser().getUser(); String username = getUsername(); leaveapply.setUserId(username); List list = leaveapplyService.selectLeaveapplyList(leaveapply); ExcelUtil util = new ExcelUtil(Leaveapply.class); return util.exportExcel(list, "请假数据"); } /** * 当前登录用户 */ @ApiOperation("当前登录用户") @GetMapping("/cuurentUser") @ResponseBody public AjaxResult cuurentUser() { SysUser user = SecurityUtils.getLoginUser().getUser(); return AjaxResult.success(user); } /** * 发起请假流程 */ @Log(title = "请假", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(Leaveapply leaveapply) { leaveapply.setApplyTime(new Date()); return toAjax(leaveapplyService.insertLeaveapply(leaveapply)); } @PostMapping("/update") @ResponseBody public AjaxResult update(Leaveapply leaveapply) { return toAjax(leaveapplyService.updateLeaveapply(leaveapply)); } /** * 删除请假 */ @Log(title = "请假", businessType = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(leaveapplyService.deleteLeaveapplyByIds(ids)); } }