提交 aa0b2b82 authored 作者: hzh's avatar hzh

审批流程配置

上级 ef575a10
package org.dromara.server.constant;
/**
* @author wenhe
*/
public enum ProcessApproveStatus {
/**
* 审批中
*/
APPROVEIND,
/**
* 审批拒绝
*/
REJECT,
/**
* 审批完成
*/
END;
}
package org.dromara.server.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public enum ProcessKey {
//出差审批
PROCESS_KEY_TRAVEL("process-travel", "出差审批");
private String key;
private String desc;
}
package org.dromara.server.constant;
/**
* @author wenhe
*/
public enum ProcessStepApprove {
/**
* 会签
*/
AND,
/**
* 或签
*/
OR
}
package org.dromara.server.constant;
/**
* 流程步骤类型
*
* @author wenhe
*/
public enum ProcessStepType {
/**
* 开始
*/
START,
/**
* 其他
*/
OTHER,
/**
* 审批
*/
APPROVE,
/**
* 结束
*/
END;
}
package org.dromara.server.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.server.domain.vo.ProcessProgressVo;
import org.dromara.server.domain.bo.ProcessProgressBo;
import org.dromara.server.service.IProcessProgressService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 流程进度
* 前端访问路由地址为:/server/progress
*
* @author hzh
* @date 2024-12-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/progress")
public class ProcessProgressController extends BaseController {
private final IProcessProgressService processProgressService;
/**
* 查询流程进度列表
*/
@SaCheckPermission("server:progress:list")
@GetMapping("/list")
public TableDataInfo<ProcessProgressVo> list(ProcessProgressBo bo, PageQuery pageQuery) {
return processProgressService.queryPageList(bo, pageQuery);
}
/**
* 导出流程进度列表
*/
@SaCheckPermission("server:progress:export")
@Log(title = "流程进度", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProcessProgressBo bo, HttpServletResponse response) {
List<ProcessProgressVo> list = processProgressService.queryList(bo);
ExcelUtil.exportExcel(list, "流程进度", ProcessProgressVo.class, response);
}
/**
* 获取流程进度详细信息
*
* @param id 主键
*/
@SaCheckPermission("server:progress:query")
@GetMapping("/{id}")
public R<ProcessProgressVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(processProgressService.queryById(id));
}
/**
* 新增流程进度
*/
@SaCheckPermission("server:progress:add")
@Log(title = "流程进度", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProcessProgressBo bo) {
return toAjax(processProgressService.insertByBo(bo));
}
/**
* 修改流程进度
*/
@SaCheckPermission("server:progress:edit")
@Log(title = "流程进度", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProcessProgressBo bo) {
return toAjax(processProgressService.updateByBo(bo));
}
/**
* 删除流程进度
*
* @param ids 主键串
*/
@SaCheckPermission("server:progress:remove")
@Log(title = "流程进度", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(processProgressService.deleteWithValidByIds(List.of(ids), true));
}
}
......@@ -146,7 +146,6 @@ public class TrainController extends BaseController {
.setToStationCode(toStationCode)
.setTripType(TripType.PUBLIC.getCode());
List<org.dromara.common.ys.model.res.train.QueryModel> list = trainService.queryModel(userId, query);
System.out.println("list:" + list.size());
return R.ok(list);
}
......
package org.dromara.server.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* 出差申请审批对象 process_approve
......@@ -72,7 +72,7 @@ public class ProcessApprove extends TenantEntity {
/**
* 是否通过
*/
private Long pass;
private Boolean pass;
}
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 流程进度对象 process_progress
*
* @author hzh
* @date 2024-12-11
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("process_progress")
public class ProcessProgress extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 流程定义key
*/
private String processKey;
/**
* 流程名称
*/
private String processName;
/**
* 流程步骤key
*/
private String processStepKey;
/**
* 流程步骤
*/
private String processStepName;
/**
* 审批类型
*/
private String approveType;
/**
* 关联id
*/
private Long relatedId;
/**
* 用户id
*/
private Long approveUserId;
/**
* 用户
*/
private String approveUserName;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.ProcessApprove;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.server.domain.ProcessApprove;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 出差申请审批业务对象 process_approve
......@@ -80,7 +81,7 @@ public class ProcessApproveBo extends BaseEntity {
* 是否通过
*/
@NotNull(message = "是否通过不能为空", groups = { AddGroup.class, EditGroup.class })
private Long pass;
private Boolean pass;
}
package org.dromara.server.domain.bo;
import lombok.experimental.Accessors;
import org.dromara.server.domain.ProcessProgress;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 流程进度业务对象 process_progress
*
* @author hzh
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@AutoMapper(target = ProcessProgress.class, reverseConvertGenerate = false)
public class ProcessProgressBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 流程定义key
*/
@NotBlank(message = "流程定义key不能为空", groups = { AddGroup.class, EditGroup.class })
private String processKey;
/**
* 流程名称
*/
@NotBlank(message = "流程名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String processName;
/**
* 流程步骤key
*/
@NotBlank(message = "流程步骤key不能为空", groups = { AddGroup.class, EditGroup.class })
private String processStepKey;
/**
* 流程步骤
*/
@NotBlank(message = "流程步骤不能为空", groups = { AddGroup.class, EditGroup.class })
private String processStepName;
/**
* 审批类型
*/
@NotBlank(message = "审批类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String approveType;
/**
* 关联id
*/
@NotNull(message = "关联id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long relatedId;
/**
* 用户id
*/
@NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long approveUserId;
/**
* 用户
*/
@NotBlank(message = "用户不能为空", groups = { AddGroup.class, EditGroup.class })
private String approveUserName;
}
package org.dromara.server.domain.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* 审批配置
* @author hzh
* @date 2024-12-11
**/
@Data
@Accessors(chain = true)
public class Process implements Serializable {
/**
* 步骤名称
*/
private String stepName;
/**
* 步骤key值(唯一值)
*/
private String stepKey;
/**
* 步骤类型
*/
private String stepType;
/**
* 审批类型
*/
private String approveType;
/**
* 审批人
*/
private List<Long> operatorList;
}
package org.dromara.server.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.server.domain.ProcessApprove;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.server.domain.ProcessApprove;
import java.io.Serial;
import java.io.Serializable;
......@@ -88,7 +84,7 @@ public class ProcessApproveVo implements Serializable {
* 是否通过
*/
@ExcelProperty(value = "是否通过")
private Long pass;
private Boolean pass;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.ProcessProgress;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 流程进度视图对象 process_progress
*
* @author hzh
* @date 2024-12-11
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProcessProgress.class)
public class ProcessProgressVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 流程定义key
*/
@ExcelProperty(value = "流程定义key")
private String processKey;
/**
* 流程名称
*/
@ExcelProperty(value = "流程名称")
private String processName;
/**
* 流程步骤key
*/
@ExcelProperty(value = "流程步骤key")
private String processStepKey;
/**
* 流程步骤
*/
@ExcelProperty(value = "流程步骤")
private String processStepName;
/**
* 审批类型
*/
@ExcelProperty(value = "审批类型")
private String approveType;
/**
* 关联id
*/
@ExcelProperty(value = "关联id")
private Long relatedId;
/**
* 用户id
*/
@ExcelProperty(value = "用户id")
private Long approveUserId;
/**
* 用户
*/
@ExcelProperty(value = "用户")
private String approveUserName;
}
package org.dromara.server.mapper;
import org.dromara.server.domain.ProcessProgress;
import org.dromara.server.domain.vo.ProcessProgressVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 流程进度Mapper接口
*
* @author hzh
* @date 2024-12-11
*/
public interface ProcessProgressMapper extends BaseMapperPlus<ProcessProgress, ProcessProgressVo> {
}
package org.dromara.server.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.server.constant.ProcessApproveStatus;
import org.dromara.server.domain.ProcessProgress;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.domain.bo.ProcessProgressBo;
import org.dromara.server.domain.vo.ProcessProgressVo;
import java.util.List;
/**
* 流程进度Service接口
*
* @author hzh
* @date 2024-12-11
*/
public interface IProcessProgressService extends IBaseService<ProcessProgressVo, ProcessProgressBo, ProcessProgress> {
/**
* 设置审批人集合
*
* @param processKey 流程key
* @param relatedId 关联id
* @return 下一个审批人列表
*/
void setNextApproveUserList(String processKey, Long relatedId);
/**
* 审批
*
* @param bo bo
* @return 是否成功
*/
boolean approve(ProcessApproveBo bo);
/**
* 获取审批状态
*
* @param processKey 流程key
* @param relatedId 关联id
* @return 审批状态
*/
ProcessApproveStatus getApproveStatus(String processKey, Long relatedId);
/**
* 获取审批人列表
*
* @param processKey 流程key
* @return 审批人列表
*/
List<Long> getApproveUserList(String processKey);
/**
* 获取当前审批人列表
*
* @param processKey 审批key
* @param relatedIds 关联id
* @return 当前审批人列表
*/
List<List<Long>> getCurrentApproveUserList(String processKey, List<Long> relatedIds);
}
......@@ -47,5 +47,4 @@ public class ProcessApproveServiceImpl extends AbstractBaseService<ProcessApprov
lqw.eq(bo.getPass() != null, ProcessApprove::getPass, bo.getPass());
return lqw;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.server.mapper.ProcessProgressMapper">
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论