林豪 左 2 anni fa
parent
commit
dc5303e3ab

+ 8 - 2
WCS.Entity/WCS_TaskDtl.cs

@@ -9,14 +9,14 @@ namespace WCS.Entity
     /// </summary>
     [SugarTable(nameof(WCS_TaskDtl) + "_{year}{month}{day}", "任务流转表")]
     [SplitTable(SplitType.Week)]//按年分表 (自带分表支持 年、季、月、周、日)
-    public class WCS_TaskDtl : OBJ
+    public class WCS_TaskDtl
     {
         /// <summary>
         /// ID
         /// </summary>
         [SugarColumn(IsPrimaryKey = true, ColumnDescription = "ID")]
         [Column(Order = 0)]
-        public long ID { get; set; }
+        public Guid ID { get; set; }
 
         /// <summary>
         /// 父级任务号
@@ -61,5 +61,11 @@ namespace WCS.Entity
         /// </summary>
         [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
         public DateTime AddTime { get; set; }
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", ColumnDataType = "timestamp", IsNullable = true, IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
+        public byte[] VER { get; set; }
     }
 }

+ 83 - 55
WCS.Entity/WCS_TaskInfo.cs

@@ -10,11 +10,13 @@ namespace WCS.Entity
     [SugarTable(nameof(WCS_TaskInfo), "任务表")]
     public class WCS_TaskInfo
     {
+        #region 任务基本信息
+
         /// <summary>
         /// ID
         /// </summary>
-        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "ID")]
-        public virtual int ID { get; set; }
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "ID")]
+        public int ID { get; set; }
 
         /// <summary>
         /// 生产编码
@@ -46,12 +48,6 @@ namespace WCS.Entity
         [SugarColumn(ColumnDescription = "目标地址", Length = 20)]
         public string AddrTo { get; set; }
 
-        /// <summary>
-        /// 最后一个交互点
-        /// </summary>
-        [SugarColumn(ColumnDescription = "最后一个交互点", Length = 20, IsNullable = true)]
-        public string LastInteractionPoint { get; set; }
-
         /// <summary>
         /// 下一个地址
         /// </summary>
@@ -76,6 +72,12 @@ namespace WCS.Entity
         [SugarColumn(ColumnDescription = "设备", Length = 20, IsNullable = true)]
         public string Device { get; set; }
 
+        /// <summary>
+        /// 最后一个交互点
+        /// </summary>
+        [SugarColumn(ColumnDescription = "最后一个交互点", Length = 20, IsNullable = true)]
+        public string LastInteractionPoint { get; set; }
+
         /// <summary>
         /// 堆垛机放货站台
         /// </summary>
@@ -83,40 +85,49 @@ namespace WCS.Entity
         public string SrmStation { get; set; }
 
         /// <summary>
-        /// 创建时间
-        /// 新增数据时自动获取服务器时间
+        ///  客户现场的机台/产线编号
         /// </summary>
-        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
-        public DateTime AddTime { get; set; }
+        [SugarColumn(ColumnDescription = "客户现场的机台/产线编号", IsNullable = true)]
+        public string WorkBench { get; set; }
 
         /// <summary>
-        /// 开始时间
+        ///  仓库编号
         /// </summary>
-        [SugarColumn(ColumnDescription = "开始时间", IsNullable = true)]
-        public DateTime? StartTime { get; set; }
+        [SugarColumn(ColumnDescription = "仓库编号", IsNullable = true)]
+        public string WarehouseCode { get; set; }
 
         /// <summary>
-        /// 结束时间
+        /// WMS任务号
         /// </summary>
-        [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
-        public DateTime? EedTime { get; set; }
+        [SugarColumn(ColumnDescription = "WMS任务号")]
+        public int WmsTask { get; set; }
 
         /// <summary>
-        /// 单号
+        /// 任务组ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "任务组ID", IsNullable = true)]
+        public string TaskGroupKey { get; set; }
+
+        #endregion 任务基本信息
+
+        #region 码垛信息
+
+        /// <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)]
+        [SugarColumn(ColumnDescription = "码垛工位", IsNullable = true)]
         public short ProdLine { get; set; }
 
         /// <summary>
@@ -125,6 +136,10 @@ namespace WCS.Entity
         [SugarColumn(ColumnDescription = "满盘数量", IsNullable = true)]
         public short FullQty { get; set; }
 
+        #endregion 码垛信息
+
+        #region 外形信息
+
         /// <summary>
         /// 高度
         /// </summary>
@@ -138,16 +153,56 @@ namespace WCS.Entity
         public float Weight { get; set; }
 
         /// <summary>
-        /// WMS任务号
+        ///  长度
         /// </summary>
-        [SugarColumn(ColumnDescription = "WMS任务号")]
-        public int WmsTask { get; set; }
+        [SugarColumn(ColumnDescription = "产品长度", IsNullable = true)]
+        public decimal Length { get; set; }
+
+        #endregion 外形信息
+
+        #region 操作时间与用户
 
         /// <summary>
-        /// 任务组ID
+        /// 创建时间
+        /// 新增数据时自动获取服务器时间
         /// </summary>
-        [SugarColumn(ColumnDescription = "任务组ID", IsNullable = true)]
-        public string TaskGroupKey { get; set; }
+        [SugarColumn(ColumnDescription = "创建时间", InsertServerTime = true)]
+        public DateTime AddTime { get; set; }
+
+        /// <summary>
+        /// 创建用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "创建用户", Length = 50)]
+        public string AddWho { get; set; }
+
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "开始时间", IsNullable = true)]
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 更新用户
+        /// 仅记录用户ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新用户", Length = 50, IsNullable = true)]
+        public string EditWho { get; set; }
+
+        /// <summary>
+        /// 更新时间
+        /// 更新数据时自动获取服务器时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间", UpdateServerTime = true, IsNullable = true)]
+        public DateTime EditTime { get; set; }
+
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
+        public DateTime? EedTime { get; set; }
+
+        #endregion 操作时间与用户
 
         /// <summary>
         /// 更新状态
@@ -179,12 +234,6 @@ namespace WCS.Entity
         [SugarColumn(ColumnDescription = "手动处理备注", IsNullable = true)]
         public string ManualRemarks { get; set; }
 
-        /// <summary>
-        /// 产品长度
-        /// </summary>
-        [SugarColumn(ColumnDescription = "产品长度", IsNullable = true)]
-        public decimal Length { get; set; }
-
         /// <summary>
         /// 产品编码
         /// </summary>
@@ -197,27 +246,6 @@ namespace WCS.Entity
         [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, IsNullable = true)]
-        public string EditWho { get; set; }
-
-        /// <summary>
-        /// 更新时间
-        /// 更新数据时自动获取服务器时间
-        /// </summary>
-        [SugarColumn(ColumnDescription = "更新时间", UpdateServerTime = true, IsNullable = true)]
-        public DateTime EditTime { get; set; }
-
         /// <summary>
         /// 版本号
         /// </summary>

+ 20 - 13
WCS.Entity/WCS_TaskOld.cs

@@ -6,20 +6,15 @@ namespace WCS.Entity
     /// <summary>
     /// 任务表
     /// </summary>
-    [SugarTable(nameof(WCS_TaskOld), "任务表")]
+    [SugarTable(nameof(WCS_TaskOld) + "_{year}{month}{day}", "任务表")]
+    [SplitTable(SplitType.Week)]//按年分表 (自带分表支持 年、季、月、周、日)
     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; }
+        public int ID { get; set; }
 
         /// <summary>
         /// 生产编码
@@ -103,24 +98,36 @@ namespace WCS.Entity
         /// 结束时间
         /// </summary>
         [SugarColumn(ColumnDescription = "结束时间", IsNullable = true)]
-        public DateTime? EedTime { get; set; }
+        public DateTime? EndTime { get; set; }
+
+        /// <summary>
+        ///  客户现场的机台/产线编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "客户现场的机台/产线编号", IsNullable = true)]
+        public string WorkBench { get; set; }
+
+        /// <summary>
+        ///  仓库编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "仓库编号", IsNullable = true)]
+        public string WarehouseCode { 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)]
+        [SugarColumn(ColumnDescription = "码垛工位", IsNullable = true)]
         public short ProdLine { get; set; }
 
         /// <summary>

+ 4 - 13
WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -17,17 +17,7 @@ namespace WCS.WorkEngineering.Extensions
         /// <param name="db">数据库上下文</param>
         /// <param name="curPoint">当前地址</param>
         /// <param name="desc">描述</param>
-        public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string desc)
-        {
-            db.Default.Insertable(new WCS_TaskDtl
-            {
-                ParentTaskCode = task.ID,
-                CurPoint = curPoint,
-                NextPoint = "",
-                Desc = desc,
-                AddWho = "WCS"
-            }).AddQueue();
-        }
+        public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string desc) => task.AddWCS_TASK_DTL(db, curPoint, "", desc);
 
         /// <summary>
         /// 更新任务执行记录
@@ -41,6 +31,7 @@ namespace WCS.WorkEngineering.Extensions
         {
             db.Default.Insertable(new WCS_TaskDtl
             {
+                ID = Guid.NewGuid(),
                 ParentTaskCode = task.ID,
                 CurPoint = curPoint,
                 NextPoint = NextPoint,
@@ -63,7 +54,7 @@ namespace WCS.WorkEngineering.Extensions
             }
             else // 任务完成或取消,进行相关同步动作
             {
-                WCS_TaskOld taskOld = db.Default.Queryable<WCS_TaskOld>().Where(v => v.WcsTaskID == taskInfo.ID).OrderByDescending(v => v.AddTime).First();
+                WCS_TaskOld taskOld = db.Default.Queryable<WCS_TaskOld>().SplitTable(tabs => tabs.Take(1)).Where(v => v.ID == 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);
@@ -82,7 +73,7 @@ namespace WCS.WorkEngineering.Extensions
                     taskOld.AddTime = taskInfo.AddTime;
                     taskOld.AddWho = taskInfo.AddWho;
                     taskOld.StartTime = taskInfo.StartTime;
-                    taskOld.EedTime = taskInfo.EedTime;
+                    taskOld.EndTime = taskInfo.EedTime;
                     taskOld.EditWho = taskInfo.EditWho;
                     taskOld.EditTime = taskInfo.EditTime;
                     //条码与地址

+ 6 - 6
WCS.WorkEngineering/WebApi/Controllers/AgvController.cs

@@ -95,12 +95,12 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                             break;
 
                         case "applyEmpty": //申请补空任务
-                            //db.Default.Insertable(new WCS_AgvTaskInfo()
-                            //{
-                            //    AgvID = reqDto.taskCode,
-                            //    TaskType = AGVTaskType.CallForMaterial,
-                            //    Status = AGVTaskStatus.NewBuild,
-                            //}).AddQueue();
+                            db.Default.Insertable(new WCS_AgvTaskInfo()
+                            {
+                                AgvID = reqDto.taskCode,
+                                TaskType = AGVTaskType.CallForMaterial,
+                                Status = AGVTaskStatus.NewBuild,
+                            }).AddQueue();
                             AgvApi.缓存架补空(reqDto.taskCode, "1016");
 
                             break;

+ 36 - 19
WCS.WorkEngineering/Worlds/NoInteractionWorld.cs

@@ -1,9 +1,8 @@
-using ServiceCenter;
-using ServiceCenter.SqlSugars;
+using ServiceCenter.SqlSugars;
 using System.ComponentModel;
+using WCS.Core;
 using WCS.Entity;
 using WCS.WorkEngineering.Extensions;
-using WCS.WorkEngineering.Worlds.Logs;
 
 namespace WCS.WorkEngineering.Worlds
 {
@@ -32,29 +31,47 @@ namespace WCS.WorkEngineering.Worlds
 
             SqlSugarHelper.Do(db =>
             {
+                List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
+
                 //获取所有新建状态的出库任务
-                var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
+                tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.OutDepot).ToList();
                 if (tasks.Count > 0)
                 {
-                    Log(new LogInfo { Level = LogLevelEnum.Low, Type = ErrorTypeEnum.Kown, LogUpLoad = LogUpLoadEnum.NotUpLoad, Message = "无新建出库任务" });
+                    tasks.ForEach(task =>
+                    {
+                        //获取堆垛机到目标地址的路径信息
+                        var ty = DevicePath.GetPath(task.Device, task.AddrTo);
+                        //开始处理
+                        task.SrmStation = ty.Points[1].Code;
+                        //task.AddrNext = path[2];
+                        task.Status = Entity.TaskStatus.WaitingToExecute;
+                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");
+                        db.Default.Updateable(task).AddQueue();
+                    });
                 }
-                tasks.ForEach(task =>
+
+                #endregion 处理所有新建出库任务
+
+                #region 处理所有的新增入库任务
+
+                tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
+
+                if (tasks.Count > 0)
                 {
-                    ////获取堆垛机到目标地址的路径信息
-                    //var path = ServiceHub.deviceInfos.First(v => v.Code == task.Device).Paths?
-                    //                                 .First(v => v.EndCode == task.AddrTo).Path?
-                    //                                 .Split("-");
-                    ////开始处理
-                    //task.SrmStation = path[1];
-                    //task.AddrNext = path[2];
-                    //task.Status = Entity.TaskStatus.WaitingToExecute;
-                    //task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}、放货后下一个地址:{task.AddrNext}");
-                    //db.Default.Updateable(task).AddQueue();
-                });
+                    tasks.ForEach(task =>
+                    {
+                        //开始处理
+
+                        task.Status = Entity.TaskStatus.WaitingToExecute;
+                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");
+                        db.Default.Updateable(task).AddQueue();
+                    });
+                }
+
+                #endregion 处理所有的新增入库任务
+
                 db.Default.SaveQueues();
             });
-
-            #endregion 处理所有新建出库任务
         }
     }
 }