林豪 左 1 éve
szülő
commit
d46f96c378

+ 2 - 2
WCS.Entity/WCS_TaskInfo.cs

@@ -401,9 +401,9 @@ namespace WCS.Entity
         WaitingToExecute = 1,
 
         /// <summary>
-        /// 分结束
+        /// 分结束
         /// </summary>
-        [Description("分结束")]
+        [Description("分结束")]
         FinishOfShunt = 2,
 
         /// <summary>

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

@@ -291,6 +291,7 @@ namespace WCS.WorkEngineering.Extensions
                 "1661" => "1NR",
                 "SRM1" => "1N",
                 "SRM2" => "2N",
+                "418" => "1N",
                 _ => "",
             };
         }

+ 2 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/二楼拆盘机自动补空托盘组.cs

@@ -25,7 +25,7 @@ namespace WCS.WorkEngineering.Systems
         public override void Do(Device<IStation520, IStation521, IStation523> obj)
         {
             // 拆盘机没有光电
-            if (obj.Data3.Status1.HasFlag(StationStatus1.RES14) && obj.Data3.Status.HasFlag(StationStatus.PH_Status)) return;
+            if (obj.Data3.Status1.HasFlag(StationStatus1.RES14) || obj.Data3.Status.HasFlag(StationStatus.PH_Status)) return;
             var tunnel = obj.Entity.Sources.Where(x => x.HasFlag(DeviceFlags.输送机)) //堆垛机取货点设备
                 .SelectMany(x => x.Sources)
                 .FirstOrDefault(x => x.HasFlag(DeviceFlags.巷道));
@@ -36,7 +36,7 @@ namespace WCS.WorkEngineering.Systems
                 //验证是否有对应的任务
                 if (!db.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code))
                 {
-                    var res = WmsApi.ApplyEmptyPalletGroupOutStorage(obj.Entity.Code, tunnel.Code.GetLastDigit(), obj.Entity.HasFlag(DeviceFlags.拆盘机09) ? PalletType.Pallet09 : PalletType.PalletNo09);
+                    WmsApi.ApplyEmptyPalletGroupOutStorage(obj.Entity.Code, tunnel.Code.GetLastDigit(), obj.Entity.HasFlag(DeviceFlags.拆盘机09) ? PalletType.Pallet09 : PalletType.PalletNo09);
                 }
             });
         }

+ 1 - 0
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣主线/满轮主线预写入目标地址.cs

@@ -64,6 +64,7 @@ namespace WCS.WorkEngineering.Systems
                     db.Connect.BeginTran();
                     task.Status = TaskStatus.WaitingToExecute;
                     task.EditWho = "WCS";
+                    task.StartTime = DateTime.Now;
                     task.EditTime = DateTime.Now;
                     db.Default.Updateable(task).ExecuteCommand();
                     task.AddWCS_TASK_DTL(db.Default, obj.Entity.Code, next.ToString(), "任务完成预分流");

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

@@ -1,6 +1,8 @@
-using PlcSiemens.Core.Extension;
+using Newtonsoft.Json;
+using PlcSiemens.Core.Extension;
 using ServiceCenter.Extensions;
 using ServiceCenter.Logs;
+using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
 using SqlSugar;
 using System.ComponentModel;
@@ -8,6 +10,7 @@ using WCS.Core;
 using WCS.Entity;
 using WCS.Entity.Protocol.Station;
 using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.WebApi.Controllers;
 using WCS.WorkEngineering.Worlds;
 using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
 using TaskStatus = WCS.Entity.TaskStatus;
@@ -33,25 +36,46 @@ namespace WCS.WorkEngineering.Systems
             if (obj.Data2.Request != 1) throw new KnownException("无请求", LogLevelEnum.Mid);
 
             //处理异常任务
-            if (obj.Data2.TaskNumber == 1)
+            if (obj.Data2.TaskNumber == 1 && obj.Data4.Length.ToInt() == 9)
             {
                 obj.Data.TaskNumber = 591;
                 obj.Data.GoodsStart = obj.Entity.Code.ToShort();
                 obj.Data.GoodsEnd = 591;
                 obj.Data.VoucherNo++;
-                World.Log($"执行记录:任务号[{591}]-[{obj.Data.VoucherNo}]");
+                return;
             }
 
             var isPut = false;
             short nextAdd = 0;
+            int taskId = 0;
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
-                var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == TaskStatus.WaitingToExecute) ?? throw new KnownException($"未找到对应的WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);
+                var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == TaskStatus.WaitingToExecute);
+                if (obj.Data2.TaskNumber == 1)
+                {
+                    var type = obj.Data4.Length.ToInt().ToString();
+                    var key = $"ErrorTasks:{obj.Entity.Code}:{type}";
+                    //从redis获取最近的一条任务号
+                    if (!RedisHub.WMS.Exists(key)) WmsApi.PalletizingCreateseErrorTasks(obj.Entity.Code, type);
+                    var value = RedisHub.WMS.Get(key);
+                    var task = JsonConvert.DeserializeObject<MainlineDiversion>(value);
+
+                    //是异常任务,查询最近的一条异常任务
+                    taskInfo = db.Queryable<WCS_TaskInfo>().First(x => x.ID == task.TaskId);
+                    if (taskInfo.Status >= TaskStatus.FinishOfShunt && obj.Data2.TaskNumber != task.TaskId)
+                    {
+                        WmsApi.PalletizingCreateseErrorTasks(obj.Entity.Code, type);
+                        return;
+                    }
+                }
+                else if (taskInfo == null) throw new KnownException($"未找到对应的WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);
+
+                taskId = taskInfo.ID;
                 switch (obj.Data4.Length)
                 {
                     case 9:
-                        isPut = Allot09Or18(db, taskInfo, obj);
+                        isPut = Allot09(db, taskInfo, obj);
                         nextAdd = 455;
                         break;
 
@@ -97,11 +121,11 @@ namespace WCS.WorkEngineering.Systems
                 }
             });
             if (!isPut) return;
-            obj.Data.TaskNumber = obj.Data2.TaskNumber;
+            obj.Data.TaskNumber = taskId;
             obj.Data.GoodsStart = obj.Entity.Code.ToShort();
             obj.Data.GoodsEnd = nextAdd;
             obj.Data.VoucherNo++;
-            World.Log($"执行记录:任务号[{obj.Data2.TaskNumber}]-[{obj.Data.VoucherNo}]");
+            World.Log($"执行记录:任务号[{taskId}]-[{obj.Data.VoucherNo}]");
         }
 
         public override bool Select(Device dev)
@@ -110,25 +134,25 @@ namespace WCS.WorkEngineering.Systems
         }
 
         /// <summary>
-        ///  计算非零九或18的去向
+        ///  计算非零九的去向
         /// </summary>
         /// <param name="db"></param>
         /// <param name="taskInfo"></param>
         /// <param name="obj"></param>
         /// <returns></returns>
-        public bool AllotNot09Or18(SqlSugarScopeProvider db, WCS_TaskInfo taskInfo, Device<IStation520, IStation521, IStation523, IStation91> obj)
+        public bool AllotNot09(SqlSugarScopeProvider db, WCS_TaskInfo taskInfo, Device<IStation520, IStation521, IStation523, IStation91> obj)
         {
             return false;
         }
 
         /// <summary>
-        ///  计算09/18去向
+        ///  计算09去向
         /// </summary>
         /// <param name="db"></param>
         /// <param name="taskInfo"></param>
         /// <param name="obj"></param>
         /// <returns></returns>
-        public bool Allot09Or18(SqlSugarScopeProvider db, WCS_TaskInfo taskInfo, Device<IStation520, IStation521, IStation523, IStation91> obj)
+        public bool Allot09(SqlSugarScopeProvider db, WCS_TaskInfo taskInfo, Device<IStation520, IStation521, IStation523, IStation91> obj)
         {
             //TODO:暂时不来考虑动态计算可前往的目标
             var nextAdd = taskInfo.WarehouseCode switch

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

@@ -68,7 +68,7 @@ namespace WCS.WorkEngineering.Systems
                 foreach (var item in taskList)
                 {
                     item.Status = TaskStatus.Finish;
-                    item.EditTime = DateTime.Now;
+                    item.EedTime = DateTime.Now;
                     db.Updateable(item).ExecuteCommand();
                     item.AddWCS_TASK_DTL(db, obj.Entity.Code, "任务结束");
                 }

+ 18 - 0
业务工程/分拣库/WCS.WorkEngineering/WebApi/Controllers/WmsApi.cs

@@ -436,5 +436,23 @@ namespace WCS.WorkEngineering.WebApi.Controllers
             }
             return res;
         }
+
+        /// <summary>
+        ///  码垛工资轮创建异常任务信息
+        /// </summary>
+        /// <param name="loc"></param>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        /// <exception cref="KnownException"></exception>
+        public static SRes PalletizingCreateseErrorTasks(string loc, string type)
+        {
+            var res = APICaller.CallApi<SRes>(WmsUrl + "/api/FJ/PalletizingCreateseErrorTasks", new PalletizingCreateseErrorTasksRequest(loc, type, loc.GetWareCode()));
+
+            if (res.ResCode != ResponseStatusCodeEnum.Sucess)
+            {
+                throw new KnownException(res.ResMsg, LogLevelEnum.High);
+            }
+            return res;
+        }
     }
 }

+ 36 - 0
业务工程/分拣库/WCS.WorkEngineering/WebApi/Models/WMS/Request/PalletizingCreateseErrorTasksRequest.cs

@@ -0,0 +1,36 @@
+namespace WCS.WorkEngineering.WebApi.Models.WMS.Request
+{
+    /// <summary>
+    ///  码垛创建异常工字轮信息
+    /// </summary>
+    public class PalletizingCreateseErrorTasksRequest
+    {
+        /// <summary>
+        ///  码垛创建异常工字轮信息
+        /// </summary>
+        /// <param name="equCode"></param>
+        /// <param name="type"></param>
+        /// <param name="warehouseCode"></param>
+        public PalletizingCreateseErrorTasksRequest(string equCode, string type, string warehouseCode)
+        {
+            WarehouseCode = warehouseCode;
+            EquNo = equCode;
+            Type = type;
+        }
+
+        /// <summary>
+        ///  设备号
+        /// </summary>
+        public string? EquNo { get; set; }
+
+        /// <summary>
+        ///  工资轮型号 9/18/34/50
+        /// </summary>
+        public string? Type { get; set; }
+
+        /// <summary>
+        ///  仓库编号
+        /// </summary>
+        public string? WarehouseCode { get; set; }
+    }
+}