Explorar o código

优化表结构 agv、任务流转记录表分表

林豪 左 %!s(int64=2) %!d(string=hai) anos
pai
achega
4423be1a11

+ 1 - 1
ServiceCenter/ServiceCenter.csproj

@@ -11,7 +11,7 @@
     <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
     <PackageReference Include="PlcSiemens" Version="1.0.0.2" />
     <PackageReference Include="WCS.Core" Version="1.0.0.6" />
-    <PackageReference Include="WCS.Entity" Version="1.0.0.12" />
+    <PackageReference Include="WCS.Entity" Version="1.0.1" />
   </ItemGroup>
 
 </Project>

+ 9 - 3
ServiceCenter/SqlSugars/SqlSugarHelper.cs

@@ -92,9 +92,13 @@ namespace ServiceCenter.SqlSugars
         /// </summary>
         /// <param name="act"></param>
         /// <exception cref="Exception"></exception>
-        public static void Do(Action<SqlSugarHelper> act)
+        public static bool Do(Action<SqlSugarHelper> act)
         {
-            if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");
+            if (_Db == null)
+            {
+                Console.WriteLine("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");
+                return false;
+            }
 
             var db = new SqlSugarHelper();
 
@@ -103,11 +107,13 @@ namespace ServiceCenter.SqlSugars
                 db.Connect.BeginTran();//开始事务
                 act(db);//执行委托
                 db.Connect.CommitTran();//提交事务
+                return true;
             }
             catch (Exception ex)
             {
                 db.Connect.RollbackTran();//回滚事务
-                throw new Exception($"事务回滚记录:{ex.Message}:{ex.StackTrace}");
+                Console.WriteLine($"事务回滚记录:{ex.Message}:{ex.StackTrace}");
+                return false;
             }
         }
     }

+ 1 - 1
WCS.Entity.Protocol/WCS.Entity.Protocol.csproj

@@ -7,7 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="WCS.Entity" Version="1.0.0.10" />
+    <PackageReference Include="WCS.Entity" Version="1.0.1" />
   </ItemGroup>
 
 </Project>

+ 19 - 4
WCS.Entity/OBJ.cs

@@ -21,20 +21,35 @@ namespace WCS.Entity
         /// 是否可用
         /// </summary>
         [SugarColumn(ColumnDescription = "是否可用")]
-        public bool ENABLED { get; set; } = true;
+        public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 创建用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// 新增数据时自动获取服务器时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
+        public virtual DateTime AddTime { get; set; }
 
         /// <summary>
         /// 更新用户
         /// 仅记录用户ID
         /// </summary>
         [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
-        public string EditWho { get; set; } = null!;
+        public string EditWho { get; set; }
 
         /// <summary>
         /// 更新时间
+        /// 更新数据时自动获取服务器时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "更新时间")]
-        public DateTime EditTime { get; set; } = DateTime.Now;
+        [SugarColumn(ColumnDescription = "更新时间", UpdateServerTime = true)]
+        public DateTime EditTime { get; set; }
 
         /// <summary>
         /// 版本号

+ 27 - 21
WCS.Entity/WCS_AGVTask.cs → WCS.Entity/WCS_AgvTaskInfo.cs

@@ -7,9 +7,10 @@ namespace WCS.Entity
     /// <summary>
     /// AGV任务中间表
     /// </summary>
-    [SugarTable(nameof(WCS_AGVTask), "AGV任务中间表")]
+    [SugarTable(nameof(WCS_AgvTaskInfo) + "_{year}{month}{day}", "AGV任务中间表")]
+    [SplitTable(SplitType.Week)]//按年分表 (自带分表支持 年、季、月、周、日)
     [DataContract]
-    public class WCS_AGVTask
+    public class WCS_AgvTaskInfo
     {
         /// <summary>
         /// ID
@@ -21,7 +22,7 @@ namespace WCS.Entity
         /// AGVID
         /// </summary>
         [SugarColumn(ColumnDescription = "AGVID", Length = 20), DataMember(Order = 1)]
-        public string AGVID { get; set; }
+        public string AgvID { get; set; }
 
         /// <summary>
         /// 任务类型
@@ -42,14 +43,14 @@ namespace WCS.Entity
         /// </summary>
         [SugarColumn(ColumnDescription = "AGV自身状态")]
         [DataMember(Order = 4)]
-        public AGVTaskStatus AGVStatus { get; set; }
+        public AGVTaskStatus AgvStatus { get; set; }
 
         /// <summary>
         /// 车间
         /// </summary>
         [SugarColumn(ColumnDescription = "车间")]
         [DataMember(Order = 5)]
-        public int Workshop { get; set; }
+        public int WorkShop { get; set; }
 
         /// <summary>
         /// 站台
@@ -68,38 +69,43 @@ namespace WCS.Entity
         /// <summary>
         /// 货物数量(1.两个位置放1个货物,2.两个位置放2个货物)
         /// </summary>
+
         [SugarColumn(ColumnDescription = "货物数量(1.两个位置放1个货物,2.两个位置放2个货物)")]
         [DataMember(Order = 11)]
-        public int Goodsnum { get; set; }
+        public int GoodsSum { get; set; }
 
-        /// <summary>
-        /// 创建时间
+        // <summary>
+        /// 创建用户
+        /// 仅记录用户ID
         /// </summary>
-        [SugarColumn(ColumnDescription = "创建时间")]
-        [DataMember(Order = 8)]
-        public DateTime CreateTime { get; set; }
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
 
         /// <summary>
-        /// WCS更新时间
+        /// 创建时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "WCS更新时间")]
-        [DataMember(Order = 9)]
-        public DateTime? UpdateTime { get; set; }
+        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
+        public DateTime AddTime { get; set; }
 
         /// <summary>
         /// AGV更新时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "AGV更新时间")]
+        [SugarColumn(ColumnDescription = "AGV更新时间", UpdateServerTime = true)]
         [DataMember(Order = 10)]
-        public DateTime? AGVUpdateTime { get; set; }
+        public DateTime? AgvUpdateTime { get; set; }
 
         /// <summary>
         /// 更新用户
-        /// 记录用户ID
+        /// 记录用户ID
         /// </summary>
-        [SugarColumn(ColumnDescription = "更新用户")]
-        [DataMember(Order = 11)]
-        public string UPDATEUSER { get; set; }
+        [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
+        public string EditWho { get; set; }
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间")]
+        public DateTime EditTime { get; set; }
     }
 
     /// <summary>

+ 8 - 8
WCS.Entity/WCS_GROUPMEMBER.cs → WCS.Entity/WCS_DeviceGrp.cs

@@ -5,31 +5,31 @@ namespace WCS.Entity
     /// <summary>
     /// 设备组
     /// </summary>
-    [SugarTable(nameof(WCS_GROUPMEMBER), "设备组")]
-    public class WCS_GROUPMEMBER : OBJ
+    [SugarTable(nameof(WCS_DeviceGrp), "设备组")]
+    public class WCS_DeviceGrp : OBJ
     {
         /// <summary>
         /// 组设备编号
         /// </summary>
         [SugarColumn(ColumnDescription = "组设备编号")]
-        public string GROUPCODE { get; set; }
+        public string GroupCode { get; set; }
 
         /// <summary>
         /// 组设备信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(GROUPCODE))]
-        public WCS_DEVICEHdr GROUP { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(GroupCode))]
+        public WCS_DeviceInfo Group { get; set; }
 
         /// <summary>
         /// 子设备编号
         /// </summary>
         [SugarColumn(ColumnDescription = "子设备编号")]
-        public string MEMBERCODE { get; set; }
+        public string MemberCode { get; set; }
 
         /// <summary>
         /// 子设备信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(MEMBERCODE))]
-        public WCS_DEVICEHdr MEMBER { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(MemberCode))]
+        public WCS_DeviceInfo Member { get; set; }
     }
 }

+ 13 - 13
WCS.Entity/WCS_DEVICEHdr.cs → WCS.Entity/WCS_DeviceInfo.cs

@@ -6,8 +6,8 @@ namespace WCS.Entity
     /// <summary>
     /// 设备列表
     /// </summary>
-    [SugarTable(nameof(WCS_DEVICEHdr), "设备列表")]
-    public class WCS_DEVICEHdr : OBJ
+    [SugarTable(nameof(WCS_DeviceInfo), "设备列表")]
+    public class WCS_DeviceInfo : OBJ
     {
         [SugarColumn(IsIgnore = true)]
         public override int ID { get; set; }
@@ -16,41 +16,41 @@ namespace WCS.Entity
         /// 设备编号
         /// </summary>
         [SugarColumn(IsPrimaryKey = true, ColumnDescription = "设备编号", Length = 50)]
-        public string CODE { get; set; }
+        public string Code { get; set; }
 
         /// <summary>
         /// 设备名称
         /// </summary>
         [SugarColumn(Length = 50, ColumnDescription = "设备名称")]
-        public string NAME { get; set; }
+        public string Name { get; set; }
 
         /// <summary>
         /// 设备可用协议集合
         /// </summary>
-        [Navigate(NavigateType.OneToMany, nameof(WCS_DEVICEPROTOCOL.DEVICECODE))]
-        public List<WCS_DEVICEPROTOCOL> DEVICEPROTOCOLS { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(WCS_DeviceProt.DeviceCode))]
+        public List<WCS_DeviceProt> DeviceProtocol { get; set; }
 
         /// <summary>
         /// 设备可用路由集合
         /// </summary>
-        [Navigate(NavigateType.OneToMany, nameof(WCS_ROUTE.DEVICECODE))]
-        public List<WCS_ROUTE> ROUTES { get; set; }
+        [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; }
+        [Navigate(NavigateType.OneToMany, nameof(WCS_PathGrp.StartCode))]
+        public List<WCS_PathGrp> Paths { get; set; }
 
         /// <summary>
         /// 设备对应设备组信息
         /// </summary>
-        [Navigate(NavigateType.OneToMany, nameof(WCS_GROUPMEMBER.GROUPCODE))]
-        public List<WCS_GROUPMEMBER> DEVICEGROUP { get; set; }
+        [Navigate(NavigateType.OneToMany, nameof(WCS_DeviceGrp.GroupCode))]
+        public List<WCS_DeviceGrp> DeviceGroup { get; set; }
 
         public override string ToString()
         {
-            return CODE;
+            return Code;
         }
     }
 }

+ 9 - 9
WCS.Entity/WCS_DEVICEPROTOCOL.cs → WCS.Entity/WCS_DeviceProt.cs

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

+ 1 - 1
WCS.Entity/WCS_PROTOCOLDATA.cs

@@ -22,7 +22,7 @@ namespace WCS.Entity
         /// 设备详细信息
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(DEVICECOD))]
-        public WCS_DEVICEHdr DEVICE { get; set; }
+        public WCS_DeviceInfo DEVICE { get; set; }
 
         /// <summary>
         /// 确认时间

+ 7 - 6
WCS.Entity/WCS_PathHdr.cs → WCS.Entity/WCS_PathGrp.cs

@@ -5,36 +5,37 @@ namespace WCS.Entity
     /// <summary>
     /// 设备路径头表
     /// </summary>
-    public class WCS_PathHdr : OBJ
+    [SugarTable(nameof(WCS_PathGrp), "设备路径头表")]
+    public class WCS_PathGrp : OBJ
     {
         /// <summary>
         /// 起点地址编号
         /// </summary>
         [SugarColumn(ColumnDescription = "起点")]
-        public string? STARTCODE { get; set; }
+        public string? StartCode { get; set; }
 
         /// <summary>
         /// 起始点设备信息
         /// </summary>
         [Navigate(NavigateType.OneToOne, "STARTCODE")]
-        public WCS_DEVICEHdr? START { get; set; }
+        public WCS_DeviceInfo? Start { get; set; }
 
         /// <summary>
         /// 终点设备编号
         /// </summary>
         [SugarColumn(ColumnDescription = "终点")]
-        public string? ENDCODE { get; set; }
+        public string? EndCode { get; set; }
 
         /// <summary>
         /// 终点设备信息
         /// </summary>
         [Navigate(NavigateType.OneToOne, "ENDCODE")]
-        public WCS_DEVICEHdr? END { get; set; }
+        public WCS_DeviceInfo? End { get; set; }
 
         /// <summary>
         /// 路径
         /// </summary>
         [SugarColumn(ColumnDescription = "路径")]
-        public string? PATH { get; set; }
+        public string? Path { get; set; }
     }
 }

+ 16 - 12
WCS.Entity/WCS_PathDtl.cs → WCS.Entity/WCS_PathInfo.cs

@@ -2,43 +2,47 @@
 
 namespace WCS.Entity
 {
-    public class WCS_PathDtl
+    /// <summary>
+    /// 设备路径明细表
+    /// </summary>
+    [SugarTable(nameof(WCS_PathInfo), "设备路径明细表")]
+    public class WCS_PathInfo
     {
         /// <summary>
         /// 起始地址设备号
         /// </summary>
         [SugarColumn(ColumnDescription = "起始地址设备号")]
-        public string? STARTCODE { get; set; }
+        public string? StartCode { get; set; }
 
         /// <summary>
         /// 起点设备详细信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(STARTCODE))]
-        public WCS_DEVICEHdr? START { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(StartCode))]
+        public WCS_DeviceInfo? Start { get; set; }
 
         /// <summary>
         /// 终点地址设备号
         /// </summary>
         [SugarColumn(ColumnDescription = "终点地址设备号")]
-        public string? ENDCODE { get; set; }
+        public string? EndCode { get; set; }
 
         /// <summary>
         /// 终点设备详细信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(ENDCODE))]
-        public WCS_DEVICEHdr? END { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(EndCode))]
+        public WCS_DeviceInfo? End { get; set; }
 
         /// <summary>
         /// 路径点设备号
         /// </summary>
         [SugarColumn(ColumnDescription = "路径点设备号", IsNullable = true)]
-        public string? DEVICECODE { get; set; }
+        public string? DeviceCode { get; set; }
 
         /// <summary>
         /// 路径点详细信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(DEVICECODE))]
-        public WCS_DEVICEHdr? DEVICE { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(DeviceCode))]
+        public WCS_DeviceInfo? Device { get; set; }
 
         /// <summary>
         /// 前路径点设备号
@@ -50,7 +54,7 @@ namespace WCS.Entity
         /// 前路径点详细信息
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(PREVCODE))]
-        public WCS_DEVICEHdr? PREV { get; set; }
+        public WCS_DeviceInfo? PREV { get; set; }
 
         /// <summary>
         /// 后路径点设备号
@@ -62,6 +66,6 @@ namespace WCS.Entity
         /// 后路径点详细信息
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(NEXTCODE))]
-        public WCS_DEVICEHdr? NEXT { get; set; }
+        public WCS_DeviceInfo? NEXT { get; set; }
     }
 }

+ 13 - 6
WCS.Entity/WCS_PlcData.cs

@@ -16,12 +16,6 @@ namespace WCS.Entity
         [Column(Order = 0)]
         public virtual int ID { get; set; }
 
-        /// <summary>
-        /// 更新时间
-        /// </summary>
-        [SugarColumn(ColumnDescription = "更新时间")]
-        public DateTime UPDATETIME { get; set; } = DateTime.Now;
-
         /// <summary>
         /// 仓库
         /// </summary>
@@ -33,5 +27,18 @@ namespace WCS.Entity
         /// </summary>
         [SugarColumn(ColumnDescription = "内容", ColumnDataType = "text")]
         public string CONTENT { get; set; }
+
+        /// <summary>
+        /// 创建用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
+        public DateTime AddTime { get; set; }
     }
 }

+ 12 - 12
WCS.Entity/WCS_DATABLOCK.cs → WCS.Entity/WCS_PlcDataBlock.cs

@@ -6,8 +6,8 @@ namespace WCS.Entity
     /// <summary>
     /// PLC DB块配置表
     /// </summary>
-    [SugarTable(nameof(WCS_DATABLOCK), "PLC DB块配置表")]
-    public class WCS_DATABLOCK : OBJ
+    [SugarTable(nameof(WCS_PlcDataBlock), "PLC DB块配置表")]
+    public class WCS_PlcDataBlock : OBJ
     {
         /// <summary>
         /// ID
@@ -20,25 +20,25 @@ namespace WCS.Entity
         /// 编号
         /// </summary>
         [SugarColumn(IsPrimaryKey = true, Length = 20, ColumnDescription = "编号")]
-        public string CODE { get; set; }
+        public string Code { get; set; }
 
         /// <summary>
         /// 名称
         /// </summary>
         [SugarColumn(Length = 20, ColumnDescription = "名称")]
-        public string NAME { get; set; }
+        public string Name { get; set; }
 
         /// <summary>
         /// 关联PLC信息编号
         /// </summary>
         [SugarColumn(ColumnDescription = "关联PLC信息编号")]
-        public string PLCCODE { get; set; }
+        public string PlcCode { get; set; }
 
         /// <summary>
         /// 关联PLC信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(PLCCODE))]
-        public WCS_PLC PLC { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(PlcCode))]
+        public WCS_PlcSet PLC { get; set; }
 
         /// <summary>
         /// 西门子:DB520,其它:D0
@@ -50,29 +50,29 @@ namespace WCS.Entity
         /// 总长度
         /// </summary>
         [SugarColumn(ColumnDescription = "总长度")]
-        public int LENGTH { get; set; }
+        public int Length { get; set; }
 
         /// <summary>
         /// 结构体长度
         /// </summary>
         [SugarColumn(ColumnDescription = "结构体长度")]
-        public int DATALENGTH { get; set; }
+        public int DataLength { get; set; }
 
         /// <summary>
         /// 协议类型
         /// </summary>
         [SugarColumn(Length = 200, ColumnDescription = "协议类型")]
-        public string PROTOCOL { get; set; }
+        public string Protocol { get; set; }
 
         /// <summary>
         /// 无更新
         /// </summary>
         [SugarColumn(ColumnDescription = "无更新")]
-        public bool NOUPDATE { get; set; }
+        public bool NoUpDate { get; set; }
 
         public Type GetProtocolType()
         {
-            return Type.GetType(PROTOCOL);
+            return Type.GetType(Protocol);
         }
     }
 }

+ 9 - 9
WCS.Entity/WCS_PLC.cs → WCS.Entity/WCS_PlcSet.cs

@@ -6,8 +6,8 @@ namespace WCS.Entity
     /// <summary>
     /// WCS_PLC
     /// </summary>
-    [SugarTable(nameof(WCS_PLC), "PLC信息")]
-    public class WCS_PLC : OBJ
+    [SugarTable(nameof(WCS_PlcSet), "PLC信息")]
+    public class WCS_PlcSet : OBJ
     {
         [SugarColumn(IsIgnore = true)]
         [Obsolete]
@@ -17,13 +17,13 @@ namespace WCS.Entity
         /// 编号
         /// </summary>
         [SugarColumn(IsPrimaryKey = true, ColumnDescription = "编号", Length = 20)]
-        public string CODE { get; set; }
+        public string Code { get; set; }
 
         /// <summary>
         /// 名称
         /// </summary>
         [SugarColumn(ColumnDescription = "名称", Length = 20)]
-        public string NAME { get; set; }
+        public string Name { get; set; }
 
         /// <summary>
         /// IP
@@ -35,31 +35,31 @@ namespace WCS.Entity
         /// 端口
         /// </summary>
         [SugarColumn(ColumnDescription = "端口")]
-        public int PORT { get; set; } = 102;
+        public int Port { get; set; } = 102;
 
         /// <summary>
         /// 插槽号
         /// </summary>
         [SugarColumn(ColumnDescription = "插槽号")]
-        public int SLOT { get; set; }
+        public int Slot { get; set; }
 
         /// <summary>
         /// 机架号
         /// </summary>
         [SugarColumn(ColumnDescription = "机架号")]
-        public int RACK { get; set; }
+        public int Rack { get; set; }
 
         /// <summary>
         /// 厂商
         /// </summary>
         [SugarColumn(ColumnDescription = "厂商")]
-        public PLCType TYPE { get; set; }
+        public PLCType Type { get; set; }
 
         /// <summary>
         /// 型号
         /// </summary>
         [SugarColumn(ColumnDescription = "型号")]
-        public PLCMODEL MODEL { get; set; }
+        public PLCMODEL Model { get; set; }
     }
 
     /// <summary>

+ 7 - 7
WCS.Entity/WCS_ROUTE.cs

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

+ 0 - 37
WCS.Entity/WCS_TASK_DTL.cs

@@ -1,37 +0,0 @@
-using SqlSugar;
-using System;
-
-namespace WCS.Entity
-{
-    /// <summary>
-    /// 任务详情表
-    /// </summary>
-    [SugarTable(nameof(WCS_TASK_DTL), "任务表")]
-    public class WCS_TASK_DTL : OBJ
-    {
-        /// <summary>
-        /// 父级任务号
-        /// </summary>
-        public int ParentTaskCode { get; set; }
-
-        /// <summary>
-        /// 当前位置
-        /// </summary>
-        public string CurPoint { get; set; }
-
-        /// <summary>
-        /// 下一个地址
-        /// </summary>
-        public string NextPoint { get; set; }
-
-        /// <summary>
-        /// 描述
-        /// </summary>
-        public string Desc { get; set; }
-
-        /// <summary>
-        /// 执行时间
-        /// </summary>
-        public DateTime ExecTime { get; set; }
-    }
-}

+ 65 - 0
WCS.Entity/WCS_TaskDtl.cs

@@ -0,0 +1,65 @@
+using SqlSugar;
+using System;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace WCS.Entity
+{
+    /// <summary>
+    /// 任务流转表
+    /// </summary>
+    [SugarTable(nameof(WCS_TaskDtl) + "_{year}{month}{day}", "任务流转表")]
+    [SplitTable(SplitType.Week)]//按年分表 (自带分表支持 年、季、月、周、日)
+    public class WCS_TaskDtl : OBJ
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "ID")]
+        [Column(Order = 0)]
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 父级任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "父级任务号")]
+        public int ParentTaskCode { get; set; }
+
+        /// <summary>
+        /// 当前位置
+        /// </summary>
+        [SugarColumn(ColumnDescription = "当前位置")]
+        public string CurPoint { get; set; }
+
+        /// <summary>
+        /// 下一个地址
+        /// </summary>
+        [SugarColumn(ColumnDescription = "下一个地址")]
+        public string NextPoint { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        [SugarColumn(ColumnDescription = "描述")]
+        public string Desc { get; set; }
+
+        /// <summary>
+        /// 是否可用
+        /// </summary>
+        [SugarColumn(ColumnDescription = "是否可用")]
+        public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 创建用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// 新增数据时自动获取服务器时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
+        public DateTime AddTime { get; set; }
+    }
+}

+ 67 - 27
WCS.Entity/WCS_TASK.cs → WCS.Entity/WCS_TaskInfo.cs

@@ -6,38 +6,44 @@ namespace WCS.Entity
     /// <summary>
     /// 任务表
     /// </summary>
-    [SugarTable(nameof(WCS_TASK), "任务表")]
-    public class WCS_TASK : OBJ
+    [SugarTable(nameof(WCS_TaskInfo), "任务表")]
+    public class WCS_TaskInfo
     {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "ID")]
+        public virtual int ID { get; set; }
+
         /// <summary>
         /// 生产编码
         /// </summary>
         [SugarColumn(ColumnDescription = "生产编码", Length = 50)]
-        public string BARCODE { get; set; }
+        public string BarCode { get; set; }
 
         /// <summary>
         /// 任务类型
         /// </summary>
         [SugarColumn(ColumnDescription = "任务类型")]
-        public TaskType TYPE { get; set; }
+        public TaskType Type { get; set; }
 
         /// <summary>
         /// 任务状态
         /// </summary>
         [SugarColumn(ColumnDescription = "任务状态")]
-        public TaskStatus STATUS { get; set; }
+        public TaskStatus Status { get; set; }
 
         /// <summary>
         /// 起始地址
         /// </summary>
         [SugarColumn(ColumnDescription = "起始地址", Length = 20)]
-        public string ADDRFROM { get; set; }
+        public string AddrFrom { get; set; }
 
         /// <summary>
         /// 目标地址
         /// </summary>
         [SugarColumn(ColumnDescription = "目标地址", Length = 20)]
-        public string ADDRTO { get; set; }
+        public string AddrTo { get; set; }
 
         /// <summary>
         /// 最后一个交互点
@@ -49,85 +55,86 @@ namespace WCS.Entity
         /// 下一个地址
         /// </summary>
         [SugarColumn(ColumnDescription = "下一个地址", Length = 20)]
-        public string ADDRNEXT { get; set; }
+        public string AddrNext { get; set; }
 
         /// <summary>
         /// 巷道
         /// </summary>
         [SugarColumn(ColumnDescription = "巷道", Length = 10, IsNullable = true)]
-        public string TUNNEL { get; set; }
+        public string Tunnel { get; set; }
 
         /// <summary>
         /// 楼层
         /// </summary>
         [SugarColumn(ColumnDescription = "楼层")]
-        public int FLOOR { get; set; }
+        public int Floor { get; set; }
 
         /// <summary>
         /// 设备
         /// </summary>
         [SugarColumn(ColumnDescription = "设备", Length = 20, IsNullable = true)]
-        public string DEVICE { get; set; }
+        public string Device { get; set; }
 
         /// <summary>
         /// 堆垛机放货站台
         /// </summary>
         [SugarColumn(ColumnDescription = "堆垛机放货站台", Length = 20, IsNullable = true)]
-        public string SRMSTATION { get; set; }
+        public string SrmStation { get; set; }
 
         /// <summary>
-        ///创建时间
+        /// 创建时间
+        /// 新增数据时自动获取服务器时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "创建时间")]
-        public DateTime CREATETIME { get; set; } = DateTime.Now;
+        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
+        public DateTime AddTime { get; set; }
 
         /// <summary>
         /// 开始时间
         /// </summary>
         [SugarColumn(ColumnDescription = "开始时间")]
-        public DateTime? STARTTIME { get; set; }
+        public DateTime? StartTime { get; set; }
 
         /// <summary>
         /// 结束时间
         /// </summary>
         [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
-        public DateTime? ENDTIME { get; set; }
+        public DateTime? EedTime { get; set; }
 
         /// <summary>
         /// 单号
         /// </summary>
         [SugarColumn(ColumnDescription = "单号", IsNullable = true)]
-        public int DOCID { get; set; }
+        public int DocID { get; set; }
 
         /// <summary>
         /// 托盘类型
         /// </summary>
         [SugarColumn(ColumnDescription = "托盘类型", IsNullable = true)]
-        public short PALLETTYPE { get; set; }
+        public short PalletType { get; set; }
 
         /// <summary>
         /// 产线
         /// </summary>
         [SugarColumn(ColumnDescription = "产线", IsNullable = true)]
-        public short PRODLINE { get; set; }
+        public short ProdLine { get; set; }
 
         /// <summary>
         /// 满盘数量
         /// </summary>
         [SugarColumn(ColumnDescription = "满盘数量", IsNullable = true)]
-        public short FULLQTY { get; set; }
+        public short FullQty { get; set; }
 
         /// <summary>
         /// 高度
         /// </summary>
         [SugarColumn(ColumnDescription = "高度", IsNullable = true)]
-        public short HEIGHT { get; set; }
+        public short Height { get; set; }
 
         /// <summary>
         /// WMS任务号
         /// </summary>
         [SugarColumn(ColumnDescription = "WMS任务号")]
-        public int WMSTASK { get; set; }
+        public int WmsTask { get; set; }
 
         /// <summary>
         /// 任务组ID
@@ -139,19 +146,19 @@ namespace WCS.Entity
         /// 更新状态
         /// </summary>
         [SugarColumn(ColumnDescription = "更新状态")]
-        public TaskStatus UPLOADED { get; set; }
+        public TaskStatus Uploaded { get; set; }
 
         /// <summary>
         /// AGV任务号
         /// </summary>
         [SugarColumn(ColumnDescription = "AGV任务号", IsNullable = true)]
-        public int AGVTASKID { get; set; }
+        public int AgvTaskID { get; set; }
 
         /// <summary>
         /// AGV任务详细信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(AGVTASKID))]
-        public WCS_AGVTask AGVTASK { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(AgvTaskID))]
+        public WCS_AgvTaskInfo AgvTask { get; set; }
 
         /// <summary>
         /// 优先级
@@ -176,6 +183,39 @@ namespace WCS.Entity
         /// </summary>
         [SugarColumn(ColumnDescription = "产品编码", IsNullable = true)]
         public string MaterialCode { get; set; }
+
+        /// <summary>
+        /// 是否可用
+        /// </summary>
+        [SugarColumn(ColumnDescription = "是否可用")]
+        public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 创建用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
+
+        /// <summary>
+        /// 更新用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
+        public string EditWho { get; set; }
+
+        /// <summary>
+        /// 更新时间
+        /// 更新数据时自动获取服务器时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间", UpdateServerTime = true)]
+        public DateTime EditTime { get; set; }
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", ColumnDataType = "timestamp", IsNullable = true, IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
+        public byte[] VER { get; set; }
     }
 
     /// <summary>

+ 49 - 34
WCS.Entity/WCS_TASK_OLD.cs → WCS.Entity/WCS_TaskOld.cs

@@ -1,42 +1,55 @@
 using SqlSugar;
 using System;
 
-namespace WCS.Entity.Protocol
+namespace WCS.Entity
 {
     /// <summary>
-    /// WCS任务表_所有已经完成的
+    /// 任务表
     /// </summary>
-    public class WCS_TASK_OLD : OBJ
+    [SugarTable(nameof(WCS_TaskOld), "任务表")]
+    public class WCS_TaskOld
     {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "ID")]
+        public long ID { get; set; }
+
+        /// <summary>
+        /// WCS任务号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "WCS任务号")]
+        public int WcsTaskID { get; set; }
+
         /// <summary>
         /// 生产编码
         /// </summary>
         [SugarColumn(ColumnDescription = "生产编码", Length = 50)]
-        public string BARCODE { get; set; }
+        public string BarCode { get; set; }
 
         /// <summary>
         /// 任务类型
         /// </summary>
         [SugarColumn(ColumnDescription = "任务类型")]
-        public TaskType TYPE { get; set; }
+        public TaskType Type { get; set; }
 
         /// <summary>
         /// 任务状态
         /// </summary>
         [SugarColumn(ColumnDescription = "任务状态")]
-        public TaskStatus STATUS { get; set; }
+        public TaskStatus Status { get; set; }
 
         /// <summary>
         /// 起始地址
         /// </summary>
         [SugarColumn(ColumnDescription = "起始地址", Length = 20)]
-        public string ADDRFROM { get; set; }
+        public string AddrFrom { get; set; }
 
         /// <summary>
         /// 目标地址
         /// </summary>
         [SugarColumn(ColumnDescription = "目标地址", Length = 20)]
-        public string ADDRTO { get; set; }
+        public string AddrTo { get; set; }
 
         /// <summary>
         /// 最后一个交互点
@@ -48,85 +61,85 @@ namespace WCS.Entity.Protocol
         /// 下一个地址
         /// </summary>
         [SugarColumn(ColumnDescription = "下一个地址", Length = 20)]
-        public string ADDRNEXT { get; set; }
+        public string AddrNext { get; set; }
 
         /// <summary>
         /// 巷道
         /// </summary>
         [SugarColumn(ColumnDescription = "巷道", Length = 10, IsNullable = true)]
-        public string TUNNEL { get; set; }
+        public string Tunnel { get; set; }
 
         /// <summary>
         /// 楼层
         /// </summary>
         [SugarColumn(ColumnDescription = "楼层")]
-        public int FLOOR { get; set; }
+        public int Floor { get; set; }
 
         /// <summary>
         /// 设备
         /// </summary>
         [SugarColumn(ColumnDescription = "设备", Length = 20, IsNullable = true)]
-        public string DEVICE { get; set; }
+        public string Device { get; set; }
 
         /// <summary>
         /// 堆垛机放货站台
         /// </summary>
         [SugarColumn(ColumnDescription = "堆垛机放货站台", Length = 20, IsNullable = true)]
-        public string SRMSTATION { get; set; }
+        public string SrmStation { get; set; }
 
         /// <summary>
         ///创建时间
         /// </summary>
         [SugarColumn(ColumnDescription = "创建时间")]
-        public DateTime CREATETIME { get; set; } = DateTime.Now;
+        public DateTime AddTime { get; set; }
 
         /// <summary>
         /// 开始时间
         /// </summary>
         [SugarColumn(ColumnDescription = "开始时间")]
-        public DateTime? STARTTIME { get; set; }
+        public DateTime? StartTime { get; set; }
 
         /// <summary>
         /// 结束时间
         /// </summary>
         [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
-        public DateTime? ENDTIME { get; set; }
+        public DateTime? EedTime { get; set; }
 
         /// <summary>
         /// 单号
         /// </summary>
         [SugarColumn(ColumnDescription = "单号", IsNullable = true)]
-        public int DOCID { get; set; }
+        public int DocID { get; set; }
 
         /// <summary>
         /// 托盘类型
         /// </summary>
         [SugarColumn(ColumnDescription = "托盘类型", IsNullable = true)]
-        public short PALLETTYPE { get; set; }
+        public short PalletType { get; set; }
 
         /// <summary>
         /// 产线
         /// </summary>
         [SugarColumn(ColumnDescription = "产线", IsNullable = true)]
-        public short PRODLINE { get; set; }
+        public short ProdLine { get; set; }
 
         /// <summary>
         /// 满盘数量
         /// </summary>
         [SugarColumn(ColumnDescription = "满盘数量", IsNullable = true)]
-        public short FULLQTY { get; set; }
+        public short FullQty { get; set; }
 
         /// <summary>
         /// 高度
         /// </summary>
         [SugarColumn(ColumnDescription = "高度", IsNullable = true)]
-        public short HEIGHT { get; set; }
+        public short Height { get; set; }
 
         /// <summary>
         /// WMS任务号
         /// </summary>
         [SugarColumn(ColumnDescription = "WMS任务号")]
-        public int WMSTASK { get; set; }
+        public int WmsTask { get; set; }
 
         /// <summary>
         /// 任务组ID
@@ -138,19 +151,19 @@ namespace WCS.Entity.Protocol
         /// 更新状态
         /// </summary>
         [SugarColumn(ColumnDescription = "更新状态")]
-        public TaskStatus UPLOADED { get; set; }
+        public TaskStatus Uploaded { get; set; }
 
         /// <summary>
         /// AGV任务号
         /// </summary>
         [SugarColumn(ColumnDescription = "AGV任务号", IsNullable = true)]
-        public int AGVTASKID { get; set; }
+        public int AgvTaskID { get; set; }
 
         /// <summary>
         /// AGV任务详细信息
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(AGVTASKID))]
-        public WCS_AGVTask AGVTASK { get; set; }
+        [Navigate(NavigateType.OneToOne, nameof(AgvTaskID))]
+        public WCS_AgvTaskInfo AgvTask { get; set; }
 
         /// <summary>
         /// 优先级
@@ -176,22 +189,24 @@ namespace WCS.Entity.Protocol
         [SugarColumn(ColumnDescription = "产品编码", IsNullable = true)]
         public string MaterialCode { get; set; }
 
+        /// <summary>
+        /// 创建用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
+
         /// <summary>
         /// 更新用户
+        /// 仅记录用户ID
         /// </summary>
         [SugarColumn(ColumnDescription = "更新用户", Length = 50)]
-        public string UPDATEUSER { get; set; }
-
-        ///// <summary>
-        ///// 更新用户详细信息
-        ///// </summary>
-        //[Navigate(NavigateType.OneToOne, nameof(UPDATEUSER))]
-        //public WCS_USERS USER { get; set; }
+        public string EditWho { get; set; }
 
         /// <summary>
         /// 更新时间
         /// </summary>
         [SugarColumn(ColumnDescription = "更新时间")]
-        public DateTime UPDATETIME { get; set; } = DateTime.Now;
+        public DateTime EditTime { get; set; }
     }
 }

+ 2 - 2
WCS.Service/Systems/DataCollectionSysyem.cs

@@ -1,4 +1,5 @@
 using Newtonsoft.Json;
+using ServiceCenter;
 using ServiceCenter.Helpers;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
@@ -32,8 +33,7 @@ namespace WCS.Service.Systems
 
                 var plcData = new WCS_PlcData()
                 {
-                    UPDATETIME = DateTime.Now,
-                    WAREHOUSE = "111",
+                    WAREHOUSE = ServiceHub.WarehouseName,
                     CONTENT = JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }),
                 };
 

+ 21 - 22
WCS.Service/Worker.cs

@@ -7,7 +7,6 @@ using SqlSugar;
 using System.Text;
 using WCS.Core;
 using WCS.Entity;
-using WCS.Entity.Protocol;
 using WCS.Entity.Protocol.BCR;
 using WCS.Entity.Protocol.Station;
 using WCS.Service.Systems;
@@ -112,19 +111,19 @@ namespace WCS.Service
                     {
                         case "WCSDB"://WCS基本数据库
                             SqlSugarHelper.SetDefault(connectionString.Key);
-                            _db.CodeFirst.InitTables(typeof(WCS_PLC));
-                            _db.CodeFirst.InitTables(typeof(WCS_DATABLOCK));
-                            _db.CodeFirst.InitTables(typeof(WCS_DEVICEHdr));
-                            _db.CodeFirst.InitTables(typeof(WCS_PathHdr));
-                            _db.CodeFirst.InitTables(typeof(WCS_PathDtl));
-                            _db.CodeFirst.InitTables(typeof(WCS_ROUTE));
-                            _db.CodeFirst.InitTables(typeof(WCS_TASK));
-                            _db.CodeFirst.InitTables(typeof(WCS_TASK_DTL));
-                            _db.CodeFirst.InitTables(typeof(WCS_TASK_OLD));
+                            _db.CodeFirst.InitTables(typeof(WCS_PlcSet));
+                            _db.CodeFirst.InitTables(typeof(WCS_PlcDataBlock));
                             _db.CodeFirst.InitTables(typeof(WCS_PlcData));
-                            _db.CodeFirst.InitTables(typeof(WCS_AGVTask));
-                            _db.CodeFirst.InitTables(typeof(WCS_DEVICEPROTOCOL));
-                            _db.CodeFirst.InitTables(typeof(WCS_GROUPMEMBER));
+                            _db.CodeFirst.InitTables(typeof(WCS_DeviceInfo));
+                            _db.CodeFirst.InitTables(typeof(WCS_DeviceGrp));
+                            _db.CodeFirst.InitTables(typeof(WCS_DeviceProt));
+                            _db.CodeFirst.InitTables(typeof(WCS_PathInfo));
+                            _db.CodeFirst.InitTables(typeof(WCS_PathGrp));
+                            _db.CodeFirst.InitTables(typeof(WCS_Route));
+                            _db.CodeFirst.InitTables(typeof(WCS_TaskInfo));
+                            _db.CodeFirst.InitTables(typeof(WCS_TaskDtl));
+                            _db.CodeFirst.InitTables(typeof(WCS_TaskOld));
+                            _db.CodeFirst.InitTables(typeof(WCS_AgvTaskInfo));
 
                             break;
 
@@ -165,13 +164,13 @@ namespace WCS.Service
                 SqlSugarHelper.Do(db =>
                 {
                     var _db = db.Connect;
-                    var dataBlocks = _db.Queryable<WCS_DATABLOCK>().Includes(v => v.PLC).ToList();
+                    var dataBlocks = _db.Queryable<WCS_PlcDataBlock>().Includes(v => v.PLC).ToList();
                     list.AddRange(dataBlocks.Select(dataBlock => new PLCData()
                     {
                         IP = dataBlock.PLC.IP,
                         DB = dataBlock.NO,
-                        Length = dataBlock.LENGTH,
-                        DataLength = dataBlock.DATALENGTH,
+                        Length = dataBlock.Length,
+                        DataLength = dataBlock.DataLength,
                     }));
                 });
                 PlcData.Init(plcDataConnectionString).InitPlcData(list);
@@ -191,11 +190,11 @@ namespace WCS.Service
                 {
                     var _db = db.Connect;
                     //获取所有DB块读写协议
-                    var dbProtocols = _db.Queryable<WCS_DEVICEPROTOCOL>().Includes(v => v.DB, p => p.PLC).ToList();
+                    var dbProtocols = _db.Queryable<WCS_DeviceProt>().Includes(v => v.DB, p => p.PLC).ToList();
                     foreach (var dbProtocol in dbProtocols)
                     {
 #pragma warning disable CS8604 // 引用类型参数可能为 null。
-                        Add(Type.GetType(dbProtocol.DB.PROTOCOL), dbProtocol.DEVICECODE, dbProtocol.POSITION, dbProtocol.DB, dbProtocol.DB.PLC);
+                        Add(Type.GetType(dbProtocol.DB.Protocol), dbProtocol.DeviceCode, dbProtocol.Position, dbProtocol.DB, dbProtocol.DB.PLC);
 #pragma warning restore CS8604 // 引用类型参数可能为 null。
                     }
                 });
@@ -231,7 +230,7 @@ namespace WCS.Service
         /// <param name="position">地址</param>
         /// <param name="db">db</param>
         /// <param name="plc">PLC</param>
-        public static void Add(Type type, string code, int position, WCS_DATABLOCK db, WCS_PLC plc)
+        public static void Add(Type type, string code, int position, WCS_PlcDataBlock db, WCS_PlcSet plc)
         {
             var info = new ProtocolInfo
             {
@@ -242,9 +241,9 @@ namespace WCS.Service
                     PLCInfo = new PLCInfo
                     {
                         IP = plc.IP,
-                        Port = plc.PORT,
-                        Rack = plc.RACK,
-                        Slot = plc.SLOT,
+                        Port = plc.Port,
+                        Rack = plc.Rack,
+                        Slot = plc.Slot,
                         Type = Core.PLCType.Siemens
                     }
                 }

+ 77 - 15
WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -1,5 +1,7 @@
 using ServiceCenter.SqlSugars;
+using WCS.Core;
 using WCS.Entity;
+using WCS.WorkEngineering.Worlds.Logs;
 
 namespace WCS.WorkEngineering.Extensions
 {
@@ -15,17 +17,15 @@ namespace WCS.WorkEngineering.Extensions
         /// <param name="db">数据库上下文</param>
         /// <param name="curPoint">当前地址</param>
         /// <param name="desc">描述</param>
-        public static void AddWCS_TASK_DTL(this WCS_TASK task, SqlSugarHelper db, string curPoint, string desc)
+        public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string desc)
         {
-            db.Connect.Insertable(new WCS_TASK_DTL
+            db.Default.Insertable(new WCS_TaskDtl
             {
                 ParentTaskCode = task.ID,
-                CurPoint = "",
+                CurPoint = curPoint,
                 NextPoint = "",
-                Desc = "",
-                UPDATETIME = DateTime.Now,
-                ExecTime = DateTime.Now,
-                UPDATEUSER = "WCS"
+                Desc = desc,
+                AddWho = "WCS"
             }).AddQueue();
         }
 
@@ -37,18 +37,80 @@ namespace WCS.WorkEngineering.Extensions
         /// <param name="curPoint">当前地址</param>
         /// <param name="NextPoint">下一个地址</param>
         /// <param name="desc">描述</param>
-        public static void AddWCS_TASK_DTL(this WCS_TASK task, SqlSugarHelper db, string curPoint, string NextPoint, string desc)
+        public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string NextPoint, string desc)
         {
-            db.Connect.Insertable(new WCS_TASK_DTL
+            db.Default.Insertable(new WCS_TaskDtl
             {
                 ParentTaskCode = task.ID,
-                CurPoint = "",
-                NextPoint = "",
-                Desc = "",
-                UPDATETIME = DateTime.Now,
-                ExecTime = DateTime.Now,
-                UPDATEUSER = "WCS"
+                CurPoint = curPoint,
+                NextPoint = NextPoint,
+                Desc = desc,
+                AddWho = "WCS"
             }).AddQueue();
         }
+
+        /// <summary>
+        /// 完成或取消任务
+        /// </summary>
+        /// <param name="taskInfo"></param>
+        /// <param name="db"></param>
+        public static void CompleteOrCancelTasks(this WCS_TaskInfo taskInfo, SqlSugarHelper db, World world)
+        {
+            if (taskInfo.Status is not Entity.TaskStatus.Finish and not Entity.TaskStatus.Cancel)
+            {
+                world.Log("任务未完成或取消,无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid, ErrorTypeEnum.Kown, LogUpLoadEnum.NotUpLoad);
+            }
+            else // 任务完成或取消,进行相关同步动作
+            {
+                WCS_TaskOld taskOld = db.Default.Queryable<WCS_TaskOld>().Where(v => v.WcsTaskID == taskInfo.ID).OrderByDescending(v => v.AddTime).First();
+                if (taskOld is null)
+                {
+                    world.Log($"WCS_TaskOld表中不存在任务:{taskInfo.ID},无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid, ErrorTypeEnum.Kown, LogUpLoadEnum.UpLoadWMS);
+                }
+                else
+                {
+                    //状态
+                    taskOld.Status = taskInfo.Status;
+                    taskOld.Uploaded = taskInfo.Uploaded;
+                    //任务号
+                    taskOld.WmsTask = taskInfo.WmsTask;
+                    taskOld.AgvTaskID = taskInfo.AgvTaskID;
+                    taskOld.TaskGroupKey = taskInfo.TaskGroupKey;
+                    taskOld.Priority = taskInfo.Priority;
+                    //时间与用户
+                    taskOld.AddTime = taskInfo.AddTime;
+                    taskOld.AddWho = taskInfo.AddWho;
+                    taskOld.StartTime = taskInfo.StartTime;
+                    taskOld.EedTime = taskInfo.EedTime;
+                    taskOld.EditWho = taskInfo.EditWho;
+                    taskOld.EditTime = taskInfo.EditTime;
+                    //条码与地址
+                    taskOld.BarCode = taskInfo.BarCode;
+                    taskOld.MaterialCode = taskInfo.MaterialCode;
+                    taskOld.AddrFrom = taskInfo.AddrFrom;
+                    taskOld.AddrTo = taskInfo.AddrTo;
+                    taskOld.LastInteractionPoint = taskInfo.LastInteractionPoint;
+                    taskOld.AddrNext = taskInfo.AddrNext;
+                    taskOld.Tunnel = taskInfo.Tunnel;
+                    taskOld.Floor = taskInfo.Floor;
+                    taskOld.Device = taskInfo.Device;
+                    taskOld.SrmStation = taskInfo.SrmStation;
+                    //码垛信息
+                    taskOld.DocID = taskInfo.DocID;
+                    taskOld.PalletType = taskInfo.PalletType;
+                    taskOld.ProdLine = taskInfo.ProdLine;
+                    taskOld.FullQty = taskInfo.FullQty;
+                    //外形信息
+                    taskOld.Height = taskInfo.Height;
+                    taskOld.Length = taskInfo.Length;
+                    //手动处理备注
+                    taskOld.ManualRemarks = taskInfo.ManualRemarks;
+
+                    //更新任务历史表,删除任务当前表
+                    db.Default.Updateable(taskOld).AddQueue();
+                    db.Default.Deleteable(taskInfo).AddQueue();
+                }
+            }
+        }
     }
 }

+ 68 - 66
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -63,41 +63,41 @@ namespace WCS.WorkEngineering.Systems
             //判断完成任务号是否大于0
             if (obj.Data2.TaskFinishiId > 0)
             {
-                SqlSugarHelper.Do(db =>
-                {
-                    //根据DB521任务号获取对应任务
-                    var task = db.Default.Queryable<WCS_TASK>().First(v => v.ID == obj.Data2.TaskFinishiId) ?? throw new KnownException($"未找到任务{obj.Data2.TaskFinishiId}", LogLevelEnum.High);
-                    if (task.STATUS != Entity.TaskStatus.StackerExecution)
-                        throw new KnownException($"任务{task.ID}状态是{task.STATUS.Description()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
-                    //根据任务类型做不同的处理
-                    switch (task.TYPE)
-                    {
-                        case TaskType.EnterDepot:
-                            //完成任务
-                            task.STATUS = Entity.TaskStatus.Finish;
-                            task.UPDATETIME = DateTime.Now;
-                            task.ENDTIME = DateTime.Now;
-                            task.AddWCS_TASK_DTL(db, task.ADDRTO, "入库任务结束");
-                            break;
-
-                        case TaskType.OutDepot:
-                            task.STATUS = Entity.TaskStatus.ConveyorInProgress;
-                            task.UPDATETIME = DateTime.Now;
-                            task.AddWCS_TASK_DTL(db, task.SRMSTATION, "出库任务到达放货站台");
-                            break;
-
-                        case TaskType.TransferDepot:
-                            task.STATUS = Entity.TaskStatus.Finish;
-                            task.UPDATETIME = DateTime.Now;
-                            task.ENDTIME = DateTime.Now;
-                            task.AddWCS_TASK_DTL(db, task.ADDRTO, "移库任务结束");
-                            break;
-                    }
-
-                    db.Default.Updateable(task).AddQueue();
-                    db.Default.SaveQueues();
-                    obj.Data.OkAck = 1;
-                });
+                var result = SqlSugarHelper.Do(db =>
+                  {
+                      //根据DB521任务号获取对应任务
+                      var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskFinishiId) ?? throw new KnownException($"未找到任务{obj.Data2.TaskFinishiId}", LogLevelEnum.High);
+                      if (task.Status != Entity.TaskStatus.StackerExecution)
+                          throw new KnownException($"任务{task.ID}状态是{task.Status.Description()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
+                      //根据任务类型做不同的处理
+                      switch (task.Type)
+                      {
+                          case TaskType.EnterDepot:
+                              //完成任务
+                              task.Status = Entity.TaskStatus.Finish;
+                              task.EedTime = DateTime.Now;
+                              task.AddWCS_TASK_DTL(db, task.AddrTo, "入库任务结束");
+                              break;
+
+                          case TaskType.OutDepot:
+                              task.Status = Entity.TaskStatus.ConveyorInProgress;
+                              task.AddWCS_TASK_DTL(db, task.SrmStation, "出库任务到达放货站台");
+                              break;
+
+                          case TaskType.TransferDepot:
+                              task.Status = Entity.TaskStatus.Finish;
+                              task.EedTime = DateTime.Now;
+                              task.AddWCS_TASK_DTL(db, task.AddrTo, "移库任务结束");
+                              break;
+                      }
+
+                      db.Default.Updateable(task).AddQueue();
+                      task.CompleteOrCancelTasks(db, World);
+                      db.Default.SaveQueues();
+                  });
+                if (!result) throw new KnownException("数据库提交事务错误", LogLevelEnum.High);
+                // 写入信号
+                obj.Data.OkAck = 1;
             }
 
             //堆垛机是否可以下发任务
@@ -115,22 +115,22 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(db =>
             {
                 //获取当前堆垛机的所有未完成任务
-                var tasks = db.Default.Queryable<WCS_TASK>().Where(v => v.STATUS < Entity.TaskStatus.Finish && (v.DEVICE == obj.Entity.Code));
+                var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Status < Entity.TaskStatus.Finish && (v.Device == obj.Entity.Code));
                 //任务集合是否有处于堆垛机执行状态的任务
-                if (tasks.Any(v => v.STATUS == Entity.TaskStatus.StackerExecution)) throw new KnownException($"有任务处于堆垛机执行状态", LogLevelEnum.High);
+                if (tasks.Any(v => v.Status == Entity.TaskStatus.StackerExecution)) throw new KnownException($"有任务处于堆垛机执行状态", LogLevelEnum.High);
 
                 //判断是否存在调整优先级任务
-                if (!tasks.Any(v => v.TYPE != TaskType.TransferDepot && v.STATUS < Entity.TaskStatus.StackerExecution && v.Priority > 0))
+                if (!tasks.Any(v => v.Type != TaskType.TransferDepot && v.Status < Entity.TaskStatus.StackerExecution && v.Priority > 0))
                 {
                     //不存在调整优先级任务,判断是否存在移库任务
-                    isTransfer = tasks.Any(v => v.TYPE == TaskType.TransferDepot && v.STATUS == Entity.TaskStatus.NewBuild);
+                    isTransfer = tasks.Any(v => v.Type == TaskType.TransferDepot && v.Status == Entity.TaskStatus.NewBuild);
                 }
                 else //存在调整优先级任务
                 {
                     //获取出库任务中新建状态最大优先级
-                    var outPriorityNewBuild = tasks.Where(v => v.TYPE == TaskType.OutDepot && v.STATUS == Entity.TaskStatus.NewBuild).Max(v => v.Priority);
+                    var outPriorityNewBuild = tasks.Where(v => v.Type == TaskType.OutDepot && v.Status == Entity.TaskStatus.NewBuild).Max(v => v.Priority);
                     //获取入库任务中最后一个交互点是取货点任务的最大优先级
-                    var enterPriority = tasks.Where(v => v.TYPE == TaskType.EnterDepot && v.STATUS < Entity.TaskStatus.StackerExecution && PickUpDevices.Any(p => p.Entity.Code == v.LastInteractionPoint))
+                    var enterPriority = tasks.Where(v => v.Type == TaskType.EnterDepot && v.Status < Entity.TaskStatus.StackerExecution && PickUpDevices.Any(p => p.Entity.Code == v.LastInteractionPoint))
                                              .Max(v => v.Priority);
                     //出入库最大优先级相加大于零
                     if (outPriorityNewBuild + enterPriority > 0)
@@ -145,31 +145,33 @@ namespace WCS.WorkEngineering.Systems
 
             if (isTransfer)
             {
-                SqlSugarHelper.Do(db =>
-                {
-                    //获取一条当前堆垛机优先级最高的新建移库任务
-                    var task = db.Default.Queryable<WCS_TASK>().Where(v => v.DEVICE == obj.Entity.Code && v.TYPE == TaskType.TransferDepot && v.STATUS == Entity.TaskStatus.NewBuild)
-                                                               .OrderByDescending(v => v.Priority)
-                                                               .First() ?? throw new KnownException("未找到移库任务", LogLevelEnum.High);
-                    //任务状态改为堆垛机执行中
-                    task.STATUS = Entity.TaskStatus.StackerExecution;
-                    task.STARTTIME = DateTime.Now;
-                    task.UPDATETIME = DateTime.Now;
-                    task.AddWCS_TASK_DTL(db, task.ADDRFROM, task.DEVICE, $"堆垛机{obj.Entity.Code}开始执行任务");
-                    db.Default.Updateable(task).AddQueue();
-                    db.Default.SaveQueues();
-                    var addrFrom = task.ADDRFROM.Split("-");
-                    var addrTo = task.ADDRTO.Split("-");
-                    //下发任务
-                    obj.Data.TaskNumber = task.ID;
-                    obj.Data.RowPos1 = addrFrom[0].ToShort();
-                    obj.Data.TravelPos1 = addrFrom[1].ToShort();
-                    obj.Data.LiftPos1 = addrFrom[2].ToShort();
-                    obj.Data.RowPos2 = addrTo[0].ToShort();
-                    obj.Data.TravelPos2 = addrTo[1].ToShort();
-                    obj.Data.LiftPos2 = addrTo[2].ToShort();
-                    obj.Data.VoucherNo++;
-                });
+                WCS_TaskInfo taskInfo = null;
+                var result = SqlSugarHelper.Do(db =>
+                   {
+                       //获取一条当前堆垛机优先级最高的新建移库任务
+                       var task = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Device == obj.Entity.Code && v.Type == TaskType.TransferDepot && v.Status == Entity.TaskStatus.NewBuild)
+                                                                      .OrderByDescending(v => v.Priority)
+                                                                      .First() ?? throw new KnownException("未找到移库任务", LogLevelEnum.High);
+                       //任务状态改为堆垛机执行中
+                       task.Status = Entity.TaskStatus.StackerExecution;
+                       task.StartTime = DateTime.Now;
+                       task.AddWCS_TASK_DTL(db, task.AddrFrom, task.Device, $"堆垛机{obj.Entity.Code}开始执行任务");
+                       db.Default.Updateable(task).AddQueue();
+                       db.Default.SaveQueues();
+                       taskInfo = task;
+                   });
+                if (taskInfo == null || !result) throw new KnownException("数据更新错误", LogLevelEnum.High);
+                var addrFrom = taskInfo.AddrFrom.Split("-");
+                var addrTo = taskInfo.AddrTo.Split("-");
+                //下发任务
+                obj.Data.TaskNumber = taskInfo.ID;
+                obj.Data.RowPos1 = addrFrom[0].ToShort();
+                obj.Data.TravelPos1 = addrFrom[1].ToShort();
+                obj.Data.LiftPos1 = addrFrom[2].ToShort();
+                obj.Data.RowPos2 = addrTo[0].ToShort();
+                obj.Data.TravelPos2 = addrTo[1].ToShort();
+                obj.Data.LiftPos2 = addrTo[2].ToShort();
+                obj.Data.VoucherNo++;
             }
 
             #endregion 移库

+ 1 - 1
WCS.WorkEngineering/WCS.WorkEngineering.csproj

@@ -8,7 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
-    <PackageReference Include="ServiceCenter" Version="1.0.0.25" />
+    <PackageReference Include="ServiceCenter" Version="1.0.1.2" />
   </ItemGroup>
 
   <ItemGroup>