Browse Source

init wcs_entity

林豪 左 2 years ago
parent
commit
4edabc0015

+ 9 - 0
WCS.Entity/IProtocol.cs

@@ -0,0 +1,9 @@
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 协议
+    /// </summary>
+    public interface IProtocol
+    {
+    }
+}

+ 23 - 0
WCS.Entity/IgnoreChangingAttribute.cs

@@ -0,0 +1,23 @@
+using System;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 忽略变更
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Property)]
+    public class IgnoreChangingAttribute : Attribute
+    {
+        /// <summary>
+        /// 忽略变更
+        /// </summary>
+        public IgnoreChangingAttribute()
+        {
+        }
+
+        /// <summary>
+        /// 忽略变更的值范围
+        /// </summary>
+        public long IgnoreValueRange { get; set; }
+    }
+}

+ 66 - 0
WCS.Entity/OBJ.cs

@@ -0,0 +1,66 @@
+using SqlSugar;
+using System;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 实体类通用基础类
+    /// </summary>
+    [Serializable]
+    public abstract class OBJ
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "ID")]
+        [Column(Order = 0)]
+        public virtual int ID { get; set; }
+
+        /// <summary>
+        /// 是否可用
+        /// </summary>
+        [SugarColumn(ColumnDescription = "是否可用")]
+        public bool ENABLED { get; set; } = true;
+
+        /// <summary>
+        /// 更新用户
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
+        public string UPDATEUSER { get; set; }
+
+        ///// <summary>
+        ///// 更新用户详细信息
+        ///// </summary>
+        //[Navigate(NavigateType.OneToOne, nameof(UPDATEUSER))]
+        //public WCS_USERS USER { get; set; }
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间")]
+        public DateTime UPDATETIME { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", ColumnDataType = "timestamp", IsNullable = true, IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
+        public byte[] VER { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public T Copy<T>() where T : OBJ
+        {
+            var instance = Activator.CreateInstance<T>();
+            foreach (var property in GetType().GetProperties())
+            {
+                var obj = property.GetValue(this);
+                typeof(T).GetProperty(property.Name)!.SetValue(instance, obj);
+            }
+            return instance;
+        }
+    }
+}

+ 13 - 0
WCS.Entity/WCS.Entity.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>netstandard2.1</TargetFramework>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="SqlSugarCore" Version="5.1.4.67" />
+    <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
+  </ItemGroup>
+
+</Project>

+ 129 - 0
WCS.Entity/WCS_AGVTask.cs

@@ -0,0 +1,129 @@
+using SqlSugar;
+using System;
+using System.Runtime.Serialization;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// AGV任务中间表
+    /// </summary>
+    [SugarTable(nameof(WCS_AGVTask), "AGV任务中间表")]
+    [DataContract]
+    public class WCS_AGVTask
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "ID"), DataMember(Order = 0)]
+        public int ID { get; set; }
+
+        /// <summary>
+        /// AGVID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "AGVID", Length = 20), DataMember(Order = 1)]
+        public string AGVID { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务类型")]
+        [DataMember(Order = 2)]
+        public AGVTaskType TaskType { get; set; }
+
+        /// <summary>
+        /// WCS AGV任务状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WCS AGV任务状态")]
+        [DataMember(Order = 3)]
+        public AGVTaskStatus Status { get; set; }
+
+        /// <summary>
+        /// AGV自身状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "AGV自身状态")]
+        [DataMember(Order = 4)]
+        public AGVTaskStatus AGVStatus { get; set; }
+
+        /// <summary>
+        /// 车间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "车间")]
+        [DataMember(Order = 5)]
+        public int Workshop { get; set; }
+
+        /// <summary>
+        /// 站台
+        /// </summary>
+        [SugarColumn(ColumnDescription = "站台", Length = 20)]
+        [DataMember(Order = 6)]
+        public string Station { get; set; }
+
+        /// <summary>
+        /// 位置
+        /// </summary>
+        [SugarColumn(ColumnDescription = "位置", Length = 20)]
+        [DataMember(Order = 7)]
+        public string Position { get; set; }
+
+        /// <summary>
+        /// 货物数量(1.两个位置放1个货物,2.两个位置放2个货物)
+        /// </summary>
+        [SugarColumn(ColumnDescription = "货物数量(1.两个位置放1个货物,2.两个位置放2个货物)")]
+        [DataMember(Order = 11)]
+        public int Goodsnum { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间")]
+        [DataMember(Order = 8)]
+        public DateTime CreateTime { get; set; }
+
+        /// <summary>
+        /// WCS更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WCS更新时间")]
+        [DataMember(Order = 9)]
+        public DateTime? UpdateTime { get; set; }
+
+        /// <summary>
+        /// AGV更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "AGV更新时间")]
+        [DataMember(Order = 10)]
+        public DateTime? AGVUpdateTime { get; set; }
+
+        /// <summary>
+        ///更新用户
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新用户")]
+        [DataMember(Order = 11)]
+        public string UPDATEUSER { get; set; }
+
+        ///// <summary>
+        ///// 更新用户详细信息
+        ///// </summary>
+        //[Navigate(NavigateType.OneToOne, nameof(UPDATEUSER))]
+        //public WCS_USERS USER { get; set; }
+    }
+
+    public enum AGVTaskStatus
+    {
+        新建 = 0,
+        确认 = 5,
+        执行 = 10,
+        请求_允许 = 20,
+        取放完成 = 21,
+        请求_允许2 = 30,
+        取放完成2 = 31,
+        完成 = 99,
+        完成扫码 = 100,
+        取消 = 106
+    }
+
+    public enum AGVTaskType
+    {
+        入库 = 1,
+        叫料 = 2
+    }
+}

+ 78 - 0
WCS.Entity/WCS_DATABLOCK.cs

@@ -0,0 +1,78 @@
+using SqlSugar;
+using System;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// PLC DB块配置表
+    /// </summary>
+    [SugarTable(nameof(WCS_DATABLOCK), "PLC DB块配置表")]
+    public class WCS_DATABLOCK : OBJ
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(IsIgnore = true)]
+        [Obsolete]
+        public override int ID { get; set; }
+
+        /// <summary>
+        /// 编号
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, Length = 20, ColumnDescription = "编号")]
+        public string CODE { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        [SugarColumn(Length = 20, ColumnDescription = "名称")]
+        public string NAME { get; set; }
+
+        /// <summary>
+        /// 关联PLC信息编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "关联PLC信息编号")]
+        public string PLCCODE { get; set; }
+
+        /// <summary>
+        /// 关联PLC信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(PLCCODE))]
+        public WCS_PLC PLC { get; set; }
+
+        /// <summary>
+        /// 西门子:DB520,其它:D0
+        /// </summary>
+        [SugarColumn(ColumnDescription = "编号")]
+        public int NO { get; set; }
+
+        /// <summary>
+        /// 总长度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "总长度")]
+        public int LENGTH { get; set; }
+
+        /// <summary>
+        /// 结构体长度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "结构体长度")]
+        public int DATALENGTH { get; set; }
+
+        /// <summary>
+        /// 协议类型
+        /// </summary>
+        [SugarColumn(Length = 200, ColumnDescription = "协议类型")]
+        public string PROTOCOL { get; set; }
+
+        /// <summary>
+        /// 无更新
+        /// </summary>
+        [SugarColumn(ColumnDescription = "无更新")]
+        public bool NOUPDATE { get; set; }
+
+        public Type GetProtocolType()
+        {
+            return Type.GetType(PROTOCOL);
+        }
+    }
+}

+ 56 - 0
WCS.Entity/WCS_DEVICEHdr.cs

@@ -0,0 +1,56 @@
+using SqlSugar;
+using System.Collections.Generic;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 设备列表
+    /// </summary>
+    [SugarTable(nameof(WCS_DEVICEHdr), "设备列表")]
+    public class WCS_DEVICEHdr : OBJ
+    {
+        [SugarColumn(IsIgnore = true)]
+        public override int ID { get; set; }
+
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "设备编号", Length = 50)]
+        public string CODE { get; set; }
+
+        /// <summary>
+        /// 设备名称
+        /// </summary>
+        [SugarColumn(Length = 50, ColumnDescription = "设备名称")]
+        public string NAME { get; set; }
+
+        /// <summary>
+        /// 设备可用协议集合
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(WCS_DEVICEPROTOCOL.DEVICECODE))]
+        public List<WCS_DEVICEPROTOCOL> DEVICEPROTOCOLS { get; set; }
+
+        /// <summary>
+        /// 设备可用路由集合
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(WCS_ROUTE.DEVICECODE))]
+        public List<WCS_ROUTE> ROUTES { get; set; }
+
+        /// <summary>
+        /// 设备可用路径集合
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(WCS_PathHdr.STARTCODE))]
+        public List<WCS_PathHdr> PATHS { get; set; }
+
+        /// <summary>
+        /// 设备对应设备组信息
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(WCS_GROUPMEMBER.GROUPCODE))]
+        public List<WCS_GROUPMEMBER> DEVICEGROUP { get; set; }
+
+        public override string ToString()
+        {
+            return CODE;
+        }
+    }
+}

+ 41 - 0
WCS.Entity/WCS_DEVICEPROTOCOL.cs

@@ -0,0 +1,41 @@
+using SqlSugar;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// DB块读写协议
+    /// </summary>
+    [SugarTable(nameof(WCS_DEVICEPROTOCOL), "DB块读写协议")]
+    public class WCS_DEVICEPROTOCOL : OBJ
+    {
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备")]
+        public string DEVICECODE { get; set; }
+
+        /// <summary>
+        /// 设备信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(DEVICECODE))]
+        public WCS_DEVICEHdr DEVICE { get; set; }
+
+        /// <summary>
+        /// DB编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "DB编号")]
+        public string DATABLOCKCODE { get; set; }
+
+        /// <summary>
+        /// DB信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(DATABLOCKCODE))]
+        public WCS_DATABLOCK DB { get; set; }
+
+        /// <summary>
+        /// 起始位置
+        /// </summary>
+        [SugarColumn(ColumnDescription = "起始位置")]
+        public short POSITION { get; set; }
+    }
+}

+ 35 - 0
WCS.Entity/WCS_GROUPMEMBER.cs

@@ -0,0 +1,35 @@
+using SqlSugar;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 设备组
+    /// </summary>
+    [SugarTable(nameof(WCS_GROUPMEMBER), "设备组")]
+    public class WCS_GROUPMEMBER : OBJ
+    {
+        /// <summary>
+        /// 组设备编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "组设备编号")]
+        public string GROUPCODE { get; set; }
+
+        /// <summary>
+        /// 组设备信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(GROUPCODE))]
+        public WCS_DEVICEHdr GROUP { get; set; }
+
+        /// <summary>
+        /// 子设备编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "子设备编号")]
+        public string MEMBERCODE { get; set; }
+
+        /// <summary>
+        /// 子设备信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(MEMBERCODE))]
+        public WCS_DEVICEHdr MEMBER { get; set; }
+    }
+}

+ 41 - 0
WCS.Entity/WCS_MAPPINGENTRY.cs

@@ -0,0 +1,41 @@
+using SqlSugar;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 枚举映射表
+    /// </summary>
+    [SugarTable(nameof(WCS_MAPPINGENTRY), "枚举映射表")]
+    public class WCS_MAPPINGENTRY
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "ID")]
+        public int MEP_ID { get; set; }
+
+        /// <summary>
+        /// 编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "编号")]
+        public int MEP_MAPPINGNO { get; set; }
+
+        /// <summary>
+        /// 枚举类
+        /// </summary>
+        [SugarColumn(Length = 50, ColumnDescription = "枚举类")]
+        public string MEP_MAPPINGTYPE { get; set; }
+
+        /// <summary>
+        /// 枚举名称
+        /// </summary>
+        [SugarColumn(Length = 50, ColumnDescription = "枚举名称")]
+        public string MEP_MAPPINGCHNAME { get; set; }
+
+        /// <summary>
+        /// 是否停用
+        /// </summary>
+        [SugarColumn(ColumnDescription = "是否停用")]
+        public bool MEP_ISSTOP { get; set; }
+    }
+}

+ 116 - 0
WCS.Entity/WCS_PLC.cs

@@ -0,0 +1,116 @@
+using SqlSugar;
+using System;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// WCS_PLC
+    /// </summary>
+    [SugarTable(nameof(WCS_PLC), "PLC信息")]
+    public class WCS_PLC : OBJ
+    {
+        [SugarColumn(IsIgnore = true)]
+        [Obsolete]
+        public override int ID { get; set; }
+
+        /// <summary>
+        /// 编号
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "编号", Length = 20)]
+        public string CODE { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "名称", Length = 20)]
+        public string NAME { get; set; }
+
+        /// <summary>
+        /// IP
+        /// </summary>
+        [SugarColumn(ColumnDescription = "IP", Length = 20)]
+        public string IP { get; set; }
+
+        /// <summary>
+        /// 端口
+        /// </summary>
+        [SugarColumn(ColumnDescription = "端口")]
+        public int PORT { get; set; } = 102;
+
+        /// <summary>
+        /// 插槽号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "插槽号")]
+        public int SLOT { get; set; }
+
+        /// <summary>
+        /// 机架号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "机架号")]
+        public int RACK { get; set; }
+
+        /// <summary>
+        /// 厂商
+        /// </summary>
+        [SugarColumn(ColumnDescription = "厂商")]
+        public PLCType TYPE { get; set; }
+
+        /// <summary>
+        /// 型号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "型号")]
+        public PLCMODEL MODEL { get; set; }
+    }
+
+    /// <summary>
+    /// 设备厂商
+    /// </summary>
+    public enum PLCType
+    {
+        西门子 = 1,
+        三菱 = 2,
+        AB = 3,
+        欧姆龙 = 4,
+        汇川 = 5, 
+    }
+
+    /// <summary>
+    /// PLC型号
+    /// </summary>
+    public enum PLCMODEL
+    {
+        #region 西门子
+
+        /// <summary>
+        /// 1200系列
+        /// </summary>
+        S1200 = 1,
+
+        /// <summary>
+        /// 300系列
+        /// </summary>
+        S300 = 2,
+
+        /// <summary>
+        /// 400系列
+        /// </summary>
+        S400 = 3,
+
+        /// <summary>
+        /// 1500系列PLC
+        /// </summary>
+        S1500 = 4,
+
+        /// <summary>
+        /// 200的smart系列
+        /// </summary>
+        S200Smart = 5,
+
+        /// <summary>
+        /// 200系统,需要额外配置以太网模块
+        /// </summary>
+        S200 = 6
+
+        #endregion 西门子
+    }
+}

+ 41 - 0
WCS.Entity/WCS_PROTOCOLDATA.cs

@@ -0,0 +1,41 @@
+using SqlSugar;
+using System;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 协议数据抽象类,所有的设备具体协议信息都需继承该类
+    /// </summary>
+    public abstract class WCS_PROTOCOLDATA : OBJ
+    {
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备编号")]
+        public string DEVICECOD { get; set; }
+
+        /// <summary>
+        /// 设备详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(DEVICECOD))]
+        public WCS_DEVICEHdr DEVICE { get; set; }
+
+        /// <summary>
+        /// 确认时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "确认时间")]
+        public DateTime FRAME { get; set; }
+
+        /// <summary>
+        /// 最后更新
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后更新")]
+        public bool ISLAST { get; set; }
+
+        /// <summary>
+        /// WCS版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WCS版本号")]
+        public int WCSVERSION { get; set; }
+    }
+}

+ 67 - 0
WCS.Entity/WCS_PathDtl.cs

@@ -0,0 +1,67 @@
+using SqlSugar;
+
+namespace WCS.Entity
+{
+    internal class WCS_PathDtl
+    {
+        /// <summary>
+        /// 起始地址设备号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "起始地址设备号")]
+        public string? STARTCODE { get; set; }
+
+        /// <summary>
+        /// 起点设备详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(STARTCODE))]
+        public WCS_DEVICEHdr? START { get; set; }
+
+        /// <summary>
+        /// 终点地址设备号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "终点地址设备号")]
+        public string? ENDCODE { get; set; }
+
+        /// <summary>
+        /// 终点设备详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(ENDCODE))]
+        public WCS_DEVICEHdr? END { get; set; }
+
+        /// <summary>
+        /// 路径点设备号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "路径点设备号", IsNullable = true)]
+        public string? DEVICECODE { get; set; }
+
+        /// <summary>
+        /// 路径点详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(DEVICECODE))]
+        public WCS_DEVICEHdr? DEVICE { get; set; }
+
+        /// <summary>
+        /// 前路径点设备号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "前路径点设备号")]
+        public string? PREVCODE { get; set; }
+
+        /// <summary>
+        /// 前路径点详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(PREVCODE))]
+        public WCS_DEVICEHdr? PREV { get; set; }
+
+        /// <summary>
+        /// 后路径点设备号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "后路径点设备号", IsNullable = true)]
+        public string? NEXTCODE { get; set; }
+
+        /// <summary>
+        /// 后路径点详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(NEXTCODE))]
+        public WCS_DEVICEHdr? NEXT { get; set; }
+    }
+}

+ 40 - 0
WCS.Entity/WCS_PathHdr.cs

@@ -0,0 +1,40 @@
+using SqlSugar;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 设备路径头表
+    /// </summary>
+    public class WCS_PathHdr : OBJ
+    {
+        /// <summary>
+        /// 起点地址编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "起点")]
+        public string? STARTCODE { get; set; }
+
+        /// <summary>
+        /// 起始点设备信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, "STARTCODE")]
+        public WCS_DEVICEHdr? START { get; set; }
+
+        /// <summary>
+        /// 终点设备编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "终点")]
+        public string? ENDCODE { get; set; }
+
+        /// <summary>
+        /// 终点设备信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, "ENDCODE")]
+        public WCS_DEVICEHdr? END { get; set; }
+
+        /// <summary>
+        /// 路径
+        /// </summary>
+        [SugarColumn(ColumnDescription = "路径")]
+        public string? PATH { get; set; }
+    }
+}

+ 37 - 0
WCS.Entity/WCS_PlcData.cs

@@ -0,0 +1,37 @@
+using SqlSugar;
+using System;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 设备信息表
+    /// </summary>
+    [SugarTable(nameof(WCS_PlcData), "路径")]
+    public class WCS_PlcData
+    { /// <summary>
+      /// ID
+      /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "ID")]
+        [Column(Order = 0)]
+        public virtual int ID { get; set; }
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间")]
+        public DateTime UPDATETIME { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 仓库
+        /// </summary>
+        [SugarColumn(ColumnDescription = "仓库")]
+        public string WAREHOUSE { get; set; }
+
+        /// <summary>
+        /// 内容
+        /// </summary>
+        [SugarColumn(ColumnDescription = "内容")]
+        public string CONTENT { get; set; }
+    }
+}

+ 35 - 0
WCS.Entity/WCS_ROUTE.cs

@@ -0,0 +1,35 @@
+using SqlSugar;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 设备路由表
+    /// </summary>
+    [SugarTable(nameof(WCS_ROUTE), "设备路由表")]
+    public class WCS_ROUTE : OBJ
+    {
+        /// <summary>
+        /// 设备编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备编号")]
+        public string DEVICECODE { get; set; }
+
+        /// <summary>
+        /// 所属设备信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(DEVICECODE))]
+        public WCS_DEVICEHdr DEVICE { get; set; }
+
+        /// <summary>
+        /// 下一个设备的编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "下一个设备的编号")]
+        public string NEXTCODE { get; set; }
+
+        /// <summary>
+        /// 下一个设备的信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, "NEXTCODE")]
+        public WCS_DEVICEHdr NEXT { get; set; }
+    }
+}

+ 364 - 0
WCS.Entity/WCS_TASK.cs

@@ -0,0 +1,364 @@
+using SqlSugar;
+using System;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 任务表
+    /// </summary>
+    [SugarTable(nameof(WCS_TASK), "任务表")]
+    public class WCS_TASK : OBJ
+    {
+        /// <summary>
+        /// 生产编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "生产编码", Length = 50)]
+        public string BARCODE { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务类型")]
+        public TaskType TYPE { get; set; }
+
+        /// <summary>
+        /// 任务状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务状态")]
+        public TaskStatus STATUS { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "起始地址", Length = 20)]
+        public string ADDRFROM { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "目标地址", Length = 20)]
+        public string ADDRTO { get; set; }
+
+        /// <summary>
+        /// 下一个地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "下一个地址", Length = 20)]
+        public string ADDRNEXT { get; set; }
+
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        [SugarColumn(ColumnDescription = "巷道", Length = 10, IsNullable = true)]
+        public string TUNNEL { get; set; }
+
+        /// <summary>
+        /// 楼层
+        /// </summary>
+        [SugarColumn(ColumnDescription = "楼层")]
+        public int FLOOR { get; set; }
+
+        /// <summary>
+        /// 设备
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备", Length = 20, IsNullable = true)]
+        public string DEVICE { get; set; }
+
+        /// <summary>
+        /// 堆垛机放货站台
+        /// </summary>
+        [SugarColumn(ColumnDescription = "堆垛机放货站台", Length = 20, IsNullable = true)]
+        public string SRMSTATION { get; set; }
+
+        /// <summary>
+        ///创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间")]
+        public DateTime CREATETIME { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "开始时间")]
+        public DateTime? STARTTIME { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
+        public DateTime? ENDTIME { get; set; }
+
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单号", IsNullable = true)]
+        public int DOCID { get; set; }
+
+        /// <summary>
+        /// 托盘类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "托盘类型", IsNullable = true)]
+        public short PALLETTYPE { get; set; }
+
+        /// <summary>
+        /// 产线
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产线", IsNullable = true)]
+        public short PRODLINE { get; set; }
+
+        /// <summary>
+        /// 满盘数量
+        /// </summary>
+        [SugarColumn(ColumnDescription = "满盘数量", IsNullable = true)]
+        public short FULLQTY { get; set; }
+
+        /// <summary>
+        /// 高度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "高度", IsNullable = true)]
+        public short HEIGHT { get; set; }
+
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WMS任务号")]
+        public int WMSTASK { get; set; }
+
+        /// <summary>
+        /// 任务组ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务组ID", IsNullable = true)]
+        public string TaskGroupKey { get; set; }
+
+        /// <summary>
+        /// 更新状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新状态")]
+        public TaskStatus UPLOADED { get; set; }
+
+        /// <summary>
+        /// AGV任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "AGV任务号", IsNullable = true)]
+        public int AGVTASKID { get; set; }
+
+        /// <summary>
+        /// AGV任务详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(AGVTASKID))]
+        public WCS_AGVTask AGVTASK { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        [SugarColumn(ColumnDescription = "优先级")]
+        public int Priority { get; set; }
+
+        /// <summary>
+        /// 手动处理备注
+        /// </summary>
+        [SugarColumn(ColumnDescription = "手动处理备注", IsNullable = true)]
+        public string ManualRemarks { get; set; }
+
+        /// <summary>
+        /// 产品长度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产品长度", IsNullable = true)]
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 产品编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产品编码", IsNullable = true)]
+        public string MaterialCode { get; set; }
+    }
+
+    /// <summary>
+    /// 任务表
+    /// </summary>
+    [SugarTable(nameof(WCS_TASK_OLD), "任务表")]
+    public class WCS_TASK_OLD : OBJ
+    {
+        /// <summary>
+        /// 生产编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "生产编码", Length = 50)]
+        public string BARCODE { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务类型")]
+        public TaskType TYPE { get; set; }
+
+        /// <summary>
+        /// 任务状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务状态")]
+        public TaskStatus STATUS { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "起始地址", Length = 20)]
+        public string ADDRFROM { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "目标地址", Length = 20)]
+        public string ADDRTO { get; set; }
+
+        /// <summary>
+        /// 下一个地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "下一个地址", Length = 20)]
+        public string ADDRNEXT { get; set; }
+
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        [SugarColumn(ColumnDescription = "巷道", Length = 10)]
+        public string TUNNEL { get; set; }
+
+        /// <summary>
+        /// 楼层
+        /// </summary>
+        [SugarColumn(ColumnDescription = "楼层")]
+        public int FLOOR { get; set; }
+
+        /// <summary>
+        /// 设备
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备", Length = 20)]
+        public string DEVICE { get; set; }
+
+        /// <summary>
+        /// 堆垛机放货站台
+        /// </summary>
+        [SugarColumn(ColumnDescription = "堆垛机放货站台", Length = 20)]
+        public string SRMSTATION { get; set; }
+
+        /// <summary>
+        ///创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间")]
+        public DateTime CREATETIME { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "开始时间")]
+        public DateTime? STARTTIME { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "结束时间")]
+        public DateTime? ENDTIME { get; set; }
+
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单号")]
+        public int DOCID { get; set; }
+
+        /// <summary>
+        /// 托盘类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "托盘类型")]
+        public short PALLETTYPE { get; set; }
+
+        /// <summary>
+        /// 产线
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产线")]
+        public short PRODLINE { get; set; }
+
+        /// <summary>
+        /// 满盘数量
+        /// </summary>
+        [SugarColumn(ColumnDescription = "满盘数量")]
+        public short FULLQTY { get; set; }
+
+        /// <summary>
+        /// 高度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "高度")]
+        public short HEIGHT { get; set; }
+
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WMS任务号")]
+        public int WMSTASK { get; set; }
+
+        /// <summary>
+        /// 任务组ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务组ID")]
+        public string TaskGroupKey { get; set; }
+
+        /// <summary>
+        /// 更新状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新状态")]
+        public TaskStatus UPLOADED { get; set; }
+
+        /// <summary>
+        /// AGV任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "AGV任务号")]
+        public int AGVTASKID { get; set; }
+
+        /// <summary>
+        /// AGV任务详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(AGVTASKID))]
+        public WCS_AGVTask AGVTASK { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        [SugarColumn(ColumnDescription = "优先级")]
+        public int Priority { get; set; }
+
+        /// <summary>
+        /// 手动处理备注
+        /// </summary>
+        [SugarColumn(ColumnDescription = "手动处理备注")]
+        public string ManualRemarks { get; set; }
+
+        /// <summary>
+        /// 产品长度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产品长度")]
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 产品编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产品编码")]
+        public string MaterialCode { get; set; }
+    }
+
+    public enum TaskType
+    {
+        组盘 = 0,
+        入库 = 1,
+        出库 = 2,
+        移库 = 3,
+        输送 = 5,
+    }
+
+    public enum TaskStatus
+    {
+        新建 = 0,
+        执行中 = 2,
+        入库交管结束 = 3,
+        堆垛机执行 = 5,
+        堆垛机完成 = 6,
+        出库RGV执行 = 9,
+        已完成 = 99,
+        已取消 = 106
+    }
+}

+ 192 - 0
WCS.Entity/WCS_TASKDtl.cs

@@ -0,0 +1,192 @@
+using SqlSugar;
+using System;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 任务表
+    /// </summary>
+    [SugarTable(nameof(WCS_TASKDtl), "任务表")]
+    public class WCS_TASKDtl : OBJ
+    {
+        /// <summary>
+        /// 生产编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "生产编码", Length = 50)]
+        public string BARCODE { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务类型")]
+        public TaskType TYPE { get; set; }
+
+        /// <summary>
+        /// 任务状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务状态")]
+        public TaskStatus STATUS { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "起始地址", Length = 20)]
+        public string ADDRFROM { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "目标地址", Length = 20)]
+        public string ADDRTO { get; set; }
+
+        /// <summary>
+        /// 下一个地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "下一个地址", Length = 20)]
+        public string ADDRNEXT { get; set; }
+
+        /// <summary>
+        /// 巷道
+        /// </summary>
+        [SugarColumn(ColumnDescription = "巷道", Length = 10, IsNullable = true)]
+        public string TUNNEL { get; set; }
+
+        /// <summary>
+        /// 楼层
+        /// </summary>
+        [SugarColumn(ColumnDescription = "楼层")]
+        public int FLOOR { get; set; }
+
+        /// <summary>
+        /// 设备
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备", Length = 20, IsNullable = true)]
+        public string DEVICE { get; set; }
+
+        /// <summary>
+        /// 堆垛机放货站台
+        /// </summary>
+        [SugarColumn(ColumnDescription = "堆垛机放货站台", Length = 20, IsNullable = true)]
+        public string SRMSTATION { get; set; }
+
+        /// <summary>
+        ///创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间")]
+        public DateTime CREATETIME { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "开始时间")]
+        public DateTime? STARTTIME { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
+        public DateTime? ENDTIME { get; set; }
+
+        /// <summary>
+        /// 单号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "单号", IsNullable = true)]
+        public int DOCID { get; set; }
+
+        /// <summary>
+        /// 托盘类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "托盘类型", IsNullable = true)]
+        public short PALLETTYPE { get; set; }
+
+        /// <summary>
+        /// 产线
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产线", IsNullable = true)]
+        public short PRODLINE { get; set; }
+
+        /// <summary>
+        /// 满盘数量
+        /// </summary>
+        [SugarColumn(ColumnDescription = "满盘数量", IsNullable = true)]
+        public short FULLQTY { get; set; }
+
+        /// <summary>
+        /// 高度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "高度", IsNullable = true)]
+        public short HEIGHT { get; set; }
+
+        /// <summary>
+        /// WMS任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WMS任务号")]
+        public int WMSTASK { get; set; }
+
+        /// <summary>
+        /// 任务组ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务组ID", IsNullable = true)]
+        public string TaskGroupKey { get; set; }
+
+        /// <summary>
+        /// 更新状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新状态")]
+        public TaskStatus UPLOADED { get; set; }
+
+        /// <summary>
+        /// AGV任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "AGV任务号", IsNullable = true)]
+        public int AGVTASKID { get; set; }
+
+        /// <summary>
+        /// AGV任务详细信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(AGVTASKID))]
+        public WCS_AGVTask AGVTASK { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        [SugarColumn(ColumnDescription = "优先级")]
+        public int Priority { get; set; }
+
+        /// <summary>
+        /// 手动处理备注
+        /// </summary>
+        [SugarColumn(ColumnDescription = "手动处理备注", IsNullable = true)]
+        public string ManualRemarks { get; set; }
+
+        /// <summary>
+        /// 产品长度
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产品长度", IsNullable = true)]
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 产品编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "产品编码", IsNullable = true)]
+        public string MaterialCode { get; set; }
+
+        /// <summary>
+        /// 更新用户
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
+        public string UPDATEUSER { get; set; }
+
+        ///// <summary>
+        ///// 更新用户详细信息
+        ///// </summary>
+        //[Navigate(NavigateType.OneToOne, nameof(UPDATEUSER))]
+        //public WCS_USERS USER { get; set; }
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间")]
+        public DateTime UPDATETIME { get; set; } = DateTime.Now;
+    }
+}

+ 8 - 1
WcsFramework.sln

@@ -7,7 +7,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WCS.Service", "WCS.Service\
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "框架", "框架", "{C783651F-7EB6-40BA-8E68-525F93B8FCED}"
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "项目", "项目", "{1A069C59-845C-492A-A939-95741CB8DC12}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "主工程", "主工程", "{1A069C59-845C-492A-A939-95741CB8DC12}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WCS.Core", "WCS.Core\WCS.Core.csproj", "{A869A35B-8811-4660-90E8-A143D168D894}"
 EndProject
@@ -21,6 +21,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "时效库", "时效库", "{
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "成品库", "成品库", "{2D6D3E42-5007-47E3-A74E-BABA3F3BDDFA}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCS.Entity", "WCS.Entity\WCS.Entity.csproj", "{99AB1CD4-1242-4A1B-AE90-ADD7674848B2}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -35,6 +37,10 @@ Global
 		{A869A35B-8811-4660-90E8-A143D168D894}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A869A35B-8811-4660-90E8-A143D168D894}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A869A35B-8811-4660-90E8-A143D168D894}.Release|Any CPU.Build.0 = Release|Any CPU
+		{99AB1CD4-1242-4A1B-AE90-ADD7674848B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{99AB1CD4-1242-4A1B-AE90-ADD7674848B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{99AB1CD4-1242-4A1B-AE90-ADD7674848B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{99AB1CD4-1242-4A1B-AE90-ADD7674848B2}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -42,6 +48,7 @@ Global
 	GlobalSection(NestedProjects) = preSolution
 		{F942507C-3DB2-47BC-B4DF-496E52E3C908} = {1A069C59-845C-492A-A939-95741CB8DC12}
 		{A869A35B-8811-4660-90E8-A143D168D894} = {C783651F-7EB6-40BA-8E68-525F93B8FCED}
+		{99AB1CD4-1242-4A1B-AE90-ADD7674848B2} = {C783651F-7EB6-40BA-8E68-525F93B8FCED}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {2C009DED-1CDE-4D15-A895-5013ED32E8FC}