林豪 左 1 жил өмнө
parent
commit
624e1e1a41
18 өөрчлөгдсөн 71 нэмэгдсэн , 86 устгасан
  1. 13 13
      ServiceCenter/Logs/LogHub.cs
  2. 2 2
      业务工程/分拣库/WCS.WorkEngineering/Extensions/TaskExtension.cs
  3. 8 8
      业务工程/分拣库/WCS.WorkEngineering/Systems/AgvSystems.cs
  4. 1 1
      业务工程/分拣库/WCS.WorkEngineering/Systems/DataCollectionSysyem.cs
  5. 4 3
      业务工程/分拣库/WCS.WorkEngineering/Systems/DeviceWriteSystem.cs
  6. 3 3
      业务工程/分拣库/WCS.WorkEngineering/Systems/分拣支线/环形库分流点.cs
  7. 1 1
      业务工程/分拣库/WCS.WorkEngineering/Systems/机台叫料生成AGV任务.cs
  8. 5 24
      业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs
  9. 5 5
      业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架码垛区补空托盘任务生成.cs
  10. 6 4
      业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架缓存放行点.cs
  11. 1 1
      业务工程/分拣库/WCS.WorkEngineering/Systems/环形库/环形库码垛区补空托盘任务生成.cs
  12. 1 1
      业务工程/分拣库/WCS.WorkEngineering/WebApi/Controllers/AgvController.cs
  13. 5 4
      业务工程/分拣库/WCS.WorkEngineering/WebApi/Controllers/WcsController.cs
  14. 2 2
      业务工程/时效库/WCS.WorkEngineering/Extensions/TaskExtension.cs
  15. 8 8
      业务工程/时效库/WCS.WorkEngineering/Systems/AgvSystems.cs
  16. 1 1
      业务工程/时效库/WCS.WorkEngineering/Systems/机台叫料生成AGV任务.cs
  17. 1 1
      业务工程/时效库/WCS.WorkEngineering/WebApi/Controllers/AgvController.cs
  18. 4 4
      业务工程/时效库/WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

+ 13 - 13
ServiceCenter/Logs/LogHub.cs

@@ -53,14 +53,14 @@ namespace ServiceCenter.Logs
         /// <param name="system">系统</param>
         /// <param name="devCode">设备号</param>
         /// <param name="msg">内容</param>
-        public static async void ExRecord(this SystemBase system, string devCode, string msg)
+        public static void ExRecord(this SystemBase system, string devCode, string msg)
         {
-            var key = $"{system.World.Description}:{devCode}";
-            RedisHub.Default.RPush($"{system.World.Description}:{devCode}", msg);
-            if (RedisHub.Monitor.LLen(key) > 5000)
-            {
-                RedisHub.Monitor.LTrim(key, 4000, -1);
-            }
+            //var key = $"{system.World.Description}:{devCode}";
+            //RedisHub.Default.RPush($"{system.World.Description}:{devCode}", msg);
+            //if (RedisHub.Monitor.LLen(key) > 5000)
+            //{
+            //    RedisHub.Monitor.LTrim(key, 4000, -1);
+            //}
         }
 
         /// <summary>
@@ -73,12 +73,12 @@ namespace ServiceCenter.Logs
         {
             try
             {
-                var key = $"{system.World.Description}:{devCode}";
-                RedisHub.Default.RPush(key, msg + ints.JsonToString());
-                if (RedisHub.Monitor.LLen(key) > 5000)
-                {
-                    RedisHub.Monitor.LTrim(key, 4000, -1);
-                }
+                //var key = $"{system.World.Description}:{devCode}";
+                //RedisHub.Default.RPush(key, msg + ints.JsonToString());
+                //if (RedisHub.Monitor.LLen(key) > 5000)
+                //{
+                //    RedisHub.Monitor.LTrim(key, 4000, -1);
+                //}
             }
             catch (Exception e)
             {

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

@@ -63,7 +63,7 @@ namespace WCS.WorkEngineering.Extensions
                 {
                     taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                     taskOld.Id = taskInfo.ID;
-                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable().ExecuteCommand();
+                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable(x=>x.Take(2)).ExecuteCommand();
                 }
             }
             else
@@ -87,7 +87,7 @@ namespace WCS.WorkEngineering.Extensions
                 taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                 taskOld.Id = taskInfo.ID;
                 //更新任务历史表,删除任务当前表
-                db.Updateable(taskOld).SplitTable().ExecuteCommand();
+                db.Updateable(taskOld).SplitTable(x=>x.Take(2)).ExecuteCommand();
                 db.Deleteable(taskInfo).ExecuteCommand();
             }
             else

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

@@ -58,7 +58,7 @@ namespace WCS.WorkEngineering.Systems
                                         {
                                             var taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == agv.TaskId);
                                             agv.Status = AGVTaskStatus.RequestOrPermission2;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                             taskInfo.AddWCS_TASK_DTL(db.Default, "agv", $"允许AGV任务{agv.ID}在站台{agv.Station}取货");
                                             AgvApi.ContinueTask(agv.AgvID, agv.Station);
                                             break;
@@ -66,7 +66,7 @@ namespace WCS.WorkEngineering.Systems
                                     case AGVTaskStatus.PutRequestOrPermission when agv.Status != AGVTaskStatus.PutRequestOrPermission:
                                         {
                                             agv.Status = AGVTaskStatus.PutRequestOrPermission;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                             AgvApi.ContinueTask(agv.AgvID, agv.Station);
                                             break;
                                         }
@@ -74,7 +74,7 @@ namespace WCS.WorkEngineering.Systems
                                         var devinfo = new Device<IStation520>(Device.All.First(x => x.Code == agv.Station), World);
                                         devinfo.Data.CmdType = StationCmd.Res3;
                                         agv.Status = AGVTaskStatus.LeaveGet;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                        db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         break;
                                     //完成任务
                                     case AGVTaskStatus.MissionCompleted when agv.Status != AGVTaskStatus.MissionCompleted:
@@ -85,7 +85,7 @@ namespace WCS.WorkEngineering.Systems
                                                 if (taskInfo == null) throw new Exception($"未找到AGV任务{agv.ID}对应WCS任务");
                                                 //更新AGV任务状态
                                                 agv.Status = AGVTaskStatus.MissionCompleted;
-                                                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                                db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                                 //更新WCS任务状态
                                                 taskInfo.Status = Entity.TaskStatus.Finish;
                                                 taskInfo.EedTime = DateTime.Now;
@@ -96,7 +96,7 @@ namespace WCS.WorkEngineering.Systems
                                             else
                                             {
                                                 agv.Status = AGVTaskStatus.MissionCompleted;
-                                                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                                db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                             }
 
                                             break;
@@ -146,14 +146,14 @@ namespace WCS.WorkEngineering.Systems
                                         agv.AgvID = agv.ID.ToString();
                                         agv.Status = AGVTaskStatus.Confirm;
                                         agv.AgvStatus = AGVTaskStatus.Confirm;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                        db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         break;
                                     //巷道分配
                                     case AGVTaskStatus.RequestOrPermission1 when agv.Status != AGVTaskStatus.Complete1:
                                         {
                                             agv.Status = AGVTaskStatus.Complete1;
                                             agv.Position = "2501";
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
 
                                             //task.Status = TaskStatus.Finish;
                                             //db.Default.Updateable(task).ExecuteCommand();
@@ -181,7 +181,7 @@ namespace WCS.WorkEngineering.Systems
                                         if (agv.TaskType == AGVTaskType.EnterDepot)
                                         {
                                             agv.Status = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         }
                                         break;
                                 }

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

@@ -58,7 +58,7 @@ namespace WCS.WorkEngineering.Systems
 
                 RedisHub.Monitor.RPush("Packs", pack);
                 RedisHub.Monitor.Set(nameof(DeviceDataPack), pack);
-                if (RedisHub.Monitor.LLen("Packs") > 500000)
+                if (RedisHub.Monitor.LLen("Packs") > 200000)
                 {
                     RedisHub.Monitor.LTrim("Packs", 5000, -1);
                 }

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

@@ -2,13 +2,14 @@
 using WCS.Entity.Protocol.SRM;
 using WCS.Entity.Protocol.Station;
 using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.Worlds;
 
 namespace WCS.WorkEngineering.Systems
 {
     /// <summary>
     ///  设备信息写入接口
     /// </summary>
-    //[BelongTo(typeof(MainWorld))]
+    [BelongTo(typeof(MainWorld))]
     public class DeviceWriteSystem : ServiceSystem<DeviceWriteInfo>
     {
         /// <summary>
@@ -23,8 +24,8 @@ namespace WCS.WorkEngineering.Systems
         /// </summary>
         public DeviceWriteSystem()
         {
-            Convs = Device.All.Where(v => v.HasProtocol<IStation523>()).Select(v => new Station(v, this.World)).ToDictionary(v => v.Entity.Code, v => v);
-            Srms = Device.All.Where(v => v.HasProtocol<ISRM520>()).Select(v => new SRM(v, this.World)).ToDictionary(v => v.Entity.Code, v => v);
+            Convs = Device.All.Where(v => v.Code is "1602" or "1661" or "1666").Select(v => new Station(v, this.World)).ToDictionary(v => v.Entity.Code, v => v);
+            //Srms = Device.All.Where(v => v.HasProtocol<ISRM520>()).Select(v => new SRM(v, this.World)).ToDictionary(v => v.Entity.Code, v => v);
         }
 
         protected override void Do(DeviceWriteInfo info)

+ 3 - 3
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣支线/环形库分流点.cs

@@ -60,7 +60,7 @@ namespace WCS.WorkEngineering.Systems
                         taskInfo.AddrNext = nextAdd.ToString();
                         taskInfo.Status = TaskStatus.FinishOfShunt;
                         taskInfo.EditTime = DateTime.Now;
-                        taskInfo.WarehouseCode += "R";
+                        taskInfo.WarehouseCode = taskInfo.WarehouseCode.Contains("R") ? taskInfo.WarehouseCode : taskInfo.WarehouseCode + "R";
                         taskInfo.AddrTo = "Robot";
                         taskInfo.GoodsType = obj.Data4.Length.ToInt();
                         db.Updateable(taskInfo).ExecuteCommand();
@@ -74,7 +74,7 @@ namespace WCS.WorkEngineering.Systems
                         taskInfo.AddrNext = nextAdd.ToString();
                         taskInfo.Status = TaskStatus.FinishOfShunt;
                         taskInfo.EditTime = DateTime.Now;
-                        taskInfo.WarehouseCode += "R";
+                        taskInfo.WarehouseCode = taskInfo.WarehouseCode.Contains("R") ? taskInfo.WarehouseCode : taskInfo.WarehouseCode + "R";
                         taskInfo.AddrTo = "Robot";
                         taskInfo.GoodsType = obj.Data4.Length.ToInt();
                         db.Updateable(taskInfo).ExecuteCommand();
@@ -87,7 +87,7 @@ namespace WCS.WorkEngineering.Systems
                         taskInfo.AddrNext = nextAdd.ToString();
                         taskInfo.Status = TaskStatus.FinishOfShunt;
                         taskInfo.EditTime = DateTime.Now;
-                        taskInfo.WarehouseCode += "R";
+                        taskInfo.WarehouseCode = taskInfo.WarehouseCode.Contains("R") ? taskInfo.WarehouseCode : taskInfo.WarehouseCode + "R";
                         taskInfo.AddrTo = "Robot";
                         taskInfo.GoodsType = obj.Data4.Length.ToInt();
                         db.Updateable(taskInfo).ExecuteCommand();

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

@@ -46,7 +46,7 @@ namespace WCS.WorkEngineering.Systems
                 agvTask.AgvID = agvId;
                 agvTask.Status = AGVTaskStatus.Confirm;
                 agvTask.AgvStatus = AGVTaskStatus.Confirm;
-                db.Updateable(agvTask).SplitTable().ExecuteCommand();
+                db.Updateable(agvTask).SplitTable(x=>x.Take(2)).ExecuteCommand();
                 task.Status = TaskStatus.AGVExecution;
                 task.AgvTaskID = agvTask.ID;
                 task.Updateable(db);

+ 5 - 24
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

@@ -105,7 +105,7 @@ namespace WCS.WorkEngineering.Systems
             }
             if (obj.Data2.CmdType == 0) obj.Data.CmdType = 0;
             if (obj.Data2.CmdType != 0 || obj.Data.CmdType != 0) return;
-            if (obj.Data2.Status != TrussStatus.Idle) return;
+            if (obj.Data2.Status != TrussStatus.Idle) throw new Exception($"桁架处于{obj.Data2.Status.GetDescription()}");
 
             //查找所有的可用开始搬运的线体
             var pickUpDevices = _pickUpDevices.Where(v => v.Value.All(x => !x.Data2.Status.HasFlag(StationStatus.Run) && x.Data2.Status.HasFlag(StationStatus.Auto)))
@@ -115,6 +115,7 @@ namespace WCS.WorkEngineering.Systems
                     Count = x.Value.Count(v => v.Data2.Status.HasFlag(StationStatus.PH_Status) && v.Data.TaskNumber > 0),
                     Dev = x
                 }).ToList();
+            if (!pickUpDevices.Any()) throw new KnownException($"没有可用取货点,请在电控触摸屏检查实际可取货点是否每个位置都有光电与任务号", LogLevelEnum.Mid);
 
             List<WCS_PalletizingRow> palletizingRowList = null;
             WCS_Palletizing palletizing = null;
@@ -130,6 +131,7 @@ namespace WCS.WorkEngineering.Systems
                 var devList = Device.All.Where(x => devCode.Contains(x.Code)).Select(x => new Device<IStation520, IStation521, IStation523>(x, World)).ToList();
                 devList = devList.Where(x => x.Data3.Status.HasFlag(StationStatus.PH_Status)).ToList();
                 devCode = devList.Select(x => x.Entity.Code);
+                if (!devCode.Any()) throw new KnownException($"无可用放货码垛位,请检查实际有货位置的光电是否正常", LogLevelEnum.Mid);
                 palletizingLsit = palletizingLsit.Where(x => devCode.Contains(x.PalletizingStation)).ToList(); //可以放货的目标托盘
                 //可以取货的码垛信息
                 var pickUpCode = _pickUpDevices.Select(x => x.Key.Entity.Code);
@@ -137,23 +139,7 @@ namespace WCS.WorkEngineering.Systems
                     .Where(w => !w.Finish)
                     .SelectMany(w => w.Rows)
                     .Where(v => !v.Finish).Any(w => pickUpCode.Contains(w.LineCode))).ToList();
-
-                //var palletizingInfo = palletizingLsit.FirstOrDefault();
-                //if (palletizingInfo == null) return;
-                ////筛选出已经预锁的行
-                //var palletizingRow = palletizingInfo.Layers.SelectMany(x => x.Rows).Where(x => x is { Finish: false, IsEmpty: false, LineCode: not null }).Where(x => pickUpDevices.Select(p => p.Key.Entity.Code).Contains(x.LineCode)).OrderBy(x => x.RowNo).Take(2).ToList();
-                //if (palletizingRow.Count == 2 && palletizingRow[0].LineCode == palletizingRow[1].LineCode) palletizingRow = palletizingRow!.Take(1).ToList();
-                //if (palletizingRow.Count == 2 && palletizingRow[0].RowNo + 1 != palletizingRow[1].RowNo) palletizingRow = palletizingRow!.Take(1).ToList();
-
-                ////对行对应的缓存信息进行预释放处理
-                //foreach (var cacheLine in palletizingRow.Select(wcsPalletizingRow => db.Queryable<WCS_CacheLine>().Single(x => x.Id == wcsPalletizingRow.CacheLineId)))
-                //{
-                //    cacheLine.IsTruss = true;
-                //    db.Updateable(cacheLine).ExecuteCommand();
-                //}
-
-                //palletizingRowList = palletizingRow;
-                //palletizing = palletizingInfo;
+                if (!palletizingLsit.Any()) throw new KnownException($"没有可用取货点,码垛信息是否正常", LogLevelEnum.Mid);
 
                 foreach (var palletizingInfo in palletizingLsit)
                 {
@@ -194,8 +180,7 @@ namespace WCS.WorkEngineering.Systems
                 }
             });
 
-            if (palletizingRowList == null) return;
-            if (!palletizingRowList.Any()) return;
+            if (palletizingRowList == null || !palletizingRowList.Any()) return;
 
             for (var i = 0; i < palletizingRowList.Count; i++)
             {
@@ -275,10 +260,6 @@ namespace WCS.WorkEngineering.Systems
                 }
             }
 
-            if (palletizingRowList.Count == 1)
-            {
-            }
-
             obj.Data.VoucherNo++;
         }
 

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

@@ -29,12 +29,12 @@ namespace WCS.WorkEngineering.Systems
                 var db = _db.Default;
                 //取一个时间最靠前的,没有绑定码垛工位的码垛记录
                 var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.PalletizingStation == null && !x.Finish);
-                if (palletizingInfo == null) return;
+                if (palletizingInfo == null) throw new Exception($"没有可用码垛信息");
                 var palleTask = db.Queryable<WCS_TaskInfo>().First(x => x.ID == palletizingInfo.TaskId && (x.Status == TaskStatus.FinishOfShunt || x.Status == TaskStatus.ConveyorExecution));
-                if (palleTask == null) return;
+                if (palleTask == null) throw new Exception($"未找到任务{palleTask.ID}");
                 //获取可以使用的放货站台信息
                 var taskAddNext = Device.All.FirstOrDefault(x => x.Code == palleTask.AddrNext).Targets.FirstOrDefault().Targets.FirstOrDefault().Targets;
-                if (taskAddNext == null) return;
+                if (taskAddNext == null) throw new Exception($"未找到{palleTask.AddrNext}可去的码垛工位");
                 var devs = Device.All.Where(x => taskAddNext.Contains(x)).Select(x => new Device<IStation520, IStation521, IStation523>(x, World)).ToList();
 
                 //获取所有的未结束且有码垛工位的码垛记录
@@ -42,9 +42,9 @@ namespace WCS.WorkEngineering.Systems
 
                 //取一个可用用于码垛的地方
                 var dev = devs.Where(x => !palletizingStation.Contains(x.Entity.Code)).FirstOrDefault(x => !x.Data3.Status.HasFlag(StationStatus.PH_Status));
-                if (dev == null) return;
+                if (dev == null) throw new Exception($"没有可用码垛工位");
                 var endDev = Device.All.Where(x => x.Code == "1606").Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
-                if (endDev.Data.TaskNumber != 0 || endDev.Data.GoodsEnd != 0) return;
+                if (endDev.Data.TaskNumber != 0 || endDev.Data.GoodsEnd != 0) throw new Exception($"拆盘机任务未清除,请清除"); ;
 
                 palletizingInfo.PalletizingStation = dev.Entity.Code;
                 db.Updateable(palletizingInfo).ExecuteCommand();

+ 6 - 4
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架缓存放行点.cs

@@ -67,12 +67,13 @@ namespace WCS.WorkEngineering.Systems
             #endregion 计算当前缓存线是否已全部分配任务
 
             WCS_TaskInfo task = null;
+            short nextAdd = 0;
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
                 //先找到下一个地址对应的缓存信息
                 var lineCache = db.Queryable<WCS_CacheLine>().Includes(x => x.Locations).Single(x => x.LocationNo == nextCode && x.Locations.Any(s => s.TaskId == obj.Data2.TaskNumber));
-                if (lineCache == null) return; //找不到表示当前线体的任务组没有凑齐
+                if (lineCache == null) throw new Exception($"当前缓存组未分配完"); //找不到表示当前线体的任务组没有凑齐
 
                 //检测实物数量与有货总数是否相等
                 if (!lineCache.Put)
@@ -80,7 +81,7 @@ namespace WCS.WorkEngineering.Systems
                     var qty = lineCache.Locations.Count(x => x is { IsEmpty: false, InStock: true });
                     var devQty = _cacheDevices.FirstOrDefault(x => x.Key.Entity.Code == obj.Entity.Code).Value
                         .Count(x => x.Data2.Status.HasFlag(StationStatus.PH_Status));
-                    if (qty != devQty) return; //表示当前货物未全部到位
+                    if (qty != devQty) throw new Exception($"当前缓存组工字轮未到齐"); //表示当前货物未全部到位
                     lineCache.Put = true;
                     db.Updateable(lineCache).ExecuteCommand();
 
@@ -91,17 +92,18 @@ namespace WCS.WorkEngineering.Systems
 
                 var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == Entity.TaskStatus.FinishOfShunt) ?? throw new KnownException("未找到对应的WCS任务", LogLevelEnum.Mid);
                 taskInfo.Status = Entity.TaskStatus.ConveyorExecution;
-                taskInfo.AddrNext = obj.Entity.Targets.FirstOrDefault().Code;
+                //taskInfo.AddrNext = obj.Entity.Targets.FirstOrDefault().Code;
                 taskInfo.EditWho = "WCS";
                 taskInfo.EditTime = DateTime.Now;
                 db.Updateable(taskInfo).ExecuteCommand();
                 taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, taskInfo.AddrNext, "桁架缓存放行");
                 task = taskInfo;
+                nextAdd = obj.Entity.Targets.FirstOrDefault().Code.ToShort();
             });
             if (task == null) return;
             obj.Data.TaskNumber = obj.Data2.TaskNumber;
             obj.Data.GoodsStart = obj.Entity.Code.ToShort();
-            obj.Data.GoodsEnd = task.AddrNext.ToShort();
+            obj.Data.GoodsEnd = nextAdd;
             obj.Data.VoucherNo++;
         }
 

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

@@ -43,7 +43,7 @@ namespace WCS.WorkEngineering.Systems
                 //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
                 var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机非09));
                 var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
-                if (dev.Data.TaskNumber != 0 || dev.Data.GoodsEnd != 0) return;
+                if (dev.Data.TaskNumber != 0 || dev.Data.GoodsEnd != 0) throw new Exception($"{dev.Entity.Code}有残留任务信息,请处理!");
                 //开始创建搬运任务
                 task = new WCS_TaskInfo()
                 {

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/WebApi/Controllers/AgvController.cs

@@ -104,7 +104,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 break;
                         }
 
-                        db.Default.Updateable(agvTask).SplitTable().ExecuteCommand();
+                        db.Default.Updateable(agvTask).SplitTable(x=>x.Take(2)).ExecuteCommand();
                         res.code = AgvResponseCode.Success;
                         res.message = "成功";
                     });

+ 5 - 4
业务工程/分拣库/WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

@@ -191,7 +191,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                     }
                                     agv.Status = AGVTaskStatus.Cancel;
                                     agv.AgvStatus = AGVTaskStatus.Cancel;
-                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                    db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                 }
                                 //更新任务状态
                                 task.Status = Entity.TaskStatus.Cancel;
@@ -276,7 +276,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                             //}
                                             agv.Status = AGVTaskStatus.MissionCompleted;
                                             agv.AgvStatus = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         }
                                         //更新任务状态
                                         task.Status = Entity.TaskStatus.Finish;
@@ -350,7 +350,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                             //}
                                             agv.Status = AGVTaskStatus.MissionCompleted;
                                             agv.AgvStatus = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         }
                                         //更新任务状态
                                         task.Status = Entity.TaskStatus.Finish;
@@ -452,7 +452,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 {
                                     agv.Status = AGVTaskStatus.NewBuild;
                                     agv.AgvStatus = AGVTaskStatus.NewBuild;
-                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                    db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                 }
 
                                 task.Status = task.Floor switch
@@ -542,6 +542,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// </summary>
         /// <param name="strIpOrDName">输入参数,表示IP地址或域名</param>
         /// <returns></returns>
+        [HttpGet]
         public static bool PingIpOrDomainName(string strIpOrDName)
         {
             try

+ 2 - 2
业务工程/时效库/WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -63,7 +63,7 @@ namespace WCS.WorkEngineering.Extensions
                 {
                     taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                     taskOld.Id = taskInfo.ID;
-                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable().ExecuteCommand();
+                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable(x=>x.Take(2)).ExecuteCommand();
                 }
             }
             else
@@ -87,7 +87,7 @@ namespace WCS.WorkEngineering.Extensions
                 taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                 taskOld.Id = taskInfo.ID;
                 //更新任务历史表,删除任务当前表
-                db.Updateable(taskOld).SplitTable().ExecuteCommand();
+                db.Updateable(taskOld).SplitTable(x=>x.Take(2)).ExecuteCommand();
                 db.Deleteable(taskInfo).ExecuteCommand();
             }
             else

+ 8 - 8
业务工程/时效库/WCS.WorkEngineering/Systems/AgvSystems.cs

@@ -65,7 +65,7 @@ namespace WCS.WorkEngineering.Systems
                                         {
                                             var taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == agv.TaskId);
                                             agv.Status = AGVTaskStatus.RequestOrPermission2;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                             taskInfo.AddWCS_TASK_DTL(db.Default, "agv", $"允许AGV任务{agv.ID}在站台{agv.Station}取货");
                                             AgvApi.ContinueTask(agv.AgvID, agv.Station);
                                             break;
@@ -73,7 +73,7 @@ namespace WCS.WorkEngineering.Systems
                                     case AGVTaskStatus.PutRequestOrPermission when agv.Status != AGVTaskStatus.PutRequestOrPermission:
                                         {
                                             agv.Status = AGVTaskStatus.PutRequestOrPermission;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                             AgvApi.ContinueTask(agv.AgvID, agv.Station);
                                             break;
                                         }
@@ -81,7 +81,7 @@ namespace WCS.WorkEngineering.Systems
                                         var devinfo = new Device<IStation520, IStation521>(Device.All.First(x => x.Code == agv.Position), World);
                                         devinfo.Data.CmdType = StationCmd.Res3;
                                         agv.Status = AGVTaskStatus.LeaveGet;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                        db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         break;
                                     //完成任务
                                     case AGVTaskStatus.MissionCompleted when agv.Status != AGVTaskStatus.MissionCompleted:
@@ -92,7 +92,7 @@ namespace WCS.WorkEngineering.Systems
                                                 if (taskInfo == null) throw new Exception($"未找到AGV任务{agv.ID}对应WCS任务");
                                                 //更新AGV任务状态
                                                 agv.Status = AGVTaskStatus.MissionCompleted;
-                                                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                                db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                                 //更新WCS任务状态
                                                 taskInfo.Status = Entity.TaskStatus.Finish;
                                                 taskInfo.EedTime = DateTime.Now;
@@ -103,7 +103,7 @@ namespace WCS.WorkEngineering.Systems
                                             else
                                             {
                                                 agv.Status = AGVTaskStatus.MissionCompleted;
-                                                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                                db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                             }
 
                                             break;
@@ -153,14 +153,14 @@ namespace WCS.WorkEngineering.Systems
                                         agv.AgvID = agv.ID.ToString();
                                         agv.Status = AGVTaskStatus.Confirm;
                                         agv.AgvStatus = AGVTaskStatus.Confirm;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                        db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         break;
                                     //巷道分配
                                     case AGVTaskStatus.RequestOrPermission1 when agv.Status != AGVTaskStatus.Complete1:
                                         {
                                             agv.Status = AGVTaskStatus.Complete1;
                                             agv.Position = "2501";
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
 
                                             //task.Status = TaskStatus.Finish;
                                             //db.Default.Updateable(task).ExecuteCommand();
@@ -188,7 +188,7 @@ namespace WCS.WorkEngineering.Systems
                                         if (agv.TaskType == AGVTaskType.EnterDepot)
                                         {
                                             agv.Status = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         }
                                         break;
                                 }

+ 1 - 1
业务工程/时效库/WCS.WorkEngineering/Systems/机台叫料生成AGV任务.cs

@@ -46,7 +46,7 @@ namespace WCS.WorkEngineering.Systems
                 agvTask.AgvID = agvId;
                 agvTask.Status = AGVTaskStatus.Confirm;
                 agvTask.AgvStatus = AGVTaskStatus.Confirm;
-                db.Updateable(agvTask).SplitTable().ExecuteCommand();
+                db.Updateable(agvTask).SplitTable(x=>x.Take(2)).ExecuteCommand();
                 task.Status = TaskStatus.AGVExecution;
                 task.AgvTaskID = agvTask.ID;
                 task.Updateable(db);

+ 1 - 1
业务工程/时效库/WCS.WorkEngineering/WebApi/Controllers/AgvController.cs

@@ -104,7 +104,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 break;
                         }
 
-                        db.Default.Updateable(agvTask).SplitTable().ExecuteCommand();
+                        db.Default.Updateable(agvTask).SplitTable(x=>x.Take(2)).ExecuteCommand();
                         res.code = AgvResponseCode.Success;
                         res.message = "成功";
                     });

+ 4 - 4
业务工程/时效库/WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

@@ -191,7 +191,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                     }
                                     agv.Status = AGVTaskStatus.Cancel;
                                     agv.AgvStatus = AGVTaskStatus.Cancel;
-                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                    db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                 }
                                 //更新任务状态
                                 task.Status = Entity.TaskStatus.Cancel;
@@ -276,7 +276,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                             //}
                                             agv.Status = AGVTaskStatus.MissionCompleted;
                                             agv.AgvStatus = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         }
                                         //更新任务状态
                                         task.Status = Entity.TaskStatus.Finish;
@@ -350,7 +350,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                             //}
                                             agv.Status = AGVTaskStatus.MissionCompleted;
                                             agv.AgvStatus = AGVTaskStatus.MissionCompleted;
-                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                            db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                         }
                                         //更新任务状态
                                         task.Status = Entity.TaskStatus.Finish;
@@ -452,7 +452,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 {
                                     agv.Status = AGVTaskStatus.NewBuild;
                                     agv.AgvStatus = AGVTaskStatus.NewBuild;
-                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                    db.Default.Updateable(agv).SplitTable(x=>x.Take(2)).ExecuteCommand();
                                 }
 
                                 task.Status = task.Floor switch