-- ============================================= -- 更新 2026年Q1 的实际成本和实际比例(成本单位:万元) -- ============================================= SET @hourly_cost = (SELECT CAST(remark AS DECIMAL(10,2)) FROM t_dict WHERE dict_code = 'FILECOST' LIMIT 1); UPDATE t_firm_reports fr SET fr.actual_public_welfare_cost = ROUND(IFNULL(( SELECT SUM( CASE WHEN tg.time_type IN ('TIME', 'DICT') THEN IFNULL(sa.service_duration, 0) * IFNULL(@hourly_cost, 0) WHEN tg.time_type = 'AMOUT' THEN IFNULL(sa.workload_score, 0) ELSE 0 END ) / 10000 FROM t_service_applications sa LEFT JOIN t_goods tg ON sa.activity_name_id = tg.goods_id WHERE sa.firm_id = fr.firm_id AND sa.association_audit_status = 3 AND sa.deleted_flag = 0 AND sa.report_time IS NOT NULL AND tg.time_type IS NOT NULL AND MONTH(sa.report_time) IN (1,2,3) AND YEAR(sa.report_time) = 2026 ), 0), 2), fr.actual_cost_income_ratio = CASE WHEN fr.revenue > 0 THEN LEAST(ROUND( IFNULL(( SELECT SUM( CASE WHEN tg.time_type IN ('TIME', 'DICT') THEN IFNULL(sa.service_duration, 0) * IFNULL(@hourly_cost, 0) WHEN tg.time_type = 'AMOUT' THEN IFNULL(sa.workload_score, 0) ELSE 0 END ) / 10000 FROM t_service_applications sa LEFT JOIN t_goods tg ON sa.activity_name_id = tg.goods_id WHERE sa.firm_id = fr.firm_id AND sa.association_audit_status = 3 AND sa.deleted_flag = 0 AND sa.report_time IS NOT NULL AND tg.time_type IS NOT NULL AND MONTH(sa.report_time) IN (1,2,3) AND YEAR(sa.report_time) = 2026 ), 0) / fr.revenue * 100, 2), 25.00) ELSE 0 END, fr.update_time = NOW() WHERE del_flag = 0 AND declare_quarter = 1; -- 验证更新结果 SELECT id, firm_id, revenue AS 收入_万元, public_welfare_cost AS 预填报成本_万元, actual_public_welfare_cost AS 实际成本_万元, cost_income_ratio AS 预填报比例, actual_cost_income_ratio AS 实际比例 FROM t_firm_reports WHERE del_flag = 0 AND declare_quarter = 1 ORDER BY firm_id; --查询成本是否有误-- -- ============================================= -- 查询 2026年Q1 所有记录的实际成本和比例(不更新) -- ============================================= SET @hourly_cost = (SELECT CAST(remark AS DECIMAL(10,2)) FROM t_dict WHERE dict_code = 'FILECOST' LIMIT 1); SELECT fr.id, td.department_name AS 律所名称, fr.declare_year, fr.declare_quarter, fr.revenue AS 收入_万元, fr.public_welfare_cost AS 预填报成本_万元, -- 计算实际成本(万元) ROUND(IFNULL(( SELECT SUM( CASE WHEN tg.time_type IN ('TIME', 'DICT') THEN IFNULL(sa.service_duration, 0) * IFNULL(@hourly_cost, 0) WHEN tg.time_type = 'AMOUT' THEN IFNULL(sa.workload_score, 0) ELSE 0 END ) / 10000 FROM t_service_applications sa LEFT JOIN t_goods tg ON sa.activity_name_id = tg.goods_id WHERE sa.firm_id = fr.firm_id AND sa.association_audit_status = 3 AND sa.deleted_flag = 0 AND sa.report_time IS NOT NULL AND tg.time_type IS NOT NULL AND MONTH(sa.report_time) IN (1,2,3) AND YEAR(sa.report_time) = 2026 ), 0), 2) AS 计算后_实际成本_万元, -- 计算实际比例 CASE WHEN fr.revenue > 0 THEN LEAST(ROUND( IFNULL(( SELECT SUM( CASE WHEN tg.time_type IN ('TIME', 'DICT') THEN IFNULL(sa.service_duration, 0) * IFNULL(@hourly_cost, 0) WHEN tg.time_type = 'AMOUT' THEN IFNULL(sa.workload_score, 0) ELSE 0 END ) / 10000 FROM t_service_applications sa LEFT JOIN t_goods tg ON sa.activity_name_id = tg.goods_id WHERE sa.firm_id = fr.firm_id AND sa.association_audit_status = 3 AND sa.deleted_flag = 0 AND sa.report_time IS NOT NULL AND tg.time_type IS NOT NULL AND MONTH(sa.report_time) IN (1,2,3) AND YEAR(sa.report_time) = 2026 ), 0) / fr.revenue * 100, 2), 25.00) ELSE 0 END AS 计算后_实际比例, -- 当前数据库中的值 fr.actual_public_welfare_cost AS 当前_实际成本_万元, fr.actual_cost_income_ratio AS 当前_实际比例 FROM t_firm_reports fr LEFT JOIN t_department td ON fr.firm_id = td.department_id WHERE fr.del_flag = 0 AND fr.declare_quarter = 1 ORDER BY fr.firm_id;