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

流程管理相关接口功能实现

上级 35ceb71e
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.ProcessApproveVo;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.service.IProcessApproveService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 出差申请审批
* 前端访问路由地址为:/server/approve
*
* @author hzh
* @date 2024-12-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/approve")
public class ProcessApproveController extends BaseController {
private final IProcessApproveService processApproveService;
/**
* 查询出差申请审批列表
*/
@SaCheckPermission("server:approve:list")
@GetMapping("/list")
public TableDataInfo<ProcessApproveVo> list(ProcessApproveBo bo, PageQuery pageQuery) {
return processApproveService.queryPageList(bo, pageQuery);
}
/**
* 导出出差申请审批列表
*/
@SaCheckPermission("server:approve:export")
@Log(title = "出差申请审批", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProcessApproveBo bo, HttpServletResponse response) {
List<ProcessApproveVo> list = processApproveService.queryList(bo);
ExcelUtil.exportExcel(list, "出差申请审批", ProcessApproveVo.class, response);
}
/**
* 获取出差申请审批详细信息
*
* @param id 主键
*/
@SaCheckPermission("server:approve:query")
@GetMapping("/{id}")
public R<ProcessApproveVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(processApproveService.queryById(id));
}
/**
* 新增出差申请审批
*/
@SaCheckPermission("server:approve:add")
@Log(title = "出差申请审批", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProcessApproveBo bo) {
return toAjax(processApproveService.insertByBo(bo));
}
/**
* 修改出差申请审批
*/
@SaCheckPermission("server:approve:edit")
@Log(title = "出差申请审批", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProcessApproveBo bo) {
return toAjax(processApproveService.updateByBo(bo));
}
/**
* 删除出差申请审批
*
* @param ids 主键串
*/
@SaCheckPermission("server:approve:remove")
@Log(title = "出差申请审批", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(processApproveService.deleteWithValidByIds(List.of(ids), true));
}
}
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.ProcessConfigVo;
import org.dromara.server.domain.bo.ProcessConfigBo;
import org.dromara.server.service.IProcessConfigService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 流程配置
* 前端访问路由地址为:/server/config
*
* @author hzh
* @date 2024-12-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/config")
public class ProcessConfigController extends BaseController {
private final IProcessConfigService processConfigService;
/**
* 查询流程配置列表
*/
@SaCheckPermission("server:config:list")
@GetMapping("/list")
public TableDataInfo<ProcessConfigVo> list(ProcessConfigBo bo, PageQuery pageQuery) {
return processConfigService.queryPageList(bo, pageQuery);
}
/**
* 导出流程配置列表
*/
@SaCheckPermission("server:config:export")
@Log(title = "流程配置", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProcessConfigBo bo, HttpServletResponse response) {
List<ProcessConfigVo> list = processConfigService.queryList(bo);
ExcelUtil.exportExcel(list, "流程配置", ProcessConfigVo.class, response);
}
/**
* 获取流程配置详细信息
*
* @param id 主键
*/
@SaCheckPermission("server:config:query")
@GetMapping("/{id}")
public R<ProcessConfigVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(processConfigService.queryById(id));
}
/**
* 新增流程配置
*/
@SaCheckPermission("server:config:add")
@Log(title = "流程配置", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProcessConfigBo bo) {
return toAjax(processConfigService.insertByBo(bo));
}
/**
* 修改流程配置
*/
@SaCheckPermission("server:config:edit")
@Log(title = "流程配置", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProcessConfigBo bo) {
return toAjax(processConfigService.updateByBo(bo));
}
/**
* 删除流程配置
*
* @param ids 主键串
*/
@SaCheckPermission("server:config:remove")
@Log(title = "流程配置", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(processConfigService.deleteWithValidByIds(List.of(ids), true));
}
}
package org.dromara.server.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 出差申请审批对象 process_approve
*
* @author hzh
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("process_approve")
public class ProcessApprove extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 流程定义key
*/
private String processConfigKey;
/**
* 流程步骤key
*/
private String processStepKey;
/**
* 流程步骤名称
*/
private String processStepName;
/**
* 关联id
*/
private Long relatedId;
/**
* 审批人id
*/
private Long approveUserId;
/**
* 审批人
*/
private String approveName;
/**
* 审批时间
*/
private Date approveTime;
/**
* 审批描述
*/
private String approveDesc;
/**
* 是否通过
*/
private Long pass;
}
package org.dromara.server.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 流程配置对象 process_config
*
* @author hzh
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("process_config")
public class ProcessConfig extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 流程定义key
*/
private String processKey;
/**
* 流程名称
*/
private String processName;
/**
* 流程内容
*/
private String process;
/**
* 删除标志(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 lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 出差申请审批业务对象 process_approve
*
* @author hzh
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProcessApprove.class, reverseConvertGenerate = false)
public class ProcessApproveBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 流程定义key
*/
@NotBlank(message = "流程定义key不能为空", groups = { AddGroup.class, EditGroup.class })
private String processConfigKey;
/**
* 流程步骤key
*/
@NotBlank(message = "流程步骤key不能为空", groups = { AddGroup.class, EditGroup.class })
private String processStepKey;
/**
* 流程步骤名称
*/
@NotBlank(message = "流程步骤名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String processStepName;
/**
* 关联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 approveName;
/**
* 审批时间
*/
@NotNull(message = "审批时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date approveTime;
/**
* 审批描述
*/
@NotBlank(message = "审批描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String approveDesc;
/**
* 是否通过
*/
@NotNull(message = "是否通过不能为空", groups = { AddGroup.class, EditGroup.class })
private Long pass;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.ProcessConfig;
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_config
*
* @author hzh
* @date 2024-12-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProcessConfig.class, reverseConvertGenerate = false)
public class ProcessConfigBo 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;
/**
* 流程内容
*/
@NotBlank(message = "流程内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String process;
}
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 java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 出差申请审批视图对象 process_approve
*
* @author hzh
* @date 2024-12-11
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProcessApprove.class)
public class ProcessApproveVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 流程定义key
*/
@ExcelProperty(value = "流程定义key")
private String processConfigKey;
/**
* 流程步骤key
*/
@ExcelProperty(value = "流程步骤key")
private String processStepKey;
/**
* 流程步骤名称
*/
@ExcelProperty(value = "流程步骤名称")
private String processStepName;
/**
* 关联id
*/
@ExcelProperty(value = "关联id")
private Long relatedId;
/**
* 审批人id
*/
@ExcelProperty(value = "审批人id")
private Long approveUserId;
/**
* 审批人
*/
@ExcelProperty(value = "审批人")
private String approveName;
/**
* 审批时间
*/
@ExcelProperty(value = "审批时间")
private Date approveTime;
/**
* 审批描述
*/
@ExcelProperty(value = "审批描述")
private String approveDesc;
/**
* 是否通过
*/
@ExcelProperty(value = "是否通过")
private Long pass;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.ProcessConfig;
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_config
*
* @author hzh
* @date 2024-12-11
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProcessConfig.class)
public class ProcessConfigVo 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;
/**
* 流程内容
*/
@ExcelProperty(value = "流程内容")
private String process;
}
package org.dromara.server.mapper;
import org.dromara.server.domain.ProcessApprove;
import org.dromara.server.domain.vo.ProcessApproveVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 出差申请审批Mapper接口
*
* @author hzh
* @date 2024-12-11
*/
public interface ProcessApproveMapper extends BaseMapperPlus<ProcessApprove, ProcessApproveVo> {
}
package org.dromara.server.mapper;
import org.dromara.server.domain.ProcessConfig;
import org.dromara.server.domain.vo.ProcessConfigVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 流程配置Mapper接口
*
* @author hzh
* @date 2024-12-11
*/
public interface ProcessConfigMapper extends BaseMapperPlus<ProcessConfig, ProcessConfigVo> {
}
package org.dromara.server.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.server.domain.ProcessApprove;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.domain.vo.ProcessApproveVo;
/**
* 出差申请审批Service接口
*
* @author hzh
* @date 2024-12-11
*/
public interface IProcessApproveService extends IBaseService<ProcessApproveVo, ProcessApproveBo, ProcessApprove> {
}
package org.dromara.server.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.server.domain.ProcessConfig;
import org.dromara.server.domain.bo.ProcessConfigBo;
import org.dromara.server.domain.vo.ProcessConfigVo;
/**
* 流程配置Service接口
*
* @author hzh
* @date 2024-12-11
*/
public interface IProcessConfigService extends IBaseService<ProcessConfigVo, ProcessConfigBo, ProcessConfig> {
}
package org.dromara.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.server.domain.ProcessApprove;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.domain.vo.ProcessApproveVo;
import org.dromara.server.mapper.ProcessApproveMapper;
import org.dromara.server.service.IProcessApproveService;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* 出差申请审批Service业务层处理
*
* @author hzh
* @date 2024-12-11
*/
@RequiredArgsConstructor
@Service
public class ProcessApproveServiceImpl extends AbstractBaseService<ProcessApproveVo, ProcessApproveBo, ProcessApprove> implements IProcessApproveService {
private final ProcessApproveMapper baseMapper;
@Override
public BaseMapperPlus<ProcessApprove, ProcessApproveVo> mapper() {
return baseMapper;
}
@Override
public LambdaQueryWrapper<ProcessApprove> buildQueryWrapper(ProcessApproveBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ProcessApprove> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getProcessConfigKey()), ProcessApprove::getProcessConfigKey, bo.getProcessConfigKey());
lqw.eq(StringUtils.isNotBlank(bo.getProcessStepKey()), ProcessApprove::getProcessStepKey, bo.getProcessStepKey());
lqw.like(StringUtils.isNotBlank(bo.getProcessStepName()), ProcessApprove::getProcessStepName, bo.getProcessStepName());
lqw.eq(bo.getRelatedId() != null, ProcessApprove::getRelatedId, bo.getRelatedId());
lqw.eq(bo.getApproveUserId() != null, ProcessApprove::getApproveUserId, bo.getApproveUserId());
lqw.like(StringUtils.isNotBlank(bo.getApproveName()), ProcessApprove::getApproveName, bo.getApproveName());
lqw.eq(bo.getApproveTime() != null, ProcessApprove::getApproveTime, bo.getApproveTime());
lqw.eq(StringUtils.isNotBlank(bo.getApproveDesc()), ProcessApprove::getApproveDesc, bo.getApproveDesc());
lqw.eq(bo.getPass() != null, ProcessApprove::getPass, bo.getPass());
return lqw;
}
}
package org.dromara.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.server.domain.ProcessConfig;
import org.dromara.server.domain.bo.ProcessConfigBo;
import org.dromara.server.domain.vo.ProcessConfigVo;
import org.dromara.server.mapper.ProcessConfigMapper;
import org.dromara.server.service.IProcessConfigService;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* 流程配置Service业务层处理
*
* @author hzh
* @date 2024-12-11
*/
@RequiredArgsConstructor
@Service
public class ProcessConfigServiceImpl extends AbstractBaseService<ProcessConfigVo, ProcessConfigBo, ProcessConfig> implements IProcessConfigService {
private final ProcessConfigMapper baseMapper;
@Override
public BaseMapperPlus<ProcessConfig, ProcessConfigVo> mapper() {
return baseMapper;
}
@Override
public LambdaQueryWrapper<ProcessConfig> buildQueryWrapper(ProcessConfigBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ProcessConfig> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getProcessKey()), ProcessConfig::getProcessKey, bo.getProcessKey());
lqw.like(StringUtils.isNotBlank(bo.getProcessName()), ProcessConfig::getProcessName, bo.getProcessName());
lqw.eq(StringUtils.isNotBlank(bo.getProcess()), ProcessConfig::getProcess, bo.getProcess());
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.ProcessApproveMapper">
</mapper>
<?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.ProcessConfigMapper">
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论