package cn.iocoder.yudao.module.mes.service.pro.feedback; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; import jakarta.validation.Valid; import java.math.BigDecimal; import java.util.Collection; import java.util.List; /** * MES 生产报工 Service 接口 * * @author 芋道源码 */ public interface MesProFeedbackService { /** * 创建生产报工(草稿) * * @param createReqVO 创建信息 * @return 编号 */ Long createFeedback(@Valid MesProFeedbackSaveReqVO createReqVO); /** * 修改生产报工 * * @param updateReqVO 更新信息 */ void updateFeedback(@Valid MesProFeedbackSaveReqVO updateReqVO); /** * 删除生产报工(仅草稿) * * @param id 编号 */ void deleteFeedback(Long id); /** * 获得生产报工 * * @param id 编号 * @return 生产报工 */ MesProFeedbackDO getFeedback(Long id); /** * 校验生产报工存在 * * @param id 编号 * @return 生产报工 */ MesProFeedbackDO validateFeedbackExists(Long id); /** * 获得生产报工分页 * * @param pageReqVO 分页查询 * @return 生产报工分页 */ PageResult getFeedbackPage(MesProFeedbackPageReqVO pageReqVO); /** * 按任务编号列表批量获得报工记录(用于任务台账聚合在途/已审批报工量) * * @param taskIds 任务编号列表 * @return 报工记录列表 */ List getFeedbackListByTaskIds(Collection taskIds); /** * 按任务编号获得报工记录列表(报工历史,含草稿/审批中/待检验/已完成) * * @param taskId 任务编号 * @return 报工记录列表 */ List getFeedbackListByTaskId(Long taskId); /** * 提交报工(草稿 → 审批中) * * @param id 编号 */ void submitFeedback(Long id); /** * 驳回报工(审批中 → 草稿) * * @param id 编号 */ void rejectFeedback(Long id); /** * 审批通过报工单,执行生产入库流程 * *

整体流程如下: *

    *
  1. 校验报工单状态和数量
  2. *
  3. 生成物料消耗单,扣减线边库物料
  4. *
  5. 根据工序配置(关键工序 & 是否需要检验)分情况处理: *
      *
    • 关键工序 + 需要检验:生成产出单(质量状态=待检验),报工单状态 → 待检验,等待质检完成回调
    • *
    • 关键工序 + 无需检验:生成产出单(按合格/不合格拆行),执行产品入库,更新任务/工单已生产数量,报工单状态 → 已完成
    • *
    • 非关键工序:不生成产出单,不更新任务/工单数量,报工单状态 → 已完成
    • *
    *
  6. *
* * @param id 报工单编号 * @return true=已完成, false=待检验(需等质检回调) */ boolean approveFeedback(Long id); /** * IPQC 完成后回调:完成报工单并更新任务/工单进度 * *

由 IPQC 检验完成时调用,将报工单状态从待检验改为已完成, * 并根据检验结果回写合格/不合格/废品数量,同时更新任务/工单的已生产数量。 * * @param feedbackId 报工记录 ID * @param sourceLineId 来源产出行 ID(用于直接定位待检行) * @param qualifiedQty 合格品数量 * @param unqualifiedQty 不合格品数量 * @param laborScrapQty 工废数量 * @param materialScrapQty 料废数量 * @param otherScrapQty 其他废品数量 */ void updateProFeedbackWhenIpqcFinish(Long feedbackId, Long sourceLineId, BigDecimal qualifiedQty, BigDecimal unqualifiedQty, BigDecimal laborScrapQty, BigDecimal materialScrapQty, BigDecimal otherScrapQty); }