From 6d8e5278b57952092e420347ace8704b71d7f70c Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 09 四月 2026 11:55:37 +0800
Subject: [PATCH] 报价添加附件
---
src/main/java/com/ruoyi/sales/service/SalesQuotationFileService.java | 19 +++
src/main/java/com/ruoyi/sales/mapper/SalesQuotationFileMapper.java | 21 ++++
src/main/java/com/ruoyi/sales/service/impl/SalesQuotationFileServiceImpl.java | 29 +++++
src/main/java/com/ruoyi/sales/pojo/SalesQuotationFile.java | 65 +++++++++++++
src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java | 17 +++
src/main/resources/mapper/sales/SalesQuotationFileMapper.xml | 31 ++++++
src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml | 2
src/main/java/com/ruoyi/sales/controller/SalesQuotationFileController.java | 70 ++++++++++++++
src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java | 3
9 files changed, 256 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesQuotationFileController.java b/src/main/java/com/ruoyi/sales/controller/SalesQuotationFileController.java
new file mode 100644
index 0000000..a6b40e5
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/SalesQuotationFileController.java
@@ -0,0 +1,70 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
+import com.ruoyi.approve.service.KnowledgeBaseFileService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.pojo.SalesQuotationFile;
+import com.ruoyi.sales.service.SalesQuotationFileService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 閿�鍞姤浠�--闄勪欢 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-09 11:19:20
+ */
+@RestController
+@RequestMapping("/salesQuotationFile")
+public class SalesQuotationFileController {
+
+ @Resource
+ private SalesQuotationFileService salesQuotationFileService;
+
+
+ /**
+ * 鏂板
+ * @param accountFile
+ * @return
+ */
+ @PostMapping("/add")
+ @ApiOperation("鏂板")
+ public AjaxResult add(@RequestBody SalesQuotationFile accountFile) {
+ return AjaxResult.success(salesQuotationFileService.save(accountFile));
+ }
+
+ /**
+ * 鍒犻櫎
+ * @param ids
+ * @return
+ */
+ @DeleteMapping("/del")
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delAccountFile(@RequestBody List<Integer> ids) {
+ if(CollectionUtils.isEmpty(ids)){
+ return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ }
+ //鍒犻櫎妫�楠岄檮浠�
+ return AjaxResult.success(salesQuotationFileService.removeBatchByIds(ids));
+ }
+
+ /**
+ *鍒嗛〉鏌ヨ
+ * @param page
+ * @param accountFile
+ * @return
+ */
+ @GetMapping("/listPage")
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ public AjaxResult accountFileListPage(Page page, SalesQuotationFile accountFile) {
+ return AjaxResult.success(salesQuotationFileService.knowledgeBaseFileListPage(page, accountFile));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java b/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java
index 2f40bdd..f892fc7 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java
@@ -1,6 +1,7 @@
package com.ruoyi.sales.dto;
import com.ruoyi.sales.pojo.SalesQuotation;
+import com.ruoyi.sales.pojo.SalesQuotationFile;
import com.ruoyi.sales.pojo.SalesQuotationProduct;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -17,4 +18,6 @@
*/
// 瀹℃壒浜�
private String approveUserIds;
+
+ private List<SalesQuotationFile> files;
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesQuotationFileMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesQuotationFileMapper.java
new file mode 100644
index 0000000..f156734
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesQuotationFileMapper.java
@@ -0,0 +1,21 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.SalesQuotationFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 閿�鍞姤浠�--闄勪欢 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-09 11:19:20
+ */
+@Mapper
+public interface SalesQuotationFileMapper extends BaseMapper<SalesQuotationFile> {
+
+ IPage<SalesQuotationFile> salesQuotationFilePage(Page page, SalesQuotationFile accountFile);
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesQuotationFile.java b/src/main/java/com/ruoyi/sales/pojo/SalesQuotationFile.java
new file mode 100644
index 0000000..d2a9f0e
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesQuotationFile.java
@@ -0,0 +1,65 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 閿�鍞姤浠�--闄勪欢
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-09 11:19:20
+ */
+@Getter
+@Setter
+@TableName("sales_quotation_file")
+@ApiModel(value = "SalesQuotationFile瀵硅薄", description = "閿�鍞姤浠�--闄勪欢")
+public class SalesQuotationFile implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("鏂囦欢鍚嶇О")
+ private String name;
+
+ @ApiModelProperty("鏂囦欢璺緞")
+ private String url;
+
+ @ApiModelProperty("鏂囦欢澶у皬")
+ private Integer fileSize;
+
+ @ApiModelProperty("閿�鍞姤浠穒d")
+ private Long salesQuotationId;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Long createUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Long updateUser;
+
+ @ApiModelProperty("绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/sales/service/SalesQuotationFileService.java b/src/main/java/com/ruoyi/sales/service/SalesQuotationFileService.java
new file mode 100644
index 0000000..3a5b508
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/SalesQuotationFileService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.sales.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.SalesQuotationFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 閿�鍞姤浠�--闄勪欢 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-09 11:19:20
+ */
+public interface SalesQuotationFileService extends IService<SalesQuotationFile> {
+
+ IPage<SalesQuotationFile> knowledgeBaseFileListPage(Page page, SalesQuotationFile accountFile);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationFileServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationFileServiceImpl.java
new file mode 100644
index 0000000..0cdd0c7
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationFileServiceImpl.java
@@ -0,0 +1,29 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.SalesQuotationFile;
+import com.ruoyi.sales.mapper.SalesQuotationFileMapper;
+import com.ruoyi.sales.service.SalesQuotationFileService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 閿�鍞姤浠�--闄勪欢 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-09 11:19:20
+ */
+@Service
+public class SalesQuotationFileServiceImpl extends ServiceImpl<SalesQuotationFileMapper, SalesQuotationFile> implements SalesQuotationFileService {
+
+ @Autowired
+ private SalesQuotationFileMapper salesQuotationFileMapper;
+ @Override
+ public IPage<SalesQuotationFile> knowledgeBaseFileListPage(Page page, SalesQuotationFile accountFile) {
+ return salesQuotationFileMapper.salesQuotationFilePage(page,accountFile);
+ }
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
index 8e18058..74fa7a4 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -17,9 +18,11 @@
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.sales.dto.SalesQuotationDto;
+import com.ruoyi.sales.mapper.SalesQuotationFileMapper;
import com.ruoyi.sales.mapper.SalesQuotationMapper;
import com.ruoyi.sales.mapper.SalesQuotationProductMapper;
import com.ruoyi.sales.pojo.SalesQuotation;
+import com.ruoyi.sales.pojo.SalesQuotationFile;
import com.ruoyi.sales.pojo.SalesQuotationProduct;
import com.ruoyi.sales.service.SalesQuotationProductService;
import com.ruoyi.sales.service.SalesQuotationService;
@@ -45,6 +48,9 @@
@Autowired
private ApproveProcessServiceImpl approveProcessService;
+ @Autowired
+ private SalesQuotationFileMapper salesQuotationFileMapper;
+
@Override
public IPage<SalesQuotationDto> listPage(Page page, SalesQuotationDto salesQuotationDto) {
IPage<SalesQuotationDto> salesQuotationDtoIPage = salesQuotationMapper.listPage(page, salesQuotationDto);
@@ -54,6 +60,7 @@
salesQuotationDtoIPage.getRecords().forEach(record -> {
List<SalesQuotationProduct> products = salesQuotationProductMapper.selectBySalesQuotationId(record.getId());
record.setProducts(products);
+ record.setFiles(salesQuotationFileMapper.selectList(new QueryWrapper<SalesQuotationFile>().lambda().eq(SalesQuotationFile::getSalesQuotationId, record.getId())));
});
return salesQuotationDtoIPage;
}
@@ -92,6 +99,10 @@
log.error("SalesQuotationServiceImpl error:{}", e);
throw new RuntimeException("瀹℃壒澶辫触");
}
+ for (SalesQuotationFile file : salesQuotationDto.getFiles()) {
+ file.setSalesQuotationId(salesQuotation.getId());
+ salesQuotationFileMapper.insert(file);
+ }
return true;
}
@Override
@@ -123,6 +134,12 @@
vo.setApproveType(6);
vo.setApproveReason(salesQuotationDto.getQuotationNo());
approveProcessService.updateApproveUser(vo);
+ for (SalesQuotationFile file : salesQuotationDto.getFiles()) {
+ if (file.getId() == null) {
+ file.setSalesQuotationId(salesQuotation.getId());
+ salesQuotationFileMapper.insert(file);
+ }
+ }
return true;
}
@Override
diff --git a/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml b/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml
index e5d4b02..e591ef5 100644
--- a/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml
+++ b/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml
@@ -18,7 +18,7 @@
<select id="knowledgeBaseFileListPage" resultType="com.ruoyi.approve.pojo.KnowledgeBaseFile">
SELECT
*
- FROM account_file
+ FROM knowledge_base_file
where
<if test="accountFile.knowledgeBaseId != null and accountFile.knowledgeBaseId != ''">
AND knowledge_base_id = #{accountFile.knowledgeBaseId}
diff --git a/src/main/resources/mapper/sales/SalesQuotationFileMapper.xml b/src/main/resources/mapper/sales/SalesQuotationFileMapper.xml
new file mode 100644
index 0000000..bdaef49
--- /dev/null
+++ b/src/main/resources/mapper/sales/SalesQuotationFileMapper.xml
@@ -0,0 +1,31 @@
+<?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.sales.mapper.SalesQuotationFileMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.sales.pojo.SalesQuotationFile">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="url" property="url" />
+ <result column="file_size" property="fileSize" />
+ <result column="sales_quotation_id" property="salesQuotationId" />
+ <result column="create_time" property="createTime" />
+ <result column="create_user" property="createUser" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="tenant_id" property="tenantId" />
+ </resultMap>
+ <select id="salesQuotationFilePage" resultType="com.ruoyi.sales.pojo.SalesQuotationFile">
+ SELECT
+ *
+ FROM sales_quotation_file
+ where
+ <if test="accountFile.knowledgeBaseId != null and accountFile.knowledgeBaseId != ''">
+ AND knowledge_base_id = #{accountFile.knowledgeBaseId}
+ </if>
+ <if test="accountFile.name != null and accountFile.name != '' ">
+ AND name = #{accountFile.name}
+ </if>
+ </select>
+
+</mapper>
--
Gitblit v1.9.3