Fixiaobai
2023-09-05 c9da1b0da1178911e383ddcaebecd1e088fa6004
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
<?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.ReportMapper">
 
    <!--查询检验报告-->
    <select id="selectAllReport" resultType="com.yuanchu.limslaboratory.pojo.vo.ReportVo">
        select r.id,
        im.code materialCode,
        r.code reportCode,
        i.code inspectionCode,
        im.name materialName,
        r.conclusion,
        r.status,
        r.approver approver,
        i.type,
        check_time,
        u.name
        from lims_laboratory.report r
        join lims_laboratory.inspection i on r.inspection_id = i.id
        join lims_laboratory.user u on i.user_id = u.id
        join lims_laboratory.inspection_material im on i.id = im.inspection_id
        <where>
            r.state = 1
            <if test="status != null">
                and r.status = #{status}
            </if>
            <if test="name != null and name != ''">
                and im.code like concat('%', #{name}, '%')
                or i.code like concat('%', #{name}, '%')
                or r.code like concat('%', #{name}, '%')
            </if>
        </where>
        order by r.id
    </select>
 
    <resultMap id="report" type="map">
        <id property="rcode" column="rcode"/>
        <result property="name" column="name"/>
        <result property="num" column="num"/>
        <result property="specifications" column="specifications"/>
        <result property="supplier" column="supplier"/>
        <result property="insCode" column="ins_code"/>
        <result property="type" column="type"/>
        <result property="imCode" column="im_code"/>
        <result property="createTime" column="create_time"/>
        <result property="checkTime" column="check_time"/>
        <result property="inspectionStatus" column="inspection_status"/>
        <result property="notes" column="notes"/>
        <result property="iUserName" column="iUserName"/>
        <collection property="products" resultMap="products" javaType="java.util.List"/>
        <collection property="equipment" resultMap="equipment" javaType="java.util.List"/>
    </resultMap>
 
    <resultMap id="products" type="map">
        <id property="code" column="id"/>
        <result property="ipName" column="ip_name"/>
        <result property="unit" column="unit"/>
        <result property="required" column="required"/>
        <result property="testValue" column="test_value"/>
        <result property="testState" column="test_state"/>
        <result property="ipName" column="ipName"/>
    </resultMap>
    <resultMap id="equipment" type="map">
        <result property="eId" column="eId"/>
        <result property="eName" column="eName"/>
        <result property="eType" column="eType"/>
        <result property="eCode" column="eCode"/>
        <result property="validty" column="validty"/>
    </resultMap>
 
    <select id="getReportContext" resultMap="report">
        SELECT r.`code`                                                                         rcode,
               date_format(r.create_time, '%Y-%m-%d')                                           create_time,
               date_format(r.check_time, '%Y-%m-%d')                                            check_time,
               i.inspection_status,
               im.`name`,
               im.num,
               im.specifications,
               im.supplier,
               im.`code`                                                                        im_code,
               i.`code`                                                                         ins_code,
               i.type,
               ip.id,
               ip.`name`                                                                        ip_name,
               im.form_time                                                                     formTime,
               ip.unit,
               ip.required,
               ip.test_value,
               ip.test_state,
               (SELECT u.`name` FROM `user` u WHERE u.id = i.user_id)                           iUserName,
               im.notes,
               ins.id                                                                           eId,
               ins.equipment_name                                                               eName,
               ins.specifications_models                                                        eType,
               ins.equipment_code                                                               eCode,
               DATE_FORMAT(DATE_ADD(mi.end_date, INTERVAL ins.term_validity MONTH), '%Y-%m-%d') validty
        FROM report r
                 LEFT JOIN inspection i ON r.inspection_id = i.id
                 LEFT JOIN inspection_material im ON im.inspection_id = i.id
                 LEFT JOIN inspection_product ip ON ip.inspection_material_id = im.id
                 LEFT JOIN `user` u ON ip.user_id = u.id
                 LEFT JOIN instrument ins ON ip.instrument_id = ins.id
                 LEFT JOIN metrical_information mi on ins.id = mi.instrument_id
        WHERE ip.state != 0
    AND im.state != 0
    AND ins.state != 0
    AND u.state != 0
    AND i.state != 0
    AND r.`code` = #{code}
        ORDER BY mi.end_date DESC
            LIMIT 1
    </select>
 
</mapper>