精华内容
下载资源
问答
  • 其中数据核心已经在前几个章节中创建,那么在这篇日志里,将演示数据仓储(接口和实现)的实现及封装架构的整个过程。 仓储的作用 仓储的概念请自行搜索了解,我认为它最大的作用就是解耦。没有仓储,就只能直接...

    基于EntityFramework的数据访问层,我计划细分成数据核心、数据接口和数据实现。

    其中数据核心已经在前几个章节中创建,那么在这篇日志里,将演示数据仓储(接口和实现)的实现及封装架构的整个过程。

     

    仓储的作用

    仓储的概念请自行搜索了解,我认为它最大的作用就是解耦。没有仓储,就只能直接使用EF数据库上下文对象来操作数据库,而为了“能使用EF数据库上下文对象来操作数据库(各实体库)”,就必须把实体关联给EF数据库上下文。例如MasterEntityContext中的DbSet属性:

      1 /// <summary>
      2 /// 用户
      3 /// </summary>
      4 public DbSet<SysUser> Users { get; set; }
      5 
      6 /// <summary>
      7 /// 角色
      8 /// </summary>
      9 public DbSet<SysRole> Roles { get; set; }

    只有这样,我们才能在初始化EF数据库上下文对象之后,通过对象来访问相应的实体库,比如登录判定中那句代码:

      1 var db = new MasterEntityContext("matrixkey");
      2 var entity = db.Users.Where(w => w.UserName == model.UserName).FirstOrDefault();

    上述代码中的db.Users,其中Users对象,就是EF数据库上下文中定义的属性。

    在WebUI层直接使用数据访问层的核心对象,这无疑是非常不正确的。在后面的日志中,我们将增加业务逻辑层,作为数据访问层和WebUI层的桥梁。

    但是若没有仓储,即使有了业务逻辑层,仍然只能通过直接使用EF数据库上下文对象的方式来操作数据库,这就需要:

    1、在业务层中暴露EF数据库上下文对象

    2、在业务层中引用EntityFramework

    这依旧很糟糕,有了EF数据库上下文对象,就等于有了一切。不能让业务层拥有一切,也不能让业务层引用EntityFramework。

    于是就需要仓储作为“EF数据库上下文和业务层之间的桥梁”。对于业务层而言,仓储才是真正的数据访问层,业务层根本不知道EF数据库上下文的存在,它不关心数据访问层中究竟是谁提供了数据库访问的能力,无论是EF或是dapper或是源生的ADO.NET,它只关心数据访问层是否执行了它要操作的动作。

    总之,业务层是无关数据驱动的,不能把EF暴露给业务层。仓储的实现,解耦了数据核心层和业务层,并且在下一章节中,还将解耦数据实体层和数据核心层。可见仓储最大的作用就是解耦。

     

    用户仓储的简易实现

    在解决方案下新建类库项目,名称S.Framework.DataAchieve。再创建相应的文件夹进行区分,结构如下图:

    image

    在Master下创建用户仓储类,名称SysUserRepository。上面说过,仓储是桥梁,是为其他需要获取数据的项目层提供代理服务的,那么在仓储类中,需要定义EF数据库上下文对象,以及通过该上下文对象对数据库的各种操作的方法的封装。

    毫无疑问,数据实现层需要引用“数据实体层、数据核心层”。

    这里以“用户登录功能”作为范例,一步一步演示用户仓储中的代码的演变:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 using System.Data.Entity;
      7 using System.Data.Entity.Infrastructure;
      8 
      9 using S.Framework.Entity.Master;
     10 using S.Framework.DataCore.EntityFramework.EntityContexts;
     11 
     12 namespace S.Framework.DataAchieve.EntityFramework.Repositories.Master
     13 {
     14     /// <summary>
     15     /// 用户仓储
     16     /// </summary>
     17     public class SysUserRepository
     18     {
     19 
     20     }
     21 }
     22 
    用户仓储类-0

    定义数据库上下文对象:

      1 /// <summary>
      2 /// 数据库上下文
      3 /// </summary>
      4 private MasterEntityContext Db
      5 {
      6     get;
      7     set;
      8 }
    数据库上下文对象

    数据库上下文对象作为最核心的内容,只允许在当前类中被设置和获取,因此该属性的访问修饰符设置为private。

    定义用户仓储的构造方法,并在方法中初始化数据库上下文对象:

      1 public SysUserRepository()
      2 {
      3     this.Db = new MasterEntityContext("matrixkey");
      4 }

    “用户登录功能”中需要根据用户名获取用户实体,可以在仓储中定义该方法:

      1 /// <summary>
      2 /// 根据用户名获取用户实体
      3 /// </summary>
      4 /// <param name="userName">用户名</param>
      5 /// <returns>用户实体</returns>
      6 public SysUser GetByUserName(string userName)
      7 {
      8     return this.Db.Users.Where(w => w.UserName == userName).FirstOrDefault();
      9 }

    理论上来说,用户仓储已经完成。

     

    用户仓储功能检验结果

    先在WebUI项目中增加对数据实现层(S.Framework.DataAchieve)的引用(对数据核心层的引用继续留着,因为数据库初始化策略的设置要用到核心层,等会会把数据库初始化设置从核心层移出去,那时再移除WebUI层对数据核心层的引用)。

    把“用户登录功能”的代码调整为对用户仓储的调用,将

      1 var db = new MasterEntityContext("matrixkey");
      2 var entity = db.Users.Where(w => w.UserName == model.UserName).FirstOrDefault();

    修改为:

      1 var rep = new SysUserRepository();
      2 var entity = rep.GetByUserName(model.UserName);

    编译运行,用admin和123456进行登录,成功跳转至首页。

     

    解耦数据核心层与WebUI层

    上面说到,由于数据库初始化策略及其设置,都定义在数据核心层中,所以WebUI层需要依赖数据核心层。不能忍,必须解耦,方法是将数据库初始化策略及其设置类,移动到数据实现层中,如下图:

    image

    此时可以把数据核心层中EntityFramework文件夹下的Migrations、Initializes子文件夹删除。然后调整WebUI层中Global的命名空间即可。

    编译,可能会有“找不到命名空间”的报错,原因是旧命名空间不存在了,删除这条using即可。

    编译生成无误,然后移除WebUI层对数据核心层的引用吧。

    由于数据库初始化类调整过,因此需要删除数据库让EF重新创建一次。删除数据库,重新去登录页面尝试登录。

     

    仓储的完善

    对实体的常用操作,可以简单地归纳为“特定查询、添加、更新、删除”,这几类操作是每一个实体仓储都需要包含的,因此可以通过封装来精简代码量。

    建立一个仓储基本类,名称BaseRepository,将通用的部分在基本类中实现,如下:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 using System.Linq.Expressions;
      7 
      8 using S.Framework.Entity;
      9 using S.Framework.DataCore.EntityFramework.EntityContexts;
     10 
     11 namespace S.Framework.DataAchieve.EntityFramework
     12 {
     13     public abstract class BaseRepository<TEntity> where TEntity : class, new()
     14     {
     15         private System.Data.Entity.DbContext Db { get; set; }
     16 
     17         private System.Data.Entity.DbSet<TEntity> DbSet { get { return this.Db.Set<TEntity>(); } }
     18 
     19         public BaseRepository()
     20         {
     21             this.Db = new MasterEntityContext("matrixkey");
     22         }
     23 
     24         /// <summary>
     25         /// 主键查询
     26         /// </summary>
     27         /// <param name="keyValues">键值</param>
     28         /// <returns>实体</returns>
     29         public virtual TEntity Find(IEnumerable<object> keyValues)
     30         {
     31             if (keyValues == null || keyValues.Count() == 0)
     32             {
     33                 throw new ArgumentException("参数有误。");
     34             }
     35             keyValues = keyValues.Where(keyValue => keyValue != null);
     36             return this.DbSet.Find(keyValues);
     37         }
     38 
     39         /// <summary>
     40         /// 主键查询
     41         /// </summary>
     42         /// <param name="keyValues">键值</param>
     43         /// <returns>实体</returns>
     44         public virtual TEntity Find(params object[] keyValues)
     45         {
     46             if (keyValues == null || keyValues.Count() == 0)
     47             {
     48                 throw new ArgumentException("参数有误。");
     49             }
     50 
     51             return this.DbSet.Find(keyValues);
     52         }
     53 
     54         /// <summary>
     55         /// 获取 <see cref="TEntity"/> 的Linq查询器
     56         /// </summary>
     57         /// <returns></returns>
     58         protected IQueryable<TEntity> Query()
     59         {
     60             return this.DbSet.AsQueryable();
     61         }
     62 
     63         /// <summary>
     64         /// 获取 <see cref="TEntity"/> 的Linq查询器
     65         /// </summary>
     66         /// <param name="predicate">查询条件</param>
     67         /// <returns>数据查询器</returns>
     68         protected IQueryable<TEntity> Query(Expression<Func<TEntity, bool>> predicate)
     69         {
     70             return this.DbSet.Where(predicate);
     71         }
     72 
     73         /// <summary>
     74         /// 添加实体
     75         /// </summary>
     76         /// <param name="entity">实体</param>
     77         public void Add(TEntity entity)
     78         {
     79             if (entity == null)
     80             { return; }
     81 
     82             this.DbSet.Add(entity);
     83         }
     84 
     85         /// <summary>
     86         /// 批量添加实体
     87         /// </summary>
     88         /// <param name="entities">实体集合</param>
     89         public void AddRange(IEnumerable<TEntity> entities)
     90         {
     91             if (entities == null || entities.Count() == 0)
     92             { return; }
     93 
     94             System.Data.Entity.DbSet<TEntity> set = this.DbSet;
     95             bool autoDetectChangesEnabled = this.Db.Configuration.AutoDetectChangesEnabled;
     96             this.Db.Configuration.AutoDetectChangesEnabled = false;
     97 
     98             foreach (TEntity entity in entities)
     99             {
    100                 if (entity == null)
    101                 { continue; }
    102 
    103                 set.Add(entity);
    104             }
    105 
    106             this.Db.Configuration.AutoDetectChangesEnabled = autoDetectChangesEnabled;
    107         }
    108 
    109         /// <summary>
    110         /// 更改实体
    111         /// </summary>
    112         /// <param name="entity">实体对象</param>
    113         public void Update(TEntity entity)
    114         {
    115             if (entity == null)
    116             { return; }
    117 
    118             System.Data.Entity.Infrastructure.DbEntityEntry<TEntity> entry = this.Db.Entry(entity);
    119             if (entry.State == System.Data.Entity.EntityState.Detached)
    120             {
    121                 this.DbSet.Attach(entity);
    122             }
    123             entry.State = System.Data.Entity.EntityState.Modified;
    124         }
    125 
    126         /// <summary>
    127         /// 批量更改实体
    128         /// </summary>
    129         /// <param name="entities">实体集合</param>
    130         public void UpdateRange(IEnumerable<TEntity> entities)
    131         {
    132             if (entities == null || entities.Count() == 0)
    133             { return; }
    134 
    135             var set = this.DbSet;
    136             bool autoDetectChangesEnabled = this.Db.Configuration.AutoDetectChangesEnabled;
    137             this.Db.Configuration.AutoDetectChangesEnabled = false;
    138 
    139             foreach (TEntity entity in entities)
    140             {
    141                 if (entity == null)
    142                 { continue; }
    143 
    144                 System.Data.Entity.Infrastructure.DbEntityEntry<TEntity> entry = this.Db.Entry(entity);
    145                 if (entry.State == System.Data.Entity.EntityState.Detached)
    146                 {
    147                     set.Attach(entity);
    148                 }
    149                 entry.State = System.Data.Entity.EntityState.Modified;
    150             }
    151 
    152             this.Db.Configuration.AutoDetectChangesEnabled = autoDetectChangesEnabled;
    153         }
    154 
    155         /// <summary>
    156         /// 主键删除实体
    157         /// </summary>
    158         /// <param name="key">键值</param>
    159         public void Delete(object key)
    160         {
    161             if (key == null || string.IsNullOrWhiteSpace(key.ToString()))
    162             { return; }
    163 
    164             TEntity entity = this.Find(key);
    165 
    166             this.Delete(entity);
    167         }
    168 
    169         /// <summary>
    170         /// 删除实体
    171         /// </summary>
    172         /// <param name="entity">实体</param>
    173         public void Delete(TEntity entity)
    174         {
    175             if (entity == null)
    176             { return; }
    177 
    178             System.Data.Entity.DbSet<TEntity> set = this.DbSet;
    179             System.Data.Entity.Infrastructure.DbEntityEntry<TEntity> entry = this.Db.Entry(entity);
    180             if (entry.State == System.Data.Entity.EntityState.Detached)
    181             {
    182                 set.Attach(entity); set.Remove(entity);
    183             }
    184             else
    185             { entry.State = System.Data.Entity.EntityState.Deleted; }
    186         }
    187 
    188         /// <summary>
    189         /// 批量删除实体
    190         /// </summary>
    191         /// <param name="entities">实体集合</param>
    192         public void DeleteRange(IEnumerable<TEntity> entities)
    193         {
    194             if (entities == null || entities.Count() == 0)
    195             { return; }
    196             var set = this.DbSet;
    197 
    198             bool autoDetectChangesEnabled = this.Db.Configuration.AutoDetectChangesEnabled;
    199             this.Db.Configuration.AutoDetectChangesEnabled = false;
    200 
    201             foreach (TEntity entity in entities)
    202             {
    203                 if (entity == null)
    204                 { continue; }
    205 
    206                 System.Data.Entity.Infrastructure.DbEntityEntry<TEntity> entry = this.Db.Entry(entity);
    207                 if (entry.State == System.Data.Entity.EntityState.Detached)
    208                 {
    209                     set.Attach(entity);
    210                 }
    211                 else
    212                 {
    213                     entry.State = System.Data.Entity.EntityState.Deleted;
    214                 }
    215             }
    216 
    217             this.Db.Configuration.AutoDetectChangesEnabled = autoDetectChangesEnabled;
    218         }
    219     }
    220 }
    221 
    仓储基本类

    注意仓储基本类的修饰符以及类中各属性、方法等成员的访问修饰符,要充分理解abstract、private、protected、public的使用原因。不了解泛型的读者请自行查阅相关资料。

    现在让用户仓储类继承仓储基本类,并删除“在父类中已经实现的成员几相关代码”,用户仓储类将变得非常简单:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 
      7 using S.Framework.Entity.Master;
      8 
      9 namespace S.Framework.DataAchieve.EntityFramework.Repositories.Master
     10 {
     11     /// <summary>
     12     /// 用户仓储
     13     /// </summary>
     14     public class SysUserRepository : BaseRepository<SysUser>
     15     {
     16         /// <summary>
     17         /// 根据用户名获取用户实体
     18         /// </summary>
     19         /// <param name="userName">用户名</param>
     20         /// <returns>用户实体</returns>
     21         public SysUser GetByUserName(string userName)
     22         {
     23             return this.Query(w => w.UserName == userName).FirstOrDefault();
     24         }
     25     }
     26 }
     27 
    新的仓储基本类

    编译运行,再次进行登录,成功跳转至首页。

     

    现在为角色实体创建仓储类试试,简单吧。

    但同时也引出新问题:手动为每个实体创建实体仓储是个重复又机械的体力活,是否可以像“实体配置类”那样也用T4模板来自动生成?

    当然可以。过程和“利用T4自动生成实体配置类”一样,模板不同而已,这里一笔带过,直接贴出“仓储模板”和“执行器”的相关代码:

      1 <#+
      2 // <copyright file="Repository.tt" company="">
      3 //  Copyright © . All Rights Reserved.
      4 // </copyright>
      5 
      6 public class Repository : CSharpTemplate
      7 {
      8     private string _modelName;
      9     private string _prefixName;
     10 
     11     public Repository(string modelName, string prefixName)
     12     {
     13         this._modelName = modelName;
     14         this._prefixName = prefixName;
     15     }
     16 	public override string TransformText()
     17 	{
     18 		base.TransformText();
     19 #>
     20 using System;
     21 using System.Collections.Generic;
     22 using System.Linq;
     23 using System.Text;
     24 using System.Threading.Tasks;
     25 
     26 using S.Framework.Entity.<#= _prefixName #>;
     27 
     28 namespace S.Framework.DataAchieve.EntityFramework.Repositories.<#= _prefixName #>
     29 {
     30 	/// <summary>
     31     /// 实体仓储
     32     /// </summary>
     33     public partial class <#= _modelName #>Repository : BaseRepository<<#= _modelName #>>
     34 	{
     35 
     36 	}
     37 }
     38 <#+
     39         return this.GenerationEnvironment.ToString();
     40 	}
     41 }
     42 #>
     43 
    实体仓储模板
      1 <#@ template language="C#" debug="True" #>
      2 <#@ assembly name="System.Core" #>
      3 <#@ output extension="cs" #>
      4 <#@ import namespace="System.IO" #>
      5 <#@ import namespace="System.Text" #>
      6 <#@ import namespace="System.Reflection" #>
      7 <#@ import namespace="System.Linq" #>
      8 <#@ import namespace="System.Collections.Generic" #>
      9 <#@ include file="T4Toolbox.tt" #>
     10 <#@ include file="Repository.tt" #>
     11 <#
     12 
     13     string coreName = "S.Framework", projectName = coreName + ".DataAchieve", entityProjectName = coreName + ".Entity";
     14     string entityBaseModelName = entityProjectName + ".EntityBaseModel";
     15     string entityBaseModelNameForReflection = entityProjectName + ".EntityModelBaseForReflection";
     16     //当前完整路径
     17     string currentPath = Path.GetDirectoryName(Host.TemplateFile);
     18     //T4文件夹的父级文件夹路径
     19     string projectPath = currentPath.Substring(0, currentPath.IndexOf(@"\T4"));
     20     //解决方案路径
     21     string solutionFolderPath = currentPath.Substring(0, currentPath.IndexOf(@"\" + projectName));
     22 
     23     //加载数据实体.dll
     24     string entityFilePath = string.Concat(solutionFolderPath, ("\\"+ entityProjectName +"\\bin\\Debug\\" + entityProjectName + ".dll"));
     25     byte[] fileData = File.ReadAllBytes(entityFilePath);
     26     Assembly assembly = Assembly.Load(fileData);
     27     //反射出实体类,不知道为啥此处不能成功判定“是否继承EntityModelBaseForReflection类”
     28     //因此只能通过名称比较的方式来判定
     29     IEnumerable<Type> modelTypes = assembly.GetTypes().Where(m => m.IsClass && !m.IsAbstract && (m.BaseType.FullName.Equals(entityBaseModelName) || m.BaseType.FullName.Equals(entityBaseModelNameForReflection)));
     30 
     31     //循环实体类
     32     List<string> prefixNames = new List<string>();
     33     foreach (Type item in modelTypes)
     34     {
     35         //找 实体文件夹 名称
     36         string tempNamespace= item.Namespace, nameSpaceWithoutProjectName = tempNamespace.Substring(entityProjectName.Length);
     37         if(nameSpaceWithoutProjectName.IndexOf(".") != 0 || nameSpaceWithoutProjectName.LastIndexOf(".") > 0)
     38         { continue; }
     39 
     40         //是否直接继承实体基本类
     41         bool purity = item.BaseType.FullName.Equals(entityBaseModelNameForReflection);
     42         //实体所在的数据库标识名称
     43         string targetName = nameSpaceWithoutProjectName.Substring(1);
     44         if(!prefixNames.Any(a => a == targetName)){ prefixNames.Add(targetName); }
     45         //目标文件的路径和名称(嵌套Generate文件夹是为了标识T4生成的类文件)
     46         string fileName= targetName + @"\Generate\" + item.Name + "Repository.cs";
     47 
     48         //仓储文件
     49         string folderName= @"\Repositories\";
     50         Repository repository = new Repository(item.Name, targetName);
     51         repository.Output.Encoding = Encoding.UTF8;
     52         string path = projectPath + folderName + fileName;
     53         repository.RenderToFile(path);
     54     }
     55 #>
     56 
    模板执行器文件

    通过T4模板生成的实体仓储文件,结构如下图:

    image

     

    下一篇日志,将演示数据实体层和数据核心层的解耦。

     

    截止本章节,项目源码下载:点击下载(存在百度云盘中)

    转载于:https://www.cnblogs.com/matrixkey/p/5569228.html

    展开全文
  • 针对物联网仓储环节中货物周转效率低、运营成本高的现状,提出一种新的智能管理方案。车载运算终端通过控制RFID模块采集的地面标签信息进行实时定位,...实验表明,本设计有效节省了货物周转时间,提高了仓储空间利用率。
  • 那么要如何在有限的空间里有效的提高仓库空间利用率呢?1、仓位规划要素分析:为了大幅度的提高仓库的利用率,科学、合理的仓位规划是必不可少的重要环节,也是最大限度利用空间的一种手段。仓位规划主要包括面积...

    0240e781-fe1e-eb11-8da9-e4434bdf6706.png

    随着现今经济的发展,很多企业都面临着租金贵,人工高的问题,如何在有限的空间里面做到存储更多的货物,是现在企业管理者最为关心的问题了。那么要如何在有限的空间里有效的提高仓库空间利用率呢?

    3440e781-fe1e-eb11-8da9-e4434bdf6706.png

    1、仓位规划要素分析:为了大幅度的提高仓库的利用率,科学、合理的仓位规划是必不可少的重要环节,也是最大限度利用空间的一种手段。仓位规划主要包括面积布置、料位设定、物料堆砌方式和物流标志的规划。

    2、立体空间的使用:立体仓库能最大限度的充分利用仓库的垂直空间,使其单位存储面积大于普通的单层仓库,一般是单层仓库的4到7倍。

    3、标准包装的使用:每个存储仓位都有固定的大小,最好使用标准的包装容器,对于货品的标示、维护、点检和运输都非常方便,在每个容器上都标明所储存的物料名称,与条码技术相结合,就是仓储物流和盘点等管理都可以实现系统的自动化。

    5340e781-fe1e-eb11-8da9-e4434bdf6706.png

    此外还可以使用定额法:

    1、仓库可用面积利用率定额

    即规定出用以堆放商品的可用面积与实际面积合理比例,以便限制固定走道和墙距占用的面积。把可以堆放商品的面积充分利用起来。

    其计算公式是:仓库可用面积利用率=可用面积/实际面积*100%

    2、仓库可用面积使用率定额

    即规定出仓库实际储存商品所使用面积与可用面积的合理比例。可以限制可用面积的空闲部分,提高仓库可用面积实际使用率。

    6940e781-fe1e-eb11-8da9-e4434bdf6706.png

    其计算公式是:仓库可用面积使用率=使用面积/可用面积*100%随着现今经济的发展,很多企业都面临着租金贵,人工高的问题,如何在有限的空间里面做到存储更多的货物,是现在企业管理者最为关心的问题了。那么要如何在有限的空间里有效的提高仓库空间利用率呢?

    1、仓位规划要素分析:为了大幅度的提高仓库的利用率,科学、合理的仓位规划是必不可少的重要环节,也是最大限度利用空间的一种手段。仓位规划主要包括面积布置、料位设定、物料堆砌方式和物流标志的规划。

    2、立体空间的使用:立体仓库能最大限度的充分利用仓库的垂直空间,使其单位存储面积大于普通的单层仓库,一般是单层仓库的4到7倍。

    7d40e781-fe1e-eb11-8da9-e4434bdf6706.png

    3、标准包装的使用:每个存储仓位都有固定的大小,最好使用标准的包装容器,对于货品的标示、维护、点检和运输都非常方便,在每个容器上都标明所储存的物料名称,与条码技术相结合,就是仓储物流和盘点等管理都可以实现系统的自动化。

    此外还可以使用定额法:

    1、仓库可用面积利用率定额

    即规定出用以堆放商品的可用面积与实际面积合理比例,以便限制固定走道和墙距占用的面积。把可以堆放商品的面积充分利用起来。

    其计算公式是:仓库可用面积利用率=可用面积/实际面积*100%

    9940e781-fe1e-eb11-8da9-e4434bdf6706.png

    2、仓库可用面积使用率定额

    即规定出仓库实际储存商品所使用面积与可用面积的合理比例。可以限制可用面积的空闲部分,提高仓库可用面积实际使用率。

    其计算公式是:仓库可用面积使用率=使用面积/可用面积*100%

    展开全文
  • 电商仓储

    2017-02-28 10:57:27
    仓储物流 ,就是利用自建或租赁库房、场地,储存、保管、装卸搬运、配送货物。传统的仓储定义是从物资储备的角度给出的。现代“仓储”不是传统意义上的“仓库”、“仓库管理”,而是在经济全球化与供应链一体化背景...
    仓储物流 ,就是利用自建或租赁库房、场地,储存、保管、装卸搬运、配送货物。传统的仓储定义是从物资储备的角度给出的。现代“仓储”不是传统意义上的“仓库”、“仓库管理”,而是在经济全球化与供应链一体化背景下的仓储,是现代物流系统中的仓储。而电商仓储物流就是专门为电商设计,完全贴合电商的需求而开设的仓储物流。下面共总结了28条电商物流仓储的经验,请细看!
    
      1、周转率与动销率区别
      考核KPI和安全存量管理只是控制库存的两种手段,这两个方法对传统企业而言非常实用,因为其粗狂的批量进出模式。但对于以精细化的单个用户为目标的电商而言,永远不够。真正的利器在于以日常数据为导向的周转率和动销率。
      两者区别:比如某SKU利润是100元,一年周转12次,年利润是1200元;年周转4次,年利润是400元。所以周转率是关注某SKU价值高低。具体关注的是“点”的管控。而动销率是关注整个仓储品类动态。属于“面”的管控。销动品种数越多,表示品类管理和策划越成功,仓储利用价值越高。
      2、电商物流数据控制标准
      1、妥投率90%以上。
      2、物流总成本12%内。
      3、商品周转天数低于45天。
      4、发货错误率十万分之二内。
      5、物流及时率85%以上。
      6、客户对物流层面的投诉率低于2%。
      7、商品动销率高于85%、低于98%。
      8、物流整段商品破损率低于千分之三。
      3、电商物流破损率标准
      不能承受20公斤以上外力的挤压和撞击之商品破损率在千分之三内;能承受之商品破损率需控制在万分之二内。
      4、电商物流4大成本
      1、仓储管理成本:包括卸货费、QC费用、条码费、入库检核上架费、储位费、批量退库费、盘点费等;
      2、订单处理成本:包括分拣、配单、打包、指派、交接、RMA费,以及耗材费用;
      3、配送成本:包括干线物流费和分区配送费;
      4、系统使用费、固定资产和装修费的分摊。
      5、物流带来老客户的价值
      1、发展一位新客户的成本是挽留一个老客户的3-10倍。
      2、客户忠诚度下降5%,企业利润下降25%。
      3、向新客户推销产品成功率是15%,向老客户推销产品成功率50%。
      4、如果将每年的客户保持率增加5%,利润将达25%-85%。
      5、60%的新客户来自老客户推荐。
      6、20%的客户带来80%的利润!
      6、电商物流考核KPI标准
      1、权重最大的是及时率。
      内:从订单到达后台开始到包裹快递分流完成限时3小时;
      外:根据配送区域限时。
      2、货损货差是操作层面和管理层面最直观KPI。
      3、物流成本占比客单价因品类不同占比不同,超过18%的,不适合网上零售。
      4、返款及时率、动销率、周转率是物流管理层水平体现。
      7、物流,唯品会的难言之“盈”
      唯品会过去三年仓储物流费用分别为61万美元、580.9万美元、4547.8万美元,占总营收比例21.8%、17.8%、20%;库存周转天数分别114天、56天、77天;仓储物流是唯品会运营开支的大头,大概维持在20%左右,未来能否盈利很大程度要看这项费用能不能降下来。
      8、播种与摘果两种方法
      配货能播种的绝不摘果,能让摘果转化播种的一定要尽力转,因为播种法之效率永远高于摘果法。
      1、播种法适合200SKU内的企业,超200建议摘果。
      2、要想提高效率摘果的同时先想办法播种,播种同时先摘果。
      3、无论播种还是摘果,都要以动销率和周转率为前提,否则都是假效率。
      9、电商自建物流,是魔咒吗
      1、有分仓自建才有意义。有了分仓订单密度可增加3倍。
      2、自建请人是增值的、买车是贬值的。所以租车自建每单成本低于顺丰、高于四通一达、与宅急送持平。该模式目前最理想。
      3、自建的重复购买率增长5.8%。
      4、鱼比熊掌易得。
      10、电商物流是否高效的界线
      这几条线暗藏推动和拉动物流的科学依据。
      1、库位计划随采购计划而计划、非商品到来见缝插针。
      2、商品在等待打包而非打包人员在等待商品配货。这也是测算你人员配置是否合理的一条界线。
      3、商家在跟踪配送订单、而非快递公司在反馈。
      4、商品从没走过回头路。
      5、每季度2人辞职。
      11、电商仓储定位数据标准
      1、根据坪效原理仓库多少平方承受多少单量,峰值3.5倍。
      2、没有引入RFID(射频技术)的仓储人均基本负荷订单是60单,峰值是2倍。
      3、再好的管理也会被灰尘所淹没,管理从灰尘开始一叶知秋,无论老板还是用户。
      4、平均每单人力成本1.66元,仓储成本0.66元,包装成本1.26元。
      12、谁说电商物流只烧钱不赚钱
      亚马逊去年花费约46亿美元建设了17个物流中心,庞大的开支使其利润率下滑2.3%.但亚马逊通过向第三方商家提供仓储和配送服务,并抽取佣金的方式获得了相当可观的利润来源,去年第四季度便已借助该业务实现0.38美元的每股收益。
      靠全球最先进的仓储库房管理系统经过周密计算来实现库存精密化管理,平均每张订单节约3分钟时间,整个运营效率也就提高了3-4倍!亚马逊NB。3年内京东物流丶凡客物流丶好乐买物流等电商自建物流同样会开始盈利。
      13、电商行业平均每单出库速度为23分钟
      从订单分流同步到后台开始到货物打包完成交付到包裹分流区结束。行业平均每单出库速度为23分钟。
      14、电商配送成本标准
      1、每单配送费占客单价6%是标准,否则总物流成本必会高出12%。
      2、配送成本高于6%,快递公司必须更换。
      3、顺丰每单的快递费32元丶宅急送28元丶四通一达18元丶区域快递15元丶分仓周边半径70公里自建物流27元。
      4、配送速度态度 准度决定客户体验良差的75%。
      15、电商仓储价值标准
      1、平面仓6-7毛是标准,立体仓9毛。
      2、仓储离市中心60公里内合理。
      3、商品动销率85%是标准,动销率高低决定存放价值。
      4、立体货架利用了仓储价值的75%,平面货架63%,托盘46%,操作区23%。操作区越多越大仓储价值越低,货架区越大价值越高。
      5、仓储面积只做3年利用预算。
      16、全国货到付款是一件很扯蛋的理想
      中国农村乡镇适合搞货到付款吗?即使邮政能到,这些乡镇农村的邮递员67%会要求用户自提。84%的乡镇农村用户对物流时效和态度进行投诉和差评。导致23%的退货率发生。于是来回物流成本耗去,商品伤痕。
      17、物流中心规模和效率是两回事
      当今电商在谈到物流规模时都会堆出一个吓人的面积数字,其实规模大未必证明你管理卓越运营高效,相反会暴露计划不科学,库存不合理,流程不畅,周转率低等问题,聪明的决策者应关注效率和效益…物流中心盲目追求规模大与女人追求胸大其实是一个道理,那就是虚荣。真正电商物流追求的精髓在于既能满足二八原则下的销量最大化,又能控制八二原则下的库存最小化 。
      18、京东物流财政数据很恐怖
      今日京东招商总监刘斌在某活动中表示京东未来SCM体系和7个核心城市10万平米大仓,将全部自有,自动化达70%。配送:2011年队伍2万,2012年将达4万,未来覆盖全国三级城市,中邮能送的地方,京东就能送到。
      供应链服务全程模块化点餐式服务。如果是这样:2万人的配送队伍,一人4000每月就是8000万,外加社保,油耗,硬损每月这些流动成本超2亿,还不算仓库维护,场地租金和软件成本,加起来又是2亿,按现在600亿的规模估算商品毛利20% 每月也就10亿毛利,40%要支付物流成本。
      19、电商经常被快递吃了冤枉钱
      电商物流往往与快递公司签订合同时都会注重细节.比如:延误赔偿方面:派送延误一天扣该单运费20%;延误2天扣50%,延误3天或者以上全免运费。但是真正财务月结对账时:这些延误扣运费和破损赔偿等处罚就没有跟到位,导致电商无故被快递吃了冤枉钱。
      20、当当、唯品们对落地配公司是罪魁祸首
      其实当当唯品会才是落地配公司的罪魁祸首。一些好好的,本来升值潜能不错的落地配公司,被他们5-8元/票绑架了。这个价格只能为配而配,为送而送。根本没有时间和精力去研究怎样配好,怎样送好,怎样为电商争取面对面交付的附加值。目前他们都是这么干的:
      1、协议不协:刚签的协议下个月可以撕毁重降价。不配合,立刻再扶持一个新的公司。
      2、配送步步进逼:从隔日配到次日配,到当日配,再到限时配,价格上涨幅度以“毛”为单位。
      3、接货越走越近:从发物流到仓,本市库提,到跨省提。
      4、体验要求:上门退丶上门换丶三试取一。
      5、KPI数据考核步步逼迫提升服务。
      6、先保证金后取货。
      7、先预付货款后发货。
      8、配送劳务费经常性延期支付。
      21、中国快递:十岁的年龄,就让他结婚
      在08年某电商对圆通肇庆站点进行收购。当时该站点7万元四处找人买。而在去年有人开价300万也没买到。为什么一个快递站点3年来能升43倍?是因为电商的发展把他们推动了。他们本来只有十岁的年龄,突然间推到二十岁让他结婚。于是只有十岁的身体要承受婚姻的压力。这就是我们目前物流形态:畸形。
      22、标准化电商:你的毛利给了谁
      做标准化商品的电商即使返点高达10%,这10%也不够填补物流的黑洞。该黑洞指:重复税收,高额路罚,昂贵路桥,精细最后一公里。所以标准化商品的出路只有靠规模,规模只有靠烧钱,烧钱只有靠不成功则成仁的决心,不成功则成仁的决心只有靠狠心。B2C大多覆盖的是零售业,零售业利润率较低,减少了中间渠道的电商亦是如此。利润偏低,到底有多低呢?以下一些数据仅供参考1. 大家电的毛利率<=5% 2. 电脑毛利率6%-7% 3. 服装毛利率50% 4. 鞋毛利率20% 。
      23、电商仓储管理水平的标准
      1、成本标准:总仓储配送成本是营销额的18%内。
      2、发货错误率,十万分之五。
      3、配送延误率: 通过T+3的反馈统计,配送延误率控制在万分之二单内。
      4、库存准确率,十万分之五,也就是说在仓库中十万件货只有5件是帐物不符的。
      5、拣货效率,一分钟5件。即一件的拣货时间为12秒。
      24、电商仓储管理的五个方向
      1、以仓位码为中心:通过不走回头路之规则提高货取补放速度;
      2、以条码为主线:至少进行两环节的识别复核;
      3、以准确率为目标,分区“责任田”管制模式,实现日整理整顿和日异动商品的盘存;
      4、环节量化为依据:宁可不断试错也要量出每环节的作业成本,一定要实现多劳多得,不平均主义。
      5、以流水线作业为打包带,实现无间隙,无停顿的劳动力利用率。
      25、库存管理的七大误区
      1、库存管理就是仓储管理;
      2、库存管理是仓库或者采购的事情;
      3、库存控制就是牺牲交货、导致生产线停产;
      4、上了ERP就能够提高及时交货率,降低库存;
      5、VMI(供应商管理库存)是“羊毛出在羊身上”;
      6、追求零库存;
      7、供应链就等于仓库+采购。
      26、电商物流圈“潜规则”—抛货的计算方法
      长*宽*高/6000本来是国际航协规定的,但我们的快递公司却经常用于汽运。信不信由你:不要说除以7000,除以8000他们也愿意干。
      27、代收货款费率是个“黑洞”
      有的快递公司可以开出3-5%的代收费率。意味着:这公开的变相的高利贷是合法的。2%是目前黑市高利贷的息率。想想:电商只是通过快递本该付承的本职收取自己的货款,却接受着比黑市更高息率的压榨。其实:很多区域快递早已是免代收费率的。
      28、电商物流资源很重要
      电商借用第三方配送,配送成本是营业额的8-10%是合理范围;电商用加盟快递做站点(只收件不派件)模式,配送成本占比为6-7%;电商以分仓+干线物流+落地配模式,配送成本同样需要5-7%;而做物流的企业做电商,配送成本最低能达到:3-4%。所以电商配送成本提升的空间还很大,关键在于单量和你所拥有的资源。
    展开全文
  • 基于信息熵的基本原理,利用多样性指数、均衡度、优势度及空间扩展强度对武汉市近10年的城市用地结构的动态演变进行了实例分析,总结出:①武汉市的城市用地信息熵相对较高,且呈下降趋势,信息熵的动态演变反映了...
  • 随着业务规模的不断发展,机...针对这种情况,研究设计出一套全方位感知、安全同步传输、可视化重现的高效智慧仓储管理系统甚为必要。智慧仓储是现代智慧物流的核心技术之一,由高层货架、巷道式堆垛或多穿车、多种...
       随着业务规模的不断发展,机具的种类及数量也在不断增加、出入库的频率与日俱增,仓库管理的要求也复杂多样,传统的人工仓库管理模式和数据采集方式已难以满足当前仓库管理的快速、高效、准确无误的要求,且慢慢成为制约企业发展的一大障碍。针对这种情况,研究设计出一套全方位感知、安全同步传输、可视化重现的高效智慧仓储管理系统甚为必要。智慧仓储是现代智慧物流的核心技术之一,由高层货架、巷道式堆垛或多穿车、多种出入库周边设备、电气控制系统、仓库管理系统组成,能实现货物自动存取和管理,提高仓储空间利用率、工作效率、管理水平。大大降低了物资管理成本,可实现仓库物资的最优管理。
    

    目录
      一、智慧仓储管理系统方案介绍
      二、智慧仓储管理系统应用价值
      三、智慧仓储管理系统方案优点
      四、智慧仓储管理系统方案功能
      五、智慧仓储管理系统组成架构
      六、智慧仓储管理系统技术特点
      七、智慧仓储管理系统发展前景
      正文
    一、智慧仓储管理系统方案介绍
    智慧仓储管理系统是由立体货架、有轨巷道堆垛机、出入库输送系统、信息识别系统、自动控制系统、计算机监控系统、计算机管理系统以及其他辅助设备组成的智能化系统。系统采用一流的集成化物流理念设计,通过先进的控制、总线、通讯和信息技术应用,协调各类设备动作实现自动出入库作业。智慧仓储管理系统采用条码技术,自动识别技术打造,能无缝集成PDA设备、SAP系统、ERP系统、TMS系统等,能保证系统涵盖企业所有的业务功能,信息实时共享。加上系统的灵活性、稳定性和集成性,实现企业从业务到仓储的精益化管理。
    在这里插入图片描述
    二、智慧仓储管理系统应用价值
      智慧仓储管理系统,专门针对企业仓库或配送中心而设计的实时仓储作业管理系统,涵盖订单管理、拣货管理、收货管理、移库管理、补货管理、盘点管理、人员绩效、库位管理、运输管理、供应商管理及报表管理等环节。
      1、可靠传递:把信息安全、准确、高效的上传到系统。
      2、智能控制:对设备进行智能精确控制,实现管理精细化。
      3、数据融合:通过自身的数据处理能力,加工处理更多有意义的信息,增加决策参考和依据。
      4、数据记录:记录仓储管理业务中各项数据,准确预测空仓、爆仓发生的可能性,提前做好应对准备。
      5、集成可靠:系统与第三方软件间的集成,数据采集终端与业务流程的集成等。
    6、作业分析:记录仓储作业流程中管理行为数据,优化仓储流程管理。
    在这里插入图片描述
    三、智慧仓储管理系统方案优点
      智慧化仓储系统解决方案是基于提高TOT LCM模组仓库和GOC内销整机仓库管理水平、管理精细度和运行效率为前提, 结合RFID技术,使用托盘栈板作为成品入库载体,采用栈板RFID标签与栈板条码关联的方式,在入库、出库、盘点、转仓、移库等环节方便快捷的利用RFID标签实现信息自动采集、核对及纠错,同时实现信息流和实物流的统一。
      1、高架存储,节约土地:在当前“地王”频现的中国,土地已成为稀缺资源,如何将有限的土地进行最大限度地利用已成为一些公司努力追求的目标。智慧仓储装备系统利用高层货架储存货物,最大限度地利用空间,可大幅度降低土地成本。与普通仓库相比,一般智能立体仓库可以节省60%以上的土地面积。
      2、无人作业,节省人工:在人力资源成本逐年增高、人口红利逐渐消逝的中国,智慧仓储装备系统实现无人化作业,不仅能大幅度节省人力资源,减少人力成本,还能够更好地适应黑暗、低温、有毒等特殊环境的需求,使智慧仓储装备系统具有更为广阔的应用前景。
      3、机器管理,避免损失:智慧仓储装备系统采用计算机进行仓储管理,可以对入库货物的数据进行记录并监控,能够做到“先进先出”、 “自动盘点”,避免货物自然老化、变质,也能减少货物破损或丢失造成的损失。
      4、账实同步,节约资金:智慧仓储装备管理系统可以做到账实同步,并可与企业内部网融合。企业只需建立合理的库存,即可保证生产全过程顺畅,从而大大提高公司的现金流,减少不必要的库存,同时也避免了人为因素造成的错帐、漏账、呆账、账实不一致等问题。虽然智慧仓储装备管理系统初始投入较大,但一次投入长期受益,总体来说能够实现资金的节约。
      5、自动控制,提高效率:智慧仓储装备系统中物品出入库都是由计算机自动化控制的,可迅速、准确地将物品输送到指定位置,减少了车辆待装待卸时间,可大大提高仓库的存储周转效率,降低存储成本。
    6、系统管理,提升形象:智慧仓储装备系统的建立,不仅能提高企业的系统管理水平,还能提升企业的整体形象以及在客户心目中的地位,为企业赢得更大的市场,进而创造更大的财富。
    在这里插入图片描述
    四、智慧仓储管理系统方案功能
      智慧仓储管理系统是一种用于仓库视频操作事件的高效工具。根据"实时" 视频或仓储档案, 可以解决装卸货、收货、运输产品过程中有争议的情况, 确定产品可用性, 调查库存受损情况。管理人员可以与视频监控系统联动同步查看发生事件、搜索事件。
      1、库位管理:利用PDA设备和条码技术对库位管理的上下架进行扫描,可以对仓位进行快速绑定及释放,实现随时随地的商品库位调整,基于看板能快速实时的显示仓位调整情况。
      2、分拣管理:通常仓库面积大,人员走动距离比较长,系统以科学的分拣管理,能提高人员效率和分拣准确度,减少后续维护压力。
      ①能提示库位信息,分拣无需寻找商品;
      ②系统自动排列优先的拣货路径,减少人员走动距离;
      ③系统进行自动预警,智能提示补货信息,拣货无需等待;
      ④系统上架信息提示,确保入库信息准确;
      ⑤多种盘点方式,支持循环盘点、抽检盘点、日常巡查等;
      ⑥边分边拣,智能体系分拣信息,让作业人员不走“冤枉路”,效率提升。
      3、过程管理:智慧仓储管理系统是面向全过程的控制管理。作业人员通过PDA条码枪实现分拣操作,可实现全程作业记录(拣货、装箱、发货、收货、上架、补货、盘点等),完成分拣清单后,系统会立即生成多维度的员工绩效报表数据(作业数量、重量、体积等信息,并进行排列),科学、轻松的实现绩效登记和考核。同时仓库现场看板可以进行信息展示,提高人员积极性,让员工自觉工作。
      4、仓库管理方式多样化:可实现物料SKU管理,批次管理、唯一管理、箱码管理等。满足企业物料品种批次多,出入库频率高,对保质期和追溯要求高的仓储管理需求。
    5、库存管理:可实现库存准确控制,通过设置库存上下区间值、保质期预警天数等,及时掌握货品数量和状态,从而进行合理的采购和销售,达到“零库存”目标。
    在这里插入图片描述
    五、智慧仓储管理系统组成架构
      智能化物流仓储管理系统,采用计算机控制和管理技术使立体库的功能得以最大限度的发挥,可为企业提供从存储、自动化输送、自动化生产到成品配送的完整物流自动化解决方案。
      1、自动化输送系统
      动线参数是依据处理能力和上限参数来决定的,一般箱式的分拣系统宽度是580/620/680/720/780,宽度是由在动线上运输的货物的物理尺寸在决定的,重量有关;比如涉及线体的承载能力、电机的功率选型等,一般所选的是2500箱/小时左右,常用的速度是32米/分钟。
      2、自动化立体仓库
      托盘堆垛机的速度一般在180米/分钟以下,而miliload最多可以做到240米/分钟左右,最高的存取次数可达250次/小时,一般是200次/小时。高度上可做最高30米,一般为24米以下,基本都是24米、21米;多层穿梭车,存取能力可达1000次/小时。
      3、AGV分拣机器人
      主要是AGV分拣矩阵,在京东无人仓里应用较多,无人仓的概念是较先进,但这种小黄人矩阵分拣系统的大规模应用的性价比不高,故障率高、后台调度程序算法复杂;并且这种矩阵型AGV分拣系统是属于二维码导航,且有一个瓶颈:AGV小车越多,其处理量反而会下降。
      4、自动分拣系统
      滑块分拣机,用于箱式的分拣,对于包装是柔性的货物是不能分拣的;交叉带分拣,主要用于细分领域,能提供比较多的格口,运行速度较高,分拣能力可做到20000-40000件,甚至更高;单台设备一般不会超过30000件……
      5、电子标签系统
      主要用于播种和摘果的拣选,解决分拣错分率问题,这种的错分率较低,有效提高分拣效效率;一般电子标签系统差错率少于万分之五,应用电子标签系统比手工分拣的效率高。
      6、密集存储系统
      前面讲过2种,垂直和水平的旋转库,垂直的旋转库一般单机即可使用,而水平的旋转库则需配套使用,其效率比人工要高6-10倍。由于密集存储系统能够增加50%左右的存储密度,其能节省的存储空间可达50%-60%,目前密集存储系统在电商仓里用的不多。
      7、货到人系统
      专门指AGV货到人,驮着货架移动;还有一个货到人系统叫在线拣选工作站,一般可达1000件/小时,传统的拣选中70%的时间用在走路上,30%时间用于拣选,效率低;运用货到人系统,效率会大大提高。
      8、在线机器人分拣系统
    主要问题在于价格比较高,对仓储行业来讲性价比是不高的,效率无法与人工去比;但有一个好处是能够进行炒作,对自己品牌的高大上形象的塑造有好处,目前在京东和菜鸟出现,其他的电商仓储里用的很少。
    在这里插入图片描述
    六、智慧仓储管理系统技术特点
      智慧仓储可以实现实时了解仓库环境温湿度、消防设施异常等,一旦有异常情况,就将及时通过短信、APP、内部系统等多种方式告知;提前预知用电安全隐患,及时处理,防范安全事故发生;可视化运维,统计电量,电量趋势展示;节能省电,物联网设备远程巡检或控制,平台统一管控,减少不必要的浪费。还可以根据实际应用场景,自行选择策略组合,实现所有物联网设备的智能、自动化控制,手机APP实时查看状态,接收告警信息,随时随地运维,一切尽在掌握。
      1、建立机具基础信息库
      将所有新入库机具设备基础信息批量导入或录入到系统平台,此工作可由各仓库自行填报,且系统将自动生成唯一设备编码(编码规则:W/H日期+日期+入库序号),生成基础信息表。
      2、激光二维码打印,实现机具信息共享查询
      利用二维码技术,将系统中机具基础台账(基础信息表)生成二维码标签。由于普通的二维码打印不干胶标签张贴的方式存在易脱落、易腐蚀等问题,会严重影响机具管理工作。通过调研,激光打印可实现防腐蚀、防脱落,且在多种材质包括金属制品上均可以进行直接打印,无需介质,特选择通过激光打印方式将二维码打印到机具的合适位置。各级人员后期通过APP扫描功能,可对现场机具设备进行二维码扫描及信息查看,以及仓库管理人员亦可通过二维码扫描方式进行机具的出入库管理。
      3、通过RFID技术实现机具批量出入库管理
      由于二维码出入库管理方式仅能针对单个机具进行扫描出入库管理,效率上大打折扣。经调研,基于RFID无线通信技术,可对机具进行微型芯片(RFID电子标签)的嵌入或张贴,并将机具的基础信息台账批量写入RFID电子标签,通过射频技术感应识别,读取解析机具的详细信息,实现机具批量出入库管理。对于流转频率高、不易损毁的机具实行RFID电子标签方式进行管理。
      4、GPS定位跟踪管理
      对重点管控机具(如拖拉机、安全防护用品),加装GPS定位装置,实现对现场机具的快速定位跟踪,并在系统平台电子地图上标记显示。APP使用公司移安宝系统,实现机具的定位导航。
      5、出入库识别门设计定制
      根据仓库大门尺寸,进行非接触式出入库门设计,加装多个RFID识别读写装置及天线,可同时快速识别多个机具的芯片信息(1-200个芯片信息),并在显示屏处可查看、显示机具详细信息,也可自动生成打印出入库单,操作快捷方便。
      6、大屏展示
    在仓库适宜位置,安装显示大屏,建立综合展示平台,将各仓库的机具领用、库存、修试、报废情况及仓储管理当中的其他情况在大屏上实时、统一、动态展示。
    在这里插入图片描述
    七、智慧仓储管理系统发展前景
    智慧仓储管理系统,专门针对企业仓库或配送中心而设计的实时仓储作业管理系统,涵盖订单管理、拣货管理、收货管理、移库管理、补货管理、盘点管理、人员绩效、库位管理、运输管理、供应商管理及报表管理等环节。智慧仓储管理系统是伴随着信息技术的不断升级和变革而产生的,尽管很多企业还没有意识到智慧仓储管理系统方便、快捷的特点,但其作用在仓储管理上的作用却不容置疑,其应用为后续智能电厂的创建打下了坚实基础。目前,智慧仓储管理系统的应用在电力企业属于起步阶段,很多功能需要后续不断完善。但随着越来越多的企业对智慧仓储管理系统的研究和认识不断提高,智慧仓储管理系统必将得到更加广泛的认可和应用。

    在这里插入图片描述

    展开全文
  • 成品仓储管理准则.doc

    2021-04-06 14:41:16
    (一)物料管理科应依成品缴出库情况、包装、方式等规划所需库位及其面积,以库位空间有效利用。 (二)库位配置原则应依下列规定: 1.配合仓库内设备(例如油压车、手推车、消防设施、通风设备、电源等)及所...
  • 仓储服务

    千次阅读 2006-09-30 14:32:00
    2、 如何将现代物流管理的理念贯穿到仓储业务管理中3、 如何将传统仓储功能向物流现场管理功能转化二、如何根据现代物流管理的要求进行仓储管理职责的再定位三、如何发挥仓储部门的物料控制、库位规划利用、信息沟通...
  •  1、高架存储,节约土地:RFID仓储装备系统利用高层货架储存货物,最大限度地利用空间,可大幅度降低土地成本。与普通仓库相比,一般智能立体仓库可以节省60%以上的土地面积。  2、无人作业,节省人工:RFID仓储...
  • 仓储管理的目标

    2017-04-19 10:45:00
    以时间抢空间就是指仓储的作业速度要快,仓储的作业速度越快,需要的空间就越小,周转慢了,仓库会变得越来越大。仓储、仓库及仓储管理的关系如下: Æ仓储指仓库储存; Æ仓库是暂时存放产品的场所...
  • 仓储管理就是对仓库及仓库内的物资所进行的管理,是仓储机构为了充分利用所具有的仓储资源提供高效的仓储服务所进行的计划、组织、控制和协调过程。 仓储管理内涵是随着其在社会经济领域中的作用不断扩大而变化。...
  • 仓储物流管理广泛应用于各个行业,设计及建立健全整套的仓储管理流程,提高仓储周转效率,减少运营资金的占用,使冻结的资产变成现金,减少由于仓储淘汰所造成的成本,是企业提高生产效率的重要环节。 仓储管理系统...
  • 立体货架向高层収展迚一步提升空间利用率 丌同二普通仓库以平面储存为主的储存方式自动化仓库普遍向高 层化立体储存収展以提高空间利用率 目前丐界上最高的立体仓库高度已达50m单位面积存储量可达7.5t/m2是普通仓库...
  • 帮助仓库管理人员对库存物品的入库、出库、移动、盘点、配料等操作进行全面的控制和管理,有效的利用仓库存储空间,提高仓库的仓储能力,在物料的使用上实现先进先出,最终提高仓库存储空间利用率,降低库存成本,...
  • WMS仓储管理系统是仓储管理的核心管理软件工具,可以有效的组织和管理人员、空间和设备,进行高效出入库、存储和拣选,加速库存周转,最大限度的利用仓库资源,提高物流作业效率和准确性,实现仓库的精细化管理,...
  • 近年来,互联网+、物联网、条码识别等技术的加持,引发电商产业链升级,智能仓储、智能物流在我国蓬勃发展。京东在2007年就开始建设物流...智慧仓储是指在仓储管理业务流程再造基础上,利用RFID射频识别、网络通信、信
  •  射频识别技术(Radio Frequency Identification,缩写RFID),射频识别技术是20世纪90年代开始兴起的一种自动识别技术,射频识别技术是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过...
  • 基于自研厘米级超高精度UWB定位技术,EHIGH恒高针对各大仓储物流场景利用仓储室内定位系统,通过定位引擎在时间、状态等信息基础上增加精准的空间位置信息,协助企业实现精益化的现代化仓储物流管理。 仓储室内定位...
  • 如何提高电商仓储管理效率?

    千次阅读 2019-04-12 14:47:56
    电商仓储和传统线下仓储虽然看起来都是仓储管理,但是在管理层面却又本质的区别。电商宝通过分析对比来反映出电商仓储的特点及难点,从而为电商仓储规划提供方向。为大家分享在电商淡季时,如何抓住时间调整和优化...
  • java 内容仓储

    2017-10-23 14:34:00
    什么是JAVA内容仓库(Java Content ...内容仓库模型JSR-170 是这样定义内容仓库的,内容仓库由一组 workspace(工作空间)组成,这些workspace通常应该包含相似的内容。一个内容仓库有一个到多个 workspace。...
  • 写在前面 写这篇博文的灵感来自《如何开始...那篇博文除去其他的一些问题探讨,留给我印象最深的就是:领域服务中使用仓储,下面摘自文中我的一段评论: 领域服务中去调用仓储,这一点是我一直所纠结的地方,...
  • 智能仓储装备系统是综合利用计算机、自动化、云计算、互联网和物联网等高科技技术,将高位立体货架、巷道堆垛机、升降设备、自动出入库输送装备、自动分拣系统装备、室内搬运车、机器人等设备进行系统集成,形成具有...
  • 智能仓储是一种全新的仓储办理理念,经过信息化、物联网... RFID智能仓储体系是一种经过计算机体系控制,能够对库房和物料方位全面掌握,利用RFID射频辨认、网络通信、信息体系使用等化技能及先进的办理方法,完成入...
  • 仓储管理概述

    2007-09-18 15:33:27
    仓储是现代物流运作不可或缺的一个重要环节,在各个环节中,仓储时间及仓储成本占有相当比重。那么,我们能否去掉仓储环节呢?这一环节有无存在的必要呢?通过分析产品从生产到消费者手中这一过程,我们可以看到产品...
  • 随着信息技术的迅猛发展,物流仓储供应链的管理必须与时俱进,向着工业数字化、智能化发展。 基于超高频RFID的物联网技术是近年来备受世界瞩目的IT热点。超高频RFID技术在中国已经得到了广泛应用,在物流、第二代...
  • 同时,它所配套使用的叉车无需进入巷道,节省了时间,提高人员及货物的安全性,还提升了库房内货物存取效率充分利用库房空间,库房内可以利用约80%~85的空间; 这种类型的货架适合不同种类货物的存取,还可以实现...
  • 仓储物流 , 就是利用自建或租赁库房、场地,储存、保管、装卸搬运、配送货物。传统的仓储定义是从物资储备的角度给出的。现代“仓储”不是传统意义上的“仓库”、“仓 库管理”,而是在经济全球化与供应链一体化...
  • .NET仓储模式高级用例

    千次阅读 2016-11-10 07:09:20
    如果需要执行基本CURD之外的其他操作,此时就有必要使用仓储(Repository)。 为了促进测试工作并改善可靠性,应将仓储视作可重复使用的库(Library)。 将安全和审计功能放入仓储中可减少Bug并简化应用程序。 ...
  • 建设电商仓储的步骤

    2017-04-17 11:39:00
    传统仓储对比电商仓储 对比传统专业市场仓储通过静态存储以保证经营的持续性需求,电商仓储对于供应链快速流动性的需求更加迫切。 电商具有SKU量大、批次多、商品规格差异大等特点。需要仓库能够非常精准地按照...
  • 随着近代商业的繁荣发展,越来越多的仓储中心希望能在有限的厂房空间里放置最大量的货物。最初没有仓库搬运机械的时期,最简单的多放货物的办法就是托盘货物分片区放置在地面上,或者用叉车将货物挑到几层货架里...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,477
精华内容 2,190
关键字:

仓储空间利用