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.*; 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 reqVO 提交请求 */ void submitFeedback(@Valid MesProFeedbackSubmitReqVO reqVO); /** * 驳回报工(审批中 → 草稿) * * @param id 编号 */ void rejectFeedback(Long id); /** * 审批通过报工单,执行生产入库流程 * *

整体流程如下: *

    *
  1. 校验报工单状态和数量
  2. *
  3. 生成物料消耗单,扣减线边库物料
  4. *
  5. 生成待检产出,累计生产数量;人工质检完成后回写质量数量并处理入库
  6. *
* * @param reqVO 审批请求(含报工单编号及可选批次属性) * @return true=已完成, false=待检验(需等质检回调) */ boolean approveFeedback(@Valid MesProFeedbackApproveReqVO reqVO); /** * 检查报工审批前是否需要填写批次属性 * * @param feedbackId 报工单编号 * @return 批次需求检查结果 */ MesProFeedbackBatchCheckRespVO checkBatchRequirements(Long feedbackId); /** * 处理 BPM 审批结果 * * @param id 报工单ID * @param bpmResult 审批结果状态 */ void handleBpmProcessResult(Long id, Integer bpmResult,String reason); /** * 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); /** * 快速报工(创建并提交,跳过草稿状态) * * @param reqVO 快速报工请求 * @return 报工结果 */ MesProFeedbackQuickCreateRespVO quickCreateFeedback(@Valid MesProFeedbackQuickCreateReqVO reqVO); /** * 批量报工(批量创建并提交报工单) * * @param reqVO 批量报工请求 * @return 批量报工结果 */ MesProFeedbackBatchCreateRespVO batchCreateFeedback(@Valid MesProFeedbackBatchCreateReqVO reqVO); }