林豪 左 1 жил өмнө
parent
commit
fed706a243

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

@@ -25,7 +25,7 @@ namespace WCS.WorkEngineering.Extensions
         /// <returns></returns>
         public string GetBCRCode()
         {
-            var barcode = Data.Content.Trim('\0');
+            var barcode = Data.Content.RemoveEscapeCharacters();
 
             if (barcode.IsNullOrWhiteSpace()) throw new KnownException($"{Entity.Code}--扫码失败,内容为空", LogLevelEnum.High);
 
@@ -53,7 +53,7 @@ namespace WCS.WorkEngineering.Extensions
         /// <returns></returns>
         public string GetBCRCode()
         {
-            var barcode = Data.BcrCode.Trim('\0');
+            var barcode = Data.BcrCode.RemoveEscapeCharacters();
 
             if (barcode.IsNullOrWhiteSpace()) throw new KnownException($"{Entity.Code}--扫码失败,内容为空", LogLevelEnum.High);
 

+ 13 - 14
业务工程/分拣库/WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -4,7 +4,6 @@ using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using WCS.Core;
 using WCS.Entity.Protocol.BCR;
-using WCS.Entity.Protocol.Protocol.Robot;
 using WCS.Entity.Protocol.Robot;
 using WCS.Entity.Protocol.Station;
 using WCS.Entity.Protocol.Truss;
@@ -180,7 +179,7 @@ namespace WCS.WorkEngineering.Extensions
         /// <returns></returns>
         public static string GetBCRCode(this IBCR81 bCR)
         {
-            var barcode = bCR.Content.Trim('\0');
+            var barcode = bCR.Content.RemoveEscapeCharacters();
             if (barcode.IsNullOrWhiteSpace()) throw new KnownException($"扫码失败,内容为空", LogLevelEnum.High);
             return barcode;
         }
@@ -192,17 +191,17 @@ namespace WCS.WorkEngineering.Extensions
         public static List<string> GetBcrCodeList(this IBCR83 bCR)
         {
             return new List<string>() {
-                bCR.BcrCode1.Trim('\0').Trim(),
-                bCR.BcrCode2.Trim('\0').Trim(),
-                bCR.BcrCode3.Trim('\0').Trim(),
-                bCR.BcrCode4.Trim('\0').Trim(),
-                bCR.BcrCode5.Trim('\0').Trim(),
-                bCR.BcrCode6.Trim('\0').Trim(),
-                bCR.BcrCode7.Trim('\0').Trim(),
-                bCR.BcrCode8.Trim('\0').Trim(),
-                bCR.BcrCode9.Trim('\0').Trim(),
-                bCR.BcrCode10.Trim('\0').Trim(),
-                bCR.BcrCode11.Trim('\0').Trim() };
+                bCR.BcrCode1.RemoveEscapeCharacters(),
+                bCR.BcrCode2.RemoveEscapeCharacters(),
+                bCR.BcrCode3.RemoveEscapeCharacters(),
+                bCR.BcrCode4.RemoveEscapeCharacters(),
+                bCR.BcrCode5.RemoveEscapeCharacters(),
+                bCR.BcrCode6.RemoveEscapeCharacters(),
+                bCR.BcrCode7.RemoveEscapeCharacters(),
+                bCR.BcrCode8.RemoveEscapeCharacters(),
+                bCR.BcrCode9.RemoveEscapeCharacters(),
+                bCR.BcrCode10.RemoveEscapeCharacters(),
+                bCR.BcrCode11.RemoveEscapeCharacters() };
         }
 
         /// <summary>
@@ -215,7 +214,7 @@ namespace WCS.WorkEngineering.Extensions
             var index = 1;
             for (var i = 1; i <= 50; i++)
             {
-                var value = properties[index].GetValue(station525).ToString().Trim('\0').Trim();
+                var value = properties[index].GetValue(station525).ToString().RemoveEscapeCharacters();
                 if (!value.IsNullOrEmpty()) yield return value;
                 index += 7;
             }

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

@@ -269,6 +269,16 @@ namespace WCS.WorkEngineering.Extensions
             return matList.Distinct().Aggregate("", (current, mat) => current + $"[{mat}]");
         }
 
+        /// <summary>
+        ///  去除转义字符
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public static string RemoveEscapeCharacters(this string? value)
+        {
+            return value.Trim('\0', '\a', '\b', '\f', '\n', '\r', '\t', '\v').Trim();
+        }
+
         #endregion 工字轮支线分流
     }
 

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

@@ -32,22 +32,14 @@ namespace WCS.WorkEngineering.Systems
         public override void Do(Device<IStation520> obj)
         {
             var key = $"WCS:Lock:无交互系统{obj.Entity.Code}";
-            try
+            RedisHub.Do(key, redis =>
             {
-                if (RedisHub.Default.Get(key) != null)
-                {
-                    throw new KnownException($"[{obj.Entity.Code}]--触发并发管控", LogLevelEnum.High);
-                }
-                RedisHub.Default.Set(key, obj.Entity.Code);
-
-                #region 处理所有的新增任务
-
                 try
                 {
                     List<WCS_TaskInfo> taskInfos = new List<WCS_TaskInfo>();
                     SqlSugarHelper.Do(db =>
                     {
-                        taskInfos = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
+                        taskInfos = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && !(t.Type == TaskType.SetPlate && t.AddrFrom == "Robot")).ToList();
                     });
                     if (taskInfos.Any())
                     {
@@ -88,7 +80,7 @@ namespace WCS.WorkEngineering.Systems
                                             //计算下一个地址
                                             var path1 = DevicePath.GetPath(task.AddrFrom, task.Device);
                                             task.AddrNext = path1.Points[1].Code;
-                                            task.SrmStation = task.BarCode is "TPA" or "TPB" ? task.AddrFrom : path1.Points[2].Code;
+                                            task.SrmStation = task.BarCode.Contains("TPA") || task.BarCode.Contains("TPB") ? task.AddrFrom : path1.Points[2].Code;
 
                                             db.Default.Updateable(task).ExecuteCommand();
                                             task.AddWCS_TASK_DTL(db.Default, task.Device, $"初始化入库任务信息");
@@ -137,7 +129,7 @@ namespace WCS.WorkEngineering.Systems
                                                             Status = AGVTaskStatus.NewBuild,
                                                             TaskId = task.ID,
                                                             Position = task.WorkBench,
-                                                            Station = obj.Entity.Code,
+                                                            Station = task.SrmStation,
                                                             AddWho = "WCS",
                                                             AddTime = DateTime.Now
                                                         }).SplitTable().ExecuteCommand();
@@ -149,7 +141,7 @@ namespace WCS.WorkEngineering.Systems
                                                             Status = AGVTaskStatus.NewBuild,
                                                             TaskId = task.ID,
                                                             Position = task.WorkBench,
-                                                            Station = obj.Entity.Code,
+                                                            Station = "2501",
                                                             AddWho = "WCS",
                                                             AddTime = DateTime.Now
                                                         }).SplitTable().ExecuteCommand();
@@ -181,13 +173,7 @@ namespace WCS.WorkEngineering.Systems
                 {
                     World.Log(ex.Message, LogLevelEnum.Mid);
                 }
-
-                #endregion 处理所有的新增任务
-            }
-            finally
-            {
-                RedisHub.Default.Del(key);
-            }
+            });
         }
 
         public override bool Select(Device dev)

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

@@ -228,7 +228,7 @@ namespace WCS.WorkEngineering.Systems
                 SqlSugarHelper.Do(_db =>
                 {
                     var db = _db.Default;
-                    var taskInfo = db.Queryable<WCS_TaskInfo>().First(p => p.ID == dev.Data.TaskNumber && p.Status == TaskStatus.WaitingToExecute);
+                    var taskInfo = db.Queryable<WCS_TaskInfo>().First(p => p.ID == dev.Data.TaskNumber && p.Status == TaskStatus.ConveyorExecution);
                     if (taskInfo == null) return;
                     taskInfo.Status = TaskStatus.RgvExecution;
                     taskInfo.AddrNext = obj.Entity.Code;

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

@@ -44,7 +44,7 @@ namespace WCS.WorkEngineering.Systems
                     var db = _db.Default;
 
                     //验证是否有对应的任务
-                    if (!db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode == barcode && v.Type == TaskType.EnterDepot))
+                    if (!db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode.Contains(barcode) && v.Type == TaskType.EnterDepot))
                     {
                         var res = WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
                         {
@@ -56,7 +56,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 == barcode && v.Type == TaskType.EnterDepot);
+                    var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.BarCode.Contains(barcode) && 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/一楼扫码入库.cs

@@ -36,13 +36,13 @@ namespace WCS.WorkEngineering.Systems
                 {
                     var db = _db.Default;
                     //获取托盘条码
-                    var barcode = obj.Data5.GetBCRCode().Substring(0, 3);
+                    var barcode = obj.Data5.GetBCRCode();
                     //var barcode = "TAP00001";
                     //验证是否有对应的任务
                     if (!db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode == barcode && v.Type == TaskType.EnterDepot))
                     {
                         var palletType = PalletType.Pallet09;
-                        if (barcode == "TPB") palletType = PalletType.PalletNo09;
+                        if (barcode.Contains("TPB")) palletType = PalletType.PalletNo09;
 
                         var res = WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
                         {

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

@@ -13,7 +13,7 @@ namespace WCS.WorkEngineering.Systems
     /// <summary>
     ///  桁架码垛区补空托盘任务生成
     /// </summary>
-    [BelongTo(typeof(MainWorld))]
+    [BelongTo(typeof(SortingPalletizingWorld))]
     [Description("桁架码垛区补空托盘任务生成")]
     public class 桁架码垛区补空托盘任务生成 : DeviceSystem<Device<IStation520>>
     {
@@ -28,7 +28,7 @@ namespace WCS.WorkEngineering.Systems
             {
                 var db = _db.Default;
                 //取一个时间最靠前的,没有绑定码垛工位的码垛记录
-                var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.PalletizingStation == null);
+                var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.PalletizingStation == null && !x.Finish);
                 if (palletizingInfo == null) return;
                 var palleTask = db.Queryable<WCS_TaskInfo>().First(x => x.ID == palletizingInfo.TaskId && (x.Status == TaskStatus.FinishOfShunt || x.Status == TaskStatus.ConveyorExecution));
                 if (palleTask == null) return;

+ 3 - 0
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架码垛工位任务结束处理.cs

@@ -74,6 +74,9 @@ namespace WCS.WorkEngineering.Systems
 
                 palletizing.Finish = true;
                 db.Updateable(palletizing).ExecuteCommand();
+                taskInfo.Status = TaskStatus.ConveyorExecution;
+                db.Updateable(taskInfo).ExecuteCommand();
+                taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, $"桁架码垛结束处理完成");
                 task = taskInfo;
             });
             if (task == null) return;

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

@@ -56,7 +56,7 @@ namespace WCS.WorkEngineering.Systems
             #region 处理完成任务
 
             //判断DB520 完成任务确认清除信号 是否为1
-            if (obj.Data.OkAck == 1 && obj.Data2.TaskFinishId1 == 0 || obj.Data2.TaskFinishId2 == 0) obj.Data.OkAck = 0;
+            if (obj.Data.OkAck == 1 && obj.Data2 is { TaskFinishId1: 0, TaskFinishId2: 0 }) obj.Data.OkAck = 0;
 
             if (obj.Data2.TaskFinishId1 > 0 || obj.Data2.TaskFinishId2 > 0)
             {

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

@@ -67,6 +67,7 @@ namespace WCS.WorkEngineering.Systems.环形库
                 db.Updateable(deliveryTask).ExecuteCommand();
                 deliveryTask.AddWCS_TASK_DTL(db, obj.Entity.Code, $"任务结束");
                 var dev = DevicePath.GetPath(obj.Entity.Code, "SRM").Points.Last();
+                taskInfo.Status = TaskStatus.ConveyorExecution;
                 taskInfo.WarehouseCode = dev.Code.GetWareCode();
                 db.Updateable(taskInfo).ExecuteCommand();
                 taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, $"更新任务对应仓库信息{taskInfo.WarehouseCode}");

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

@@ -104,7 +104,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                     positionCode="LXSS1",
                     type="00"
                 }
-            }, "1", taskCode, "ZTGT30", "1");
+            }, "1", taskCode, "ZTGT31", "1");
         }
 
         /// <summary>