ZengTao
2025-09-11 924ce82faeec6d896fcdc360b279215e84b69fb9
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.mes.pp.mapper.FlowCardMapper">
 
 
    <select id="selectFlowCard" resultType="java.util.Map">
        select fc.order_number,
        concat(round(ogd.child_width), "*", round(ogd.child_height)) as child_width,
        od.quantity,
        round(ogd.total_area, 2) as total_area,
        od.perimeter,
        od.bend_radius,
        concat(IFNULL(od.processing_note,''), IFNULL(od.remarks,'')) as remarks,
        od.other_columns,
        round(ogd.child_width) as width,
        round(ogd.child_height) as height,
        pd.separation
        <if test="technologyNumber != 0">
            ,fc.technology_number
        </if>
        from pp.flow_card as fc
        left join sd.order_glass_detail as ogd
        on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
        fc.technology_number = ogd.technology_number
        left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
        left join sd.product_detail as pd
        on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number
        where fc.process_id = #{processId}
 
        <if test="technologyNumber != 0">
            and position(fc.technology_number in #{technologyNumber})
        </if>
        <if test="technologyNumber != 0">
            group by fc.process_id, fc.order_number, fc.technology_number
        </if>
        <if test="technologyNumber == 0">
            group by fc.process_id, fc.order_number
        </if>
        order by IF(sort != NULL || sort != '', sort, fc.order_number)
 
    </select>
 
    <select id="selectProject" resultType="java.util.Map">
        select o.customer_name,
               o.project,
               (select process
                from sd.order_glass_detail
                where order_id = fc.order_id
                  and order_number = fc.order_number
                  and technology_number = fc.technology_number) as process,
               od.edging_type,
               (select glass_child
                from sd.order_glass_detail
                where order_id = fc.order_id
                  and order_number = fc.order_number
                  and technology_number = fc.technology_number) as glass_child,
               od.product_name,
               o.processing_note,
               fc.process_id,
               SUM(od.quantity)                                 as quantity,
               round(SUM(ogd.total_area), 2)                    as gross_area,
               sum(od.weight)                                   as weight,
               1                                                as technologyNumber,
               concat(fc.process_id, '/', 1)                    as processIdNumber,
               concat('对应我司单号', o.batch)                        AS otherRemarks
        from pp.flow_card as fc
                 left join sd.order_glass_detail as ogd
                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
                              fc.technology_number = ogd.technology_number
                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
                 left join sd.`order` as o on o.order_id = fc.order_id
                 left join sd.product as p on p.id = od.product_id
                 left join (select ogd.order_id,
                                   ogd.order_number,
                                   ogd.technology_number,
                                   ogd.glass_child,
                                   GROUP_CONCAT(glass_child SEPARATOR ' ') AS concatenated_glass_child
                            from sd.order_glass_detail as ogd
                            where ogd.order_id = left (#{processId}
                                , 10)
                              and position(ogd.technology_number in #{technologyNumber})
                            GROUP BY order_id, order_number) as ogdc
                           on ogdc.order_id = ogd.order_id and ogdc.order_number = ogd.order_number and
                              ogdc.technology_number = ogd.technology_number
        where fc.process_id = #{processId}
          and position(fc.technology_number in #{technologyNumber})
        group by fc.process_id
    </select>
 
    <select id="selectLabel" resultType="java.util.Map">
        select fc.process_id,
        o.order_id,
        o.project,
        o.customer_id,
        ogd.child_width as width,
        ogd.child_height as height,
        od.quantity,
        od.order_number as orderNumber,
        fc.technology_number as technologyNumber,
        ogd.glass_child,
        ogd.process,
        c.customer_abbreviation as customer_name,
        ifnull(od.processing_note, '') as processing_note,
        bgt.type_name,
        od.other_columns,
        od.building_number,
        od.bend_radius
        from sd.order as o
        left join sd.order_detail as od on o.order_id = od.order_id
        left join sd.order_glass_detail as ogd
        on ogd.order_id = od.order_id and ogd.order_number = od.order_number
        left join pp.flow_card as fc on o.order_id = fc.order_id and
        od.order_number = fc.order_number and
        fc.technology_number = ogd.technology_number
        left join sd.product pt on pt.id = od.product_id
        left join sd.customer c on c.id = o.customer_id
        left join sd.basic_glass_type bgt on bgt.type_id = pt.type_id
        where fc.process_id in (
        <foreach collection="processId" item="item" separator=",">
        #{item}
    </foreach>
        )
        and fc.technology_number in (
        <foreach collection="technologyNumber" item="items" separator=",">
            #{items}
        </foreach>
        )
        group by fc.process_id, fc.technology_number, od.order_number, od.width, od.height
    </select>
 
 
</mapper>