gaoluyang
昨天 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd
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
package cn.iocoder.yudao.module.mes.service.pro.worktime;
 
import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.worktime.vo.MesProWorktimeCalcReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.worktime.vo.MesProWorktimeCalcRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackAuxDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
import jakarta.validation.Valid;
 
import java.math.BigDecimal;
import java.util.List;
 
/**
 * MES 标准工时计算 Service 接口
 *
 * <p>标准工时只用于工时考核对比,不参与工资计算;工资始终按实际报工工时/数量计算。
 *
 * @author 超级管理员
 */
public interface MesProWorktimeService {
 
    /**
     * 按生产任务 + 生产长度 + 辅助项次数试算标准工时
     */
    MesProWorktimeCalcRespVO calculate(@Valid MesProWorktimeCalcReqVO reqVO);
 
    /**
     * 计算报工单的标准工时快照,并生成辅助工时明细(未入库)
     *
     * <p>计算条件缺失时不阻断报工,标准工时记 0 并在 stdCalcNote 写明原因。
     *
     * @return 待随报工一起保存的辅助工时明细(已填好 minutes)
     */
    List<MesProFeedbackAuxDO> calculateForFeedback(MesProFeedbackDO feedback,
                                                   List<MesProFeedbackSaveReqVO.AuxValue> auxValues);
 
    /**
     * 生成工时超出阈值的提示文案
     *
     * @return 未超阈值或无法比较时返回 null
     */
    String buildWarnMessage(BigDecimal actualHours, BigDecimal standardHours);
 
}