2026-04-16 6ad5c2cdc193cf7bb02884961b7434cd7f607a0d
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
<?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.production.mapper.ProcessRouteItemMapper">
 
    <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProcessRouteItem">
        <id property="id" column="id"/>
        <result property="routeId" column="route_id"/>
        <result property="processId" column="process_id"/>
        <result property="productModelId" column="product_model_id"/>
        <result property="productModelIds" column="product_model_ids"/>
        <result property="tenantId" column="tenant_id"/>
        <result property="createTime" column="create_time"/>
        <result property="updateTime" column="update_time"/>
        <result property="dragSort" column="drag_sort"/>
        <result property="isQuality" column="is_quality"/>
    </resultMap>
 
    <select id="listProcessRouteItemDto" resultType="com.ruoyi.production.dto.ProcessRouteItemDto">
        select pri.*,
               pr.description as route_name,
               pp.name as process_name,
               t.speculative_trading_name,
               t.product_id,
               t.model,
               t.product_name,
               t.unit
        from process_route_item pri
        left join product_process pp on pp.id = pri.process_id
        left join process_route pr on pr.id = pri.route_id
        left join (
            select item.id as item_id,
                   group_concat(
                           distinct pm.speculative_trading_name
                           order by
                               case
                                   when item.product_model_ids is null or item.product_model_ids = '' then pm.id
                                   else find_in_set(pm.id, item.product_model_ids)
                               end
                           separator ','
                   ) as speculative_trading_name,
                   max(pm.product_id) as product_id,
                   group_concat(
                           distinct pm.model
                           order by
                               case
                                   when item.product_model_ids is null or item.product_model_ids = '' then pm.id
                                   else find_in_set(pm.id, item.product_model_ids)
                               end
                           separator ','
                   ) as model,
                   group_concat(
                           distinct p.product_name
                           order by
                               case
                                   when item.product_model_ids is null or item.product_model_ids = '' then pm.id
                                   else find_in_set(pm.id, item.product_model_ids)
                               end
                           separator ','
                   ) as product_name,
                   group_concat(
                           distinct pm.unit
                           order by
                               case
                                   when item.product_model_ids is null or item.product_model_ids = '' then pm.id
                                   else find_in_set(pm.id, item.product_model_ids)
                               end
                           separator ','
                   ) as unit
            from process_route_item item
            left join product_model pm
                   on (find_in_set(pm.id, item.product_model_ids) > 0
                       or ((item.product_model_ids is null or item.product_model_ids = '') and pm.id = item.product_model_id))
            left join product p on p.id = pm.product_id
            group by item.id
        ) t on t.item_id = pri.id
        where pri.route_id = #{c.routeId}
        <if test="c.productModelId != null">
            and exists (
                select 1
                from product_model pm_filter
                where (
                    find_in_set(pm_filter.id, pri.product_model_ids) > 0
                    or ((pri.product_model_ids is null or pri.product_model_ids = '') and pm_filter.id = pri.product_model_id)
                )
                and pm_filter.id = #{c.productModelId}
            )
        </if>
        order by pri.drag_sort
    </select>
</mapper>