public static string GetPLC(long reservoirAreaId, PLCPosition pos) { if (reservoirAreaId == 1) { if (pos == PLCPosition.Left) { return("1010"); } else if (pos == PLCPosition.Right) { return("1020"); } else { _count1++; return(_count1 % 2 == 1 ? "1010" : "1020"); } } else { if (pos == PLCPosition.Left) { return("5010"); } else if (pos == PLCPosition.Right) { return("6010"); } else { _count2++; return(_count2 % 2 == 1 ? "5010" : "6010"); } } }
public async Task <RouteData> DoInventoryBoxBack(long storeId, StockOperation mode, long inventoryBoxTaskId, InventoryDetailDto[] details, PLCPosition pos) { IWMSOperationApiAccessor wmsAccessor = WMSApiManager.GetOperationApiAccessor(storeId.ToString(), _client, this.UserDto); RouteData result = await wmsAccessor.DoInventoryBoxBack(mode, inventoryBoxTaskId, details, pos); return(result); }
public async Task <RouteData> DoInventoryBoxsOut(long storeId, long[] inventoryBoxIds, PLCPosition pos) { IWMSOperationApiAccessor wmsAccessor = WMSApiManager.GetOperationApiAccessor(storeId.ToString(), _client, this.UserDto); RouteData result = await wmsAccessor.DoInventoryBoxOut(inventoryBoxIds, pos); return(result); }
public async Task <RouteData> DoAutoSelectBox(long storeId, long?reservoirAreaId, int requestSize, PLCPosition pos) { IWMSOperationApiAccessor wmsAccessor = WMSApiManager.GetOperationApiAccessor(storeId.ToString(), _client, this.UserDto); RouteData result = await wmsAccessor.DoAutoSelectBoxOut(reservoirAreaId, requestSize, pos); return(result); }
/// <summary> /// 获取最适合的料箱 /// </summary> /// <param name="client"></param> /// <param name="reservoirAreaId"></param> /// <param name="requestSize"></param> /// <param name="pos"></param> /// <returns></returns> public static async Task <RouteData <Wms_inventorybox> > GetBestInvertoryBox(this ISqlSugarClient client, long?reservoirAreaId, int requestSize, PLCPosition pos) { //查询是否有符合要求的料箱 var query = client.Queryable <Wms_inventorybox, Wms_storagerack>( (ib, s) => new object[] { JoinType.Left, ib.StorageRackId == s.StorageRackId, }) .Where((ib, s) => ib.UsedSize < ib.Size && ib.Size == requestSize && ib.Status == (int)InventoryBoxStatus.InPosition && s.Status == (int)StorageRackStatus.Normal ); if (reservoirAreaId != null) { query = query.Where((ib) => ib.ReservoirAreaId == reservoirAreaId.Value); } Wms_inventorybox inventoryBox = await query .OrderBy((ib) => ib.Column, OrderByType.Desc) .OrderBy((ib) => ib.Floor, OrderByType.Asc) .FirstAsync(); //如果没有符合要求的料想,且是要求多宫格料箱时,尝试选取完整料箱进行分割 if (inventoryBox == null && requestSize > 1) { var query2 = client.Queryable <Wms_inventorybox>() .Where((ib) => ib.Size == 1 && ib.UsedSize == 0 && ib.Status == (int)InventoryBoxStatus.InPosition) .OrderBy((ib) => ib.Column, OrderByType.Desc) .OrderBy((ib) => ib.Floor, OrderByType.Asc); if (reservoirAreaId != null) { query2 = query2.Where((ib) => ib.ReservoirAreaId == reservoirAreaId.Value); } inventoryBox = await query2.FirstAsync(); if (inventoryBox != null) { inventoryBox.Size = requestSize; } if (client.Updateable(inventoryBox).ExecuteCommand() == 0) { return(YL.Core.Dto.RouteData <Wms_inventorybox> .From(PubMessages.E0004_DATABASE_UPDATE_FAIL)); } } if (inventoryBox == null) { return(RouteData <Wms_inventorybox> .From(PubMessages.E1007_INVENTORYBOX_ALLOWUSED)); } return(RouteData <Wms_inventorybox> .From(inventoryBox)); }