云
2026-10-25 d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package cn.iocoder.yudao.module.mes.service.wm.warehouse;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.area.MesWmWarehouseAreaImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.area.MesWmWarehouseAreaImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.area.MesWmWarehouseAreaPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.warehouse.vo.area.MesWmWarehouseAreaSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
import jakarta.validation.Valid;
 
import java.util.Collection;
import java.util.List;
import java.util.Map;
 
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
 
/**
 * MES 库位 Service 接口
 */
public interface MesWmWarehouseAreaService {
 
    /**
     * 创建库位
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWarehouseArea(@Valid MesWmWarehouseAreaSaveReqVO createReqVO);
 
    /**
     * 更新库位
     *
     * @param updateReqVO 更新信息
     */
    void updateWarehouseArea(@Valid MesWmWarehouseAreaSaveReqVO updateReqVO);
 
    /**
     * 删除库位
     *
     * @param id 编号
     */
    void deleteWarehouseArea(Long id);
 
    /**
     * 校验库位存在
     *
     * @param id 编号
     * @return 库位
     */
    MesWmWarehouseAreaDO validateWarehouseAreaExists(Long id);
 
    /**
     * 获得库位
     *
     * @param id 编号
     * @return 库位
     */
    MesWmWarehouseAreaDO getWarehouseArea(Long id);
 
    /**
     * 获得库位分页
     *
     * @param pageReqVO 分页参数
     * @return 库位分页
     */
    PageResult<MesWmWarehouseAreaDO> getWarehouseAreaPage(MesWmWarehouseAreaPageReqVO pageReqVO);
 
    /**
     * 按库区获得库位列表
     *
     * @param locationId 库区编号
     * @return 库位列表
     */
    List<MesWmWarehouseAreaDO> getWarehouseAreaList(Long locationId);
 
    /**
     * 按编号集合获得库位列表
     *
     * @param ids 编号集合
     * @return 库位列表
     */
    List<MesWmWarehouseAreaDO> getWarehouseAreaList(Collection<Long> ids);
 
    default Map<Long, MesWmWarehouseAreaDO> getWarehouseAreaMap(Collection<Long> ids) {
        return convertMap(getWarehouseAreaList(ids), MesWmWarehouseAreaDO::getId);
    }
 
    /**
     * 获得指定库区下的库位数量
     *
     * @param locationId 库区编号
     * @return 库位数量
     */
    Long getWarehouseAreaCountByLocationId(Long locationId);
 
    /**
     * 校验仓库、库区、库位的父子关系
     *
     * @param warehouseId 仓库编号
     * @param locationId 库区编号
     * @param areaId 库位编号
     */
    void validateWarehouseAreaExists(Long warehouseId, Long locationId, Long areaId);
 
    /**
     * 批量设置指定库区下所有库位的混放规则
     *
     * @param locationId 库区编号
     * @param allowItemMixing 是否允许物料混放(null 表示不修改)
     * @param allowBatchMixing 是否允许批次混放(null 表示不修改)
     */
    void updateByLocationId(Long locationId, Boolean allowItemMixing, Boolean allowBatchMixing);
 
    /**
     * 按编码获得库位(如果是虚拟线边库位编码且不存在,会自动插入)
     *
     * @param code 编码
     * @return 库位
     */
    MesWmWarehouseAreaDO getWarehouseAreaByCode(String code);
 
    /**
     * 导入库位
     *
     * @param importList 导入列表
     * @param updateSupport 是否支持更新,默认为 false
     * @return 导入结果
     */
    MesWmWarehouseAreaImportRespVO importWarehouseAreaList(List<MesWmWarehouseAreaImportExcelVO> importList, boolean updateSupport);
 
}