林豪 左 1 year ago
parent
commit
68c258ffae

+ 1 - 1
ServiceCenter/SqlSugars/SqlSugarHelper.cs

@@ -155,7 +155,7 @@ namespace ServiceCenter.SqlSugars
             try
             {
                 db.Connect.BeginTran();//开始事务
-                db.Connect.Ado.CommandTimeOut = 2;
+                db.Connect.Ado.CommandTimeOut = 60;
                 var res = act(db);//执行委托
                 db.Connect.CommitTran();//提交事务
                 return res;

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

@@ -37,7 +37,7 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(db =>
             {
                 //获取所有的新建任务,组盘任务不需要
-                taskInfos = db.Default.Queryable<WCS_TaskInfo>().Where(x => x.Status == 0).ToList().Where(x => x.Type != TaskType.SetPlate || (x.Type == TaskType.SetPlate && x.AddrFrom != "Robot")).Select(x => x.ID).ToList();
+                taskInfos = db.Default.Queryable<WCS_TaskInfo>().UpdLock().Where(x => x.Status == 0).ToList().Where(x => x.Type != TaskType.SetPlate || (x.Type == TaskType.SetPlate && x.AddrFrom != "Robot")).Select(x => x.ID).ToList();
             });
             if (!taskInfos.Any())
             {

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

@@ -100,7 +100,7 @@ namespace WCS.WorkEngineering.Systems
                                 else if (dev.HasFlag(DeviceFlags.环形库码垛工位))
                                 {
                                     //开始处理对应的搬运任务信息
-                                    var task = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.Delivery && x.ID == obj.Data2.TaskNumber && x.AddrTo == obj.Data2.DestPosition.ToString());
+                                    var task = db.Queryable<WCS_TaskInfo>().UpdLock().First(x => x.Type == TaskType.Delivery && x.ID == obj.Data2.TaskNumber && x.AddrTo == obj.Data2.DestPosition.ToString());
                                     if (task == null)
                                     {
                                         World.Log($"未找到对应的搬运任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);

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

@@ -376,7 +376,7 @@ namespace WCS.WorkEngineering.Systems
                    var allOutCode = arrOut.Select(v => v.Entity.Code).ToList();
 
                    //按条件先后排序获取一条排序后第一条结果1.优先级2.所在楼层与本次优先执行楼层
-                   var task = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.WaitingToExecute)
+                   var task = db.Default.Queryable<WCS_TaskInfo>().UpdLock().Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.WaitingToExecute)
                                                                   .Where(v => allOutCode.Contains(v.SrmStation))
                                                                   .OrderByDescending(v => v.Priority)
                                                                   .OrderByDescending(v => v.Floor == floor ? 1 : 0)

+ 3 - 3
业务工程/分拣库/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>().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.Type == TaskType.OutDepot && x.Status == TaskStatus.ConveyorExecution && x.Uploaded != TaskStatus.ConveyorExecution).ToList();
 
                 var isEnd = false;
 
@@ -55,7 +55,7 @@ namespace WCS.WorkEngineering.Systems
                 {
                     var task = db.Queryable<WCS_TaskInfo>().First(x => x.ID == taskId);
                     task.Uploaded = TaskStatus.ConveyorExecution;
-                    task.EditTime = DateTime.Now;
+                    task.EditTime = nowTime;
                     db.UpdateableRowLock(task).ExecuteCommand();
                     task.AddWCS_TASK_DTL(db, "", $"同步出库任务放货完成状态同步至WMS");
                 }
@@ -67,7 +67,7 @@ namespace WCS.WorkEngineering.Systems
                 var taskIdList = new List<int>();
                 var nowTime = DateTime.Now;
                 var db = _db.Default;
-                var taskList = db.Queryable<WCS_TaskOld>()
+                var taskList = db.Queryable<WCS_TaskOld>().UpdLock()
                     .Where(x =>
                                 ((x.Type == TaskType.SetPlate && x.WarehouseCode.Contains("R"))
                                  || ((x.Type == TaskType.EnterDepot || x.Type == TaskType.OutDepot) && !x.WarehouseCode.Contains("R")))

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

@@ -84,9 +84,8 @@ namespace WCS.WorkEngineering.Systems
                                 break;
 
                             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($"未找到对应的托盘搬运任务,无法进行绑盘");
+                                //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.EditTime = DateTime.Now;
                                 db.Default.UpdateableRowLock(task).ExecuteCommand();

+ 2 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/码垛区域生成空托盘任务.cs

@@ -116,7 +116,7 @@ namespace WCS.WorkEngineering.Systems
                     {
                         var db = _db.Default;
                         //检查是否有待执行状态放货点是自己的出库任务
-                        var ringTask = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.OutDepot && x.Status <= TaskStatus.WaitingToExecute && x.SrmStation == obj.Entity.Code);
+                        var ringTask = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.OutDepot && x.Status <= TaskStatus.WaitingToExecute && x.SrmStation == obj.Entity.Code);
                         if (ringTask == null)
                         {
                             //开始申请码垛任务
@@ -127,7 +127,7 @@ namespace WCS.WorkEngineering.Systems
                             }
                             return;
                         }
-                        var task = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code);
+                        var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code);
                         if (task != null) return;
                         //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
                         var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));