| src/main/java/com/ruoyi/sales/controller/SalesQuotationFileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/mapper/SalesQuotationFileMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/pojo/SalesQuotationFile.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/SalesQuotationFileService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesQuotationFileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/sales/SalesQuotationFileMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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)); } } 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; } 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); } 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("é宿¥ä»·id") 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; } 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); } 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); } } 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 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} 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>