chenlu
2024-06-07 2f640b1038fa331954f78ed1f4317212cf5bb34d
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
<?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.example.erp.mapper.sd.OrderProcessDetailMapper">
 
    <insert id="insertOrderProcessDetail" >
        insert into
            order_process_detail(
                order_id,
                order_number,
                technology_number,
                process,
                process_id
            )
        values
        <foreach collection ="processDetailList" item="processDetail" separator =",">
            (
             #{processDetail.orderId},
             #{processDetail.orderNumber},
             #{processDetail.technologyNumber},
             #{processDetail.process},
              #{processDetail.processId}
             )
        </foreach>
 
 
    </insert>
    <update id="updateQuantity">
        update sd.order_process_detail as a
        inner join
        (select
             rwd.completed_quantity,
             rwd.breakage_quantity,
             rw.process_id,
             rwd.order_number,
             rwd.technology_number
              from pp.reporting_work_detail as rwd
            left join pp.reporting_work as rw
                on rwd.reporting_work_id =  rw.reporting_work_id
            where rwd.reporting_work_id =#{reportingWorkId} )  as b
        on a.process_id = b.process_id
        and a.order_number = b.order_number
        and a.technology_number = b.technology_number
 
        <if test="type == 'delete'">
            set a.reporting_work_num_count
                = a.reporting_work_num_count-b.completed_quantity,
 
            a.reporting_work_num
                = a.reporting_work_num-b.completed_quantity,
 
            a.broken_num
                = a.broken_num-b.breakage_quantity
        </if>
 
        <if test="type == 'add'">
            set a.reporting_work_num_count
            = a.reporting_work_num_count+b.completed_quantity,
 
            a.reporting_work_num
            = a.reporting_work_num+b.completed_quantity,
 
            a.broken_num
            = a.broken_num+b.breakage_quantity
        </if>
 
        where a.process = #{process}
 
    </update>
 
    <!--查询筛选后唯一的流程卡号-->
    <select id="filterOrderProcess">
        select id,process,order_number,technology_number
        from order_process_detail
        where order_id = #{orderId}
        group by process
 
    </select>
 
    <select id="filterLastProcess">
        select id,process,order_number,technology_number
        from order_process_detail
        where order_id = #{orderId}
        and order_number = #{orderNumber}
        and technology_number = #{technologyNumber}
        and id &gt; #{id}
        group by process
    </select>
 
 
 
    <select id="getGlassLRow">
        select
             max(a.technology_number) as rowCount,
             RowNum
        from order_process_detail as a
        left join
            (select min((@i:=@i+1)) AS RowNum,c.*
             from sd.order_glass_detail as c,
                  (SELECT @i:=-1) as d
             where order_id = #{orderId}
             GROUP BY order_number
             ) as b
        on b.order_number = a.order_number
        where a.order_id = #{orderId}
        group by a.order_number
 
    </select>
    <update id="insertByReportingWorkDetail">
        update sd.order_process_detail as a
        set
            a.reporting_work_num_count=
                a.reporting_work_num_count+#{reportingWorkDetail.completedQuantity},
            a.reporting_work_num =a.reporting_work_num +#{reportingWorkDetail.completedQuantity},
            a.broken_num =a.broken_num +#{reportingWorkDetail.breakageQuantity}
 
        where
            a.process_id = #{processId}
            and a.order_number= #{reportingWorkDetail.orderNumber}
            and a.technology_number= #{reportingWorkDetail.technologyNumber}
            and a.process=#{thisProcess}
 
    </update>
 
    <select id="filterOrderProcessCollect">
        select a.id,process,order_number,technology_number,a.order_id
        from order_process_detail as a
        left join `order` as b on a.order_id=b.order_id
        where b.create_time BETWEEN #{selectTime1} and #{selectTime2}
        group by process
 
    </select>
 
    <select id="getGlassLRowCollect">
        select
            max(a.technology_number) as rowCount,
            RowNum
        from order_process_detail as a
                 left join
             (select min((@i:=@i+1)) AS RowNum,c.*
              from sd.order_glass_detail as c
                   left join sd.`order` o2 on c.order_id = o2.order_id,
                   (SELECT @i:=-1) as d
              where o2.create_time BETWEEN #{selectTime1} and #{selectTime2}
              GROUP BY order_number
             ) as b
             on b.order_number = a.order_number
        left join sd.`order` o on a.order_id = o.order_id
        where o.create_time BETWEEN #{selectTime1} and #{selectTime2}
        group by a.order_number
    </select>
</mapper>