李林
2023-10-07 658d4927d468c47208fd012d9128b09249c07eff
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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<?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.chinaztt.mes.quality.mapper.ReportMapper">
 
    <resultMap id="qualityReportMap" type="com.chinaztt.mes.quality.entity.Report">
        <id property="id" column="id"/>
        <result property="reportNo" column="report_no"/>
        <result property="reportPerson" column="report_person"/>
        <result property="isSubmit" column="is_submit"/>
        <result property="remark" column="remark"/>
        <result property="reportType" column="report_type"/>
        <result property="checkState" column="check_state"/>
        <result property="samplingRecordId" column="sampling_record_id"/>
    </resultMap>
 
    <resultMap id="submitReportMap" type="com.chinaztt.mes.quality.dto.SubmitReportDTO">
        <result property="reportId" column="report_id"/>
        <result property="ifsOrderNo" column="ifs_order_no"/>
        <result property="ifsReleaseNo" column="ifs_release_no"/>
        <result property="ifsSequenceNo" column="ifs_sequence_no"/>
        <result property="partNo" column="part_no"/>
        <result property="outBatchNo" column="out_batch_no"/>
        <result property="qtyArrived" column="qty_arrived"/>
        <result property="engChgLevel" column="eng_chg_level"/>
        <result property="workstationId" column="workstation_id"/>
        <result property="ifsLocationArrived" column="ifs_location_arrived"/>
        <result property="qualifiedLocation" column="qualified_location"/>
        <result property="unqualifiedLocation" column="unqualified_location"/>
        <result property="detectionLocation" column="detection_location"/>
        <result property="ifsBatchNo" column="ifs_batch_no"/>
        <result property="totalLength" column="total_length"/>
        <result property="scrapArrived" column="scrap_arrived"/>
        <result property="nowDutyDate" column="now_duty_date"/>
        <result property="shiftName" column="shift_name"/>
    </resultMap>
 
    <resultMap id="dockingIfsConditionActiveMap" type="com.chinaztt.mes.quality.dto.DockingIfsConditionActiveDTO">
        <result property="isErp" column="is_erp"/>
        <result property="reportType" column="report_type"/>
        <result property="planningMethod" column="planning_method"/>
        <result property="isLast" column="is_last"/>
        <result property="inspection" column="inspection"/>
        <result property="isReportOperation" column="is_report_operation"/>
        <result property="prodOutIfsSync" column="ifs_sync"/>
    </resultMap>
 
    <resultMap id="ifsOperationScrapDTODataBeanMap" type="com.chinaztt.mes.quality.dto.IfsOperationScrapDTO$DataBean">
        <result property="ORDER_NO" column="ifs_order_no"/>
        <result property="RELEASE_NO" column="ifs_release_no"/>
        <result property="SEQUENCE_NO" column="ifs_sequence_no"/>
        <result property="OPERATION_NO" column="operation_order"/>
        <result property="REPORTED_SCRAP_QTY" column="scrap_qty"/>
        <result property="UNSCRAP_QTY" column="un_scrap_qty"/>
    </resultMap>
 
    <resultMap id="IfsOperationReportDTOBeanMap" type="com.chinaztt.mes.quality.dto.IfsOperationReportDTO$DataBean">
        <result property="ORDER_NO" column="ifs_order_no"/>
        <result property="RELEASE_NO" column="ifs_release_no"/>
        <result property="SEQUENCE_NO" column="ifs_sequence_no"/>
        <result property="REPORTED_QTY" column="product_qty"/>
        <result property="MO_ID" column="mo_id"/>
    </resultMap>
 
 
 
    <select id="getApplyTypeBySN" resultType="java.lang.String">
        SELECT qa.apply_type FROM
        quality_apply_part AS qap
        INNER JOIN
        (SELECT * FROM quality_apply WHERE apply_type IS NOT NULL) AS qa
        ON qap.apply_id = qa.id
        WHERE qap.lot_batch_no = #{sn}
    </select>
 
    <update id="updateApplyPartReportId">
        UPDATE quality_apply_part
        SET report_id = #{reportId}
        WHERE lot_batch_no = #{sn}
    </update>
 
    <update id="updateQualityReportSubmitState">
        UPDATE quality_report
        SET is_submit = #{state}
        WHERE id = #{reportId}
    </update>
 
    <update id="updateProductOutIsSynIfs">
        UPDATE production_product_output
        SET ifs_sync = #{isSynIfs}
        WHERE system_no = #{systemNo}
    </update>
 
    <select id="getManufacturingOrderInfo" resultMap="submitReportMap">
        SELECT qap.report_id,pmo.ifs_order_no,pmo.ifs_release_no,pmo.ifs_sequence_no,qap.part_no,ppo.ifs_batch_no,ppo.out_batch_no,qap.qty_arrived,bp.eng_chg_level,pot.workstation_id,pdr.now_duty_date,bs.name as shift_name,qap.total_length,qap.scrap_arrived FROM
        (SELECT * FROM quality_apply_part WHERE "id" = #{applyPartId}) qap
        LEFT JOIN
        production_product_output ppo ON qap.system_no = ppo.system_no
        LEFT JOIN
        production_product_main ppm ON ppo.product_main_id = ppm."id"
        LEFT JOIN
        production_operation_task pot ON ppm.operation_task_id = pot.id
        LEFT JOIN
        production_operation_task_supply pots ON pot."id" = pots.operation_task_id
        LEFT JOIN
        plan_manufacturing_order pmo ON pots.mo_id = pmo."id"
        LEFT JOIN
        basic_part bp ON qap.part_id = bp."id" --防止零件号重复
        LEFT JOIN
        basic_workstation bw ON pot.workstation_id = bw.id
        left join
        (select max(product_out_id) product_out_id,max(duty_record_id) duty_record_id
        from  production_product_output_staff group by product_out_id, duty_record_id
        ) T ON T.product_out_id = ppo.id
        left join production_duty_record pdr on T.duty_record_id = pdr.id
        left join basic_shift bs on bs."id"=pdr.shift_id
    </select>
 
    <select id="getIfsLocationArrivedByWorkstationId" resultType="java.lang.String">
        SELECT bl.ifs_location FROM
        (SELECT * FROM basic_workstation WHERE id = #{workstationId}) bw
        LEFT JOIN
        (SELECT * FROM basic_workstation_location WHERE location_type = #{locationType}) bwl
        ON bw."id" = bwl.workstation_id
        LEFT JOIN
        basic_location bl ON bwl.location_id = bl."id" LIMIT 1
    </select>
 
    <select id="isProdOutLastOperationBySystemNo" resultType="java.lang.Boolean">
        SELECT COALESCE(pmoro.is_last, FALSE) is_last
        FROM
        (SELECT * FROM production_product_output WHERE system_no = #{systemNo}) ppo
        INNER JOIN production_product_main ppm ON ppo.product_main_id = ppm."id"
        INNER JOIN production_operation_task pot ON ppm.operation_task_id = pot."id"
        INNER JOIN plan_manufacturing_order_routing_operation pmoro
        ON pot.mo_routing_operation_id = pmoro."id"
    </select>
 
    <select id="getDockingIfsConditionActive" resultMap="dockingIfsConditionActiveMap">
        SELECT
        COALESCE(qap.is_erp,FALSE) is_erp, --null值默认为false
        qr.report_type,
        bp.planning_method,
        COALESCE(pmoro.is_last,FALSE) is_last,  --null值默认为false
        COALESCE(pmoro.inspection,FALSE) inspection,  --null值默认为false
        COALESCE(pmo.is_report_operation,FALSE) is_report_operation,  --null值默认为false
        COALESCE(ppo.ifs_sync,FALSE) ifs_sync  --null值默认为false
        FROM
        (SELECT * FROM quality_apply_part WHERE "id" = #{id}) qap  --is_erp 是否是erp报检、part_id 零件id
        LEFT JOIN quality_report qr ON qap.report_id = qr."id" --report_type 检测汇报类型
        LEFT JOIN basic_part bp ON qap.part_id = bp."id" --planning_method 计划方法
        LEFT JOIN production_product_output ppo ON qap.system_no = ppo.system_no --product_main_id 报工单主表
        LEFT JOIN production_product_main ppm ON ppo.product_main_id = ppm."id" --operation_task_id 工单id
        LEFT JOIN production_operation_task_supply pots ON ppm.operation_task_id = pots.operation_task_id --mo_id
        LEFT JOIN plan_manufacturing_order pmo ON pots.mo_id = pmo."id" --is_report_operation IFS车间订单接收时报告工序
        LEFT JOIN production_operation_task pot ON ppm.operation_task_id = pot."id" --mo_routing_operation_id 车间订单工艺工序id
        LEFT JOIN plan_manufacturing_order_routing_operation pmoro ON pot.mo_routing_operation_id = pmoro."id" --is_last 是否是最后一道工序
        LIMIT 1
    </select>
 
    <select id="getIfsOperationScrapDTODataBeanByBatchNo" resultMap="ifsOperationScrapDTODataBeanMap">
        SELECT
        DISTINCT
        ppo.scrap_qty,
        ppo.scrap_qty un_scrap_qty,
        pmo.ifs_order_no,
        pmo.ifs_release_no,
        pmo.ifs_sequence_no,
        pmoro.operation_order * 10 operation_order -- mes工序排序 * 10 传给ifs
        FROM
        (SELECT SUM(scrap_qty) scrap_qty,MAX(product_main_id) product_main_id FROM production_product_output WHERE out_batch_no = #{batchNo} AND scrap_qty > 0 GROUP BY out_batch_no) ppo --对报废数量按批次号进行汇总,并取最大的报工单主表id进行后续关联
        LEFT JOIN
        production_product_main ppm ON ppo.product_main_id = ppm."id"
        LEFT JOIN
        production_operation_task pot ON ppm.operation_task_id = pot."id" -- mo_routing_operation_id
        LEFT JOIN
        production_operation_task_supply pots ON pot."id" = pots.operation_task_id
        LEFT JOIN
        plan_manufacturing_order pmo ON pots.mo_id = pmo."id" -- ifs_order_no、ifs_release_no、ifs_sequence_no
        LEFT JOIN
        plan_manufacturing_order_routing_operation pmoro ON pot.mo_routing_operation_id = pmoro."id" --operation_order
    </select>
 
    <select id="getIfsOperationReportDTOBeanBySystemNo" resultMap="IfsOperationReportDTOBeanMap">
        SELECT
        DISTINCT
        ppo.product_qty,
        pmo.ifs_order_no,
        pmo.ifs_release_no,
        pmo.ifs_sequence_no,
        pmo."id" mo_id
        FROM
        (
        SELECT SUM(product_qty) product_qty,MAX(product_main_id) product_main_id FROM production_product_output WHERE out_batch_no IN
        (SELECT out_batch_no FROM production_product_output WHERE system_no = #{systemNo}) AND product_qty > 0
        ) ppo
        LEFT JOIN
        production_product_main ppm ON ppo.product_main_id = ppm."id"
        LEFT JOIN
        production_operation_task pot ON ppm.operation_task_id = pot."id"
        LEFT JOIN
        production_operation_task_supply pots ON pot."id" = pots.operation_task_id
        LEFT JOIN
        plan_manufacturing_order pmo ON pots.mo_id = pmo."id"
 
        <!--SELECT
        DISTINCT
        ppo.product_qty,
        pmo.ifs_order_no,
        pmo.ifs_release_no,
        pmo.ifs_sequence_no,
        pmo."id" mo_id
        FROM
        (SELECT * FROM production_product_output WHERE system_no = #{systemNo} AND product_qty > 0) ppo
        LEFT JOIN
        production_product_main ppm ON ppo.product_main_id = ppm."id"
        LEFT JOIN
        production_operation_task pot ON ppm.operation_task_id = pot."id"
        LEFT JOIN
        production_operation_task_supply pots ON pot."id" = pots.operation_task_id
        LEFT JOIN
        plan_manufacturing_order pmo ON pots.mo_id = pmo."id"-->
    </select>
 
    <select id="getIfsOperationReportAllOperationNo" resultType="java.lang.Integer">
        SELECT operation_order * 10 operation_order FROM plan_manufacturing_order_routing_operation WHERE mo_id = #{moId} ORDER BY operation_order ASC
    </select>
 
 
</mapper>