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 }