package service
|
|
import (
|
"strings"
|
"wms/models"
|
)
|
|
func GetWarehouseByLocationIds(locationIDs []int) (locationHouseMap map[int]*models.Warehouse, houseLocationIds map[int][]int, houseMap map[int]*models.Warehouse, err error) {
|
//查询位置信息
|
locations, err := models.NewLocationSearch().SetIds(locationIDs).FindNotTotal()
|
if err != nil {
|
return
|
}
|
codes := make([]string, 0)
|
codeLocationMap := make(map[string]int, len(locations))
|
for _, loc := range locations {
|
//根据仓库缩写查询仓库
|
code := strings.Split(loc.JointName, "/")[0]
|
codes = append(codes, code)
|
codeLocationMap[code] = loc.Id
|
}
|
|
codeWareHouseMap := make(map[string]*models.Warehouse, len(codes))
|
warehouses, err := models.NewWarehouseSearch().SetCodes(codes).FindNotTotal()
|
if err != nil {
|
return
|
}
|
|
houseMap = make(map[int]*models.Warehouse, len(warehouses))
|
for _, w := range warehouses {
|
codeWareHouseMap[w.Code] = w
|
houseMap[w.Id] = w
|
}
|
|
locationHouseMap = make(map[int]*models.Warehouse)
|
|
for _, w := range warehouses {
|
locationHouseMap[codeLocationMap[w.Code]] = w
|
}
|
|
houseLocationIds = make(map[int][]int)
|
for locationID, w := range locationHouseMap {
|
if houseLocationIds[w.Id] == nil {
|
houseLocationIds[w.Id] = make([]int, 0)
|
}
|
houseLocationIds[w.Id] = append(houseLocationIds[w.Id], locationID)
|
}
|
|
return
|
}
|