zss
2023-08-28 4d6e8cc8d1f41b2b433b8368102fb5387dcd6a3b
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?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.yuanchu.limslaboratory.mapper.WorkMapper">
    <!--责任人项目数统计-->
    <select id="dutyMater" resultType="java.util.Map">
        select n.name, unfinish, finsh
        from (select distinct user.name, count(inspection_product.id) unfinish
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_pro_id = user.id
              where inspection_product.state = 1
                and test_state is null
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from lims_laboratory.inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) n,
             (select distinct user.name, count(inspection_product.id) finsh
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_pro_id = user.id
              where inspection_product.state = 1
                and test_state is not null
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from lims_laboratory.inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) y
        where n.name = y.name
    </select>
 
    <!--执行人项目数统计-->
    <select id="executeMater" resultType="java.util.Map">
        select n.name, unfinsh, finsh
        from (select distinct user.name, count(inspection_product.id) unfinsh
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_id = user.id
              where inspection_product.state = 1
                and test_state is null
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from lims_laboratory.inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) n,
             (select distinct user.name, count(inspection_product.id) finsh
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_id = user.id
              where inspection_product.state = 1
                and test_state is not null
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from lims_laboratory.inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) y
        where n.name = y.name
    </select>
 
    <!--责任人执行率-->
    <select id="dutytimely" resultType="java.util.Map">
        select n.name, total, finshByTime / total * 100 timely
        from (select distinct user.name, count(inspection_product.id) total
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_pro_id = user.id
              where inspection_product.state = 1
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from lims_laboratory.inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) n,
             (select distinct user.name, count(inspection_product.id) finshByTime
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user
                                 on inspection_product.user_pro_id = user.id
                       left join lims_laboratory.inspection_material im
                                 on inspection_product.inspection_material_id = im.id
                       left join lims_laboratory.inspection
                                 on im.inspection_id = inspection.id
              where inspection_product.state = 1
                and test_state is not null
                and inspection_product.update_time between start_time and end_time
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) y
        where n.name = y.name
    </select>
 
    <!--执行人及时率-->
    <select id="executetimely" resultType="java.util.Map">
        select n.name, total, finshByTime / total * 100 timely
        from (select distinct user.name, count(inspection_product.id) total
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_id = user.id
              where inspection_product.state = 1
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from lims_laboratory.inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) n,
             (select distinct user.name, count(inspection_product.id) finshByTime
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user
                                 on inspection_product.user_id = user.id
                       left join lims_laboratory.inspection_material im
                                 on inspection_product.inspection_material_id = im.id
                       left join lims_laboratory.inspection
                                 on im.inspection_id = inspection.id
              where inspection_product.state = 1
                and test_state is not null
                and inspection_product.update_time between start_time and end_time
                and inspection_product.inspection_material_id in
                    (select id
                     from lims_laboratory.inspection_material
                     where inspection_material.state = 1
                       and inspection_id in
                           (select id
                            from inspection
                            where inspection.state = 1
                              and type = #{type}
                              and start_time between #{startTime} and #{endTime}))
              group by user.name) y
        where n.name = y.name
    </select>
</mapper>