昨天 eccad5a129106377a275be4f7cdc58e99e9b95d4
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
package cn.iocoder.yudao.module.mes.service.wm.productproduce;
 
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceDO;
 
import java.math.BigDecimal;
 
/**
 * MES 生产入库单 Service 接口
 */
public interface MesWmProductProduceService {
 
    /**
     * 校验生产入库单是否存在
     *
     * @param id 编号
     * @return 生产入库单
     */
    MesWmProductProduceDO validateProductProduceExists(Long id);
 
    /**
     * 完成生产入库单(草稿 → 已完成)
     *
     * @param id 编号
     */
    void finishProductProduce(Long id);
 
    /**
     * 根据报工记录,自动生成产品产出单(头 + 行 + 明细)
     *
     * @param feedback  报工记录
     * @param checkFlag 是否需要检验(true=待检验,false=按合格/不合格拆分行)
     * @return 生成的产品产出单
     */
    MesWmProductProduceDO generateProductProduce(MesProFeedbackDO feedback, boolean checkFlag);
 
    /**
     * IPQC 检验完成回调:将待检产出拆分为合格/不合格行、生成明细、完成入库
     *
     * <p>调用场景:IPQC 完成时,需要将之前 {@link #generateProductProduce} 生成的
     * 待检产出({@code checkFlag=true})按检验结果拆分行,并执行入库。
     *
     * @param feedbackId      报工记录 ID
     * @param sourceLineId    来源产出行 ID(直接定位待检行)
     * @param qualifiedQty    合格品数量
     * @param unqualifiedQty  不合格品数量
     */
    void splitPendingAndFinishProduce(Long feedbackId, Long sourceLineId,
                                      BigDecimal qualifiedQty, BigDecimal unqualifiedQty);
 
}