예제 #1
0
        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);
        }
예제 #2
0
        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());
        }