jinlin
2024-09-19 79da50ff6a8cabc082472c27ac85724ef664db67
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<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 &lt; 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 &lt; 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 &lt; 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
        where f.product_id = d.id;
    </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}
    </update>
 
    <select id="getAI" resultType="com.zt.life.modules.mainPart.basicInfo.model.ParamData">
        SELECT a.NAME,
               a.id,
               a.pid,
               b.ai,
               b.basic_mtbf_regulate,
               b.repair_mttcr,
               b.basic_mtbf_operating_ratio
        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 a.ship_id = ${shipId}
           or a.id = ${shipId}
        ORDER BY a.product_type, a.sort
    </select>
 
</mapper>