分派配置审批

liweidong
张乾翔 2 weeks ago
parent 1dd16c3e52
commit 74dcdc7c2a
  1. 45
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/DispatchConfigApprovalConst.java
  2. 69
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/DispatchConfigApproval.java
  3. 31
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/AuditRequest.java
  4. 47
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/DispatchConfigApprovalRequest.java
  5. 115
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/DispatchConfigApprovalVO.java
  6. 202
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/DispatchConfigApprovalController.java
  7. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/DispatchConfigApprovalExcel.java
  8. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalMapper.java
  9. 86
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IDispatchConfigApprovalService.java
  10. 230
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/DispatchConfigApprovalServiceImpl.java
  11. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/DispatchConfigApprovalWrapper.java

@ -0,0 +1,45 @@
package org.springblade.desk.quality.constant;
/**
* 分派配置审批常量
*
* @author AI
* @since 2026-05-19
*/
public interface DispatchConfigApprovalConst {
/**
* 状态-草稿
*/
Integer STATUS_DRAFT = 0;
/**
* 状态-审批中
*/
Integer STATUS_APPROVING = 1;
/**
* 状态-审批通过
*/
Integer STATUS_APPROVED = 2;
/**
* 状态-审批驳回
*/
Integer STATUS_REJECTED = 3;
/**
* 状态-已撤销
*/
Integer STATUS_CANCELLED = 4;
/**
* 审批结果-通过
*/
Integer AUDIT_RESULT_PASS = 1;
/**
* 审批结果-驳回
*/
Integer AUDIT_RESULT_REJECT = 2;
}

@ -0,0 +1,69 @@
package org.springblade.desk.quality.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.Date;
/**
* 分派配置审批实体类
*
* @author AI
* @since 2026-05-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("QA_DISPATCH_CONFIG_APPROVAL")
@Schema(description = "分派配置审批实体")
public class DispatchConfigApproval extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "ID", type = IdType.ASSIGN_ID)
@Schema(description = "主键ID")
private Long id;
/**
* 申请单号
*/
@Schema(description = "申请单号")
private String applicationNo;
/**
* 申请人ID
*/
@Schema(description = "申请人ID")
private Long applicantId;
/**
* 申请人姓名
*/
@Schema(description = "申请人姓名")
private String applicantName;
/**
* 申请时间
*/
@Schema(description = "申请时间")
private Date applicationTime;
/**
* 申请描述/备注
*/
@Schema(description = "申请描述/备注")
private String remark;
/**
* 状态: 0-草稿, 1-审批中, 2-审批通过, 3-审批驳回, 4-已撤销
*/
@Schema(description = "状态: 0-草稿, 1-审批中, 2-审批通过, 3-审批驳回, 4-已撤销")
private Integer status;
}

@ -0,0 +1,31 @@
package org.springblade.desk.quality.pojo.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 审核请求DTO
*
* @author qyl
* @since 2026-05-13
*/
@Data
@Schema(description = "审核请求DTO")
public class AuditRequest implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "模板ID不能为空")
@Schema(description = "模板ID")
private Long id;
@NotNull(message = "审核结果不能为空")
@Schema(description = "审核结果: 1-通过, 2-不通过")
private Integer result;
@Schema(description = "审核意见(不通过时必填)")
private String remark;
}

@ -0,0 +1,47 @@
package org.springblade.desk.quality.pojo.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 分派配置审批请求DTO
*
* @author AI
* @since 2026-05-19
*/
@Data
@Schema(description = "分派配置审批请求DTO")
public class DispatchConfigApprovalRequest implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID修改时必填
*/
@Schema(description = "主键ID(修改时必填)")
private Long id;
/**
* 申请描述/备注
*/
@NotBlank(message = "申请描述不能为空")
@Schema(description = "申请描述/备注", required = true)
private String remark;
/**
* 审批结果: 1-通过, 2-驳回
*/
@NotNull(message = "审批结果不能为空")
@Schema(description = "审批结果: 1-通过, 2-驳回", required = true)
private Integer auditResult;
/**
* 审批意见
*/
@Schema(description = "审批意见")
private String auditRemark;
}

@ -0,0 +1,115 @@
package org.springblade.desk.quality.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.desk.quality.pojo.entity.DispatchConfigApproval;
import java.util.Date;
/**
* 分派配置审批VO类
*
* @author AI
* @since 2026-05-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "分派配置审批VO")
public class DispatchConfigApprovalVO extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Schema(description = "主键ID")
private Long id;
/**
* 申请单号
*/
@Schema(description = "申请单号")
private String applicationNo;
/**
* 申请人ID
*/
@Schema(description = "申请人ID")
private Long applicantId;
/**
* 申请人姓名
*/
@Schema(description = "申请人姓名")
private String applicantName;
/**
* 申请时间
*/
@Schema(description = "申请时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date applicationTime;
/**
* 申请描述/备注
*/
@Schema(description = "申请描述/备注")
private String remark;
/**
* 状态: 0-草稿, 1-审批中, 2-审批通过, 3-审批驳回, 4-已撤销
*/
@Schema(description = "状态: 0-草稿, 1-审批中, 2-审批通过, 3-审批驳回, 4-已撤销")
private Integer status;
/**
* 状态名称
*/
@Schema(description = "状态名称")
private String statusName;
/**
* 从实体转换为VO
*/
public static DispatchConfigApprovalVO fromEntity(DispatchConfigApproval entity) {
if (entity == null) {
return null;
}
DispatchConfigApprovalVO vo = new DispatchConfigApprovalVO();
vo.setId(entity.getId());
vo.setApplicationNo(entity.getApplicationNo());
vo.setApplicantId(entity.getApplicantId());
vo.setApplicantName(entity.getApplicantName());
vo.setApplicationTime(entity.getApplicationTime());
vo.setRemark(entity.getRemark());
vo.setStatus(entity.getStatus());
vo.setStatusName(getStatusName(entity.getStatus()));
return vo;
}
/**
* 获取状态名称
*/
private static String getStatusName(Integer status) {
if (status == null) {
return "未知";
}
switch (status) {
case 0:
return "草稿";
case 1:
return "审批中";
case 2:
return "审批通过";
case 3:
return "审批驳回";
case 4:
return "已撤销";
default:
return "未知";
}
}
}

@ -0,0 +1,202 @@
package org.springblade.desk.quality.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
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.desk.quality.constant.QAModuleConst;
import org.springblade.desk.quality.excel.DispatchConfigApprovalExcel;
import org.springblade.desk.quality.pojo.entity.DispatchConfigApproval;
import org.springblade.desk.quality.pojo.request.DispatchConfigApprovalRequest;
import org.springblade.desk.quality.pojo.vo.DispatchConfigApprovalVO;
import org.springblade.desk.quality.service.IDispatchConfigApprovalService;
import org.springblade.desk.quality.wrapper.DispatchConfigApprovalWrapper;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* [分派配置审批] 控制器
*
* @author AI
* @since 2026-05-19
*/
@RestController
@RequestMapping(QAModuleConst.CONTROLLER_PREFIX + "/DispatchConfigApproval")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
@Tag(name = "[分派配置审批]", description = "[分派配置审批]接口")
public class DispatchConfigApprovalController extends BladeController {
@Resource
private IDispatchConfigApprovalService service;
/**
* [分派配置审批] 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入DispatchConfigApproval Obj")
public R<DispatchConfigApprovalVO> detail(DispatchConfigApproval dispatchConfigApproval) {
QueryWrapper<DispatchConfigApproval> qw = Condition.getQueryWrapper(dispatchConfigApproval);
DispatchConfigApproval detail = service.getOne(qw);
DispatchConfigApprovalVO detailVO = DispatchConfigApprovalWrapper.build().entityVO(detail);
return R.data(detailVO);
}
/**
* [分派配置审批] list分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入DispatchConfigApproval Obj")
public R<IPage<DispatchConfigApprovalVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> dispatchConfigApproval,
Query query) {
QueryWrapper<DispatchConfigApproval> qw = Condition.getQueryWrapper(dispatchConfigApproval, DispatchConfigApproval.class);
IPage<DispatchConfigApproval> pages = service.page(Condition.getPage(query), qw);
IPage<DispatchConfigApprovalVO> pagesVO = DispatchConfigApprovalWrapper.build().pageVO(pages);
return R.data(pagesVO);
}
/**
* [分派配置审批] page分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入DispatchConfigApproval Obj")
public R<IPage<DispatchConfigApprovalVO>> page(DispatchConfigApprovalVO dispatchConfigApproval, Query query) {
IPage<DispatchConfigApprovalVO> pagesVO = service.selectDispatchConfigApprovalPage(
Condition.getPage(query), dispatchConfigApproval
);
return R.data(pagesVO);
}
/**
* [分派配置审批] list下拉选择
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "")
public R<List<DispatchConfigApprovalVO>> listForSelect() {
List<DispatchConfigApproval> list = service.list();
List<DispatchConfigApprovalVO> listVO = DispatchConfigApprovalWrapper.build().listVO(list);
return R.data(listVO);
}
/**
* [分派配置审批] 新增一条
*/
@PostMapping("/save")
@ApiOperationSupport(order = 30)
@ApiLog("新增分派配置审批")
@Operation(summary = "新增一条", description = "传入DispatchConfigApproval Obj")
public R save(@Valid @RequestBody DispatchConfigApproval addOne) {
return service.saveDispatchConfigApproval(addOne);
}
/**
* [分派配置审批] 新增批量
*/
@PostMapping("/saveBat")
@ApiOperationSupport(order = 31)
@ApiLog("新增分派配置审批")
@Operation(summary = "新增批量", description = "传入DispatchConfigApproval List")
public R saveBat(@Valid @RequestBody List<DispatchConfigApproval> addList) {
addList.forEach(one -> {
one.setId(null);
});
return R.status(service.saveBatch(addList));
}
/**
* [分派配置审批] 修改一条
*/
@PostMapping("/update")
@ApiOperationSupport(order = 40)
@ApiLog("修改分派配置审批")
@Operation(summary = "修改一条", description = "传入DispatchConfigApproval Obj")
public R update(@Valid @RequestBody DispatchConfigApproval updateOne) {
return service.updateDispatchConfigApproval(updateOne);
}
/**
* [分派配置审批] 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 50)
@ApiLog("删除分派配置审批")
@Operation(summary = "删除", description = "传入主键集合")
public R remove(@RequestParam List<Long> ids) {
return service.removeDispatchConfigApproval(ids);
}
/**
* [分派配置审批] 导出
*/
@GetMapping("/export")
@ApiOperationSupport(order = 60)
@ApiLog("导出分派配置审批")
@Operation(summary = "导出", description = "传入DispatchConfigApproval Obj")
public void export(DispatchConfigApproval dispatchConfigApproval, HttpServletResponse response) {
List<DispatchConfigApprovalExcel> list = service.exportDispatchConfigApproval(
DispatchConfigApprovalWrapper.build().entityVO(dispatchConfigApproval)
);
ExcelUtil.export(response, "分派配置审批数据" + DateUtil.time(), "分派配置审批数据表", list, DispatchConfigApprovalExcel.class);
}
/**
* [分派配置审批] 提交审批
*/
@PostMapping("/submitApproval")
@ApiOperationSupport(order = 70)
@ApiLog("提交分派配置审批")
@Operation(summary = "提交审批", description = "传入主键ID")
public R submitApproval(@Parameter(description = "主键ID", required = true) @RequestParam Long id) {
return service.submitApproval(id);
}
/**
* [分派配置审批] 审批待实现
*/
@PostMapping("/audit")
@ApiOperationSupport(order = 80)
@ApiLog("审批分派配置")
@Operation(summary = "审批", description = "审批功能待实现")
public R audit(@Parameter(description = "主键ID", required = true) @RequestParam Long id,
@Parameter(description = "审批结果: 1-通过, 2-驳回", required = true) @RequestParam Integer result,
@Parameter(description = "审批意见") @RequestParam(required = false) String remark) {
return service.audit(id, result, remark);
}
/**
* [分派配置审批] 查询审批历史
*/
@GetMapping("/auditHistory/{id}")
@ApiOperationSupport(order = 90)
@Operation(summary = "查询审批历史", description = "传入主键ID")
public R<DispatchConfigApprovalVO> getAuditHistory(@Parameter(description = "主键ID", required = true) @PathVariable Long id) {
return R.data(service.getAuditHistory(id));
}
}

@ -0,0 +1,40 @@
package org.springblade.desk.quality.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 分派配置审批Excel类
*
* @author AI
* @since 2026-05-19
*/
@Data
public class DispatchConfigApprovalExcel implements Serializable {
private static final long serialVersionUID = 1L;
@ExcelProperty("申请单号")
@ColumnWidth(20)
private String applicationNo;
@ExcelProperty("申请人")
@ColumnWidth(15)
private String applicantName;
@ExcelProperty("申请时间")
@ColumnWidth(20)
private Date applicationTime;
@ExcelProperty("申请描述")
@ColumnWidth(40)
private String remark;
@ExcelProperty("状态")
@ColumnWidth(15)
private String statusName;
}

@ -0,0 +1,14 @@
package org.springblade.desk.quality.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.quality.pojo.entity.DispatchConfigApproval;
/**
* 分派配置审批Mapper接口
*
* @author AI
* @since 2026-05-19
*/
public interface DispatchConfigApprovalMapper extends BaseMapper<DispatchConfigApproval> {
}

@ -0,0 +1,86 @@
package org.springblade.desk.quality.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.service.en.EnBaseService;
import org.springblade.desk.quality.excel.DispatchConfigApprovalExcel;
import org.springblade.desk.quality.pojo.entity.DispatchConfigApproval;
import org.springblade.desk.quality.pojo.vo.DispatchConfigApprovalVO;
import java.util.List;
/**
* 分派配置审批服务接口
*
* @author AI
* @since 2026-05-19
*/
public interface IDispatchConfigApprovalService extends EnBaseService<DispatchConfigApproval> {
/**
* 自定义分页查询
*
* @param page 分页参数
* @param entity 查询条件
* @return 分页结果
*/
IPage<DispatchConfigApprovalVO> selectDispatchConfigApprovalPage(IPage<DispatchConfigApproval> page, DispatchConfigApprovalVO entity);
/**
* 导出数据
*
* @param entity 查询条件
* @return Excel数据列表
*/
List<DispatchConfigApprovalExcel> exportDispatchConfigApproval(DispatchConfigApprovalVO entity);
/**
* 新增分派配置审批
*
* @param entity 分派配置审批实体
* @return 操作结果
*/
R saveDispatchConfigApproval(DispatchConfigApproval entity);
/**
* 修改分派配置审批
*
* @param entity 分派配置审批实体
* @return 操作结果
*/
R updateDispatchConfigApproval(DispatchConfigApproval entity);
/**
* 删除分派配置审批
*
* @param ids 主键ID列表
* @return 操作结果
*/
R removeDispatchConfigApproval(List<Long> ids);
/**
* 提交审批
*
* @param id 主键ID
* @return 操作结果
*/
R submitApproval(Long id);
/**
* 审批待实现
*
* @param id 主键ID
* @param result 审批结果: 1-通过, 2-驳回
* @param remark 审批意见
* @return 操作结果
*/
R audit(Long id, Integer result, String remark);
/**
* 查询审批历史
*
* @param id 主键ID
* @return 审批历史信息
*/
DispatchConfigApprovalVO getAuditHistory(Long id);
}

@ -0,0 +1,230 @@
package org.springblade.desk.quality.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl;
import org.springblade.desk.quality.constant.DispatchConfigApprovalConst;
import org.springblade.desk.quality.excel.DispatchConfigApprovalExcel;
import org.springblade.desk.quality.mapper.DispatchConfigApprovalMapper;
import org.springblade.desk.quality.pojo.entity.DispatchConfigApproval;
import org.springblade.desk.quality.pojo.request.DispatchConfigApprovalRequest;
import org.springblade.desk.quality.pojo.vo.DispatchConfigApprovalVO;
import org.springblade.desk.quality.service.IDispatchConfigApprovalService;
import org.springblade.desk.quality.wrapper.DispatchConfigApprovalWrapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 分派配置审批服务实现类
*
* @author AI
* @since 2026-05-19
*/
@Slf4j
@Service
public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl<DispatchConfigApprovalMapper, DispatchConfigApproval> implements IDispatchConfigApprovalService {
@Override
public IPage<DispatchConfigApprovalVO> selectDispatchConfigApprovalPage(IPage<DispatchConfigApproval> page, DispatchConfigApprovalVO entity) {
QueryWrapper<DispatchConfigApproval> queryWrapper = new QueryWrapper<>();
// 查询条件
if (entity != null) {
if (StrUtil.isNotBlank(entity.getApplicationNo())) {
queryWrapper.like("APPLICATION_NO", entity.getApplicationNo());
}
if (StrUtil.isNotBlank(entity.getApplicantName())) {
queryWrapper.like("APPLICANT_NAME", entity.getApplicantName());
}
if (entity.getStatus() != null) {
queryWrapper.eq("STATUS", entity.getStatus());
}
}
// 按创建时间降序
queryWrapper.orderByDesc("CREATE_TIME");
IPage<DispatchConfigApproval> pages = baseMapper.selectPage(
page,
queryWrapper
);
return DispatchConfigApprovalWrapper.build().pageVO(pages);
}
@Override
public List<DispatchConfigApprovalExcel> exportDispatchConfigApproval(DispatchConfigApprovalVO entity) {
QueryWrapper<DispatchConfigApproval> queryWrapper = new QueryWrapper<>();
// 查询条件
if (entity != null) {
if (StrUtil.isNotBlank(entity.getApplicationNo())) {
queryWrapper.like("APPLICATION_NO", entity.getApplicationNo());
}
if (StrUtil.isNotBlank(entity.getApplicantName())) {
queryWrapper.like("APPLICANT_NAME", entity.getApplicantName());
}
if (entity.getStatus() != null) {
queryWrapper.eq("STATUS", entity.getStatus());
}
}
queryWrapper.orderByDesc("CREATE_TIME");
List<DispatchConfigApproval> list = list(queryWrapper);
List<DispatchConfigApprovalExcel> excelList = new ArrayList<>();
for (DispatchConfigApproval item : list) {
DispatchConfigApprovalExcel excel = new DispatchConfigApprovalExcel();
BeanUtils.copyProperties(item, excel);
excel.setStatusName(getStatusName(item.getStatus()));
excelList.add(excel);
}
return excelList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public R saveDispatchConfigApproval(DispatchConfigApproval entity) {
// 生成申请单号
String applicationNo = generateApplicationNo();
entity.setApplicationNo(applicationNo);
// 设置申请人信息
entity.setApplicantId(AuthUtil.getUserId());
entity.setApplicantName(AuthUtil.getUserName());
entity.setApplicationTime(new Date());
// 设置初始状态为草稿
entity.setStatus(DispatchConfigApprovalConst.STATUS_DRAFT);
return R.status(save(entity));
}
@Override
@Transactional(rollbackFor = Exception.class)
public R updateDispatchConfigApproval(DispatchConfigApproval entity) {
// 检查是否存在
DispatchConfigApproval existing = getById(entity.getId());
if (existing == null) {
return R.fail("记录不存在");
}
// 只有草稿状态可以修改
if (!DispatchConfigApprovalConst.STATUS_DRAFT.equals(existing.getStatus())) {
return R.fail("只有草稿状态的记录可以修改");
}
return R.status(updateById(entity));
}
@Override
@Transactional(rollbackFor = Exception.class)
public R removeDispatchConfigApproval(List<Long> ids) {
if (ids == null || ids.isEmpty()) {
return R.fail("请选择要删除的记录");
}
// 检查状态,只有草稿状态可以删除
for (Long id : ids) {
DispatchConfigApproval entity = getById(id);
if (entity != null && !DispatchConfigApprovalConst.STATUS_DRAFT.equals(entity.getStatus())) {
return R.fail("只有草稿状态的记录可以删除");
}
}
return R.status(removeByIds(ids));
}
@Override
@Transactional(rollbackFor = Exception.class)
public R submitApproval(Long id) {
DispatchConfigApproval entity = getById(id);
if (entity == null) {
return R.fail("记录不存在");
}
// 只有草稿状态可以提交审批
if (!DispatchConfigApprovalConst.STATUS_DRAFT.equals(entity.getStatus())) {
return R.fail("只有草稿状态的记录可以提交审批");
}
// 更新状态为审批中
entity.setStatus(DispatchConfigApprovalConst.STATUS_APPROVING);
updateById(entity);
// TODO: 发送消息通知给审批人
return R.success("提交审批成功");
}
@Override
@Transactional(rollbackFor = Exception.class)
public R audit(Long id, Integer result, String remark) {
// TODO: 审批功能逻辑待确认,暂时返回提示信息
return R.fail("审批功能待实现");
}
@Override
public DispatchConfigApprovalVO getAuditHistory(Long id) {
DispatchConfigApproval entity = getById(id);
if (entity == null) {
return null;
}
return DispatchConfigApprovalVO.fromEntity(entity);
}
/**
* 生成申请单号
* 格式YYYYMMDD + 3位序号
*/
private String generateApplicationNo() {
String dateStr = cn.hutool.core.date.DateUtil.format(new Date(), "yyyyMMdd");
// 查询当天最大序号
QueryWrapper<DispatchConfigApproval> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("APPLICATION_NO", dateStr)
.orderByDesc("APPLICATION_NO")
.last("LIMIT 1");
DispatchConfigApproval last = getOne(queryWrapper);
int seq = 1;
if (last != null && StrUtil.isNotBlank(last.getApplicationNo())) {
String lastSeq = last.getApplicationNo().substring(8);
seq = Integer.parseInt(lastSeq) + 1;
}
return dateStr + String.format("%03d", seq);
}
/**
* 获取状态名称
*/
private String getStatusName(Integer status) {
if (status == null) {
return "未知";
}
switch (status) {
case 0:
return "草稿";
case 1:
return "审批中";
case 2:
return "审批通过";
case 3:
return "审批驳回";
case 4:
return "已撤销";
default:
return "未知";
}
}
}

@ -0,0 +1,23 @@
package org.springblade.desk.quality.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.desk.quality.pojo.entity.DispatchConfigApproval;
import org.springblade.desk.quality.pojo.vo.DispatchConfigApprovalVO;
/**
* 分派配置审批包装类
*
* @author AI
* @since 2026-05-19
*/
public class DispatchConfigApprovalWrapper extends BaseEntityWrapper<DispatchConfigApproval, DispatchConfigApprovalVO> {
public static DispatchConfigApprovalWrapper build() {
return new DispatchConfigApprovalWrapper();
}
@Override
public DispatchConfigApprovalVO entityVO(DispatchConfigApproval entity) {
return DispatchConfigApprovalVO.fromEntity(entity);
}
}
Loading…
Cancel
Save