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
<?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.ruoyi.report.mapper.TestItemDataMapper">
 
    <!-- 分页查询检测项目数据 -->
    <select id="pageTestItemData" resultType="com.ruoyi.report.vo.TestItemDataVo">
        SELECT
            p.id AS productId,
            s.id AS sampleId,
            s.sample_code AS sampleCode,
            s.sample AS sampleName,
            o.production AS productionOrder,
            o.entrust_code AS batchNo,
            p.inspection_item AS itemName,
            p.last_value AS lastValue,
            p.ask AS standardValue,
            p.ins_result AS insResult,
            p.unit AS unit,
            u.name AS insUser,
            o.ins_time AS insTime,
            r.code AS reportCode
        FROM ins_product p
        LEFT JOIN ins_sample s ON p.ins_sample_id = s.id
        LEFT JOIN ins_order o ON s.ins_order_id = o.id
        LEFT JOIN ins_report r ON o.id = r.ins_order_id
        LEFT JOIN ins_product_user pu ON p.id = pu.ins_product_id
        LEFT JOIN user u ON pu.create_user = u.id
        WHERE 1=1
        <if test="dto.productionOrder != null and dto.productionOrder != ''">
            AND o.production LIKE CONCAT('%', #{dto.productionOrder}, '%')
        </if>
        <if test="dto.batchNo != null and dto.batchNo != ''">
            AND o.entrust_code LIKE CONCAT('%', #{dto.batchNo}, '%')
        </if>
        <if test="dto.sampleCode != null and dto.sampleCode != ''">
            AND s.sample_code LIKE CONCAT('%', #{dto.sampleCode}, '%')
        </if>
        <if test="dto.sampleName != null and dto.sampleName != ''">
            AND s.sample LIKE CONCAT('%', #{dto.sampleName}, '%')
        </if>
        <if test="dto.itemName != null and dto.itemName != ''">
            AND p.inspection_item LIKE CONCAT('%', #{dto.itemName}, '%')
        </if>
        <if test="dto.insState != null">
            AND o.ins_state = #{dto.insState}
        </if>
        <if test="dto.startTime != null and dto.startTime != ''">
            AND o.ins_time >= #{dto.startTime}
        </if>
        <if test="dto.endTime != null and dto.endTime != ''">
            AND o.ins_time &lt;= #{dto.endTime}
        </if>
        ORDER BY o.ins_time DESC
    </select>
 
    <!-- 查询检测项目详情 -->
    <select id="getDetail" resultType="com.ruoyi.report.vo.TestItemDataVo">
        SELECT
            p.id AS productId,
            s.id AS sampleId,
            s.sample_code AS sampleCode,
            s.sample AS sampleName,
            o.production AS productionOrder,
            o.entrust_code AS batchNo,
            p.inspection_item AS itemName,
            p.last_value AS lastValue,
            p.ask AS standardValue,
            p.ins_result AS insResult,
            p.unit AS unit,
            u.name AS insUser,
            o.ins_time AS insTime,
            r.code AS reportCode
        FROM ins_product p
        LEFT JOIN ins_sample s ON p.ins_sample_id = s.id
        LEFT JOIN ins_order o ON s.ins_order_id = o.id
        LEFT JOIN ins_report r ON o.id = r.ins_order_id
        LEFT JOIN ins_product_user pu ON p.id = pu.ins_product_id
        LEFT JOIN user u ON pu.create_user = u.id
        WHERE s.id = #{sampleId}
        ORDER BY p.inspection_item ASC
    </select>
 
    <!-- 查询检测项名称列表 -->
    <select id="getItemNames" resultType="java.lang.String">
        SELECT DISTINCT p.inspection_item
        FROM ins_product p
        LEFT JOIN ins_sample s ON p.ins_sample_id = s.id
        LEFT JOIN ins_order o ON s.ins_order_id = o.id
        WHERE 1=1
        <if test="dto.sampleName != null and dto.sampleName != ''">
            AND s.sample LIKE CONCAT('%', #{dto.sampleName}, '%')
        </if>
        <if test="dto.startTime != null and dto.startTime != ''">
            AND o.ins_time >= #{dto.startTime}
        </if>
        <if test="dto.endTime != null and dto.endTime != ''">
            AND o.ins_time &lt;= #{dto.endTime}
        </if>
        ORDER BY p.inspection_item ASC
    </select>
 
    <!-- 根据样品ID列表查询检测数据 -->
    <select id="listBySampleIds" resultType="com.ruoyi.report.vo.TestItemDataVo">
        SELECT
            p.id AS productId,
            s.id AS sampleId,
            s.sample_code AS sampleCode,
            s.sample AS sampleName,
            o.production AS productionOrder,
            o.entrust_code AS batchNo,
            p.inspection_item AS itemName,
            p.last_value AS lastValue,
            p.ask AS standardValue,
            p.ins_result AS insResult,
            p.unit AS unit,
            u.name AS insUser,
            o.ins_time AS insTime,
            r.code AS reportCode
        FROM ins_product p
        LEFT JOIN ins_sample s ON p.ins_sample_id = s.id
        LEFT JOIN ins_order o ON s.ins_order_id = o.id
        LEFT JOIN ins_report r ON o.id = r.ins_order_id
        LEFT JOIN ins_product_user pu ON p.id = pu.ins_product_id
        LEFT JOIN user u ON pu.create_user = u.id
        WHERE s.id IN
        <foreach collection="sampleIds" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
        ORDER BY s.sample_code ASC, p.inspection_item ASC
    </select>
 
</mapper>