MesWmBatchMapper.xml
2.31 KB
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
<?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="cn.iocoder.yudao.module.mes.dal.mysql.wm.batch.MesWmBatchMapper">
<resultMap id="BatchTraceResult" type="cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO">
<id property="id" column="batch_id"/>
<result property="code" column="batch_code"/>
<result property="workOrderId" column="work_order_id"/>
<result property="itemId" column="item_id"/>
</resultMap>
<!--
向前追溯:从某个原材料批次出发,查找它被哪些工单消耗后,产出了哪些成品批次
SQL 路径:消耗明细(icd) → 消耗单(ic) → 报工记录(pf) → 生产入库单(pp) → 入库行(ppl)
-->
<select id="selectListByForward" parameterType="String" resultMap="BatchTraceResult">
SELECT DISTINCT pf.work_order_id, pf.item_id, ppl.batch_id, ppl.batch_code
FROM mes_wm_item_consume_detail icd
LEFT JOIN mes_wm_item_consume ic ON icd.consume_id = ic.id AND ic.deleted = 0
LEFT JOIN mes_pro_feedback pf ON pf.id = ic.feedback_id AND pf.deleted = 0
LEFT JOIN mes_wm_product_produce pp ON pp.work_order_id = ic.work_order_id AND pp.deleted = 0
LEFT JOIN mes_wm_product_produce_line ppl ON pp.id = ppl.produce_id AND ppl.deleted = 0
WHERE icd.batch_code = #{batchCode}
AND icd.deleted = 0
</select>
<!--
向后追溯:从某个成品批次出发,查找生产它时消耗了哪些原材料批次
SQL 路径:入库明细(ppd) → 入库单(pp) → 消耗单(ic) → 消耗明细(icd)
-->
<select id="selectListByBackward" parameterType="String" resultMap="BatchTraceResult">
SELECT DISTINCT ic.work_order_id, icd.item_id, icd.batch_id, icd.batch_code
FROM mes_wm_product_produce_detail ppd
LEFT JOIN mes_wm_product_produce pp ON ppd.produce_id = pp.id AND pp.deleted = 0
LEFT JOIN mes_wm_item_consume ic ON pp.work_order_id = ic.work_order_id AND ic.deleted = 0
LEFT JOIN mes_wm_item_consume_detail icd ON ic.id = icd.consume_id AND icd.deleted = 0
WHERE ppd.batch_code = #{batchCode}
AND ppd.deleted = 0
AND icd.batch_code IS NOT NULL
</select>
</mapper>