public async Task <RouteData <OutsideStockInRequestResult[]> > StockIn(OutsideStockInRequestDto request) { _logger.Info($"[下发入库任务]开始下发,param={JsonConvert.SerializeObject(request)}"); RouteData <OutsideStockInRequestResult[]> result = await _apiProxy.StockIn(request); _logger.Info($"[下发入库任务]收到下发结果,result={JsonConvert.SerializeObject(result)}"); if (!result.IsSccuess) { _logger.Error($"[下发入库任务]判定下发失败"); return(result); } if (result.Data.Length != 1) { _logger.Error($"[下发入库任务]E-2122-下发出库任务返回值不合法"); return(RouteData <OutsideStockInRequestResult[]> .From(PubMessages.E2020_WMS_STOCKIN_RESPONSE_INVAILD)); } request.StockInId = result.Data[0].StockInId; request.StockInNo = result.Data[0].StockInNo; _logger.Info($"[下发入库任务]下发任务回馈StockInId={request.StockInId},StockInNo={request.StockInNo}"); await _selfAccessor.StockIn(request); return(result); }
private RouteData CreateWMSStockin(Wms_mestask mesTask, OutsideWarehousingMaterialDto[] suppliesInfoList) { Dictionary <long, List <Wms_WarehousingMaterialInventoryDto> > map = new Dictionary <long, List <Wms_WarehousingMaterialInventoryDto> >(); Sys_dict[] typeDicts = _sqlClient.Queryable <Sys_dict>() .Where(x => x.DictType == PubDictType.material.ToByte().ToString()) .ToArray(); foreach (OutsideWarehousingMaterialDto materialDto in suppliesInfoList) { //Sys_dict typeDict = typeDicts.FirstOrDefault(x => x.DictName == materialDto.SuppliesType); //if (typeDict == null) //{ // return RouteData<Wms_material>.From(PubMessages.E1001_SUPPLIESTYPE_NOTFOUND, $"SuppliesType = {materialDto.SuppliesType}"); //} //else if (typeDict.WarehouseId == null) //{ // return RouteData<Wms_material>.From(PubMessages.E1002_SUPPLIESTYPE_WAREHOUSEID_NOTSET, $"SuppliesType = {materialDto.SuppliesType}"); //} //long warehouseId = typeDict.WarehouseId.Value; string warehouseNo = string.IsNullOrWhiteSpace(materialDto.WarehouseId) ? "A00" : materialDto.WarehouseId; //MES的WarehouseID对应WMS的WarehouseNo Wms_warehouse warehouse = WMSApiManager.GetWarehouse(warehouseNo); if (warehouse == null) { return(RouteData <Wms_material> .From(PubMessages.E1026_SUPPLIES_WAREHOUSEID_NOTFOUND, $"warehouseId = {warehouseNo}")); } long warehouseId = warehouse.WarehouseId; List <Wms_WarehousingMaterialInventoryDto> warehouseMaterialList = null; if (map.ContainsKey(warehouseId)) { warehouseMaterialList = map[warehouseId]; } else { warehouseMaterialList = new List <Wms_WarehousingMaterialInventoryDto>(); map.Add(warehouseId, warehouseMaterialList); } warehouseMaterialList.Add(new Wms_WarehousingMaterialInventoryDto() { MaterialId = "-1", SubWarehousingId = materialDto.SubWarehouseId, UniqueIndex = materialDto.UniqueIndex, MaterialOnlyId = materialDto.SuppliesOnlyId, MaterialNo = materialDto.SuppliesId, MaterialName = materialDto.SuppliesName, MaterialType = materialDto.SuppliesType, Qty = materialDto.SuppliesNumber, Unit = materialDto.Unit }); } List <RouteData <OutsideStockInRequestResult[]> > result = new List <RouteData <OutsideStockInRequestResult[]> >(); foreach (KeyValuePair <long, List <Wms_WarehousingMaterialInventoryDto> > keyValue in map) { try { IWMSBaseApiAccessor proxy = WMSApiManager.GetBaseApiAccessor(keyValue.Key.ToString(), _sqlClient); OutsideStockInRequestDto request = new OutsideStockInRequestDto() { MesTaskId = mesTask.MesTaskId, WarehousingId = mesTask.WarehousingId, WarehousingTime = mesTask.WarehousingTime.ToString(PubConst.Format_DateTime), WarehousingType = mesTask.WarehousingType, WarehouseId = keyValue.Key, OrderNo = mesTask.ProductionPlanId, WorkAreaName = mesTask.WorkAreaName, BatchPlanId = mesTask.BatchPlanId, MaterialList = keyValue.Value.ToArray(), }; _logger.LogInformation("小WMS的StockIn开始", ""); RouteData <OutsideStockInRequestResult[]> data = proxy.StockIn(request).GetAwaiter().GetResult(); _logger.LogInformation("小WMS的StockIn结束", ""); if (!data.IsSccuess) { string message = $"仓库{keyValue.Key}下发入库任务失败,Code={data.Code},Message={data.Message}"; _logger.LogError(message); result.Add(data); return(new RouteData() { Code = -1, Message = message }); } else { _logger.LogInformation($"仓库{keyValue.Key}下发入库任务成功"); } } catch (Exception ex) { string message = $"仓库{keyValue.Key}下发入库任务发生异常"; _logger.LogError(ex, message); return(new RouteData() { Code = -1, Message = message }); } } return(new RouteData()); }