feat(bid): 新增基于甲方报价快速创建RFQ功能

本次提交完成以下核心变更:
1. 新增RFQ编号自动生成逻辑,添加selectNextRfqNo方法获取月度递增的RFQ编号
2. 在biz_rfq表新增client_quote_id关联字段,添加索引并完善实体类映射
3. 实现基于甲方报价复制物料快速创建RFQ的业务逻辑,包括事务处理和明细复制
4. 新增RFQ列表页关联甲方报价展示,支持点击跳转查看甲方报价详情
5. 在RFQ编辑页新增甲方报价选择器,选中后自动填充对应物料和标题
6. 优化甲方报价单页面,新增生成RFQ按钮和已生成RFQ列表展示
7. 调整RFQ详情页,新增编辑模式支持草稿状态修改
8. 修复路由跳转路径,统一RFQ相关页面路由到/bid/rfq路径组
This commit is contained in:
2026-06-02 18:44:44 +08:00
parent a75589018f
commit 9db84336bc
12 changed files with 514 additions and 70 deletions

View File

@@ -9,14 +9,17 @@ 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.enums.BusinessType;
import com.ruoyi.system.domain.bid.BizClientQuote;
import com.ruoyi.system.domain.bid.BizRfq;
import com.ruoyi.system.domain.bid.BizRfqItem;
import com.ruoyi.system.mapper.bid.BizClientQuoteMapper;
import com.ruoyi.system.service.bid.IBizRfqService;
@RestController
@RequestMapping("/bid/rfq")
public class BizRfqController extends BaseController {
@Autowired private IBizRfqService service;
@Autowired private BizClientQuoteMapper clientQuoteMapper;
@PreAuthorize("@ss.hasPermi('bid:rfq:list')")
@GetMapping("/list")
@@ -42,6 +45,8 @@ public class BizRfqController extends BaseController {
@PostMapping
public AjaxResult add(@RequestBody BizRfq rfq) {
rfq.setCreateBy(getUsername());
Long tenantId = getDeptId();
rfq.setTenantId(tenantId != null ? tenantId : 1L);
return toAjax(service.insertBizRfq(rfq));
}
@@ -66,4 +71,24 @@ public class BizRfqController extends BaseController {
public AjaxResult remove(@PathVariable Long[] rfqIds) {
return toAjax(service.deleteBizRfqByIds(rfqIds));
}
// ========== 关联甲方报价 ==========
/** 获取可选甲方报价列表(下拉选择器用) */
@PreAuthorize("@ss.hasPermi('bid:rfq:add')")
@GetMapping("/client-quote-options")
public AjaxResult clientQuoteOptions() {
BizClientQuote query = new BizClientQuote();
List<BizClientQuote> list = clientQuoteMapper.selectClientQuoteList(query);
return success(list);
}
/** 基于甲方报价快速创建 RFQ */
@PreAuthorize("@ss.hasPermi('bid:rfq:add')")
@Log(title = "报价请求", businessType = BusinessType.INSERT)
@PostMapping("/create-from-quote/{clientQuoteId}")
public AjaxResult createFromQuote(@PathVariable Long clientQuoteId) {
Long tenantId = getDeptId();
return success(service.createRfqFromClientQuote(clientQuoteId, tenantId != null ? tenantId : 1L));
}
}