图纸评审

This commit is contained in:
2025-08-13 09:58:18 +08:00
parent bb7fa6f71e
commit a716991576
19 changed files with 611 additions and 48 deletions

View File

@ -9,7 +9,8 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.design.domain.bo.AnewDrawingReviewUploadReq;
import org.dromara.design.domain.bo.DrawingReviewUploadReq;
import org.dromara.design.domain.bo.FillOutTheDesignVerificationFormReq;
import org.dromara.design.domain.vo.ListOfDesignDrawingsReviewRes;
import org.dromara.design.domain.vo.*;
import org.dromara.design.service.IBusDrawingreviewReceiptsService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -21,10 +22,10 @@ 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.design.domain.vo.BusDrawingreviewVo;
import org.dromara.design.domain.bo.BusDrawingreviewBo;
import org.dromara.design.service.IBusDrawingreviewService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 设计-图纸评审
@ -40,6 +41,8 @@ public class BusDrawingreviewController extends BaseController {
private final IBusDrawingreviewService busDrawingreviewService;
private final IBusDrawingreviewReceiptsService busDrawingreviewReceiptsService;
/**
* 新增设计图纸评审
*/
@ -47,13 +50,12 @@ public class BusDrawingreviewController extends BaseController {
@Log(title = "新增设计图纸评审", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/drawingReviewUpload")
public R<Void> drawingReviewUpload(@RequestBody DrawingReviewUploadReq bo) {
return toAjax(busDrawingreviewService.drawingReviewUpload(bo));
public R<Void> drawingReviewUpload(DrawingReviewUploadReq bo, @RequestPart("file") MultipartFile file) {
return toAjax(busDrawingreviewService.drawingReviewUpload(bo, file));
}
/**
* 设计图纸评审列表
* listOfDesignDrawingsReview
*/
@SaCheckPermission("design:drawingreview:listOfDesignDrawingsReview")
@GetMapping("/listOfDesignDrawingsReview")
@ -61,6 +63,41 @@ public class BusDrawingreviewController extends BaseController {
return busDrawingreviewService.listOfDesignDrawingsReview(bo, pageQuery);
}
/**
* 获取历史设计图纸评审
*/
@SaCheckPermission("design:drawingreview:ObtainHistoricalDesignDrawingsForReview")
@GetMapping("/ObtainHistoricalDesignDrawingsForReview/{id}")
public List<ObtainHistoricalDesignDrawingsForReviewRes> ObtainHistoricalDesignDrawingsForReview(@NotNull(message = "主键不能为空")@PathVariable Long id) {
return busDrawingreviewService.ObtainHistoricalDesignDrawingsForReview(id);
}
/**
* 获取设计-主图纸评审详细信息
*
* @param id 主键
*/
@SaCheckPermission("design:drawingreview:zQuery")
@GetMapping("/zQuery/{id}")
public R<BusDrawingreviewVo> zQuery(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busDrawingreviewService.queryById(id));
}
/**
* 根据历史设计图纸评审查询详情
*
* @param id 主键
*/
@SaCheckPermission("design:drawingreview:query")
@GetMapping("/{id}")
public R<BusDrawingreviewReceiptsVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busDrawingreviewReceiptsService.queryById(id));
}
/**
* 重新上传设计图纸评审
*/
@ -68,8 +105,8 @@ public class BusDrawingreviewController extends BaseController {
@Log(title = "重新上传设计图纸评审", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PutMapping("/anewDrawingReviewUpload")
public R<Void> anewDrawingReviewUpload(@RequestBody AnewDrawingReviewUploadReq bo) {
return toAjax(busDrawingreviewService.anewDrawingReviewUpload(bo));
public R<Void> anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo,@RequestPart("file") MultipartFile file) {
return toAjax(busDrawingreviewService.anewDrawingReviewUpload(bo,file));
}
/**

View File

@ -1,9 +1,14 @@
package org.dromara.design.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
@ -12,6 +17,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.design.domain.DesVolumeFile;
import org.dromara.design.domain.dto.ExcelData;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogCreateReq;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
@ -21,7 +27,16 @@ import org.dromara.design.service.IDesVolumeCatalogService;
import org.dromara.design.service.IDesVolumeFileService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -41,6 +56,8 @@ public class DesVolumeCatalogController extends BaseController {
@Resource
private IDesVolumeFileService volumeFileService;
/**
* 查询卷册目录列表
*/
@ -120,4 +137,111 @@ public class DesVolumeCatalogController extends BaseController {
@PathVariable Long[] ids) {
return toAjax(desVolumeCatalogService.deleteByIds(List.of(ids)));
}
/**
* 导入卷册目录
*/
@SaCheckPermission("design:volumeCatalog:importData")
@Log(title = "导入卷册目录", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public R<Void> importData(@RequestParam("file") MultipartFile file,Long projectId) throws IOException {
if (projectId == null) {
return R.fail("项目ID不能为空");
}
List<ExcelData> dataList = readExcel(file);
List<DesVolumeCatalogCreateReq> desVolumeCatalogCreateReqs = BeanUtil.copyToList(dataList, DesVolumeCatalogCreateReq.class);
for (DesVolumeCatalogCreateReq desVolumeCatalogCreateReq : desVolumeCatalogCreateReqs) {
desVolumeCatalogCreateReq.setProjectId(projectId);
desVolumeCatalogService.insertByBo(desVolumeCatalogCreateReq);
}
return toAjax(true);
}
public static List<ExcelData> readExcel(MultipartFile file) throws IOException {
List<ExcelData> dataList = new ArrayList<>();
try (InputStream inputStream = file.getInputStream();
XSSFWorkbook workbook = new XSSFWorkbook(inputStream)) {
XSSFSheet sheet = workbook.getSheetAt(0);
// 从第二行(index=1)开始读取数据,跳过表头
for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
Row row = sheet.getRow(rowIndex);
if (row != null) {
String designSubitem = getCellValue(row.getCell(0));
String designState = getCellValue(row.getCell(1));
String specialty = getCellValue(row.getCell(2));
String principal = getCellValue(row.getCell(3));
String volumeNumber = getCellValue(row.getCell(4));
String documentName = getCellValue(row.getCell(5));
LocalDate plannedCompletion = getLocalDateValue(row.getCell(6));
ExcelData excelData = new ExcelData(
designSubitem, designState, specialty,
principal, volumeNumber, documentName,
plannedCompletion
);
dataList.add(excelData);
}
}
}
return dataList;
}
private static String getCellValue(Cell cell) {
if (cell == null) {
return "";
}
// 使用CellType枚举判断单元格类型POI 4.0+版本推荐方式)
CellType cellType = cell.getCellType();
// 对于公式单元格,获取其计算结果的类型
if (cellType == CellType.FORMULA) {
cellType = cell.getCachedFormulaResultType();
}
switch (cellType) {
case STRING:
return cell.getStringCellValue().trim();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
return date.toString();
} else {
// 处理数字类型,避免科学计数法
return String.valueOf((long) cell.getNumericCellValue());
}
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
default:
return "";
}
}
private static LocalDate getLocalDateValue(Cell cell) {
if (cell != null) {
CellType cellType = cell.getCellType();
if (cellType == CellType.FORMULA) {
cellType = cell.getCachedFormulaResultType();
}
if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
} else if (cellType == CellType.STRING) {
// 处理字符串格式的日期
try {
return LocalDate.parse(cell.getStringCellValue());
} catch (Exception e) {
// 日期格式不正确时返回null
return null;
}
}
}
return null;
}
}

View File

@ -74,6 +74,11 @@ public class DesVolumeCatalog extends BaseEntity {
*/
private String designState;
/**
* 审核状态
*/
private String auditStatus;
/**
* 备注
*/

View File

@ -26,11 +26,6 @@ public class AnewDrawingReviewUploadReq implements Serializable {
*/
@NotNull(message = "图纸评审id不能为空")
private Long drawingreviewId;
/**
* 图纸评审文件
*/
@NotNull(message = "图纸评审文件不能为空")
private MultipartFile file;
}

View File

@ -22,10 +22,10 @@ public class DrawingReviewUploadReq implements Serializable {
*/
private Long projectId;
/**
* 图纸评审文件
*/
private MultipartFile file;
// /**
// * 图纸评审文件
// */
// private MultipartFile file;
/**

View File

@ -0,0 +1,86 @@
package org.dromara.design.domain.dto;
import java.time.LocalDate;
/**
* @Author 铁憨憨
* @Date 2025/8/12 22:53
* @Version 1.0
*/
public class ExcelData {
private String designSubitem;
private String designState;
private String specialty;
private String principal;
private String volumeNumber;
private String documentName;
private LocalDate plannedCompletion;
// 构造函数
public ExcelData(String designSubitem, String designState, String specialty, String principal, String volumeNumber, String documentName, LocalDate plannedCompletion) {
this.designSubitem = designSubitem;
this.designState = designState;
this.specialty = specialty;
this.principal = principal;
this.volumeNumber = volumeNumber;
this.documentName = documentName;
this.plannedCompletion = plannedCompletion;
}
// Getter和Setter方法
public String getDesignSubitem() {
return designSubitem;
}
public void setDesignSubitem(String designSubitem) {
this.designSubitem = designSubitem;
}
public String getDesignState() {
return designState;
}
public void setDesignState(String designState) {
this.designState = designState;
}
public String getSpecialty() {
return specialty;
}
public void setSpecialty(String specialty) {
this.specialty = specialty;
}
public String getPrincipal() {
return principal;
}
public void setPrincipal(String principal) {
this.principal = principal;
}
public String getVolumeNumber() {
return volumeNumber;
}
public void setVolumeNumber(String volumeNumber) {
this.volumeNumber = volumeNumber;
}
public String getDocumentName() {
return documentName;
}
public void setDocumentName(String documentName) {
this.documentName = documentName;
}
public LocalDate getPlannedCompletion() {
return plannedCompletion;
}
public void setPlannedCompletion(LocalDate plannedCompletion) {
this.plannedCompletion = plannedCompletion;
}
}

View File

@ -18,7 +18,9 @@ import java.util.List;
@Data
@Accessors(chain = true)
public class ObtainTheListRes implements Serializable {
public class
ObtainTheListRes implements Serializable {
/**
* 主键ID
*/

View File

@ -52,5 +52,11 @@ public class BusDrawingreviewVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
/**
* 文件路径
*/
@ExcelProperty(value = "文件路径")
private String path;
}

View File

@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author 铁憨憨
@ -42,4 +43,10 @@ public class ListOfDesignDrawingsReviewRes implements Serializable {
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,27 @@
package org.dromara.design.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Author 铁憨憨
* @Date 2025/8/12 20:16
* @Version 1.0
*/
@Data
public class ListOfDesignDrawingsReviewSonRes implements Serializable {
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 最终审核状态
*/
private String finalState;
}

View File

@ -0,0 +1,164 @@
package org.dromara.design.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author 铁憨憨
* @Date 2025/8/12 20:16
* @Version 1.0
*/
@Data
public class ObtainHistoricalDesignDrawingsForReviewRes implements Serializable {
// /**
// * 主键ID
// */
// @ExcelProperty(value = "主键ID")
// private Long id;
//
// /**
// * 最终审核状态
// */
// private String finalState;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 设计评审ID
*/
private Long drawingreviewId;
/**
* 编号
*/
private String num;
/**
* 项目ID
*/
private Long projectId;
/**
* 子项目ID
*/
private Long subprojectId;
/**
* 项目名称
*/
private String projectName;
/**
* 子项目名称
*/
private String subprojectName;
/**
* 设计阶段
*/
private String stage;
/**
* 专业
*/
private String professional;
/**
* 卷册
*/
private String volume;
/**
* 设计人
*/
private String designer;
/**
* 验证内容
*/
private String verificationContent;
/**
* 验证意见
*/
private String verificationOpinion;
/**
* 执行意见
*/
private String executionOpinion;
/**
* 校审人员ID
*/
private Long proofreadingId;
/**
* 审核人员ID
*/
private Long auditId;
/**
* 执行人员ID
*/
private Long executorId;
/**
* 校审人员
*/
private String proofreading;
/**
* 审核人员
*/
private String audit;
/**
* 执行人员
*/
private String executor;
/**
* 校审时间
*/
private Date proofreadingDate;
/**
* 审核时间
*/
private Date auditDate;
/**
* 执行时间
*/
private Date executorDate;
/**
* 文件名
*/
private String fileName;
/**
* 图纸
*/
private String path;
/**
* 最终审核状态
*/
private String finalState;
}

View File

@ -9,6 +9,7 @@ import org.dromara.system.domain.vo.SysUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@ -75,11 +76,21 @@ public class DesVolumeCatalogVo implements Serializable {
*/
private String designState;
/**
* 审核状态
*/
private String auditStatus;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private LocalDate createTime;
/**
* 文件列表
*/

View File

@ -1,5 +1,6 @@
package org.dromara.design.service;
import jakarta.validation.constraints.NotNull;
import org.dromara.design.domain.bo.AnewDrawingReviewUploadReq;
import org.dromara.design.domain.bo.DrawingReviewUploadReq;
import org.dromara.design.domain.bo.FillOutTheDesignVerificationFormReq;
@ -11,7 +12,9 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.design.domain.vo.ListOfDesignDrawingsReviewRes;
import org.dromara.design.domain.vo.ObtainHistoricalDesignDrawingsForReviewRes;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import java.util.Collection;
import java.util.List;
@ -79,7 +82,7 @@ public interface IBusDrawingreviewService extends IService<BusDrawingreview>{
* @param bo
* @return
*/
Boolean drawingReviewUpload(DrawingReviewUploadReq bo);
Boolean drawingReviewUpload(DrawingReviewUploadReq bo, MultipartFile file);
/**
* 设计图纸评审列表
@ -87,13 +90,18 @@ public interface IBusDrawingreviewService extends IService<BusDrawingreview>{
*/
TableDataInfo<ListOfDesignDrawingsReviewRes> listOfDesignDrawingsReview(DrawingReviewUploadReq bo, PageQuery pageQuery);
/**
* 获取历史设计图纸评审
* listOfDesignDrawingsReviewSon
*/
List<ObtainHistoricalDesignDrawingsForReviewRes> ObtainHistoricalDesignDrawingsForReview(Long id);
/**
* 重新图纸评审上传
* @param bo
* @return
*/
Boolean anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo);
Boolean anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo,MultipartFile file);
/**
* 填写设计验证表单

View File

@ -194,7 +194,11 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
for (BusBillofquantities allMaterial : allMaterials) {
allMaterial.setProjectId(bo.getProjectId());
}
return busBillofquantitiesService.saveBatch(allMaterials);
boolean b = busBillofquantitiesService.saveBatch(allMaterials);
if(!b){
throw new ServiceException("导入失败");
}
return true;
}

View File

@ -23,6 +23,8 @@ import org.dromara.design.domain.bo.AnewDrawingReviewUploadReq;
import org.dromara.design.domain.bo.DrawingReviewUploadReq;
import org.dromara.design.domain.bo.FillOutTheDesignVerificationFormReq;
import org.dromara.design.domain.vo.ListOfDesignDrawingsReviewRes;
import org.dromara.design.domain.vo.ListOfDesignDrawingsReviewSonRes;
import org.dromara.design.domain.vo.ObtainHistoricalDesignDrawingsForReviewRes;
import org.dromara.design.service.IBusDrawingreviewReceiptsService;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.service.ISysOssService;
@ -69,7 +71,17 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
*/
@Override
public BusDrawingreviewVo queryById(Long id){
return baseMapper.selectVoById(id);
//1、获取主数据
BusDrawingreviewVo busDrawingreviewVo = baseMapper.selectVoById(id);
//2、获取主数据下的最新的一条数据
BusDrawingreviewReceipts sss = new BusDrawingreviewReceipts();
LambdaQueryWrapper<BusDrawingreviewReceipts> last = new LambdaQueryWrapper<BusDrawingreviewReceipts>().
eq(BusDrawingreviewReceipts::getDrawingreviewId, id)
.orderByDesc(BusDrawingreviewReceipts::getCreateTime)
.last("limit 1");
BusDrawingreviewReceipts busDrawingreviewReceipts = busDrawingreviewReceiptsService.getBaseMapper().selectOne(last);
busDrawingreviewVo.setPath(busDrawingreviewReceipts.getPath());
return busDrawingreviewVo;
}
/**
@ -166,7 +178,7 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
* @return 是否上传成功
*/
@Override
public Boolean drawingReviewUpload(DrawingReviewUploadReq bo) {
public Boolean drawingReviewUpload(DrawingReviewUploadReq bo, MultipartFile file) {
//1、主数据新增
BusDrawingreview busDrawingreview = new BusDrawingreview();
busDrawingreview.setProjectId(bo.getProjectId());
@ -176,13 +188,9 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
throw new RuntimeException("新增设计图纸评审失败");
}
//2、文件上传
MultipartFile file = bo.getFile();
if(bo.getFile() == null){
throw new RuntimeException("文件不能为空");
}
SysOssUploadVo wordEntity = ossService.uploadWithNoSave(file, ossService.minioFileName(BillOfQuantities,file));
BusDrawingreviewReceipts entity = new BusDrawingreviewReceipts().
setFileName(bo.getFile().getName()).
setFileName(file.getOriginalFilename()).
setDrawingreviewId(busDrawingreview.getId()).
setPath(wordEntity.getUrl());
return busDrawingreviewReceiptsService.save(entity);
@ -198,15 +206,24 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
return TableDataInfo.build(page);
}
/**
* 获取历史设计图纸评审
* listOfDesignDrawingsReviewSon
*/
@Override
public Boolean anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo) {
MultipartFile file = bo.getFile();
if(bo.getFile() == null){
throw new RuntimeException("文件不能为空");
}
public List<ObtainHistoricalDesignDrawingsForReviewRes> ObtainHistoricalDesignDrawingsForReview(Long id) {
LambdaQueryWrapper<BusDrawingreviewReceipts> lqw = Wrappers.lambdaQuery();
lqw.eq(BusDrawingreviewReceipts::getDrawingreviewId, id);
lqw.orderByDesc(BusDrawingreviewReceipts::getCreateTime);
List<BusDrawingreviewReceipts> list = busDrawingreviewReceiptsService.list(lqw);
return BeanUtil.copyToList(list, ObtainHistoricalDesignDrawingsForReviewRes.class);
}
@Override
public Boolean anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo,MultipartFile file) {
SysOssUploadVo wordEntity = ossService.uploadWithNoSave(file, ossService.minioFileName(BillOfQuantities,file));
BusDrawingreviewReceipts entity = new BusDrawingreviewReceipts().
setFileName(bo.getFile().getName()).
setFileName(file.getName()).
setDrawingreviewId(bo.getDrawingreviewId()).
setPath(wordEntity.getUrl());
return busDrawingreviewReceiptsService.save(entity);
@ -228,27 +245,32 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('drawingReview')")
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('desDrawingReview')")
@Transactional
public void processPlansHandler(ProcessEvent processEvent) {
log.info("图纸评审审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
System.out.println("???????????? "+id);
//1、根据id查询到子数据
LambdaQueryWrapper<BusDrawingreviewReceipts> lqw = Wrappers.lambdaQuery();
lqw.eq(BusDrawingreviewReceipts::getDrawingreviewId, id);
lqw.orderByDesc(BusDrawingreviewReceipts::getCreateTime);
lqw.last("limit 1");
BusDrawingreviewReceipts one = busDrawingreviewReceiptsService.getOne(lqw);
if (one == null) {
throw new RuntimeException("查询失败");
}
//1、根据id修改
BusDrawingreviewReceipts busDrawingreviewReceipts = new BusDrawingreviewReceipts();
busDrawingreviewReceipts.setId(Long.valueOf(id));
busDrawingreviewReceipts.setId(one.getId());
busDrawingreviewReceipts.setStage(processEvent.getStatus());
boolean b = busDrawingreviewReceiptsService.updateById(busDrawingreviewReceipts);
if (!b) {
throw new RuntimeException("更新失败");
}
//2、查询详情修改上一级的状态
BusDrawingreviewReceipts busDrawingreviewReceipts1 = busDrawingreviewReceiptsService.getById(id);
if (busDrawingreviewReceipts1 == null) {
throw new RuntimeException("查询失败");
}
//3、根据drawingreviewId查询主表
BusDrawingreview busDrawingreview = new BusDrawingreview();
busDrawingreview.setId(busDrawingreviewReceipts1.getDrawingreviewId());
busDrawingreview.setId(Long.valueOf(id));
busDrawingreview.setAuditType(processEvent.getStatus());
baseMapper.updateById(busDrawingreview);
}
@ -263,7 +285,7 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('drawingReview')")
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('desDrawingReview')")
public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) {
log.info("图纸评审审核任务创建了{}", processTaskEvent.toString());
}
@ -275,7 +297,7 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('drawingReview')")
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('desDrawingReview')")
public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("图纸评审计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}

View File

@ -5,16 +5,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.design.domain.DesVolumeCatalog;
import org.dromara.design.domain.DesVolumeFile;
import org.dromara.design.domain.DesVolumeFileViewer;
import org.dromara.design.domain.*;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogCreateReq;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
@ -28,6 +31,7 @@ import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -45,6 +49,7 @@ import java.util.stream.Collectors;
* @date 2025-07-30
*/
@Service
@Slf4j
public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMapper, DesVolumeCatalog>
implements IDesVolumeCatalogService {
@ -313,4 +318,57 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
return true;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('designTheDiagram')")
@Transactional
public void processPlansHandler(ProcessEvent processEvent) {
log.info("图纸评审审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
DesVolumeCatalog desVolumeCatalog = this.getById(Long.valueOf(id));
if (desVolumeCatalog == null) {
return;
}
desVolumeCatalog.setAuditStatus(processEvent.getStatus());
//如果完成,变更状态为已完成
if (processEvent.getStatus().equals("finish")){
desVolumeCatalog.setDesignState("1");
}
this.updateById(desVolumeCatalog);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('designTheDiagram')")
public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) {
log.info("图纸评审审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('designTheDiagram')")
public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("图纸评审计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -11,7 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bdr.audit_type,
bdr.remark,
bdr.create_time,
bdr.file_name,
bdrr.file_name
from
bus_drawingreview bdr
left join bus_drawingreview_receipts bdrr on bdr.id = bdrr.drawingreview_id

View File

@ -0,0 +1,7 @@
<?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.design.mapper.DesPrintingPlanMapper">
</mapper>