liyong
2025-02-22 1fb3203f439527ab59728319e425787534f7ba42
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<?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.process.mapper.ProcessOrderMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.process.pojo.ProcessOrder">
        <id column="id" property="id"/>
        <result column="ins_order_id" property="insOrderId"/>
        <result column="rule" property="rule"/>
        <result column="comprehensive_user" property="comprehensiveUser"/>
        <result column="comprehensive_time" property="comprehensiveTime"/>
        <result column="issue_user" property="issueUser"/>
        <result column="issue_time" property="issueTime"/>
    </resultMap>
 
    <resultMap id="ProcessOrderDto" type="com.ruoyi.process.dto.ProcessOrderDto">
        <id column="id" property="id"/>
        <result column="entrust_code" property="entrustCode"/>
        <result column="sample" property="sample"/>
        <result column="create_time" property="createTime"/>
        <result column="sampleType" property="sampleType"/>
        <result column="company" property="company"/>
        <result column="production" property="production"/>
        <result column="productionEn" property="productionEn"/>
        <result column="prepare_user" property="prepareUser"/>
        <result column="sample_num" property="sampleNum"/>
        <result column="ins_state" property="insState"/>
        <result column="is_leave" property="isLeave"/>
        <result column="processing" property="processing"/>
        <result column="phones" property="phone"/>
        <result column="appointed" property="appointed"/>
        <result column="send" property="send"/>
        <result column="rule" property="rule"/>
        <result column="comprehensive_user" property="comprehensiveUser"/>
        <result column="comprehensiveUserName" property="comprehensiveUserName"/>
        <result column="comprehensiveUserUrl" property="comprehensiveUserUrl"/>
        <result column="comprehensive_time" property="comprehensiveTime"/>
        <result column="issue_user" property="issueUser"/>
        <result column="issueUserName" property="issueUserName"/>
        <result column="issueUserUrl" property="issueUserUrl"/>
        <result column="issue_time" property="issueTime"/>
        <collection property="sampleItems" resultMap="SampleItemDto"/>
    </resultMap>
    <resultMap id="SampleItemDto" type="com.ruoyi.process.dto.SampleItemDto">
        <result column="code" property="code"/>
        <result column="model" property="model"/>
        <result column="product" property="product"/>
        <result column="standardMethodList" property="standardMethodList"/>
        <result column="remark" property="remark"/>
    </resultMap>
 
    <select id="pageProcessOrder" resultMap="ProcessOrderDto">
        select * from
        (
        select cpo.*,
        u1.signature_url comprehensiveUserUrl,
        u2.signature_url issueUserUrl,
        u3.phone phones,
        ioo.*
        from cnas_process_order cpo
        left join user u1 on comprehensive_user = u1.id
        left join user u2 on issue_user = u2.id
        left join
        (SELECT distinct
        io.id AS iod,
        io.entrust_code,
        io.sample,
        io.create_time,
        fst.model AS sampleType,
        io.company,
        io.production,
        io.prepare_user,
        sc.sample_num,
        io.ins_state,
        io.is_leave,
        io.processing,
        appointed,
        send
        FROM cnas_process_order cpo
        LEFT JOIN ins_order io ON cpo.ins_order_id = io.id
        LEFT JOIN (
        SELECT ins_order_id, COUNT(*) AS sample_num
        FROM ins_sample is2
        WHERE id in ( SELECT is3.id
        FROM ins_sample is3 JOIN ins_product ip ON is3.id = ip.ins_sample_id where ip.id is not null)
        GROUP BY ins_order_id
        ) sc ON io.id = sc.ins_order_id
        LEFT JOIN (
        SELECT isa.ins_order_id, isa.model
        FROM ins_sample isa
        JOIN ins_product ip ON isa.id = ip.ins_sample_id
        WHERE ip.id IS NOT NULL
        AND ip.state = 1
        AND isa.id = (
        SELECT MIN(is2.id)
        FROM ins_sample is2
        JOIN ins_product ip2 ON is2.id = ip2.ins_sample_id
        WHERE ip2.id IS NOT NULL
        AND ip2.state = 1
        AND isa.ins_order_id = is2.ins_order_id
        )
        ) fst ON io.id = fst.ins_order_id) ioo
        on cpo.ins_order_id = ioo.iod
        left join user u3 on prepare_user = u3.name
        left join (select io2.id,
        is2.sample_code,
        GROUP_CONCAT(DISTINCT ip.inspection_item SEPARATOR ' ') AS product,
        sm.code standardMethodList,
        is2.remark
        from ins_order io2
        left join ins_sample is2 on io2.id = is2.ins_order_id
        left join standard_method sm on standard_method_list_id = sm.id
        left join ins_product ip on is2.id = ip.ins_sample_id
        where ip.id is not null) A on A.id = cpo.ins_order_id
        ) B
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getProcessOrder" resultMap="ProcessOrderDto">
        select cpo.*,
               u1.name          comprehensiveUserName,
               u1.signature_url comprehensiveUserUrl,
               u2.name          issueUserName,
               u2.signature_url issueUserUrl,
               u3.phone         phones,
               u3.signature_url prepareUserUrl,
               ioo.*,
               A.*
        from cnas_process_order cpo
                 left join user u1 on comprehensive_user = u1.id
                 left join user u2 on issue_user = u2.id
                 left join
             (SELECT distinct cpo.id,
                              io.id     AS iod,
                              io.entrust_code,
                              io.sample,
                              io.create_time,
                              fst.model AS sampleType,
                              io.company,
                              io.production,
                              io.prepare_user,
                              sc.sample_num,
                              io.ins_state,
                              io.is_leave,
                              io.processing,
                              appointed,
                              send
              FROM cnas_process_order cpo
                       LEFT JOIN ins_order io ON cpo.ins_order_id = io.id
                       LEFT JOIN (
                  SELECT ins_order_id, COUNT(*) AS sample_num
                  FROM ins_sample is2
                  WHERE id in (SELECT is3.id
                               FROM ins_sample is3
                                        JOIN ins_product ip ON is3.id = ip.ins_sample_id
                               where ip.id is not null)
                  GROUP BY ins_order_id
              ) sc ON io.id = sc.ins_order_id
                       LEFT JOIN (
                  SELECT isa.ins_order_id, isa.model
                  FROM ins_sample isa
                           JOIN ins_product ip ON isa.id = ip.ins_sample_id
                  WHERE ip.id IS NOT NULL
                    AND ip.state = 1
                    AND isa.id = (
                      SELECT MIN(is2.id)
                      FROM ins_sample is2
                               JOIN ins_product ip2 ON is2.id = ip2.ins_sample_id
                      WHERE ip2.id IS NOT NULL
                        AND ip2.state = 1
                        AND isa.ins_order_id = is2.ins_order_id)
              ) fst ON io.id = fst.ins_order_id) ioo on cpo.ins_order_id = ioo.iod
                 left join user u3 on prepare_user = u3.name
                 left join
             (select io2.id,
                     is2.sample_code                                            code,
                     is2.model,
                     GROUP_CONCAT(DISTINCT ip.inspection_item SEPARATOR ' ') AS product,
                     sm.code                                                    standardMethodList,
                     is2.remark
              from ins_order io2
                       left join ins_sample is2 on io2.id = is2.ins_order_id
                       left join standard_method sm on standard_method_list_id = sm.id
                       left join ins_product ip on is2.id = ip.ins_sample_id
                       left join cnas_process_order cpo2 on io2.id = cpo2.ins_order_id
              where ip.id is not null
                and cpo2.id = #{id}) A on A.id = cpo.ins_order_id
        where cpo.id = #{id}
    </select>
    <select id="selectInsOrder" resultType="com.ruoyi.process.pojo.InspectionOrderDetail">
        select is2.sample_code                                            sampleNumber,
               is2.model,
               GROUP_CONCAT(DISTINCT ip.inspection_item SEPARATOR ',') AS testItem,
               sm.code                                                    testStandard,
               is2.remark
        from ins_sample is2
                 left join standard_method sm on standard_method_list_id = sm.id
                 left join ins_product ip on is2.id = ip.ins_sample_id
        where ip.id is not null
          and ins_order_id = #{id}
    </select>
</mapper>