From 664db98c9e8595ce4dd636a27f480e3a08b81ff5 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 21 二月 2025 11:13:51 +0800
Subject: [PATCH] 新增可忽略的维修时间

---
 modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml |   77 ++++++++++++++++++++++++++++++++------
 1 files changed, 65 insertions(+), 12 deletions(-)

diff --git a/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml b/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml
index 9f9eb6e..a81cd95 100644
--- a/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/baseReliability/ParamDataBasicDao.xml
@@ -26,9 +26,11 @@
                                             WHEN b.product_type &lt; 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
+                                                    a.basic_unit_num * 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
+                                                    a.basic_unit_num * a.basic_mtbf_operating_ratio /
+                                                    a.basic_mtbf_regulate_tmp
                                             ELSE 0 END
                                     ) AS WeightedFailure,
                                 sum(
@@ -36,11 +38,11 @@
                                             WHEN b.product_type &lt; 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_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
-                                                    1 * a.basic_mtbf_operating_ratio * a.repair_mttcr /
-                                                    a.basic_mtbf_regul_succ_rate
+                                                    a.basic_unit_num * a.basic_mtbf_operating_ratio * a.repair_mttcr /
+                                                    a.basic_mtbf_regulate_tmp
                                             ELSE 0
                                             END
                                     ) AS WeightedMttr
@@ -68,31 +70,80 @@
                      ) c
             ) d
         set f.basic_mtbf_regulate_tmp = d.basic_mtbf_regulate_tmp,
-            f.repair_mttcr        = d.repair_mttcr
+            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;
+        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
+        SET basic_mtbf_regulate_tmp = basic_mtbf_regul_succ_rate/(1-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  basic_mtbf_regulate = basic_mtbf_regulate_tmp
-        where b.ship_id = ${shipId} and (reliab_distrib_type = 1 or reliab_distrib_type is null);
+        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
+              and b.product_type = 5
+            group by b.pid
+        ) b
+        set a.basic_join_compute = b.basic_join_compute
+        where a.product_id = b.pid;
+
+        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
+              and b.product_type = 4
+            group by b.pid
+        ) b
+        set a.basic_join_compute = b.basic_join_compute
+        where a.product_id = b.pid;
+
+        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
+              and b.product_type = 3
+            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">
@@ -104,11 +155,13 @@
                b.repair_mttcr,
                b.basic_mtbf_operating_ratio,
                b.basic_mtbf_regul_succ_rate,
-               b.basic_runs_num
+               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.product_type &lt;&gt; 10
+            and b.basic_join_compute = 1
             and a.ship_id = ${shipId}
            or a.id = ${shipId}
         ORDER BY a.product_type, a.sort

--
Gitblit v1.9.1