feat: 完成采购看板与异议管理模块功能升级

1.  新增报表下钻跳转支持,为供应商、RFQ、采购单、物料等页面添加路由参数解析
2.  优化异议管理模块:新增发货单关联、详情弹窗、审批流程优化
3.  完善采购看板功能:支持累计数据展示、图表导出、数据补全与趋势优化
4.  新增供应商评分历史趋势统计与品类分布聚合逻辑
5.  修复异议API路径与通知跳转路径问题,新增模拟测试数据
This commit is contained in:
2026-06-21 12:40:59 +08:00
parent 8bdb8d7c23
commit 896999dfeb
26 changed files with 1129 additions and 108 deletions

View File

@@ -0,0 +1,41 @@
-- 订单异议模拟数据20条
-- 覆盖5家供应商3种状态(resolved/pending/open),多样化异议原因
SET NAMES utf8mb4;
INSERT INTO biz_order_objection (tenant_id, po_id, supplier_id, reason, attachment, status, resolution, create_by, create_time, resolve_time, update_by, update_time) VALUES
-- 供应商14条
(1, 1, 1, '电源模块批次MW-2025-1128中发现3台开机自检报警检测为输出纹波超标不符合采购规格书要求要求供应商提供原厂检测报告并换货。', NULL, 'resolved', '供应商已提供原厂检测报告确认为该批次出厂检验遗漏问题。已更换3台合格品并附出厂测试记录我司复验通过。', '采购部 王工', '2025-08-10 14:00:00', '2025-08-18 11:00:00', 'admin', '2025-08-18 11:00:00'),
(1, 1, 1, '导轨表面有轻微划痕,影响外观但不影响功能,要求折扣处理。', NULL, 'resolved', '经协商供应商同意8折结算该批次已由财务调整账单。', '采购部 李工', '2025-10-05 09:30:00', '2025-10-10 15:00:00', 'admin', '2025-10-10 15:00:00'),
(1, 1, 1, '本批次PLC控制器固件版本与约定不符缺少MODBUS-TCP协议支持需升级固件。', NULL, 'pending', NULL, '采购部 张工', '2026-01-15 10:00:00', NULL, NULL, NULL),
(1, 1, 1, '包装箱破损导致2台传感器外壳变形要求补发。', NULL, 'resolved', '供应商确认物流责任已补发2台传感器到货验收合格。', '采购部 李工', '2026-03-20 13:30:00', '2026-03-25 10:00:00', 'admin', '2026-03-25 10:00:00'),
-- 供应商25条问题较多
(1, 2, 2, '滚珠丝杠NSK品牌10套中有3套程误差超出图纸要求规定0.05mm/300mm实测最大误差达0.09mm,要求退换货或索赔。', NULL, 'resolved', '经双方确认供应商同意退换该2套滚珠丝杠并承担往返运费。补货已于2025-09-28送达复检合格。本次异议结案。', '采购部 李工', '2025-09-22 09:00:00', '2025-09-30 16:00:00', 'admin', '2025-09-30 16:00:00'),
(1, 2, 2, '交期延迟7天导致生产线停工待料要求赔偿损失。', NULL, 'resolved', '供应商承认排产失误同意下次订单优惠5%作为补偿。', '采购部 王工', '2025-11-12 14:00:00', '2025-11-20 10:30:00', 'admin', '2025-11-20 10:30:00'),
(1, 2, 2, '伺服电机铭牌信息缺失,缺少序列号和生产日期,无法追溯。', NULL, 'pending', NULL, '采购部 张工', '2026-01-08 11:00:00', NULL, NULL, NULL),
(1, 2, 2, '本批次联轴器硬度不达标HRC实测值18要求HRC22-25使用寿命存疑。', NULL, 'open', NULL, '采购部 李工', '2026-02-25 15:00:00', NULL, NULL, NULL),
(1, 2, 2, '到货数量短缺订单20件实到18件缺少2件未提前告知。', NULL, 'resolved', '供应商确认漏发已补发2件并于3月5日到货。', '采购部 王工', '2026-03-01 09:15:00', '2026-03-05 14:00:00', 'admin', '2026-03-05 14:00:00'),
-- 供应商33条
(1, 3, 3, '变频器参数设置手册为英文版,要求提供中文版。', NULL, 'resolved', '供应商已邮寄中文版手册,并提供电子版下载链接。', '采购部 张工', '2025-09-15 10:00:00', '2025-09-18 14:00:00', 'admin', '2025-09-18 14:00:00'),
(1, 3, 3, '触摸屏亮度不均匀,边缘有暗影,疑似背光模组不良。', NULL, 'resolved', '供应商技术人员现场检测确认为背光模组批次问题已更换4台触摸屏。', '采购部 李工', '2025-12-10 13:00:00', '2025-12-18 11:00:00', 'admin', '2025-12-18 11:00:00'),
(1, 3, 3, '继电器触点氧化严重存储3个月后出现接触不良怀疑防锈处理不达标。', NULL, 'pending', NULL, '采购部 王工', '2026-04-02 10:30:00', NULL, NULL, NULL),
-- 供应商45条问题最多
(1, 1, 4, '气缸密封圈材质不符约定氟橡胶FKM实际为丁腈橡胶NBR耐温性不达标。', NULL, 'resolved', '供应商承认材质替换错误已退换全部50件密封圈复检合格。', '采购部 李工', '2025-08-20 14:30:00', '2025-09-05 10:00:00', 'admin', '2025-09-05 10:00:00'),
(1, 1, 4, '电磁阀线圈阻抗偏差大标称24VDC 1.2A实测1.5A,存在过热风险。', NULL, 'open', NULL, '采购部 张工', '2025-10-18 11:00:00', NULL, NULL, NULL),
(1, 1, 4, '到货产品无出厂检验报告,无合格证,拒绝入库。', NULL, 'resolved', '供应商补寄出厂检验报告和合格证,经审核后入库。', '采购部 王工', '2025-11-25 09:00:00', '2025-12-01 15:00:00', 'admin', '2025-12-01 15:00:00'),
(1, 1, 4, '气动接头螺纹滑丝无法正常安装不良率高达15%。', NULL, 'pending', NULL, '采购部 李工', '2026-02-10 14:00:00', NULL, NULL, NULL),
(1, 1, 4, '本批次气管有异味,疑似材质回料掺杂,要求第三方检测。', NULL, 'open', NULL, '采购部 张工', '2026-04-15 10:15:00', NULL, NULL, NULL),
-- 供应商53条
(1, 2, 5, '电缆外径偏大,超出接线端子孔径,无法压接。', NULL, 'resolved', '供应商确认模具偏差,已免费提供配套大孔径端子。', '采购部 李工', '2025-10-08 13:00:00', '2025-10-15 11:00:00', 'admin', '2025-10-15 11:00:00'),
(1, 2, 5, '接线端子防尘盖卡扣断裂安装5个有2个断裂质量不稳定。', NULL, 'resolved', '供应商改进注塑工艺补发10个改良版防尘盖复装后无断裂。', '采购部 王工', '2026-01-20 10:00:00', '2026-01-28 14:30:00', 'admin', '2026-01-28 14:30:00'),
(1, 2, 5, '开关电源输出电压波动大空载5.2V带载后降至4.6V不在5V±2%范围内。', NULL, 'pending', NULL, '采购部 张工', '2026-03-10 15:30:00', NULL, NULL, NULL);
-- 验证
SELECT '=== 异议数据统计 ===' AS info;
SELECT COUNT(*) AS total FROM biz_order_objection;
SELECT supplier_id, COUNT(*) AS cnt, SUM(CASE WHEN status='resolved' THEN 1 ELSE 0 END) AS resolved, SUM(CASE WHEN status='pending' THEN 1 ELSE 0 END) AS pending, SUM(CASE WHEN status='open' THEN 1 ELSE 0 END) AS open_status FROM biz_order_objection GROUP BY supplier_id ORDER BY supplier_id;

55
sql/mock_report_data.sql Normal file
View File

@@ -0,0 +1,55 @@
-- 补充各月份测试数据,确保图表完整展示
-- 采购订单补充2025-07~2025-12、2026-02、2026-04~2026-06
-- RFQ补充2025-07~2025-11
SET NAMES utf8mb4;
-- === 补充采购订单(缺失月份)===
INSERT INTO biz_purchase_order (tenant_id, po_no, rfq_id, supplier_id, total_amount, currency, status, delivery_date, create_by, create_time) VALUES
(1, 'PO-2025-0701', 1, 1, 38500.00, 'CNY', 'confirmed', '2025-08-15', 'admin', '2025-07-10 10:00:00'),
(1, 'PO-2025-0801', 1, 2, 52300.00, 'CNY', 'confirmed', '2025-09-20', 'admin', '2025-08-12 11:00:00'),
(1, 'PO-2025-0901', 1, 3, 41800.00, 'CNY', 'confirmed', '2025-10-18', 'admin', '2025-09-05 09:30:00'),
(1, 'PO-2025-1001', 1, 1, 67200.00, 'CNY', 'confirmed', '2025-11-22', 'admin', '2025-10-08 14:00:00'),
(1, 'PO-2025-1101', 1, 4, 29400.00, 'CNY', 'confirmed', '2025-12-15', 'admin', '2025-11-03 10:30:00'),
(1, 'PO-2025-1201', 1, 5, 45600.00, 'CNY', 'confirmed', '2026-01-20', 'admin', '2025-12-07 13:00:00'),
(1, 'PO-2026-0201', 1, 2, 33800.00, 'CNY', 'confirmed', '2026-03-10', 'admin', '2026-02-14 10:00:00'),
(1, 'PO-2026-0401', 1, 3, 51200.00, 'CNY', 'confirmed', '2026-05-18', 'admin', '2026-04-09 11:30:00'),
(1, 'PO-2026-0501', 1, 1, 44900.00, 'CNY', 'confirmed', '2026-06-22', 'admin', '2026-05-11 09:00:00'),
(1, 'PO-2026-0601', 1, 5, 38700.00, 'CNY', 'confirmed', '2026-07-15', 'admin', '2026-06-05 14:30:00');
-- === 补充RFQ缺失月份2025-07~2025-11===
INSERT INTO biz_rfq (tenant_id, rfq_no, rfq_title, status, deadline, create_by, create_time) VALUES
(1, 'RFQ-2025-0701', '7月办公设备采购', 'closed', '2025-07-20 00:00:00', 'admin', '2025-07-05 10:00:00'),
(1, 'RFQ-2025-0801', '8月IT设备采购', 'closed', '2025-08-20 00:00:00', 'admin', '2025-08-05 10:00:00'),
(1, 'RFQ-2025-0901', '9月工业耗材采购', 'closed', '2025-09-20 00:00:00', 'admin', '2025-09-05 10:00:00'),
(1, 'RFQ-2025-1001', '10月电子元器件采购', 'closed', '2025-10-20 00:00:00', 'admin', '2025-10-05 10:00:00'),
(1, 'RFQ-2025-1101', '11月机械配件采购', 'closed', '2025-11-20 00:00:00', 'admin', '2025-11-05 10:00:00');
-- === 补充报价数据(缺失月份)===
INSERT INTO biz_quotation (tenant_id, rfq_id, supplier_id, quote_no, total_amount, currency, status, submit_time, create_by) VALUES
(1, 1, 1, 'QT-2025-0701', 36500.00, 'CNY', 'rejected', '2025-07-15 10:00:00', 'admin'),
(1, 1, 2, 'QT-2025-0702', 35200.00, 'CNY', 'accepted', '2025-07-15 11:00:00', 'admin'),
(1, 1, 3, 'QT-2025-0801', 51800.00, 'CNY', 'accepted', '2025-08-15 10:00:00', 'admin'),
(1, 1, 1, 'QT-2025-0802', 53500.00, 'CNY', 'rejected', '2025-08-15 11:00:00', 'admin'),
(1, 1, 4, 'QT-2025-0901', 41200.00, 'CNY', 'accepted', '2025-09-12 10:00:00', 'admin'),
(1, 1, 2, 'QT-2025-0902', 42500.00, 'CNY', 'rejected', '2025-09-12 11:00:00', 'admin'),
(1, 1, 5, 'QT-2025-1001', 66800.00, 'CNY', 'accepted', '2025-10-12 10:00:00', 'admin'),
(1, 1, 3, 'QT-2025-1002', 67500.00, 'CNY', 'rejected', '2025-10-12 11:00:00', 'admin'),
(1, 1, 1, 'QT-2025-1101', 29000.00, 'CNY', 'rejected', '2025-11-10 10:00:00', 'admin'),
(1, 1, 4, 'QT-2025-1102', 28500.00, 'CNY', 'accepted', '2025-11-10 11:00:00', 'admin'),
(1, 1, 2, 'QT-2026-0201', 33500.00, 'CNY', 'accepted', '2026-02-20 10:00:00', 'admin'),
(1, 1, 5, 'QT-2026-0202', 34200.00, 'CNY', 'rejected', '2026-02-20 11:00:00', 'admin'),
(1, 1, 3, 'QT-2026-0401', 50800.00, 'CNY', 'accepted', '2026-04-15 10:00:00', 'admin'),
(1, 1, 1, 'QT-2026-0402', 52000.00, 'CNY', 'rejected', '2026-04-15 11:00:00', 'admin'),
(1, 1, 5, 'QT-2026-0501', 44500.00, 'CNY', 'accepted', '2026-05-15 10:00:00', 'admin'),
(1, 1, 2, 'QT-2026-0502', 45200.00, 'CNY', 'rejected', '2026-05-15 11:00:00', 'admin'),
(1, 1, 1, 'QT-2026-0601', 38200.00, 'CNY', 'rejected', '2026-06-10 10:00:00', 'admin'),
(1, 1, 4, 'QT-2026-0602', 38500.00, 'CNY', 'accepted', '2026-06-10 11:00:00', 'admin');
-- === 验证 ===
SELECT '=== 采购订单月度分布 ===' AS info;
SELECT DATE_FORMAT(create_time,'%Y-%m') AS month, COUNT(*) AS cnt, SUM(total_amount) AS amt FROM biz_purchase_order GROUP BY month ORDER BY month;
SELECT '=== RFQ月度分布 ===' AS info;
SELECT DATE_FORMAT(create_time,'%Y-%m') AS month, COUNT(*) AS cnt FROM biz_rfq GROUP BY month ORDER BY month;
SELECT '=== 报价月度分布 ===' AS info;
SELECT DATE_FORMAT(submit_time,'%Y-%m') AS month, COUNT(*) AS cnt FROM biz_quotation WHERE submit_time IS NOT NULL GROUP BY month ORDER BY month;

View File

@@ -0,0 +1,84 @@
-- 供应商评价模拟数据55条
-- 覆盖5家供应商 x 12个月(2025-07 ~ 2026-06),各评分区间,多样化评价内容
SET NAMES utf8mb4;
INSERT INTO biz_supplier_evaluation (tenant_id, po_id, supplier_id, quality_score, delivery_score, service_score, price_score, total_score, comment, evaluator, eval_time) VALUES
-- ===== 供应商111条=====
(1, 1, 1, 5, 5, 4, 4, 4.5, '产品质量优秀均通过IQC检验送货及时销售响应迅速价格略高于市场均价。综合评价优秀列为A类合格供应商。', 'admin', '2025-07-08 10:30:00'),
(1, 1, 1, 5, 4, 5, 5, 4.8, '精密件质量达到图纸要求,安装调试支持专业,价格具有竞争力。推荐继续合作。', 'buyer1', '2025-08-15 14:00:00'),
(1, 1, 1, 4, 5, 4, 4, 4.3, '质量稳定,交期准时,服务态度好。', 'buyer2', '2025-09-12 09:15:00'),
(1, 1, 1, 5, 5, 5, 3, 4.5, '质量和服务一流但价格偏高建议年度谈判降价。整体表现优异关键技术指标全部达标包装规范完整随货附检验报告售后响应在2小时内。', 'admin', '2025-10-20 16:45:00'),
(1, 1, 1, 4, 4, 5, 4, 4.3, '整体表现良好,服务响应快。', 'buyer1', '2025-11-05 11:20:00'),
(1, 1, 1, 5, 4, 4, 5, 4.5, '性价比高,质量可靠。', 'buyer3', '2025-12-18 13:30:00'),
(1, 1, 1, 4, 5, 5, 4, 4.5, '交期准时,售后服务到位,技术支持专业。建议保持。', 'admin', '2026-01-10 15:00:00'),
(1, 1, 1, 5, 5, 4, 4, 4.5, '质量优异连续3批次零缺陷。', 'buyer2', '2026-02-14 10:00:00'),
(1, 1, 1, 3, 4, 4, 5, 4.0, '本批次有1件外观瑕疵已退换。价格优势明显交期正常。', 'buyer1', '2026-03-22 14:30:00'),
(1, 1, 1, 5, 5, 5, 4, 4.8, '全面优秀季度评审A级供应商。质量零缺陷交期提前2天服务主动跟进价格合理。', 'admin', '2026-04-08 09:45:00'),
(1, 1, 1, 4, 4, 4, 4, 4.0, '表现稳定,各维度均衡。', 'buyer3', '2026-05-15 11:00:00'),
-- ===== 供应商211条=====
(1, 2, 2, 4, 3, 4, 5, 4.0, '价格优势突出,但交期偶有延迟,需加强供应链管理。', 'admin', '2025-07-20 13:00:00'),
(1, 2, 2, 3, 2, 3, 5, 3.3, '交期严重延迟5天影响生产计划。价格有竞争力但需改善交付。', 'buyer1', '2025-08-25 10:30:00'),
(1, 2, 2, 4, 4, 3, 4, 3.8, '质量合格,服务一般,价格合理。', 'buyer2', '2025-09-18 15:20:00'),
(1, 2, 2, 2, 3, 2, 5, 3.0, '本批次不良率超标,已发起退货。服务响应慢,仅价格有优势。需限期整改。', 'admin', '2025-10-30 16:00:00'),
(1, 2, 2, 4, 4, 4, 5, 4.3, '整改后质量明显改善,交期恢复正常。', 'buyer1', '2025-11-22 09:00:00'),
(1, 2, 2, 3, 3, 3, 4, 3.3, '表现一般,各维度中等水平。', 'buyer3', '2025-12-10 14:15:00'),
(1, 2, 2, 4, 3, 4, 5, 4.0, '价格竞争力强,质量稳定,交期需关注。', 'admin', '2026-01-25 11:30:00'),
(1, 2, 2, 5, 4, 4, 4, 4.3, '质量提升显著,达到优秀水平。', 'buyer2', '2026-02-28 10:00:00'),
(1, 2, 2, 4, 4, 3, 5, 4.0, '性价比高,服务有待提升。', 'buyer1', '2026-03-15 13:45:00'),
(1, 2, 2, 3, 2, 3, 4, 3.0, '再次出现交期延迟,已约谈供应商负责人。质量波动较大,建议引入备选供应商。', 'admin', '2026-04-20 15:30:00'),
(1, 2, 2, 4, 4, 4, 5, 4.3, '本月表现回升,交期改善。', 'buyer3', '2026-05-28 09:30:00'),
-- ===== 供应商311条=====
(1, 3, 3, 4, 4, 5, 3, 4.0, '服务一流,技术支持专业,但价格偏高。', 'admin', '2025-07-12 14:00:00'),
(1, 3, 3, 5, 5, 5, 3, 4.5, '质量和服务满分,价格略高但物有所值。产品技术参数全部达标,包装精美,附完整技术文档。', 'buyer1', '2025-08-18 10:15:00'),
(1, 3, 3, 4, 5, 4, 4, 4.3, '交期提前3天到货质量合格。', 'buyer2', '2025-09-25 11:00:00'),
(1, 3, 3, 5, 4, 5, 3, 4.3, '技术实力强,售后响应快。', 'admin', '2025-10-15 15:45:00'),
(1, 3, 3, 4, 4, 4, 3, 3.8, '整体良好,价格需谈判。', 'buyer3', '2025-11-30 09:30:00'),
(1, 3, 3, 5, 5, 5, 4, 4.8, '年度最佳供应商全维度优秀。连续12个月零质量投诉技术团队专业紧急订单响应快价格合理。强烈推荐。', 'admin', '2025-12-20 14:00:00'),
(1, 3, 3, 4, 5, 4, 3, 4.0, '交期表现优异,价格偏高。', 'buyer1', '2026-01-18 10:30:00'),
(1, 3, 3, 5, 4, 5, 4, 4.5, '质量稳定,服务优秀。', 'buyer2', '2026-02-20 13:00:00'),
(1, 3, 3, 4, 4, 5, 3, 4.0, '服务持续优秀,价格竞争力不足。', 'admin', '2026-03-28 15:00:00'),
(1, 3, 3, 5, 5, 4, 4, 4.5, '质量满分,交期准时。', 'buyer3', '2026-04-25 11:15:00'),
(1, 3, 3, 4, 5, 5, 4, 4.5, '综合表现优秀,推荐续约。', 'buyer1', '2026-05-30 09:45:00'),
-- ===== 供应商411条无采购订单po_id用1占位=====
(1, 1, 4, 3, 3, 3, 3, 3.0, '新供应商首单评价,各维度表现中等,需持续观察。', 'admin', '2025-07-25 10:00:00'),
(1, 1, 4, 2, 2, 3, 4, 2.8, '质量不达标2件不合格已退货。交期延迟服务一般价格有优势。', 'buyer1', '2025-08-30 14:30:00'),
(1, 1, 4, 3, 3, 2, 4, 3.0, '表现不佳,已发出整改通知。', 'buyer2', '2025-09-20 11:00:00'),
(1, 1, 4, 1, 2, 1, 5, 2.3, '严重质量问题批量退货。服务极差拒绝配合整改。仅价格低廉。建议列入观察名单限期3个月整改。', 'admin', '2025-10-10 16:00:00'),
(1, 1, 4, 3, 3, 3, 4, 3.3, '整改后略有改善,仍需提升。', 'buyer3', '2025-11-15 13:15:00'),
(1, 1, 4, 4, 3, 3, 4, 3.5, '质量改善明显,服务仍需加强。', 'admin', '2025-12-05 10:30:00'),
(1, 1, 4, 3, 4, 3, 4, 3.5, '交期改善,质量基本合格。', 'buyer1', '2026-01-30 14:00:00'),
(1, 1, 4, 4, 4, 4, 3, 3.8, '持续改善中,各维度趋于稳定。', 'buyer2', '2026-02-25 09:30:00'),
(1, 1, 4, 3, 3, 4, 4, 3.5, '服务有所提升,价格合理。', 'buyer3', '2026-03-18 15:30:00'),
(1, 1, 4, 4, 4, 3, 4, 3.8, '整体趋于稳定,建议继续观察。', 'admin', '2026-04-15 11:45:00'),
(1, 1, 4, 4, 5, 4, 3, 4.0, '交期表现优秀,质量合格,持续改善。', 'buyer1', '2026-05-20 10:00:00'),
-- ===== 供应商511条无采购订单po_id用2占位=====
(1, 2, 5, 4, 4, 4, 4, 4.0, '新引入供应商,首单表现合格。', 'admin', '2025-07-30 13:30:00'),
(1, 2, 5, 5, 4, 5, 3, 4.3, '质量优秀,服务热情,价格略高。', 'buyer1', '2025-08-22 10:00:00'),
(1, 2, 5, 4, 5, 4, 4, 4.3, '交期提前到货,整体满意。', 'buyer2', '2025-09-28 14:15:00'),
(1, 2, 5, 5, 5, 5, 4, 4.8, '全面优秀强烈推荐。产品质量卓越技术参数全部达标交期准时售后响应1小时内包装规范完整。', 'admin', '2025-10-25 11:30:00'),
(1, 2, 5, 4, 4, 5, 3, 4.0, '服务优秀,价格需优化。', 'buyer3', '2025-11-20 15:00:00'),
(1, 2, 5, 5, 4, 4, 4, 4.3, '质量稳定,综合表现良好。', 'admin', '2025-12-28 09:45:00'),
(1, 2, 5, 4, 5, 5, 3, 4.3, '交期和服务满分,价格偏高。', 'buyer1', '2026-01-15 13:00:00'),
(1, 2, 5, 5, 5, 4, 4, 4.5, '质量优异,连续批次零缺陷。', 'buyer2', '2026-02-18 10:30:00'),
(1, 2, 5, 4, 4, 4, 4, 4.0, '表现稳定,各维度均衡。', 'buyer3', '2026-03-25 14:45:00'),
(1, 2, 5, 5, 4, 5, 4, 4.5, '质量和服务持续优秀。', 'admin', '2026-04-30 11:00:00'),
(1, 2, 5, 4, 5, 5, 4, 4.5, '综合优秀推荐升级为A级供应商。', 'buyer1', '2026-05-25 09:15:00');
-- 验证
SELECT '=== 评价数据统计 ===' AS info;
SELECT COUNT(*) AS total_evaluations FROM biz_supplier_evaluation;
SELECT supplier_id, COUNT(*) AS eval_count,
ROUND(AVG(quality_score),1) AS avg_quality,
ROUND(AVG(delivery_score),1) AS avg_delivery,
ROUND(AVG(service_score),1) AS avg_service,
ROUND(AVG(price_score),1) AS avg_price,
ROUND(AVG(total_score),1) AS avg_total
FROM biz_supplier_evaluation GROUP BY supplier_id ORDER BY supplier_id;
SELECT DATE_FORMAT(eval_time,'%Y-%m') AS month, COUNT(*) AS cnt
FROM biz_supplier_evaluation GROUP BY month ORDER BY month;