XiaoRuby
2023-08-24 e0ef38a77c4bbe67d8a9eab46134ed00fb1e8293
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, 未完成, 已完成
        from (select distinct user.name, count(inspection_product.id) '未完成'
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_pro_id = user.id
              where 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) '已完成'
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_pro_id = user.id
              where 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, 未完成, 已完成
        from (select distinct user.name, count(inspection_product.id) '未完成'
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_id = user.id
              where 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) '已完成'
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_id = user.id
              where 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, 项目总数, 及时完成数 / 项目总数 * 100 '及时率'
        from (select distinct user.name, count(inspection_product.id) '项目总数'
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_pro_id = user.id
              where 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) '及时完成数'
              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, 项目总数, 及时完成数 / 项目总数 * 100 '及时率'
        from (select distinct user.name, count(inspection_product.id) '项目总数'
              from lims_laboratory.inspection_product
                       left join lims_laboratory.user on inspection_product.user_id = user.id
              where 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) '及时完成数'
              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>