From 5f7101c8de0603c876b70735a881caa2d8437130 Mon Sep 17 00:00:00 2001
From: wente <329538422@qq.com>
Date: 星期三, 30 十月 2024 12:12:20 +0800
Subject: [PATCH] 时序图
---
modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml | 180 ++++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 116 insertions(+), 64 deletions(-)
diff --git a/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml b/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml
index fe5ab9c..12b4d14 100644
--- a/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml
@@ -4,72 +4,119 @@
<mapper namespace="com.zt.life.modules.mainPart.baseReliability.dao.ParamDataBasicDao">
<update id="compute">
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,
- 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
- WHEN a.reliab_distrib_type = 1 THEN
- 1 * a.basic_mtbf_operating_ratio / a.basic_mtbf_regulate
- WHEN a.reliab_distrib_type = 2 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
- WHEN a.repairable = 1 and a.reliab_distrib_type = 1 THEN
- 1 * a.basic_mtbf_operating_ratio * a.repair_mttcr / a.basic_mtbf_regulate
- WHEN a.repairable = 1 and a.reliab_distrib_type = 2 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 || b.product_type < 5)
- AND ((a.reliab_distrib_type =1
- AND a.basic_mtbf_regulate > 0
- )
- OR ( a.reliab_distrib_type = 2
- AND a.basic_mtbf_regul_succ_rate > 0
- ))
-
- GROUP BY c.id,c.name
- ) c
- )d set f.basic_mtbf_regulate = d.basic_mtbf_regulate,
- f.repair_mttcr = d.repair_mttcr
+ (
+ 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
+ a.basic_unit_num * a.basic_mtbf_operating_ratio /
+ a.basic_mtbf_regulate_tmp
+ WHEN a.reliab_distrib_type = 3 THEN
+ a.basic_unit_num * 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
+ a.basic_unit_num * a.basic_mtbf_operating_ratio * a.repair_mttcr /
+ a.basic_mtbf_regulate_tmp
+ WHEN a.repairable = 1 and a.reliab_distrib_type = 3 THEN
+ a.basic_unit_num * 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>
+
+ <update id="compute1">
+ 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>
<update id="compute2">
UPDATE param_data a, product_model b
- SET ai = basic_mtbf_regulate / (basic_mtbf_regulate + repair_mttcr)
- where b.ship_id = ${shipId}
+ SET basic_mtbf_regulate = basic_mtbf_regulate_tmp
+ where b.ship_id = ${shipId}
+ and (reliab_distrib_type = 1 or reliab_distrib_type is null)
+ and a.product_id = b.id
+ and a.IS_DELETE = 0
+ and b.IS_DELETE = 0;
+
+ UPDATE param_data a, product_model b
+ SET ai = basic_mtbf_regulate_tmp / (basic_mtbf_regulate_tmp + repair_mttcr)
+ where b.ship_id = ${shipId}
+ and a.product_id = b.id
+ and a.IS_DELETE = 0
+ and b.IS_DELETE = 0;
+
+ UPDATE param_data a,(
+ select pid, case when count(1) > 0 then 1 else 0 end as basic_join_compute
+ from param_data a,
+ product_model b
+ where b.ship_id = ${shipId}
+ and a.product_id = b.id
+ and a.basic_join_compute = 1
+ group by b.pid
+ ) b
+ set a.basic_join_compute = b.basic_join_compute
+ where a.product_id = b.pid;
</update>
<select id="getAI" resultType="com.zt.life.modules.mainPart.basicInfo.model.ParamData">
@@ -79,12 +126,17 @@
b.ai,
b.basic_mtbf_regulate,
b.repair_mttcr,
- b.basic_mtbf_operating_ratio
+ b.basic_mtbf_operating_ratio,
+ b.basic_mtbf_regul_succ_rate,
+ b.basic_runs_num,
+ b.basic_unit_num
FROM product_model a
LEFT JOIN param_data b ON b.product_id = a.id and b.is_delete = 0
where a.is_delete = 0
- and a.ship_id = ${shipId}
- or a.id =${shipId}
+ and a.product_type <> 10
+ and b.basic_join_compute = 1
+ and a.ship_id = ${shipId}
+ or a.id = ${shipId}
ORDER BY a.product_type, a.sort
</select>
--
Gitblit v1.9.1