You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
5.1 KiB
140 lines
5.1 KiB
-- =============================================
|
|
-- 更新 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;
|