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
package cn.iocoder.yudao.module.mes.service.wm.unitconvert;
 
import java.math.BigDecimal;
 
/**
 * MES 物料主辅单位换算 Service 接口
 *
 * 出入库单据行的数量统一按物料主单位记账,本服务负责把「按辅单位/型号单位录入的数量」
 * 换算成主单位数量。换算比率来源优先级:
 * 1. 行上指定的物料型号(型号上配置的单位 + 比率);
 * 2. 物料主数据上的辅单位 1 / 辅单位 2(存量配置);
 * 3. 物料型号中该单位下唯一的比率。
 *
 * @author 超级管理员
 */
public interface MesWmItemUnitConvertService {
 
    /**
     * 解析换算比率:1 个指定单位 = N 个物料主单位
     *
     * @param itemId        物料编号
     * @param itemModelId   物料型号编号(可为空)
     * @param unitMeasureId 录入单位编号(可为空,为空视为主单位)
     * @return 换算比率,主单位或未指定单位时返回 1
     */
    BigDecimal resolveRateToPrimaryUnit(Long itemId, Long itemModelId, Long unitMeasureId);
 
    /**
     * 将录入数量换算为物料主单位数量
     *
     * @param itemId        物料编号
     * @param itemModelId   物料型号编号(可为空)
     * @param unitMeasureId 录入单位编号(可为空,为空视为主单位)
     * @param enterQuantity 录入数量
     * @return 主单位数量;录入单位即主单位时原样返回
     */
    BigDecimal convertToPrimaryUnit(Long itemId, Long itemModelId, Long unitMeasureId, BigDecimal enterQuantity);
 
}