|  |  | 
 |  |  | <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 | 
 |  |  |         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 )) | 
 |  |  |         ) | 
 |  |  |         || (b.product_type < 5 AND a.basic_mtbf_regulate > 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"> | 
 |  |  | 
 |  |  |                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> | 
 |  |  |  |