图纸评审

This commit is contained in:
2025-08-12 19:04:24 +08:00
parent f3d0db70f8
commit e4d1be276b
28 changed files with 797 additions and 272 deletions

View File

@ -16,4 +16,6 @@ public interface MinioPathConstant {
String Design = "design"; String Design = "design";
// 设计工程量清单 // 设计工程量清单
String BillOfQuantities = Design+"/billOfQuantities"; String BillOfQuantities = Design+"/billOfQuantities";
// 设计图纸评审
String DrawingReview = Design+"/drawingReview";
} }

View File

@ -0,0 +1,152 @@
package org.dromara.design.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.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.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.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;
/**
* 设计-图纸评审
*
* @author Lion Li
* @date 2025-08-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/design/drawingreview")
public class BusDrawingreviewController extends BaseController {
private final IBusDrawingreviewService busDrawingreviewService;
/**
* 新增设计图纸评审
*/
@SaCheckPermission("design:drawingreview:drawingReviewUpload")
@Log(title = "新增设计图纸评审", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/drawingReviewUpload")
public R<Void> drawingReviewUpload(@RequestBody DrawingReviewUploadReq bo) {
return toAjax(busDrawingreviewService.drawingReviewUpload(bo));
}
/**
* 设计图纸评审列表
* listOfDesignDrawingsReview
*/
@SaCheckPermission("design:drawingreview:listOfDesignDrawingsReview")
@GetMapping("/listOfDesignDrawingsReview")
public TableDataInfo<ListOfDesignDrawingsReviewRes> listOfDesignDrawingsReview(DrawingReviewUploadReq bo, PageQuery pageQuery) {
return busDrawingreviewService.listOfDesignDrawingsReview(bo, pageQuery);
}
/**
* 重新上传设计图纸评审
*/
@SaCheckPermission("design:drawingreview:anewDrawingReviewUpload")
@Log(title = "重新上传设计图纸评审", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PutMapping("/anewDrawingReviewUpload")
public R<Void> anewDrawingReviewUpload(@RequestBody AnewDrawingReviewUploadReq bo) {
return toAjax(busDrawingreviewService.anewDrawingReviewUpload(bo));
}
/**
* 填写设计验证表
*/
@SaCheckPermission("design:drawingreview:fillOutTheDesignVerificationForm")
@Log(title = "重新上传设计图纸评审", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PutMapping("/fillOutTheDesignVerificationForm")
public R<Void> fillOutTheDesignVerificationForm(@RequestBody FillOutTheDesignVerificationFormReq bo) {
return toAjax(busDrawingreviewService.fillOutTheDesignVerificationForm(bo));
}
// /**
// * 查询设计-图纸评审列表
// */
// @SaCheckPermission("design:drawingreview:list")
// @GetMapping("/list")
// public TableDataInfo<BusDrawingreviewVo> list(BusDrawingreviewBo bo, PageQuery pageQuery) {
// return busDrawingreviewService.queryPageList(bo, pageQuery);
// }
//
// /**
// * 导出设计-图纸评审列表
// */
// @SaCheckPermission("design:drawingreview:export")
// @Log(title = "设计-图纸评审", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(BusDrawingreviewBo bo, HttpServletResponse response) {
// List<BusDrawingreviewVo> list = busDrawingreviewService.queryList(bo);
// ExcelUtil.exportExcel(list, "设计-图纸评审", BusDrawingreviewVo.class, response);
// }
//
// /**
// * 获取设计-图纸评审详细信息
// *
// * @param id 主键
// */
// @SaCheckPermission("design:drawingreview:query")
// @GetMapping("/{id}")
// public R<BusDrawingreviewVo> getInfo(@NotNull(message = "主键不能为空")
// @PathVariable Long id) {
// return R.ok(busDrawingreviewService.queryById(id));
// }
//
// /**
// * 新增设计-图纸评审
// */
// @SaCheckPermission("design:drawingreview:add")
// @Log(title = "设计-图纸评审", businessType = BusinessType.INSERT)
// @RepeatSubmit()
// @PostMapping()
// public R<Void> add(@Validated(AddGroup.class) @RequestBody BusDrawingreviewBo bo) {
// return toAjax(busDrawingreviewService.insertByBo(bo));
// }
//
// /**
// * 修改设计-图纸评审
// */
// @SaCheckPermission("design:drawingreview:edit")
// @Log(title = "设计-图纸评审", businessType = BusinessType.UPDATE)
// @RepeatSubmit()
// @PutMapping()
// public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusDrawingreviewBo bo) {
// return toAjax(busDrawingreviewService.updateByBo(bo));
// }
//
// /**
// * 删除设计-图纸评审
// *
// * @param ids 主键串
// */
// @SaCheckPermission("design:drawingreview:remove")
// @Log(title = "设计-图纸评审", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public R<Void> remove(@NotEmpty(message = "主键不能为空")
// @PathVariable Long[] ids) {
// return toAjax(busDrawingreviewService.deleteWithValidByIds(List.of(ids), true));
// }
}

View File

@ -1,105 +0,0 @@
package org.dromara.design.design.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.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;
/**
* 设计-图纸评审
*
* @author Lion Li
* @date 2025-08-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/design/drawingreview")
public class BusDrawingreviewController extends BaseController {
private final IBusDrawingreviewService busDrawingreviewService;
/**
* 查询设计-图纸评审列表
*/
@SaCheckPermission("design:drawingreview:list")
@GetMapping("/list")
public TableDataInfo<BusDrawingreviewVo> list(BusDrawingreviewBo bo, PageQuery pageQuery) {
return busDrawingreviewService.queryPageList(bo, pageQuery);
}
/**
* 导出设计-图纸评审列表
*/
@SaCheckPermission("design:drawingreview:export")
@Log(title = "设计-图纸评审", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusDrawingreviewBo bo, HttpServletResponse response) {
List<BusDrawingreviewVo> list = busDrawingreviewService.queryList(bo);
ExcelUtil.exportExcel(list, "设计-图纸评审", BusDrawingreviewVo.class, response);
}
/**
* 获取设计-图纸评审详细信息
*
* @param id 主键
*/
@SaCheckPermission("design:drawingreview:query")
@GetMapping("/{id}")
public R<BusDrawingreviewVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busDrawingreviewService.queryById(id));
}
/**
* 新增设计-图纸评审
*/
@SaCheckPermission("design:drawingreview:add")
@Log(title = "设计-图纸评审", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusDrawingreviewBo bo) {
return toAjax(busDrawingreviewService.insertByBo(bo));
}
/**
* 修改设计-图纸评审
*/
@SaCheckPermission("design:drawingreview:edit")
@Log(title = "设计-图纸评审", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusDrawingreviewBo bo) {
return toAjax(busDrawingreviewService.updateByBo(bo));
}
/**
* 删除设计-图纸评审
*
* @param ids 主键串
*/
@SaCheckPermission("design:drawingreview:remove")
@Log(title = "设计-图纸评审", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busDrawingreviewService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -1,15 +0,0 @@
package org.dromara.design.design.mapper;
import org.dromara.design.domain.BusDrawingreview;
import org.dromara.design.domain.vo.BusDrawingreviewVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 设计-图纸评审Mapper接口
*
* @author Lion Li
* @date 2025-08-12
*/
public interface BusDrawingreviewMapper extends BaseMapperPlus<BusDrawingreview, BusDrawingreviewVo> {
}

View File

@ -1,131 +0,0 @@
package org.dromara.design.design.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.design.domain.bo.BusDrawingreviewBo;
import org.dromara.design.domain.vo.BusDrawingreviewVo;
import org.dromara.design.domain.BusDrawingreview;
import org.dromara.design.mapper.BusDrawingreviewMapper;
import org.dromara.design.service.IBusDrawingreviewService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 设计-图纸评审Service业务层处理
*
* @author Lion Li
* @date 2025-08-12
*/
@RequiredArgsConstructor
@Service
public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMapper, BusDrawingreview> implements IBusDrawingreviewService {
private final BusDrawingreviewMapper baseMapper;
/**
* 查询设计-图纸评审
*
* @param id 主键
* @return 设计-图纸评审
*/
@Override
public BusDrawingreviewVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询设计-图纸评审列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计-图纸评审分页列表
*/
@Override
public TableDataInfo<BusDrawingreviewVo> queryPageList(BusDrawingreviewBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusDrawingreview> lqw = buildQueryWrapper(bo);
Page<BusDrawingreviewVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的设计-图纸评审列表
*
* @param bo 查询条件
* @return 设计-图纸评审列表
*/
@Override
public List<BusDrawingreviewVo> queryList(BusDrawingreviewBo bo) {
LambdaQueryWrapper<BusDrawingreview> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusDrawingreview> buildQueryWrapper(BusDrawingreviewBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusDrawingreview> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusDrawingreview::getId);
lqw.eq(bo.getProjectId() != null, BusDrawingreview::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditType()), BusDrawingreview::getAuditType, bo.getAuditType());
return lqw;
}
/**
* 新增设计-图纸评审
*
* @param bo 设计-图纸评审
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusDrawingreviewBo bo) {
BusDrawingreview add = MapstructUtils.convert(bo, BusDrawingreview.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改设计-图纸评审
*
* @param bo 设计-图纸评审
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusDrawingreviewBo bo) {
BusDrawingreview update = MapstructUtils.convert(bo, BusDrawingreview.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusDrawingreview entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除设计-图纸评审信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.domain; package org.dromara.design.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;

View File

@ -1,5 +1,6 @@
package org.dromara.design.design.domain; package org.dromara.design.domain;
import lombok.experimental.Accessors;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@ -18,6 +19,7 @@ import java.io.Serial;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("bus_drawingreview_receipts") @TableName("bus_drawingreview_receipts")
@Accessors(chain = true)
public class BusDrawingreviewReceipts extends BaseEntity { public class BusDrawingreviewReceipts extends BaseEntity {
@Serial @Serial
@ -139,6 +141,11 @@ public class BusDrawingreviewReceipts extends BaseEntity {
*/ */
private Date executorDate; private Date executorDate;
/**
* 文件名
*/
private String fileName;
/** /**
* 图纸 * 图纸
*/ */

View File

@ -26,8 +26,8 @@ public class DesVolumeCatalog extends BaseEntity {
/** /**
* 主键ID * 主键ID
*/ */
@TableId(value = "id") @TableId(value = "design")
private Long id; private Long design;
/** /**
* 项目ID * 项目ID

View File

@ -0,0 +1,36 @@
package org.dromara.design.domain.bo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
/**
* @Author 铁憨憨
* @Date 2025/8/12 18:19
* @Version 1.0
*/
@Data
@Accessors(chain = true)
public class AnewDrawingReviewUploadReq implements Serializable {
/**
* 项目ID
*/
@NotNull(message = "项目ID不能为空")
private Long projectId;
/**
* 图纸评审id
*/
@NotNull(message = "图纸评审id不能为空")
private Long drawingreviewId;
/**
* 图纸评审文件
*/
@NotNull(message = "图纸评审文件不能为空")
private MultipartFile file;
}

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.domain.bo; package org.dromara.design.domain.bo;
import org.dromara.design.domain.BusDrawingreview; import org.dromara.design.domain.BusDrawingreview;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.domain.bo; package org.dromara.design.domain.bo;
import org.dromara.design.domain.BusDrawingreviewReceipts; import org.dromara.design.domain.BusDrawingreviewReceipts;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;

View File

@ -0,0 +1,36 @@
package org.dromara.design.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.util.Date;
/**
* @Author 铁憨憨
* @Date 2025/8/12 16:52
* @Version 1.0
*/
@Data
@Accessors(chain = true)
public class DrawingReviewUploadReq implements Serializable {
/**
* 项目ID
*/
private Long projectId;
/**
* 图纸评审文件
*/
private MultipartFile file;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,132 @@
package org.dromara.design.domain.bo;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* @Author 铁憨憨
* @Date 2025/8/12 18:55
* @Version 1.0
*/
@Data
@Accessors(chain = true)
public class FillOutTheDesignVerificationFormReq implements Serializable {
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 编号
*/
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;
}

View File

@ -21,7 +21,7 @@ public class DesVolumeCatalogUpdateReq implements Serializable {
* 主键ID * 主键ID
*/ */
@NotNull(message = "主键ID不能为空") @NotNull(message = "主键ID不能为空")
private Long id; private Long design;
/** /**
* 设计子项 * 设计子项

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.domain.vo; package org.dromara.design.domain.vo;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.domain.vo; package org.dromara.design.domain.vo;
import org.dromara.design.domain.BusDrawingreview; import org.dromara.design.domain.BusDrawingreview;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@ -29,9 +29,9 @@ public class BusDrawingreviewVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 项目ID * 主键ID
*/ */
@ExcelProperty(value = "项目ID") @ExcelProperty(value = "主键ID")
private Long id; private Long id;
/** /**

View File

@ -0,0 +1,45 @@
package org.dromara.design.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Author 铁憨憨
* @Date 2025/8/12 17:50
* @Version 1.0
*/
@Data
public class ListOfDesignDrawingsReviewRes implements Serializable {
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 文件名
*/
@ExcelProperty(value = "文件名")
private String fileName;
/**
* 审核类型
*/
@ExcelProperty(value = "审核类型")
private String auditType;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -28,7 +28,7 @@ public class DesVolumeCatalogVo implements Serializable {
/** /**
* 主键ID * 主键ID
*/ */
private Long id; private Long design;
/** /**
* 项目ID * 项目ID

View File

@ -0,0 +1,28 @@
package org.dromara.design.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.cailiaoshebei.domain.bo.MasterDataListReq;
import org.dromara.cailiaoshebei.domain.vo.MasterDataListRes;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.design.domain.BusDrawingreview;
import org.dromara.design.domain.bo.DrawingReviewUploadReq;
import org.dromara.design.domain.vo.BusDrawingreviewVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.design.domain.vo.ListOfDesignDrawingsReviewRes;
/**
* 设计-图纸评审Mapper接口
*
* @author Lion Li
* @date 2025-08-12
*/
public interface BusDrawingreviewMapper extends BaseMapperPlus<BusDrawingreview, BusDrawingreviewVo> {
/**
* 设计图纸评审列表
* listOfDesignDrawingsReview
*/
Page<ListOfDesignDrawingsReviewRes> listOfDesignDrawingsReview(@Param("bo") DrawingReviewUploadReq bo, @Param("page") Page<MasterDataListReq> page);
}

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.mapper; package org.dromara.design.mapper;
import org.dromara.design.domain.BusDrawingreviewReceipts; import org.dromara.design.domain.BusDrawingreviewReceipts;
import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo; import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo;

View File

@ -1,4 +1,4 @@
package org.dromara.design.design.service; package org.dromara.design.service;
import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo; import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo;
import org.dromara.design.domain.bo.BusDrawingreviewReceiptsBo; import org.dromara.design.domain.bo.BusDrawingreviewReceiptsBo;

View File

@ -1,5 +1,8 @@
package org.dromara.design.design.service; package org.dromara.design.service;
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.BusDrawingreviewVo; import org.dromara.design.domain.vo.BusDrawingreviewVo;
import org.dromara.design.domain.bo.BusDrawingreviewBo; import org.dromara.design.domain.bo.BusDrawingreviewBo;
import org.dromara.design.domain.BusDrawingreview; import org.dromara.design.domain.BusDrawingreview;
@ -7,6 +10,9 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.design.domain.vo.ListOfDesignDrawingsReviewRes;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -67,4 +73,32 @@ public interface IBusDrawingreviewService extends IService<BusDrawingreview>{
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 设计-图纸评审上传
* @param bo
* @return
*/
Boolean drawingReviewUpload(DrawingReviewUploadReq bo);
/**
* 设计图纸评审列表
* listOfDesignDrawingsReview
*/
TableDataInfo<ListOfDesignDrawingsReviewRes> listOfDesignDrawingsReview(DrawingReviewUploadReq bo, PageQuery pageQuery);
/**
* 重新图纸评审上传
* @param bo
* @return
*/
Boolean anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo);
/**
* 填写设计验证表单
* @param bo
* @return
*/
Boolean fillOutTheDesignVerificationForm(@RequestBody FillOutTheDesignVerificationFormReq bo);
} }

View File

@ -1,5 +1,6 @@
package org.dromara.design.design.service.impl; package org.dromara.design.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;

View File

@ -0,0 +1,283 @@
package org.dromara.design.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.controller.constant;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
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.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.design.domain.BusDrawingreviewReceipts;
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.service.IBusDrawingreviewReceiptsService;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.design.domain.bo.BusDrawingreviewBo;
import org.dromara.design.domain.vo.BusDrawingreviewVo;
import org.dromara.design.domain.BusDrawingreview;
import org.dromara.design.mapper.BusDrawingreviewMapper;
import org.dromara.design.service.IBusDrawingreviewService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import static org.dromara.common.constant.MinioPathConstant.BillOfQuantities;
/**
* 设计-图纸评审Service业务层处理
*
* @author Lion Li
* @date 2025-08-12
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMapper, BusDrawingreview> implements IBusDrawingreviewService {
private final BusDrawingreviewMapper baseMapper;
private final IBusDrawingreviewReceiptsService busDrawingreviewReceiptsService;
@Autowired
private ISysOssService ossService;
/**
* 查询设计-图纸评审
*
* @param id 主键
* @return 设计-图纸评审
*/
@Override
public BusDrawingreviewVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询设计-图纸评审列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计-图纸评审分页列表
*/
@Override
public TableDataInfo<BusDrawingreviewVo> queryPageList(BusDrawingreviewBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusDrawingreview> lqw = buildQueryWrapper(bo);
Page<BusDrawingreviewVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的设计-图纸评审列表
*
* @param bo 查询条件
* @return 设计-图纸评审列表
*/
@Override
public List<BusDrawingreviewVo> queryList(BusDrawingreviewBo bo) {
LambdaQueryWrapper<BusDrawingreview> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusDrawingreview> buildQueryWrapper(BusDrawingreviewBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusDrawingreview> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusDrawingreview::getId);
lqw.eq(bo.getProjectId() != null, BusDrawingreview::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditType()), BusDrawingreview::getAuditType, bo.getAuditType());
return lqw;
}
/**
* 新增设计-图纸评审
*
* @param bo 设计-图纸评审
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusDrawingreviewBo bo) {
BusDrawingreview add = MapstructUtils.convert(bo, BusDrawingreview.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改设计-图纸评审
*
* @param bo 设计-图纸评审
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusDrawingreviewBo bo) {
BusDrawingreview update = MapstructUtils.convert(bo, BusDrawingreview.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusDrawingreview entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除设计-图纸评审信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 设计-图纸评审上传
*
* @param bo 设计-图纸评审上传
* @return 是否上传成功
*/
@Override
public Boolean drawingReviewUpload(DrawingReviewUploadReq bo) {
//1、主数据新增
BusDrawingreview busDrawingreview = new BusDrawingreview();
busDrawingreview.setProjectId(bo.getProjectId());
busDrawingreview.setRemark(bo.getRemark());
int insert = baseMapper.insert(busDrawingreview);
if (insert <= 0) {
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()).
setDrawingreviewId(busDrawingreview.getId()).
setPath(wordEntity.getUrl());
return busDrawingreviewReceiptsService.save(entity);
}
/**
* 设计图纸评审列表
* listOfDesignDrawingsReview
*/
@Override
public TableDataInfo<ListOfDesignDrawingsReviewRes> listOfDesignDrawingsReview(DrawingReviewUploadReq bo, PageQuery pageQuery) {
Page<ListOfDesignDrawingsReviewRes> page = baseMapper.listOfDesignDrawingsReview(bo, pageQuery.build());
return TableDataInfo.build(page);
}
@Override
public Boolean anewDrawingReviewUpload(AnewDrawingReviewUploadReq bo) {
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()).
setDrawingreviewId(bo.getDrawingreviewId()).
setPath(wordEntity.getUrl());
return busDrawingreviewReceiptsService.save(entity);
}
@Override
public Boolean fillOutTheDesignVerificationForm(FillOutTheDesignVerificationFormReq bo) {
//修改busDrawingreviewReceiptsService数据
BusDrawingreviewReceipts busDrawingreviewReceipts = BeanUtil.copyProperties(bo, BusDrawingreviewReceipts.class);
return busDrawingreviewReceiptsService.updateById(busDrawingreviewReceipts);
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('drawingReview')")
@Transactional
public void processPlansHandler(ProcessEvent processEvent) {
log.info("图纸评审审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
//1、根据id修改
BusDrawingreviewReceipts busDrawingreviewReceipts = new BusDrawingreviewReceipts();
busDrawingreviewReceipts.setId(Long.valueOf(id));
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.setAuditType(processEvent.getStatus());
baseMapper.updateById(busDrawingreview);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('drawingReview')")
public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) {
log.info("图纸评审审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('drawingReview')")
public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("图纸评审计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -156,7 +156,7 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
@Override @Override
public Boolean updateByBo(DesVolumeCatalogUpdateReq req) { public Boolean updateByBo(DesVolumeCatalogUpdateReq req) {
// 判断卷册目录是否存在 // 判断卷册目录是否存在
DesVolumeCatalog oldVolumeCatalog = this.getById(req.getId()); DesVolumeCatalog oldVolumeCatalog = this.getById(req.getDesign());
if (oldVolumeCatalog == null) { if (oldVolumeCatalog == null) {
throw new ServiceException("卷册目录不存在", HttpStatus.ERROR); throw new ServiceException("卷册目录不存在", HttpStatus.ERROR);
} }
@ -167,7 +167,7 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
.eq(DesVolumeCatalog::getVolumeNumber, req.getVolumeNumber()) .eq(DesVolumeCatalog::getVolumeNumber, req.getVolumeNumber())
.or() .or()
.eq(DesVolumeCatalog::getDocumentName, req.getDocumentName())) .eq(DesVolumeCatalog::getDocumentName, req.getDocumentName()))
.ne(DesVolumeCatalog::getId, req.getId()) .ne(DesVolumeCatalog::getDesign, req.getDesign())
.count(); .count();
if (count > 0) { if (count > 0) {
throw new ServiceException("卷册目录已存在", HttpStatus.BAD_REQUEST); throw new ServiceException("卷册目录已存在", HttpStatus.BAD_REQUEST);
@ -222,11 +222,11 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
} }
BeanUtils.copyProperties(volumeCatalog, vo); BeanUtils.copyProperties(volumeCatalog, vo);
// 关联文件信息 // 关联文件信息
List<DesVolumeFile> volumeFiles = this.queryFileListById(volumeCatalog.getId()); List<DesVolumeFile> volumeFiles = this.queryFileListById(volumeCatalog.getDesign());
vo.setFileVoList(volumeFileService.getVoList(volumeFiles)); vo.setFileVoList(volumeFileService.getVoList(volumeFiles));
// 关联查阅人信息 // 关联查阅人信息
List<DesVolumeFileViewer> allViewerList = volumeFileViewerService.lambdaQuery() List<DesVolumeFileViewer> allViewerList = volumeFileViewerService.lambdaQuery()
.eq(DesVolumeFileViewer::getVolumeCatalogId, volumeCatalog.getId()).list(); .eq(DesVolumeFileViewer::getVolumeCatalogId, volumeCatalog.getDesign()).list();
List<Long> userIds = allViewerList.stream().map(DesVolumeFileViewer::getUserId).distinct().toList(); List<Long> userIds = allViewerList.stream().map(DesVolumeFileViewer::getUserId).distinct().toList();
List<SysUserVo> userVoList = userService.selectUserByIds(userIds, null); List<SysUserVo> userVoList = userService.selectUserByIds(userIds, null);
Map<Long, SysUserVo> userVoMap = userVoList.stream().collect(Collectors.toMap(SysUserVo::getUserId, Function.identity())); Map<Long, SysUserVo> userVoMap = userVoList.stream().collect(Collectors.toMap(SysUserVo::getUserId, Function.identity()));

View File

@ -4,4 +4,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.design.mapper.BusDrawingreviewMapper"> <mapper namespace="org.dromara.design.mapper.BusDrawingreviewMapper">
<select id="listOfDesignDrawingsReview" resultType="org.dromara.design.domain.vo.ListOfDesignDrawingsReviewRes">
select
bdr.id,
bdr.project_id,
bdr.audit_type,
bdr.remark,
bdr.create_time,
bdr.file_name,
from
bus_drawingreview bdr
left join bus_drawingreview_receipts bdrr on bdr.id = bdrr.drawingreview_id
<where>
bdr.project_id = #{bo.projectId}
</where>
order by
bdr.create_time desc
</select>
</mapper> </mapper>

View File

@ -4,4 +4,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.design.mapper.BusDrawingreviewReceiptsMapper"> <mapper namespace="org.dromara.design.mapper.BusDrawingreviewReceiptsMapper">
</mapper> </mapper>