update param_data f,
(
SELECT c.*,
CASE
WHEN WeightedFailure IS NOT NULL
AND WeightedFailure > 0 THEN
1 / WeightedFailure
ELSE 0
END AS basic_mtbf_regulate_tmp,
CASE
WHEN WeightedFailure IS NOT NULL
AND WeightedFailure > 0 THEN
WeightedMTTR / WeightedFailure
ELSE 0
END AS repair_mttcr
FROM (
SELECT c.id,
c.name,
sum(
CASE
WHEN b.product_type < 5 THEN
1 * 1 / basic_mtbf_regulate_tmp
WHEN a.reliab_distrib_type = 1 THEN
1 * a.basic_mtbf_operating_ratio / a.basic_mtbf_regulate_tmp
WHEN a.reliab_distrib_type = 3 THEN
1 * a.basic_mtbf_operating_ratio / a.basic_mtbf_regul_succ_rate
ELSE 0 END
) AS WeightedFailure,
sum(
CASE
WHEN b.product_type < 5 THEN
1 * 1 * a.repair_mttcr / a.basic_mtbf_regulate_tmp
WHEN a.repairable = 1 and a.reliab_distrib_type = 1 THEN
1 * a.basic_mtbf_operating_ratio * a.repair_mttcr /
a.basic_mtbf_regulate_tmp
WHEN a.repairable = 1 and a.reliab_distrib_type = 3 THEN
1 * a.basic_mtbf_operating_ratio * a.repair_mttcr /
a.basic_mtbf_regul_succ_rate
ELSE 0
END
) AS WeightedMttr
FROM param_data a,
product_model b,
product_model c
WHERE 1 = 1
and c.ship_id = ${shipId}
and c.product_type = ${productType}
and c.is_delete = 0
and b.ship_id = ${shipId}
and b.pid = c.id
and b.is_delete = 0
and a.IS_DELETE = 0
and a.product_id = b.id
AND ((b.product_type = 5 AND a.basic_join_compute = 1
and ((
a.reliab_distrib_type = 1
AND a.basic_mtbf_regulate_tmp > 0
)
OR (a.reliab_distrib_type = 3 AND a.basic_mtbf_regul_succ_rate > 0))
)
|| (b.product_type < 5 AND a.basic_mtbf_regulate_tmp > 0))
GROUP BY c.id, c.name
) c
) d
set f.basic_mtbf_regulate_tmp = d.basic_mtbf_regulate_tmp,
f.repair_mttcr = d.repair_mttcr
where f.product_id = d.id;
UPDATE param_data a, product_model b
SET repair_mttcr = 0
where b.ship_id = ${shipId} and repair_mttcr is null;
UPDATE param_data a, product_model b
SET basic_mtbf_regulate_tmp = basic_mtbf_regulate
where b.ship_id = ${shipId};
UPDATE param_data a, product_model b
SET basic_mtbf_regulate_tmp = basic_runs_num /basic_mtbf_regul_succ_rate
where b.ship_id = ${shipId} and reliab_distrib_type = 3
UPDATE param_data a, product_model b
SET basic_mtbf_regulate = basic_mtbf_regulate_tmp
where b.ship_id = ${shipId} and (reliab_distrib_type = 1 or reliab_distrib_type is null);
UPDATE param_data a, product_model b
SET ai = basic_mtbf_regulate_tmp / (basic_mtbf_regulate_tmp + repair_mttcr)
where b.ship_id = ${shipId}