Files
erp-next/sql/20260601/001_client_quote_optimize.sql
王文昊 a75589018f feat(bid): 完成甲方报价模块全量功能开发
1.  新增甲方报价业务实体,继承基础实体类
2.  新增供应商报价明细查询接口,支持按供应商ID展开物料明细
3.  重构甲方报价关联逻辑,通过material_id精确关联物料表
4.  新增甲方报价历史统计、月度趋势、快速新建等服务功能
5.  完善菜单配置,修正甲方报价菜单结构,添加完整权限控制
6.  新增物料搜索自动补全功能,优化报价单详情页面
7.  在供应商详情页新增报价历史Tab页签,展示该供应商的所有报价物料明细
8.  在物料详情页新增甲方报价记录Tab页签,展示该物料的所有甲方报价历史
9.  新增数据库优化脚本,添加索引并修复历史数据关联
2026-06-01 19:05:04 +08:00

59 lines
3.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- 甲方报价系统优化 - 数据库迁移脚本
-- 日期: 2026-06-01
-- 说明:
-- 1. biz_client_quote_item 表添加 material_id 字段,建立与物料表的正式关联
-- 2. 添加必要的索引优化查询性能
-- 3. 添加统计数据辅助字段
-- 4. 修复历史数据中的 material_id 关联
-- ============================================================================
-- ============================================================================
-- PART 1: 甲方报价明细表 - 添加 material_id 字段
-- ============================================================================
ALTER TABLE biz_client_quote_item
ADD COLUMN material_id BIGINT DEFAULT NULL COMMENT '关联物料IDbiz_material.material_id' AFTER quote_id;
-- 创建索引以加速按物料查询
CREATE INDEX idx_cqi_quote_id ON biz_client_quote_item (quote_id);
CREATE INDEX idx_cqi_material_id ON biz_client_quote_item (material_id);
-- ============================================================================
-- PART 2: 甲方报价主表 - 添加统计优化索引
-- ============================================================================
CREATE INDEX idx_cq_create_time ON biz_client_quote (create_time);
CREATE INDEX idx_cq_client_name ON biz_client_quote (client_name);
CREATE INDEX idx_cq_status ON biz_client_quote (status);
-- ============================================================================
-- PART 3: 修复历史数据 - 通过物料名称匹配回填 material_id
-- ============================================================================
-- 注意: 此操作为一次性数据修复,基于 material_name 精确匹配。
-- 如果存在同名的多个物料只会关联第一个匹配到的物料ID。
-- 请在执行前确认数据准确性。
UPDATE biz_client_quote_item cqi
JOIN biz_material m ON cqi.material_name = m.material_name
SET cqi.material_id = m.material_id
WHERE cqi.material_id IS NULL
AND cqi.material_name IS NOT NULL
AND cqi.material_name != '';
-- ============================================================================
-- PART 4: 验证数据修复结果
-- ============================================================================
-- 检查仍有未关联的记录数(如果 > 0说明有些物料名称在 biz_material 表中不存在)
-- SELECT COUNT(*) AS unlinked_count
-- FROM biz_client_quote_item
-- WHERE material_id IS NULL AND material_name IS NOT NULL AND material_name != '';
-- 查看关联情况统计
-- SELECT
-- CASE WHEN cqi.material_id IS NOT NULL THEN '已关联' ELSE '未关联' END AS status,
-- COUNT(*) AS count
-- FROM biz_client_quote_item cqi
-- GROUP BY CASE WHEN cqi.material_id IS NOT NULL THEN '已关联' ELSE '未关联' END;
-- ============================================================================
-- 完成
-- ============================================================================