فهرست منبع

图纸列表接口

wang_xy 1 سال پیش
والد
کامیت
e40c3f44c7

+ 114 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/GCadController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.web.controller.gas;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.gas.domain.bo.GCadBo;
+import com.ruoyi.gas.domain.vo.GCadVo;
+import com.ruoyi.gas.service.IGCadService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * cad图纸Controller
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Validated
+@Api(value = "cad图纸控制器", tags = {"cad图纸管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/gas/cad")
+public class GCadController extends BaseController {
+
+    private final IGCadService iGCadService;
+
+    /**
+     * 查询cad图纸列表
+     */
+    @ApiOperation("查询cad图纸列表")
+    @GetMapping("/list")
+    public TableDataInfo<GCadVo> list(@Validated(QueryGroup.class) GCadBo bo) {
+        return iGCadService.queryPageList(bo);
+    }
+
+    /**
+     * 导出cad图纸列表
+     */
+    @ApiOperation("导出cad图纸列表")
+    @Log(title = "cad图纸", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public void export(@Validated GCadBo bo, HttpServletResponse response) {
+        List<GCadVo> list = iGCadService.queryList(bo);
+        ExcelUtil.exportExcel(list, "cad图纸", GCadVo.class, response);
+    }
+
+    /**
+     * 获取cad图纸详细信息
+     */
+    @ApiOperation("获取cad图纸详细信息")
+    @GetMapping("/{id}")
+    public AjaxResult<GCadVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) {
+        return AjaxResult.success(iGCadService.queryById(id));//需要改自定义sql
+    }
+
+    /**
+     * 新增cad图纸
+     */
+    @ApiOperation("新增cad图纸")
+    @Log(title = "cad图纸", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public AjaxResult<Void> add(@Validated(AddGroup.class) @RequestBody GCadBo bo) {
+        return toAjax(iGCadService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改cad图纸
+     */
+    @ApiOperation("修改cad图纸")
+    @Log(title = "cad图纸", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public AjaxResult<Void> edit(@Validated(EditGroup.class) @RequestBody GCadBo bo) {
+        return toAjax(iGCadService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除cad图纸
+     */
+    @ApiOperation("删除cad图纸")
+    @Log(title = "cad图纸" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iGCadService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+
+    /**
+     * 手机端查询队伍下所有文件
+     */
+    @ApiOperation("手机端查询队伍下所有文件")
+    @GetMapping("getAllFileByPostId/{postId}")
+    public AjaxResult getAllFileByPostId(@PathVariable Long postId) {
+        return AjaxResult.success(iGCadService.getAllFileByPostId(postId));
+    }
+}

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -69,9 +69,9 @@ spring:
   servlet:
     multipart:
       # 单个文件大小
-      max-file-size: 10MB
+      max-file-size: 200MB
       # 设置总上传的文件大小
-      max-request-size: 20MB
+      max-request-size: 500MB
   # 服务模块
   devtools:
     restart:

+ 2 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/obs/ObsService.java

@@ -63,6 +63,8 @@ public class ObsService {
         Map map = new HashMap();
         map.put("url", accessEndPoint + "/" + objectKey + fileName);
         map.put("objectKey", objectKey + fileName);
+        map.put("name", file.getOriginalFilename());
+        map.put("suffix", suffix);
         return map;
     }
 

+ 57 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GCad.java

@@ -0,0 +1,57 @@
+package com.ruoyi.gas.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.system.domain.SysOss;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * cad图纸对象 g_cad
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Data
+@Accessors(chain = true)
+@TableName("g_cad")
+public class GCad extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * 队伍id
+     */
+    private Long postId;
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 文件集合
+     */
+    @TableField(exist = false)
+    private List<GCadFile> fileList;
+
+}

+ 43 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GCadFile.java

@@ -0,0 +1,43 @@
+package com.ruoyi.gas.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * cad图纸文件对象 g_cad_file
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Data
+@Accessors(chain = true)
+@TableName("g_cad_file")
+public class GCadFile extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *
+     */
+    private Long cadId;
+    /**
+     *
+     */
+    private String fileName;
+    /**
+     *
+     */
+    private String fileUrl;
+    /**
+     * 文件后缀名
+     */
+    private String fileSuffix;
+
+}

+ 84 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GCadBo.java

@@ -0,0 +1,84 @@
+package com.ruoyi.gas.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.gas.domain.GCadFile;
+import com.ruoyi.system.domain.SysOss;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+import java.util.List;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * cad图纸业务对象 g_cad
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("cad图纸业务对象")
+public class GCadBo extends BaseEntity {
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value = "名称", required = true)
+    @NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 队伍id
+     */
+    @ApiModelProperty(value = "队伍id", required = true)
+    @NotNull(message = "队伍id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long postId;
+
+    @ApiModelProperty("文件集合")
+    private List<GCadFile> fileList;
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注", required = true)
+    private String remark;
+
+
+    /**
+     * 分页大小
+     */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    /**
+     * 排序列
+     */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+
+    /**
+     * 排序的方向desc或者asc
+     */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+}

+ 80 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GCadFileBo.java

@@ -0,0 +1,80 @@
+package com.ruoyi.gas.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * cad图纸文件业务对象 g_cad_file
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("cad图纸文件业务对象")
+public class GCadFileBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "", required = true)
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long cadId;
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "", required = true)
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fileName;
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "", required = true)
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fileUrl;
+
+    /**
+     * 文件后缀名
+     */
+    @ApiModelProperty(value = "文件后缀名", required = true)
+    @NotBlank(message = "文件后缀名不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fileSuffix;
+
+
+    /**
+     * 分页大小
+     */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    /**
+     * 排序列
+     */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+
+    /**
+     * 排序的方向desc或者asc
+     */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+}

+ 58 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GCadFileVo.java

@@ -0,0 +1,58 @@
+package com.ruoyi.gas.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * cad图纸文件视图对象 g_cad_file
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Data
+@ApiModel("cad图纸文件视图对象")
+@ExcelIgnoreUnannotated
+public class GCadFileVo {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+	@ExcelProperty(value = "")
+	@ApiModelProperty("")
+	private Long cadId;
+
+    /**
+     *
+     */
+	@ExcelProperty(value = "")
+	@ApiModelProperty("")
+	private String fileName;
+
+    /**
+     *
+     */
+	@ExcelProperty(value = "")
+	@ApiModelProperty("")
+	private String fileUrl;
+
+    /**
+     * 文件后缀名
+     */
+	@ExcelProperty(value = "文件后缀名")
+	@ApiModelProperty("文件后缀名")
+	private String fileSuffix;
+
+	private String url;
+
+
+}

+ 64 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GCadVo.java

@@ -0,0 +1,64 @@
+package com.ruoyi.gas.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.gas.domain.GCadFile;
+import com.ruoyi.system.domain.SysOss;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * cad图纸视图对象 g_cad
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Data
+@ApiModel("cad图纸视图对象")
+@ExcelIgnoreUnannotated
+public class GCadVo extends BaseEntity{
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+	@ExcelProperty(value = "主键")
+	@ApiModelProperty("主键")
+	private Long id;
+
+    /**
+     * 名称
+     */
+	@ExcelProperty(value = "名称")
+	@ApiModelProperty("名称")
+	private String name;
+
+    /**
+     * 队伍id
+     */
+	@ExcelProperty(value = "队伍id")
+	@ApiModelProperty("队伍id")
+	private Long postId;
+
+	@ApiModelProperty("文件集合")
+	private List<GCadFile> fileList;
+
+    /**
+     * 备注
+     */
+	@ExcelProperty(value = "备注")
+	@ApiModelProperty("备注")
+	private String remark;
+
+	private String delFlag;
+
+
+}

+ 18 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GCadFileMapper.java

@@ -0,0 +1,18 @@
+package com.ruoyi.gas.mapper;
+
+import com.ruoyi.gas.domain.GCadFile;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * cad图纸文件Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+public interface GCadFileMapper extends BaseMapperPlus<GCadFile> {
+
+    public List<GCadFile> getCadFileList(Long id);
+    public boolean deleteById(Long id);
+}

+ 21 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GCadMapper.java

@@ -0,0 +1,21 @@
+package com.ruoyi.gas.mapper;
+
+import com.ruoyi.gas.domain.GCad;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import com.ruoyi.gas.domain.vo.GCadFileVo;
+import com.ruoyi.gas.domain.vo.GCadVo;
+
+import java.util.List;
+
+/**
+ * cad图纸Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+public interface GCadMapper extends BaseMapperPlus<GCad> {
+
+    public GCadVo getVoById(Long id);
+
+    List<GCadFileVo> getAllFileByPostId(Long postId);
+}

+ 58 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGCadFileService.java

@@ -0,0 +1,58 @@
+package com.ruoyi.gas.service;
+
+import com.ruoyi.gas.domain.GCadFile;
+import com.ruoyi.gas.domain.vo.GCadFileVo;
+import com.ruoyi.gas.domain.bo.GCadFileBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * cad图纸文件Service接口
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+public interface IGCadFileService extends IServicePlus<GCadFile, GCadFileVo> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	GCadFileVo queryById(Long cadId);
+
+	/**
+	 * 查询列表
+	 */
+    TableDataInfo<GCadFileVo> queryPageList(GCadFileBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<GCadFileVo> queryList(GCadFileBo bo);
+
+	/**
+	 * 根据新增业务对象插入cad图纸文件
+	 * @param bo cad图纸文件新增业务对象
+	 * @return
+	 */
+	Boolean insertByBo(GCadFile file);
+
+	/**
+	 * 根据编辑业务对象修改cad图纸文件
+	 * @param bo cad图纸文件编辑业务对象
+	 * @return
+	 */
+	Boolean updateByBo(GCadFileBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	Boolean deleteWithValidById(Long id);
+}

+ 60 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGCadService.java

@@ -0,0 +1,60 @@
+package com.ruoyi.gas.service;
+
+import com.ruoyi.gas.domain.GCad;
+import com.ruoyi.gas.domain.vo.GCadFileVo;
+import com.ruoyi.gas.domain.vo.GCadVo;
+import com.ruoyi.gas.domain.bo.GCadBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * cad图纸Service接口
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+public interface IGCadService extends IServicePlus<GCad, GCadVo> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	GCadVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+    TableDataInfo<GCadVo> queryPageList(GCadBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<GCadVo> queryList(GCadBo bo);
+
+	/**
+	 * 根据新增业务对象插入cad图纸
+	 * @param bo cad图纸新增业务对象
+	 * @return
+	 */
+	Boolean insertByBo(GCadBo bo);
+
+	/**
+	 * 根据编辑业务对象修改cad图纸
+	 * @param bo cad图纸编辑业务对象
+	 * @return
+	 */
+	Boolean updateByBo(GCadBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	List<GCadFileVo> getAllFileByPostId(Long postId);
+}

+ 91 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GCadFileServiceImpl.java

@@ -0,0 +1,91 @@
+package com.ruoyi.gas.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.gas.domain.bo.GCadFileBo;
+import com.ruoyi.gas.domain.vo.GCadFileVo;
+import com.ruoyi.gas.domain.GCadFile;
+import com.ruoyi.gas.mapper.GCadFileMapper;
+import com.ruoyi.gas.service.IGCadFileService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * cad图纸文件Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Service
+public class GCadFileServiceImpl extends ServicePlusImpl<GCadFileMapper, GCadFile, GCadFileVo> implements IGCadFileService {
+
+    @Override
+    public GCadFileVo queryById(Long cadId){
+        return getVoById(cadId);
+    }
+
+    @Override
+    public TableDataInfo<GCadFileVo> queryPageList(GCadFileBo bo) {
+        PagePlus<GCadFile, GCadFileVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<GCadFileVo> queryList(GCadFileBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<GCadFile> buildQueryWrapper(GCadFileBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<GCadFile> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getFileName()), GCadFile::getFileName, bo.getFileName());
+        lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), GCadFile::getFileUrl, bo.getFileUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), GCadFile::getFileSuffix, bo.getFileSuffix());
+        return lqw;
+    }
+
+    @Override
+    public Boolean insertByBo(GCadFile file) {
+        validEntityBeforeSave(file);
+        boolean flag = save(file);
+        return flag;
+    }
+
+    @Override
+    public Boolean updateByBo(GCadFileBo bo) {
+        GCadFile update = BeanUtil.toBean(bo, GCadFile.class);
+        validEntityBeforeSave(update);
+        return updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(GCadFile entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return removeByIds(ids);
+    }
+
+    @Override
+    public Boolean deleteWithValidById(Long id) {
+        return baseMapper.deleteById(id);
+    }
+}

+ 112 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GCadServiceImpl.java

@@ -0,0 +1,112 @@
+package com.ruoyi.gas.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.gas.domain.GCadFile;
+import com.ruoyi.gas.domain.vo.GCadFileVo;
+import com.ruoyi.gas.service.IGCadFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.gas.domain.bo.GCadBo;
+import com.ruoyi.gas.domain.vo.GCadVo;
+import com.ruoyi.gas.domain.GCad;
+import com.ruoyi.gas.mapper.GCadMapper;
+import com.ruoyi.gas.service.IGCadService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * cad图纸Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-03-22
+ */
+@Service
+public class GCadServiceImpl extends ServicePlusImpl<GCadMapper, GCad, GCadVo> implements IGCadService {
+
+    @Autowired
+    IGCadFileService gCadFileService;
+
+    @Override
+    public GCadVo queryById(Long id){
+        return baseMapper.getVoById(id);
+    }
+
+    @Override
+    public TableDataInfo<GCadVo> queryPageList(GCadBo bo) {
+        PagePlus<GCad, GCadVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<GCadVo> queryList(GCadBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<GCad> buildQueryWrapper(GCadBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<GCad> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getName()), GCad::getName, bo.getName());
+        lqw.eq(bo.getPostId() != null, GCad::getPostId, bo.getPostId());
+        return lqw;
+    }
+
+    @Override
+    public Boolean insertByBo(GCadBo bo) {
+        GCad add = BeanUtil.toBean(bo, GCad.class);
+        validEntityBeforeSave(add);
+        boolean flag = save(add);
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        for(GCadFile file:bo.getFileList()){
+            file.setCadId(bo.getId());
+            gCadFileService.insertByBo(file);
+        }
+        return flag;
+    }
+
+    @Override
+    public Boolean updateByBo(GCadBo bo) {
+        GCad update = BeanUtil.toBean(bo, GCad.class);
+        validEntityBeforeSave(update);
+        gCadFileService.deleteWithValidById(update.getId());
+        for(GCadFile file:bo.getFileList()){
+            file.setCadId(update.getId());
+            gCadFileService.insertByBo(file);
+        }
+        return updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(GCad entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        for (Long id: ids ){
+            gCadFileService.deleteWithValidById(id);
+        }
+        return removeByIds(ids);
+    }
+    @Override
+    public List<GCadFileVo> getAllFileByPostId(Long postId){
+        return baseMapper.getAllFileByPostId(postId);
+    }
+}

+ 30 - 0
ruoyi-gas/src/main/resources/mapper/GCadFileMapper.xml

@@ -0,0 +1,30 @@
+<?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="com.ruoyi.gas.mapper.GCadFileMapper">
+
+    <resultMap type="com.ruoyi.gas.domain.vo.GCadFileVo" id="GCadFileResult">
+        <result property="cadId" column="cad_id"/>
+        <result property="fileName" column="file_name"/>
+        <result property="fileUrl" column="file_url"/>
+        <result property="fileSuffix" column="file_suffix"/>
+        <result property="url" column="url"/>
+    </resultMap>
+
+
+    <select id="getCadFileList" parameterType="java.lang.Long" resultMap="GCadFileResult">
+        select
+            cad_id,
+            file_name,
+            file_url,
+            file_suffix,
+            file_url as url
+        from g_cad_file
+        where
+            cad_id = #{id}
+    </select>
+    <delete id="deleteById" parameterType="java.lang.Long">
+        delete from g_cad_file where cad_id = #{id}
+    </delete>
+</mapper>

+ 45 - 0
ruoyi-gas/src/main/resources/mapper/GCadMapper.xml

@@ -0,0 +1,45 @@
+<?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="com.ruoyi.gas.mapper.GCadMapper">
+
+    <resultMap type="com.ruoyi.gas.domain.vo.GCadVo" id="GCadResult">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="postId" column="post_id"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+        <association property="fileList" column="id" select="com.ruoyi.gas.mapper.GCadFileMapper.getCadFileList"/>
+    </resultMap>
+    <resultMap id="cadFile" type="com.ruoyi.gas.domain.vo.GCadFileVo">
+        <result property="cadId" column="cad_id"/>
+        <result property="fileName" column="file_name"/>
+        <result property="fileUrl" column="file_url"/>
+        <result property="fileSuffix" column="file_suffix"/>
+        <result property="url" column="url"/>
+    </resultMap>
+
+
+    <select id="getVoById" parameterType="Long" resultMap="GCadResult">
+        select * from g_cad where del_flag = 0 and id = #{id}
+    </select>
+
+    <select id="getAllFileByPostId">
+        SELECT
+            b.cad_id,
+            b.file_name,
+            b.file_url,
+            b.file_suffix,
+            b.file_url as url
+        FROM
+            g_cad a
+                LEFT JOIN g_cad_file b ON a.id = b.cad_id
+        WHERE
+            a.post_id = #{postId}
+    </select>
+</mapper>