From faa687a26413467c2510009e39f979e5a013a36e Mon Sep 17 00:00:00 2001 From: xman <1946321327@qq.com> Date: Fri, 16 May 2025 15:13:27 +0800 Subject: [PATCH] sth --- .../controller/statistics/Dispatcher.php | 19 +++++++++---------- .../admin/controller/statistics/Worker.php | 15 ++++++++------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/application/admin/controller/statistics/Dispatcher.php b/application/admin/controller/statistics/Dispatcher.php index 89d35df..ee00f12 100644 --- a/application/admin/controller/statistics/Dispatcher.php +++ b/application/admin/controller/statistics/Dispatcher.php @@ -126,16 +126,15 @@ class Dispatcher extends Backend //"COUNT(CASE WHEN status IN (".$orderValid.") THEN 1 END) AS ing_num", $fields = [ 'dispatch_admin_id', - "COUNT(CASE WHEN status = 60 THEN 1 END) AS finish_num", //完成数 - "COUNT(CASE WHEN status IN (".$orderValid.") THEN 1 END) AS count_num", //总订单数 (排除取消 和草稿) - "SUM(CASE WHEN status = 60 THEN total END) AS total", //成效额 - "SUM(CASE WHEN status = 60 THEN performance END) AS performance", //业绩 - - "SUM(CASE WHEN status = 60 THEN (cost + material_cost) END) AS cost_total", //总成本 - - "SUM(CASE WHEN status = 60 THEN (refund_amount + worker_refund_amount) END) AS refund_total", //退款总数 - "COUNT(CASE WHEN refund_amount > 0 OR worker_refund_amount > 0 THEN 1 END) AS refund_count", //退款订单数量 - "AVG(CASE WHEN status > 10 THEN UNIX_TIMESTAMP(dispatch_time) - UNIX_TIMESTAMP(create_time) END) AS avg_time_diff", //派单时效 + // 使用 IFNULL 确保结果为 null 时返回 0 + "IFNULL(COUNT(CASE WHEN status = 60 THEN 1 END), 0) AS finish_num", //完成数 + "IFNULL(COUNT(CASE WHEN status IN (".$orderValid.") THEN 1 END), 0) AS count_num", //总订单数 (排除取消 和草稿) + "IFNULL(SUM(CASE WHEN status = 60 THEN total END), 0) AS total", //成效额 + "IFNULL(SUM(CASE WHEN status = 60 THEN performance END), 0) AS performance", //业绩 + "IFNULL(SUM(CASE WHEN status = 60 THEN (cost + material_cost) END), 0) AS cost_total", //总成本 + "IFNULL(SUM(CASE WHEN status = 60 THEN (refund_amount + worker_refund_amount) END), 0) AS refund_total", //退款总数 + "IFNULL(COUNT(CASE WHEN refund_amount > 0 OR worker_refund_amount > 0 THEN 1 END), 0) AS refund_count", //退款订单数量 + "IFNULL(AVG(CASE WHEN status > 10 THEN UNIX_TIMESTAMP(dispatch_time) - UNIX_TIMESTAMP(create_time) END), 0) AS avg_time_diff", //派单时效 // "SUM(CASE WHEN status = 60 THEN (field1 + field2) END) AS performance", ]; diff --git a/application/admin/controller/statistics/Worker.php b/application/admin/controller/statistics/Worker.php index 0f732a8..548cf99 100644 --- a/application/admin/controller/statistics/Worker.php +++ b/application/admin/controller/statistics/Worker.php @@ -227,16 +227,17 @@ class Worker extends Backend //"COUNT(CASE WHEN status IN (".$orderValid.") THEN 1 END) AS ing_num", $fields = [ 'worker_id', - "COUNT(CASE WHEN status = 60 THEN 1 END) AS finish_num", //完成数 + // 使用 IFNULL 确保结果为 null 时返回 0 + "IFNULL(COUNT(CASE WHEN status = 60 THEN 1 END), 0) AS finish_num", //完成数 //"COUNT(CASE WHEN status IN (".$orderValid.") THEN 1 END) AS count_num", //总订单数 (排除取消 和草稿) - "SUM(CASE WHEN status = 60 THEN total END) AS total", //成效额 - "SUM(CASE WHEN status = 60 THEN performance END) AS performance", //业绩 - "SUM(CASE WHEN status = 60 THEN cost END) AS cost", //成效额 + "IFNULL(SUM(CASE WHEN status = 60 THEN total END), 0) AS total", //成效额 + "IFNULL(SUM(CASE WHEN status = 60 THEN performance END), 0) AS performance", //业绩 + "IFNULL(SUM(CASE WHEN status = 60 THEN cost END), 0) AS cost", //成效额 - // "SUM(CASE WHEN status = 60 THEN (cost + material_cost) END) AS cost_total", //总成本 + // "SUM(CASE WHEN status = 60 THEN (cost + material_cost) END) AS cost_total", //总成本 - "SUM(CASE WHEN status = 60 THEN (refund_amount + worker_refund_amount) END) AS refund_total", //退款总数 - "COUNT(CASE WHEN refund_amount > 0 OR worker_refund_amount > 0 THEN 1 END) AS refund_count", //退款订单数量 + "IFNULL(SUM(CASE WHEN status = 60 THEN (refund_amount + worker_refund_amount) END), 0) AS refund_total", //退款总数 + "IFNULL(COUNT(CASE WHEN refund_amount > 0 OR worker_refund_amount > 0 THEN 1 END), 0) AS refund_count", //退款订单数量 //"AVG(CASE WHEN status > 10 THEN UNIX_TIMESTAMP(dispatch_time) - UNIX_TIMESTAMP(create_time) END) AS avg_time_diff", //派单时效 // "SUM(CASE WHEN status = 60 THEN (field1 + field2) END) AS performance", ];