林豪 左 1 年之前
父節點
當前提交
4875ae4a34

+ 1 - 1
ServiceCenter/Extensions/SqlExtension.cs

@@ -47,7 +47,7 @@ namespace ServiceCenter.Extensions
         /// <returns></returns>
         public static ISugarQueryable<T> ReadPastUpdLock<T>(this ISugarQueryable<T> obj)
         {
-            return obj.With("WITH(ROWLOCK,UPDLOCK,READPAST)");
+            return obj.With("WITH(READPAST,ROWLOCK,UPDLOCK)");
         }
 
         /// <summary>

+ 4 - 4
ServiceCenter/SqlSugars/SqlSugarHelper.cs

@@ -1,5 +1,5 @@
-using System.Data;
-using SqlSugar;
+using SqlSugar;
+using System.Data;
 
 namespace ServiceCenter.SqlSugars
 {
@@ -129,7 +129,7 @@ namespace ServiceCenter.SqlSugars
                 db.Connect.BeginTran(IsolationLevel.ReadCommitted);//开始事务
                 if (_Default != "")
                 {
-                    db.Default.Ado.CommandTimeOut = 60;
+                    db.Default.Ado.CommandTimeOut = 10;
                 }
                 act(db);//执行委托
                 db.Connect.CommitTran();//提交事务
@@ -155,7 +155,7 @@ namespace ServiceCenter.SqlSugars
             try
             {
                 db.Connect.BeginTran();//开始事务
-                db.Connect.Ado.CommandTimeOut = 60;
+                //db.Connect.Ado.CommandTimeOut = 6;
                 var res = act(db);//执行委托
                 db.Connect.CommitTran();//提交事务
                 return res;

+ 7 - 1
WCS.Core/World.cs

@@ -352,7 +352,13 @@ namespace WCS.Core
             {
                 Console.ForegroundColor = ConsoleColor.Red;
             }
-            Console.WriteLine(wt.GetInfo());
+
+            var msg = wt.GetInfo();
+            if (wt.Total > 4000)
+            {
+                OnLog(Ltc.GetChannel(), msg);
+            }
+            Console.WriteLine(msg);
             Console.ResetColor();
         }
 

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -68,7 +68,7 @@ namespace WCS.WorkEngineering.Extensions
         /// <param name="desc">描述</param>
         public static void AddWCS_TASK_DTL(this WCS_TaskOld task, SqlSugarScopeProvider db, string curPoint, string nextPoint, string desc)
         {
-            db.Insertable(new WCS_TaskDtl
+            db.InsertableRowLock(new WCS_TaskDtl
             {
                 ID = Guid.NewGuid(),
                 ParentTaskCode = task.Id,

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/AgvSystems.cs

@@ -148,7 +148,7 @@ namespace WCS.WorkEngineering.Systems
                                     //巷道分配
                                     case AGVTaskStatus.RequestOrPermission1 when agv.Status != AGVTaskStatus.Complete1:
                                         {
-                                            var task = db.Default.Queryable<WCS_TaskOld>().Where(x => x.Id == agv.TaskId).SplitTable(x => x.Take(2)).First();
+                                            var task = db.Default.Queryable<WCS_TaskOld>().UpdLock().Where(x => x.Id == agv.TaskId).SplitTable(x => x.Take(2)).First();
                                             if (task == null) throw new Exception($"未找到对应的WCS任务{agv.TaskId}");
 
                                             //获取当前任务可以去的目标地址

+ 2 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -113,7 +113,7 @@ namespace WCS.WorkEngineering.Systems
                                         }
                                         else
                                         {
-                                            task.Status = Entity.TaskStatus.ConveyorExecution;
+                                            task.Status = Entity.TaskStatus.StackerCompleted;
                                             var dev = new Station(Device.All.FirstOrDefault(v => v.Code == task.SrmStation) ?? throw new KnownException($"未找到{task.SrmStation}信息", LogLevelEnum.High), this.World);
                                             dev.Data.TaskNumber = task.ID;
                                             db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status }).ExecuteCommand();
@@ -386,7 +386,7 @@ namespace WCS.WorkEngineering.Systems
                    task.Status = TaskStatus.StackerExecution;
                    task.LastInteractionPoint = task.Device;
                    task.EditWho = "WCS";
-                   db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.LastInteractionPoint, x.EditTime }).ExecuteCommand();
+                   db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.LastInteractionPoint, x.EditWho }).ExecuteCommand();
                    task.AddWCS_TASK_DTL(db.Default, task.Device, task.SrmStation, "任务下发堆垛机执行");
                    taskInfo = task;
                });

+ 3 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/UpLoadSystems.cs

@@ -32,7 +32,7 @@ namespace WCS.WorkEngineering.Systems
                 var nowTime = DateTime.Now;
 
                 var db = _db.Default;
-                var taskList = db.Queryable<WCS_TaskInfo>().UpdLock().Where(x => x.Type == TaskType.OutDepot && x.Status == TaskStatus.ConveyorExecution && x.Uploaded != TaskStatus.ConveyorExecution).ToList();
+                var taskList = db.Queryable<WCS_TaskInfo>().UpdLock().Where(x => x.Uploaded != TaskStatus.ConveyorExecution && x.Status == TaskStatus.StackerCompleted && x.Type == TaskType.OutDepot).ToList();
 
                 var isEnd = false;
 
@@ -54,8 +54,9 @@ namespace WCS.WorkEngineering.Systems
                 foreach (var task in taskIdList)
                 {
                     task.Uploaded = TaskStatus.ConveyorExecution;
+                    task.Status = TaskStatus.ConveyorExecution;
                     task.EditTime = nowTime;
-                    db.UpdateableRowLock(task).UpdateColumns(x => new { x.Uploaded, x.EditTime }).ExecuteCommand();
+                    db.UpdateableRowLock(task).UpdateColumns(x => new { x.Uploaded, x.EditTime, x.Status }).ExecuteCommand();
                     task.AddWCS_TASK_DTL(db, "", $"同步出库任务放货完成状态同步至WMS");
                 }
             });

+ 2 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/一楼叠盘机入库.cs

@@ -84,7 +84,7 @@ namespace WCS.WorkEngineering.Systems
                 SqlSugarHelper.Do(_db =>
                 {
                     var db = _db.Default;
-                    var isTask = db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode.Contains(barcode) && v.AddrFrom == obj.Entity.Code && v.Type == TaskType.EnterDepot);
+                    var isTask = db.Queryable<WCS_TaskInfo>().UpdLock().Any(v => v.BarCode.Contains(barcode) && v.AddrFrom == obj.Entity.Code && v.Type == TaskType.EnterDepot);
                     //验证是否有对应的任务
                     if (!isTask)
                     {
@@ -102,7 +102,7 @@ namespace WCS.WorkEngineering.Systems
                         if (res.ResCode == WebApi.Models.WMS.Response.ResponseStatusCodeEnum.Sucess) return;
                     }
                     //找到对应的任务
-                    var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.BarCode.Contains(barcode) && v.AddrFrom == obj.Entity.Code && v.Type == TaskType.EnterDepot);
+                    var taskInfo = db.Queryable<WCS_TaskInfo>().UpdLock().First(v => v.BarCode.Contains(barcode) && v.AddrFrom == obj.Entity.Code && v.Type == TaskType.EnterDepot);
                     if (taskInfo.Status == Entity.TaskStatus.WaitingToExecute)
                     {
                         var tunnel = obj.Entity.Targets.FirstOrDefault(v => v.HasFlag(DeviceFlags.巷道));

+ 2 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/机台叫料生成AGV任务.cs

@@ -51,7 +51,7 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
-                var task = db.Queryable<WCS_TaskInfo>().ReadPastUpdLock().Single(x => x.ID == obj.Data.TaskNumber && x.Status == TaskStatus.ConveyorExecution && x.Uploaded == TaskStatus.ConveyorExecution);
+                var task = db.Queryable<WCS_TaskInfo>().ReadPastUpdLock().Single(x => x.Uploaded == TaskStatus.ConveyorExecution && x.Status == TaskStatus.ConveyorExecution && x.ID == obj.Data.TaskNumber);
                 if (task == null)
                 {
                     World.Log($"未找到对应任务[{obj.Data.TaskNumber}],请检查该任务状态与更新状态是否均为输送机执行中", LogLevelEnum.High);
@@ -95,7 +95,7 @@ namespace WCS.WorkEngineering.Systems
                 task.AgvTaskID = agvTask.ID;
                 task.EditTime = DateTime.Now;
                 task.EditWho = "WCS";
-                db.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.AgvTaskID, x.EditTime, x.EditWho }).ExecuteCommand();
+                db.Updateable(task).UpdateColumns(x => new { x.Status, x.AgvTaskID, x.EditTime, x.EditWho }).ExecuteCommand();
                 task.AddWCS_TASK_DTL(db, obj.Entity.Code, "AGV", $"任务下发至AGV{agvId}");
             });
         }

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/环形库/机械臂cs.cs

@@ -86,7 +86,7 @@ namespace WCS.WorkEngineering.Systems
                             case TaskType.OutDepot:
                                 //var pall = db.Default.Queryable<WCS_TaskInfo>().Where(x => x.AddrTo == task.AddrTo && x.Type == TaskType.Delivery && x.Status < TaskStatus.Finish).First() ?? throw new Exception($"未找到对应的托盘搬运任务,无法进行绑盘");
 
-                                task.Status = Entity.TaskStatus.ConveyorExecution;
+                                task.Status = Entity.TaskStatus.StackerCompleted;
                                 task.EditTime = DateTime.Now;
                                 db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.EditTime }).ExecuteCommand();
                                 task.AddWCS_TASK_DTL(db.Default, task.AddrTo, "出库任务结束");

+ 3 - 3
业务工程/分拣库/WCS.WorkEngineering/Systems/环形库/环形库码垛结束.cs

@@ -39,9 +39,9 @@ namespace WCS.WorkEngineering.Systems.环形库
             {
                 var db = _db.Default;
                 var taskNoList = obj.Data5.GetTaskNoList().ToList();
-                var tasks = db.Queryable<WCS_TaskInfo>().Where(x => taskNoList.Contains(x.ID) && x.Status == TaskStatus.ConveyorExecution).ToList();
-                var deliveryTask = db.Queryable<WCS_TaskInfo>().Single(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code) ?? throw new KnownException($"未找到当前站台对应的托盘搬运任务", LogLevelEnum.High);
-                var taskInfo = db.Queryable<WCS_TaskInfo>().Single(x => x.AddrFrom == obj.Entity.Code && x.Type == TaskType.EnterDepot);
+                var tasks = db.Queryable<WCS_TaskInfo>().UpdLock().Where(x => taskNoList.Contains(x.ID) && x.Status == TaskStatus.ConveyorExecution).ToList();
+                var deliveryTask = db.Queryable<WCS_TaskInfo>().UpdLock().Single(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code) ?? throw new KnownException($"未找到当前站台对应的托盘搬运任务", LogLevelEnum.High);
+                var taskInfo = db.Queryable<WCS_TaskInfo>().UpdLock().Single(x => x.AddrFrom == obj.Entity.Code && x.Type == TaskType.EnterDepot);
                 if (deliveryTask.Status != Entity.TaskStatus.RgvCompleted) throw new KnownException($"搬运任务状态异常:{deliveryTask.ID}", LogLevelEnum.High);
                 if (taskInfo == null)
                 {