Пример #1
0
        public IActionResult AddOrUpdate([FromForm] Wms_warehouse model, [FromForm] string id)
        {
            var validator = new WarehouseFluent();
            var results   = validator.Validate(model);
            var success   = results.IsValid;

            if (!success)
            {
                string msg = results.Errors.Aggregate("", (current, item) => (current + item.ErrorMessage + "</br>"));
                return(BootJsonH((PubEnum.Failed.ToInt32(), msg)));
            }
            if (id.IsEmptyZero())
            {
                if (_warehouseServices.IsAny(c => c.WarehouseNo == model.WarehouseNo || c.WarehouseName == model.WarehouseName))
                {
                    return(BootJsonH((false, PubConst.Warehouse1)));
                }
                model.WarehouseId = PubId.SnowflakeId;
                model.CreateBy    = UserDtoCache.UserId;
                bool flag = _warehouseServices.Insert(model);
                return(BootJsonH(flag ? (flag, PubConst.Add1) : (flag, PubConst.Add2)));
            }
            else
            {
                model.WarehouseId  = id.ToInt64();
                model.ModifiedBy   = UserDtoCache.UserId;
                model.ModifiedDate = DateTimeExt.DateTime;
                var flag = _warehouseServices.Update(model);
                return(BootJsonH(flag ? (flag, PubConst.Update1) : (flag, PubConst.Update2)));
            }
        }
Пример #2
0
        private RouteData StockCountCore(
            string StockInventoryId, DateTime StockCountDate, string WarehouseID, OutsideStockCountMaterial[] materials)
        {
            if (materials.Length == 0)
            {
                return(YL.Core.Dto.RouteData.From(PubMessages.E2204_STOCKCOUNT_MATERIAL_ZERO));
            }

            string        warehouseNo = string.IsNullOrWhiteSpace(WarehouseID) ? "A00" : WarehouseID;
            Wms_warehouse warehouse   = WMSApiManager.GetWarehouse(warehouseNo);

            if (warehouse == null)
            {
                return(YL.Core.Dto.RouteData.From(PubMessages.E1026_SUPPLIES_WAREHOUSEID_NOTFOUND, $"warehouseId = {warehouseNo}"));
            }
            long warehouseId          = warehouse.WarehouseId;
            IWMSBaseApiAccessor proxy = WMSApiManager.GetBaseApiAccessor(warehouseId.ToString(), _sqlClient);

            Wms_mestask mesTask = new Wms_mestask()
            {
                MesTaskId        = PubId.SnowflakeId,
                MesTaskType      = MESTaskTypes.StockCount,
                WarehousingId    = StockInventoryId,              //入库单编号
                WarehousingType  = String.Empty,                  //入库类型
                WarehousingTime  = StockCountDate,                //入库时间
                ProductionPlanId = String.Empty,                  //生产令号
                BatchPlanId      = String.Empty,                  //批次号
                WorkAreaName     = String.Empty,                  //作业区
                SuppliesKinds    = materials.Length,              //物料种类
                SuppliesInfoJson = "",                            // jsonSuppliesInfoStr, //物料信息
                WorkStatus       = MESTaskWorkStatus.WaitPlan,    //等待计划
                NotifyStatus     = MESTaskNotifyStatus.Requested, //已接收
                CreateDate       = DateTime.Now
            };
            RouteData result = null;

            try
            {
                result = proxy.StockCount(new OutsideStockCountRequestDto()
                {
                    MesTaskId    = mesTask.MesTaskId,
                    StockCountNo = StockInventoryId,
                    PlanDate     = StockCountDate.ToString(PubConst.Format_Date),
                    MaterialList = materials
                }).GetAwaiter().GetResult();
                if (result == null || !result.IsSccuess)
                {
                    mesTask.WorkStatus = MESTaskWorkStatus.Failed;
                    mesTask.Remark     = result.Message;
                }
            }
            catch (Exception ex)
            {
                mesTask.WorkStatus = MESTaskWorkStatus.Failed;
                mesTask.Remark     = ex.Message;
            }

            _mastaskServices.Insert(mesTask);
            return(result);
        }
Пример #3
0
        /// <summary>
        /// 获取操作API
        /// </summary>
        /// <param name="key"></param>
        /// <param name="sqlSugar"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static IWMSOperationApiAccessor GetOperationApiAccessor(string key, ISqlSugarClient sqlSugar, SysUserDto user)
        {
            if (_operationApiInstanceMap.ContainsKey(key))
            {
                return(_operationApiInstanceMap[key]);
            }
            if (!_warehouseMap.ContainsKey(key))
            {
                return(null);
            }
            Wms_warehouse            warehouse = _warehouseMap[key];
            IWMSOperationApiAccessor accessor  = null;

            if (string.IsNullOrWhiteSpace(warehouse.IFAddress))
            {
                accessor = new SelfWMSOperationApiAccessor(warehouse, sqlSugar, user);
            }
            else
            {
                //TODO 操作API外部接口,第三方库暂不使用
                accessor = null; // new WMSApiAccessor(warehouse);
                _operationApiInstanceMap.Add(key, accessor);
            }
            return(accessor);
        }
Пример #4
0
 protected static void CreateStoragerack(SqlSugarClient sqlClient, Wms_warehouse warehouse, Wms_reservoirarea reservoirarea, int row, int columnCount, int floorCount)
 {
     for (int column = 1; column <= columnCount; column++)
     {
         for (int floor = 1; floor <= floorCount; floor++)
         {
             string          code        = warehouse.WarehouseId.ToString().PadLeft(2, '0') + row.ToString().PadLeft(2, '0') + column.ToString().PadLeft(2, '0') + floor.ToString().PadLeft(2, '0');
             string          no          = row.ToString().PadLeft(2, '0') + column.ToString().PadLeft(2, '0') + floor.ToString().PadLeft(2, '0');
             int             id          = Convert.ToInt32(code);
             Wms_storagerack storagerack = new Wms_storagerack()
             {
                 StorageRackId     = id,
                 StorageRackNo     = "KW-" + no,
                 StorageRackName   = "库位" + code,
                 ReservoirAreaId   = reservoirarea.ReservoirAreaId,
                 ReservoirAreaName = reservoirarea.ReservoirAreaName,
                 WarehouseId       = warehouse.WarehouseId,
                 Row          = row,
                 Floor        = floor,
                 Column       = column,
                 Remark       = "",
                 CreateBy     = 1,
                 CreateUser   = "******",
                 CreateDate   = DateTime.Now,
                 ModifiedBy   = 1,
                 ModifiedUser = "******",
                 ModifiedDate = DateTime.Now,
                 IsDel        = DeleteFlag.Normal,
             };
             sqlClient.Insertable(storagerack).ExecuteCommand();
             Wms_inventorybox box = new Wms_inventorybox()
             {
                 InventoryBoxId    = id,
                 InventoryBoxNo    = "LK_LX_" + code,
                 InventoryBoxName  = "料箱-" + code,
                 WarehouseId       = reservoirarea.WarehouseId,
                 ReservoirAreaId   = reservoirarea.ReservoirAreaId,
                 ReservoirAreaName = reservoirarea.ReservoirAreaName,
                 StorageRackId     = storagerack.StorageRackId,
                 StorageRackName   = storagerack.StorageRackName,
                 Row          = storagerack.Row,
                 Column       = storagerack.Column,
                 Floor        = storagerack.Floor,
                 Size         = 1,
                 UsedSize     = 0,
                 Remark       = "",
                 IsDel        = DeleteFlag.Normal,
                 Status       = (int)InventoryBoxStatus.InPosition,
                 CreateBy     = 1,
                 CreateUser   = "******",
                 CreateDate   = DateTime.Now,
                 ModifiedBy   = 1,
                 ModifiedUser = "******",
                 ModifiedDate = DateTime.Now
             };
             sqlClient.Insertable(box).ExecuteCommand();
         }
     }
 }
Пример #5
0
        public IActionResult Add(string id)
        {
            var model = new Wms_warehouse();

            if (id.IsEmpty())
            {
                return(View(model));
            }
            else
            {
                model = _warehouseServices.QueryableToEntity(c => c.WarehouseId == SqlFunc.ToInt64(id));
                return(View(model));
            }
        }
Пример #6
0
        protected static void CreateReservoirArea(SqlSugarClient sqlClient, Wms_warehouse warehouse)
        {
            for (int i = 1; i <= 3; i++)
            {
                try
                {
                    Wms_reservoirarea reservoirarea = new Wms_reservoirarea()
                    {
                        ReservoirAreaId   = i,
                        ReservoirAreaNo   = "KQ000" + i,
                        ReservoirAreaName = "库区000" + i,
                        WarehouseId       = warehouse.WarehouseId,
                        Remark            = "",
                        CreateBy          = 1,
                        CreateUser        = "******",
                        CreateDate        = DateTime.Now,
                        ModifiedBy        = 1,
                        ModifiedUser      = "******",
                        ModifiedDate      = DateTime.Now,
                        IsDel             = DeleteFlag.Normal,
                    };
                    sqlClient.Insertable(reservoirarea).ExecuteCommand();

                    if (i == 1)
                    {
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 1, 10, 4);
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 2, 10, 4);
                    }
                    else if (i == 2)
                    {
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 3, 14, 7);
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 4, 14, 7);
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 5, 14, 7);
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 6, 14, 7);
                    }
                    else if (i == 3)
                    {
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 7, 14, 16);
                        CreateStoragerack(sqlClient, warehouse, reservoirarea, 8, 14, 16);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
Пример #7
0
        public WMSBaseApiAccessor(Wms_warehouse warehouse, ISqlSugarClient client, SysUserDto userDto)
        {
            this.Warehouse = warehouse;
            HttpApiConfig config = new HttpApiConfig();

            config.HttpHost = new Uri(warehouse.IFAddress);
            if (!string.IsNullOrWhiteSpace(WMSProxy))
            {
                config.HttpHandler.UseProxy = true;
                config.HttpHandler.Proxy    = new HttpProxy(WMSProxy);
                WebRequest.DefaultWebProxy  = new WebProxy(WMSProxy)
                {
                    BypassProxyOnLocal = false
                };
            }

            _apiProxy     = HttpApi.Create <IWMSApiProxy>(config);
            _selfAccessor = new SelfWMSBaseApiAccessor(warehouse, client, userDto);
        }
Пример #8
0
 public static void Create(SqlSugarClient sqlClient, ILogger logger)
 {
     if (sqlClient.Queryable <Wms_warehouse>().Any())
     {
         logger.Info("无需创建初始仓库数据");
         return;
     }
     logger.Info("开始创建初始仓库数据");
     try
     {
         sqlClient.BeginTran();
         for (int i = 1; i <= 4; i++)
         {
             Wms_warehouse warehouse = new Wms_warehouse()
             {
                 WarehouseId   = i,
                 WarehouseNo   = $"A0{i - 1}",
                 WarehouseName = "仓库000" + i,
                 IFAddress     = "",
                 CreateBy      = 1,
                 CreateDate    = DateTime.Now,
                 ModifiedBy    = 1,
                 ModifiedDate  = DateTime.Now,
                 IsDel         = DeleteFlag.Normal,
                 Remark        = ""
             };
             sqlClient.Insertable(warehouse).ExecuteCommand();
             if (i == 1)
             {
                 CreateReservoirArea(sqlClient, warehouse);
             }
         }
         sqlClient.CommitTran();
         logger.Info("创建初始仓库数据成功");
     }
     catch (Exception ex)
     {
         logger.Error(ex, "创建初始仓库数据失败");
         sqlClient.RollbackTran();
     }
 }
Пример #9
0
        /// <summary>
        /// 获取基本Api
        /// </summary>
        /// <param name="key"></param>
        /// <param name="sqlSugar"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static IWMSBaseApiAccessor GetBaseApiAccessor(string key, ISqlSugarClient sqlSugar, SysUserDto user = null)
        {
            if (_baseApiInstanceMap.ContainsKey(key))
            {
                return(_baseApiInstanceMap[key]);
            }
            if (!_warehouseMap.ContainsKey(key))
            {
                return(null);
            }
            Wms_warehouse       warehouse = _warehouseMap[key];
            IWMSBaseApiAccessor accessor  = null;

            if (string.IsNullOrWhiteSpace(warehouse.IFAddress))
            {
                accessor = new SelfWMSBaseApiAccessor(warehouse, sqlSugar, user);
            }
            else
            {
                accessor = new WMSBaseApiAccessor(warehouse, sqlSugar, user);
                _baseApiInstanceMap.Add(key, accessor);
            }
            return(accessor);
        }
Пример #10
0
        public async Task <string> DetailList(string id, MESTaskTypes mesTaskType)
        {
            long searchMesId = id.ToInt64();

            if (id.IsEmptyZero())
            {
                return("");
            }
            //IWMSBaseApiAccessor[] proxies = WMSApiManager.GetAll(_client);

            if (mesTaskType == MESTaskTypes.StockIn)
            {
                List <Wms_stockin> stockins = await _client.Queryable <Wms_stockin>().Where(x => x.MesTaskId == searchMesId).ToListAsync();

                List <OutsideStockInQueryResult> totalResult = new List <OutsideStockInQueryResult>();
                foreach (Wms_stockin stockin in stockins)
                {
                    IWMSBaseApiAccessor proxy     = WMSApiManager.GetBaseApiAccessor(stockin.WarehouseId.ToString(), _client, this.UserDto);
                    Wms_warehouse       warehouse = proxy.Warehouse;
                    try
                    {
                        RouteData <OutsideStockInQueryResult> result = await proxy.QueryStockIn(stockin.StockInId);

                        result.Data.WarehouseName = warehouse.WarehouseName;
                        totalResult.Add(result.Data);
                    }
                    catch (Exception ex) {
                        this._logger.LogError(ex, $"查询入库信息失败,WarhouseId={stockin.WarehouseId},StockInId={stockin.StockInId}");
                        OutsideStockInQueryResult resultData = new OutsideStockInQueryResult()
                        {
                            WarehouseName   = warehouse.WarehouseName,
                            StockInId       = stockin.StockInId.ToString(),
                            StockInNo       = stockin.StockInNo,
                            StockInTypeName = stockin.StockInTypeName,
                            StockInStatus   = (StockInStatus)stockin.StockInStatus,
                            MesTaskId       = stockin.MesTaskId.ToString(),
                            OrderNo         = stockin.OrderNo,
                            Remark          = "详细信息查询失败,仅显示本地信息"
                        };
                        totalResult.Add(resultData);
                    }
                }
                return(JsonConvert.SerializeObject(Bootstrap.GridData(totalResult, totalResult.Count)));
            }
            else if (mesTaskType == MESTaskTypes.StockOut)
            {
                List <Wms_stockout> stockOuts = await _client.Queryable <Wms_stockout>().Where(x => x.MesTaskId == searchMesId).ToListAsync();

                List <OutsideStockOutQueryResult> totalResult = new List <OutsideStockOutQueryResult>();
                foreach (Wms_stockout stockout in stockOuts)
                {
                    IWMSBaseApiAccessor proxy     = WMSApiManager.GetBaseApiAccessor(stockout.WarehouseId.ToString(), _client, this.UserDto);
                    Wms_warehouse       warehouse = proxy.Warehouse;
                    try
                    {
                        RouteData <OutsideStockOutQueryResult> result = await proxy.QueryStockOut(stockout.StockOutId);

                        result.Data.WarehouseName = warehouse.WarehouseName;
                        totalResult.Add(result.Data);
                    }
                    catch (Exception ex) {
                        this._logger.LogError(ex, $"查询出库信息失败,WarhouseId={stockout.WarehouseId},StockOutId={stockout.StockOutId}");
                        OutsideStockOutQueryResult resultData = new OutsideStockOutQueryResult()
                        {
                            WarehouseName    = warehouse.WarehouseName,
                            StockOutId       = stockout.StockOutId.ToString(),
                            StockOutNo       = stockout.StockOutNo,
                            StockOutTypeName = stockout.StockOutTypeName,
                            StockOutStatus   = (StockOutStatus)stockout.StockOutStatus.Value,
                            BatchNumber      = stockout.BatchNumber,
                            BatchPlanId      = stockout.BatchPlanId,
                            MesTaskId        = stockout.MesTaskId.ToString(),
                            WorkNo           = stockout.WorkNo,
                            WorkAreaName     = stockout.WorkAreaName,
                            WorkStationId    = stockout.WorkStationId,
                            OrderNo          = stockout.OrderNo,
                            Remark           = "详细信息查询失败,仅显示本地信息"
                        };
                        totalResult.Add(resultData);
                    }
                }
                return(Bootstrap.GridData(totalResult, totalResult.Count).JilToJson());
            }
            else
            {
                return("");
            }
        }
Пример #11
0
 public SelfWMSManagementApiAccessor(Wms_warehouse warehouse, SqlSugar.ISqlSugarClient sqlClient, SysUserDto userDto)
 {
     _warehouse = warehouse;
     _sqlClient = sqlClient;
     _userDto   = userDto;
 }
Пример #12
0
        private RouteData CreateWMSStockout(Wms_mestask mesTask, OutsideWarehouseEntryMaterialDto[] suppliesInfoList)
        {
            Dictionary <long, List <Wms_WarehouseEntryMaterialInventoryDto> > map =
                new Dictionary <long, List <Wms_WarehouseEntryMaterialInventoryDto> >();

            foreach (OutsideWarehouseEntryMaterialDto materialDto in suppliesInfoList)
            {
                //Sys_dict typeDict = _sqlClient.Queryable<Sys_dict>()
                //       .First(x => x.DictType == PubDictType.material.ToByte().ToString() && 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_WarehouseEntryMaterialInventoryDto> warehouseMaterialList = null;
                if (map.ContainsKey(warehouseId))
                {
                    warehouseMaterialList = map[warehouseId];
                }
                else
                {
                    warehouseMaterialList = new List <Wms_WarehouseEntryMaterialInventoryDto>();
                    map.Add(warehouseId, warehouseMaterialList);
                }
                warehouseMaterialList.Add(new Wms_WarehouseEntryMaterialInventoryDto()
                {
                    MaterialId          = "-1",
                    SubWarehouseEntryId = materialDto.SubWarehouseEntryId,
                    UniqueIndex         = materialDto.UniqueIndex,
                    MaterialOnlyId      = materialDto.SuppliesOnlyId,
                    MaterialNo          = materialDto.SuppliesId,
                    MaterialName        = materialDto.SuppliesName,
                    MaterialType        = materialDto.SuppliesType,
                    Qty  = materialDto.SuppliesNumber,
                    Unit = materialDto.Unit
                });
            }

            List <RouteData> result = new List <RouteData>();

            foreach (KeyValuePair <long, List <Wms_WarehouseEntryMaterialInventoryDto> > keyValue in map)
            {
                try
                {
                    IWMSBaseApiAccessor       proxy   = WMSApiManager.GetBaseApiAccessor(keyValue.Key.ToString(), _sqlClient);
                    OutsideStockOutRequestDto request = new OutsideStockOutRequestDto()
                    {
                        MesTaskId          = mesTask.MesTaskId,
                        WarehouseEntryId   = mesTask.WarehousingId,
                        WarehouseEntryTime = mesTask.WarehousingTime.ToString(PubConst.Format_DateTime),
                        WarehouseEntryType = mesTask.WarehousingType,
                        WarehouseId        = keyValue.Key,
                        OrderNo            = mesTask.ProductionPlanId,
                        WorkNo             = mesTask.TotalWorkOrder,
                        BatchNumber        = mesTask.BatchNumber,
                        WorkAreaName       = mesTask.WorkAreaName,
                        WorkStationId      = mesTask.WorkStationId,
                        BatchPlanId        = mesTask.BatchPlanId,
                        MaterialList       = keyValue.Value.ToArray(),
                    };
                    _logger.LogInformation("小WMS的StockOut开始", "");
                    RouteData data = proxy.StockOut(request).GetAwaiter().GetResult();
                    _logger.LogInformation("小WMS的StockOut结束", "");
                    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());
        }
        /// <summary>
        /// 通知MES入库完成
        /// </summary>
        /// <param name="stockOutId"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        public static async Task <RouteData> NofityStockIn(this ISqlSugarClient client, Wms_mestask mesTask)
        {
            mesTask.ModifiedDate = DateTime.Now;
            mesTask.WorkStatus   = MESTaskWorkStatus.WorkComplated;
            mesTask.NotifyStatus = MESTaskNotifyStatus.WaitResponse;

            try
            {
                List <Wms_stockin> stockIns = await client.Queryable <Wms_stockin>().Where(x => x.MesTaskId == mesTask.MesTaskId).ToListAsync();

                List <OutsideStockInResponseWarehouse> warehouseList = new List <OutsideStockInResponseWarehouse>();
                foreach (Wms_stockin stockIn in stockIns)
                {
                    OutsideStockInResponseWarehouse warehouse = warehouseList.FirstOrDefault(x => x.WarehouseId == stockIn.WarehouseId.ToString());
                    if (warehouse == null)
                    {
                        Wms_warehouse warehouseData = WMSApiManager.GetWarehouse(stockIn.WarehouseId);
                        warehouse = new OutsideStockInResponseWarehouse()
                        {
                            //WarehouseId = stockIn.WarehouseId.ToString(),
                            WarehouseId           = warehouseData?.WarehouseNo,
                            WarehouseName         = warehouseData?.WarehouseName,
                            WarehousePosition     = "",
                            WarehousingFinishTime = stockIn.ModifiedDate.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        warehouseList.Add(warehouse);
                    }
                    List <Wms_stockindetail> stockInDetails = await client.Queryable <Wms_stockindetail>().Where(x => x.StockInId == stockIn.StockInId).ToListAsync();

                    foreach (Wms_stockindetail stockInDetail in stockInDetails)
                    {
                        OutsideMaterialResult material = new OutsideMaterialResult()
                        {
                            UniqueIndex    = stockInDetail.UniqueIndex,
                            SuppliesId     = stockInDetail.MaterialNo.ToString(),
                            SuppliesName   = stockInDetail.MaterialName,
                            SuppliesNumber = stockInDetail.ActInQty.ToString(),
                            RefreshStock   = stockInDetail.ActInQty.ToString(),
                            ErrorId        = stockInDetail.ErrorId,
                            ErrorInfo      = stockInDetail.ErrorInfo
                        };
                        warehouse.SuppliesInfoList.Add(material);
                        warehouse.SuppliesKinds = warehouse.SuppliesInfoList.Count;
                    }
                }

                OutsideStockInResponse response = new OutsideStockInResponse()
                {
                    WarehousingId              = mesTask.WarehousingId,
                    WarehousingEntryNumber     = warehouseList.Count,
                    WarehousingEntryFinishList = JsonConvert.SerializeObject(warehouseList)
                };

                SelfReservoirAreaManager._logger.Info($"[通知MES入库完成]开始通知MES,param={JsonConvert.SerializeObject(response)}");
                OutsideStockInResponseResult result = await MESApiAccessor.Instance.WarehousingFinish(response);

                SelfReservoirAreaManager._logger.Info($"[通知MES入库完成]通知MES成功,result={JsonConvert.SerializeObject(result)}");
                if (String.IsNullOrWhiteSpace(result.IsNormalExecution))
                {
                    mesTask.NotifyStatus = MESTaskNotifyStatus.Responsed;
                }
                else
                {
                    mesTask.Remark       = $"Error={result.IsNormalExecution}";
                    mesTask.NotifyStatus = MESTaskNotifyStatus.Failed;
                }
            }
            catch (Exception ex)
            {
                mesTask.Remark       = $"InnerError={ex.Message}";
                mesTask.NotifyStatus = MESTaskNotifyStatus.Failed;
                //_logger.LogError(ex, "入库完成通知时发生异常");
                //逻辑继续,寻找其它时机重新通知
                SelfReservoirAreaManager._logger.Error($"[通知MES入库完成]通知MES时发生异常,{ex.ToString()}");
            }
            if (client.Updateable(mesTask).ExecuteCommand() == 0)
            {
                SelfReservoirAreaManager._logger.Error($"[通知MES入库完成]E-0002-更新状态失败");
                return(YL.Core.Dto.RouteData.From(PubMessages.E0002_UPDATE_COUNT_FAIL));
            }

            SelfReservoirAreaManager._logger.Info($"[通知MES入库完成]更新状态成功,NotifyStatus={mesTask.NotifyStatus}");
            if (mesTask.NotifyStatus == MESTaskNotifyStatus.Responsed)
            {
                return(new RouteData());
            }
            else
            {
                return(YL.Core.Dto.RouteData.From(PubMessages.E3001_MES_STOCKIN_NOFITY_FAIL));
            }
        }
Пример #14
0
 public static void Regist(Wms_warehouse warehouse)
 {
     _warehouseMap.Add(warehouse.WarehouseId.ToString(), warehouse);
 }