Sfoglia il codice sorgente

流向变更,芯股优化,空轮就近反

林豪 左 10 mesi fa
parent
commit
4cf5e57d20

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

@@ -397,8 +397,13 @@ namespace WCS.WorkEngineering.Systems
             string sta = "";
             var n = 0;
             var s = 0;
+            var warehouseCode = task.WarehouseCode;
+            if (task.BusType == TaskBusType.皮盘入库.GetDescription() || task.BusType == TaskBusType.车间叫料.GetDescription())
+            {
+                warehouseCode = task.MaterialCode;
+            }
             //同侧之间均分
-            if (task.WarehouseCode.Contains("1"))
+            if (warehouseCode.Contains("1"))
             {
                 n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("25"))
                            .SplitTable(v => v.Take(2)).Count();
@@ -406,7 +411,7 @@ namespace WCS.WorkEngineering.Systems
                            .SplitTable(v => v.Take(2)).Count();
                 sta = n > s ? "2701" : "2501";
             }
-            else if (task.WarehouseCode.Contains("2"))
+            else if (warehouseCode.Contains("2"))
             {
                 n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("29"))
                            .SplitTable(v => v.Take(2)).Count();
@@ -414,7 +419,7 @@ namespace WCS.WorkEngineering.Systems
                            .SplitTable(v => v.Take(2)).Count();
                 sta = n > s ? "3101" : "2901";
             }
-            else if (task.WarehouseCode.Contains("3"))
+            else if (warehouseCode.Contains("3"))
             {
                 n = db.Default.Queryable<WCS_AgvTaskInfo>().NoLock().Where(v => v.Status >= AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.Complete1 && v.TaskType == AGVTaskType.EnterDepot && v.Station.Contains("33"))
                            .SplitTable(v => v.Take(2)).Count();

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

@@ -10,6 +10,7 @@ using WCS.Entity.Protocol.BCR;
 using WCS.Entity.Protocol.Station;
 using WCS.WorkEngineering.Extensions;
 using WCS.WorkEngineering.Worlds;
+using wms.sqlsugar.model.fj;
 using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.WorkEngineering.Systems
@@ -51,7 +52,7 @@ namespace WCS.WorkEngineering.Systems
                 foreach (var bcrCode in codes)
                 {
                     WCS_TaskInfo taskInfo = null;
-
+                    fjSysConfig config = new fjSysConfig();
                     SqlSugarHelper.Do(_db =>
                     {
                         var db = _db.Default;
@@ -61,7 +62,13 @@ namespace WCS.WorkEngineering.Systems
                             World.Log($"{bcrCode}:找不到匹配的任务", LogLevelEnum.High);
                             return;
                         }
+                        var config1 = db.Queryable<fjSysConfig>().NoLock().First(x => x.Code == $"{task.WarehouseCode}-Flow");
+                        if (config1 == null)
+                        {
+                            config.Code = "4";
+                        }
 
+                        config = config1;
                         taskInfo = task;
                     });
                     if (taskInfo == null)
@@ -77,6 +84,34 @@ namespace WCS.WorkEngineering.Systems
                     }
 
                     var next = path.Points[1].Code;
+
+                    #region 计算应该去哪个分拣库
+
+                    //应该要去的分拣库
+
+                    if (taskInfo.WarehouseCode.Contains("N"))
+                    {
+                        next = config.Code switch
+                        {
+                            "1" => "418",
+                            "2" => "818",
+                            "3" => "1218",
+                            _ => next
+                        };
+                    }
+                    else if (taskInfo.WarehouseCode.Contains("S"))
+                    {
+                        next = config.Code switch
+                        {
+                            "1" => "618",
+                            "2" => "1018",
+                            "3" => "1418",
+                            _ => next
+                        };
+                    }
+
+                    #endregion 计算应该去哪个分拣库
+
                     if (taskInfo == null) continue;
                     //开始赋值
                     obj.Data3.GetType().GetProperty($"TaskNumber{obj.Data3.NextIndex}")
@@ -109,7 +144,7 @@ namespace WCS.WorkEngineering.Systems
         public override bool Select(Device dev)
         {
             var codes = new List<string>();
-            if (WorkStart.WareHouses.Contains("FJ1")) codes.AddRange(new List<string>(){ "18" , "118" });
+            if (WorkStart.WareHouses.Contains("FJ1")) codes.AddRange(new List<string>() { "18", "118" });
             if (WorkStart.WareHouses.Contains("FJ2")) codes.AddRange(new List<string>() { "38", "58" });
             if (WorkStart.WareHouses.Contains("FJ3")) codes.AddRange(new List<string>() { "138", "158" });
 

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

@@ -1,8 +1,8 @@
-using NetTaste;
-using PlcSiemens.Core.Extension;
+using PlcSiemens.Core.Extension;
 using ServiceCenter.Extensions;
 using ServiceCenter.Logs;
 using ServiceCenter.SqlSugars;
+using SqlSugar;
 using System.ComponentModel;
 using WCS.Core;
 using WCS.Entity;
@@ -32,7 +32,7 @@ namespace WCS.WorkEngineering.Systems
                     obj.Data.TaskNumber = obj.Data2.TaskNumber;
                     World.Log($"复写:{obj.Data.TaskNumber}");
                 }
-                World.Log($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}",LogLevelEnum.Mid);
+                World.Log($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.Mid);
                 return;
             }
 
@@ -45,7 +45,7 @@ namespace WCS.WorkEngineering.Systems
             ;
             if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status))
             {
-                World.Log("站台货物信息与实际占用不一致",LogLevelEnum.Mid);
+                World.Log("站台货物信息与实际占用不一致", LogLevelEnum.Mid);
                 return;
             }
 
@@ -104,7 +104,7 @@ namespace WCS.WorkEngineering.Systems
                     World.Log($"未找到对应的WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);
                     return;
                 }
-                else if (taskInfo.AddTime < DateTime.Now.AddHours(-12)  && obj.Data2.TaskNumber == taskInfo.ID)
+                else if (taskInfo.AddTime < DateTime.Now.AddHours(-12) && obj.Data2.TaskNumber == taskInfo.ID)
                 {
                     obj.Data.TaskNumber = 1;
                     obj.Data.GoodsEnd = obj.Entity.Code.ToShort();
@@ -112,7 +112,7 @@ namespace WCS.WorkEngineering.Systems
                     World.Log($"超时执行记录:任务号[{taskInfo.ID}]-[{obj.Data.TaskNumber}]-[{obj.Data.VoucherNo}]");
                     return;
                 }
-                else if (taskInfo.Grade != null &&(taskInfo.Grade.ToUpper() != "A")  && obj.Data2.TaskNumber == taskInfo.ID)
+                else if (taskInfo.Grade != null && (taskInfo.Grade.ToUpper() != "A") && obj.Data2.TaskNumber == taskInfo.ID)
                 {
                     obj.Data.TaskNumber = 3;
                     obj.Data.GoodsEnd = obj.Entity.Code.ToShort();
@@ -120,7 +120,6 @@ namespace WCS.WorkEngineering.Systems
                     World.Log($"BC执行记录:任务号[{taskInfo.ID}]-[{obj.Data.TaskNumber}]-[{obj.Data.VoucherNo}]");
                     return;
                 }
-                
 
                 if (!taskInfo.BarCode.Contains("Error"))
                 {
@@ -149,16 +148,16 @@ namespace WCS.WorkEngineering.Systems
                 {
                     case "418":
                         if (taskInfo.WarehouseCode != "1N") //throw new KnownException($"当前任务应该当前往{taskInfo.WarehouseCode}库", LogLevelEnum.Mid);
-                        {                            
-                            WriteInfo(obj,taskInfo);
+                        {
+                            EditFlow(taskInfo, "1N", db, obj.Entity.Code);
                             return;
-                        }                       
+                        }
                         break;
 
                     case "618":
                         if (taskInfo.WarehouseCode != "1S") //throw new KnownException($"当前任务应该当前往{taskInfo.WarehouseCode}库", LogLevelEnum.Mid);
                         {
-                            WriteInfo(obj, taskInfo);
+                            EditFlow(taskInfo, "1S", db, obj.Entity.Code);
                             return;
                         }
                         break;
@@ -166,7 +165,7 @@ namespace WCS.WorkEngineering.Systems
                     case "818":
                         if (taskInfo.WarehouseCode != "2N") //throw new KnownException($"当前任务应该当前往{taskInfo.WarehouseCode}库", LogLevelEnum.Mid);
                         {
-                            WriteInfo(obj, taskInfo);
+                            EditFlow(taskInfo, "2N", db, obj.Entity.Code);
                             return;
                         }
                         break;
@@ -174,7 +173,7 @@ namespace WCS.WorkEngineering.Systems
                     case "1018":
                         if (taskInfo.WarehouseCode != "2S") //throw new KnownException($"当前任务应该当前往{taskInfo.WarehouseCode}库", LogLevelEnum.Mid);
                         {
-                            WriteInfo(obj, taskInfo);
+                            EditFlow(taskInfo, "2S", db, obj.Entity.Code);
                             return;
                         }
                         break;
@@ -182,7 +181,7 @@ namespace WCS.WorkEngineering.Systems
                     case "1218":
                         if (taskInfo.WarehouseCode != "3N") //throw new KnownException($"当前任务应该当前往{taskInfo.WarehouseCode}库", LogLevelEnum.Mid);
                         {
-                            WriteInfo(obj, taskInfo);
+                            EditFlow(taskInfo, "3N", db, obj.Entity.Code);
                             return;
                         }
                         break;
@@ -190,7 +189,7 @@ namespace WCS.WorkEngineering.Systems
                     case "1418":
                         if (taskInfo.WarehouseCode != "3S") //throw new KnownException($"当前任务应该当前往{taskInfo.WarehouseCode}库", LogLevelEnum.Mid);
                         {
-                            WriteInfo(obj, taskInfo);
+                            EditFlow(taskInfo, "3S", db, obj.Entity.Code);
                             return;
                         }
                         break;
@@ -257,6 +256,17 @@ namespace WCS.WorkEngineering.Systems
             World.Log($"南北流错执行记录:任务号[{task.ID}]-[{device.Data.TaskNumber}]-[{device.Data.VoucherNo}]");
         }
 
+        /// <summary>
+        ///  编辑流向
+        /// </summary>
+        public void EditFlow(WCS_TaskInfo task, string warehouseCode, SqlSugarScopeProvider db, string locCode)
+        {
+            WmsApi.EditorialFlow(new FjEditorialFlowRequest() { TaskId = task.ID, LocCode = locCode, WareCode = warehouseCode });
+            task.WarehouseCode = warehouseCode;
+            db.UpdateableRowLock(task);
+            task.AddWCS_TASK_DTL(db, locCode, $"变更流向至{warehouseCode}");
+        }
+
         public override bool Select(Device dev)
         {
             return dev.Code is "418" or "618" or "818" or "1018" or "1218" or "1418";
@@ -315,4 +325,4 @@ namespace WCS.WorkEngineering.Systems
             };
         }
     }
-}
+}

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

@@ -86,18 +86,22 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         }
 
         /// <summary>
-        ///  获取巷道
+        ///  变更流向
         /// </summary>
-        /// <param name="wcsTaskNum">WMS任务ID</param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public static SRes<string> GetTunnelPriorityList(int wcsTaskNum)
+        public static SRes EditorialFlow(FjEditorialFlowRequest req)
         {
-            var res = APICaller.CallApi2<SRes<string>>(WmsUrl + "/api/Hj/GetTunnelPriorityList", new GetTunnelPriorityListRequest
+            var res = APICaller.CallApi2<SRes>(WmsUrl + "/api/FJ/EditorialFlow", new FjEditorialFlowRequest
             {
-                TaskNum = wcsTaskNum,
+                LocCode = req.LocCode,
+                TaskId = req.TaskId,
+                WareCode = req.WareCode
             });
-
+            if (res.ResCode != ResponseStatusCodeEnum.Sucess)
+            {
+                throw new KnownException(res.ResMsg, LogLevelEnum.High);
+            }
             return res;
         }
 
@@ -300,7 +304,6 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                 return null;
             }
         }
-       
 
         /// <summary>
         ///  一楼扫码入库
@@ -489,7 +492,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// <exception cref="KnownException"></exception>
         public static SRes PalletizingCreateseErrorTasks(string loc, string type, int errType = 0)
         {
-            var res = APICaller.CallApi2<SRes>(WmsUrl + "/api/FJ/PalletizingCreateseErrorTasks", new Models.WMS.Request.PalletizingCreateseErrorTasksRequest(loc, type, loc.GetWareCode(),errType));
+            var res = APICaller.CallApi2<SRes>(WmsUrl + "/api/FJ/PalletizingCreateseErrorTasks", new Models.WMS.Request.PalletizingCreateseErrorTasksRequest(loc, type, loc.GetWareCode(), errType));
 
             if (res.ResCode != ResponseStatusCodeEnum.Sucess)
             {
@@ -511,4 +514,25 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// </summary>
         public int TaskId { get; set; }
     }
-}
+
+    /// <summary>
+    ///  变更流向
+    /// </summary>
+    public class FjEditorialFlowRequest : BaseRequest
+    {
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        public int TaskId { get; set; }
+
+        /// <summary>
+        /// 目标仓库
+        /// </summary>
+        public string WareCode { get; set; }
+
+        /// <summary>
+        /// 位置
+        /// </summary>
+        public string LocCode { get; set; }
+    }
+}

+ 7 - 1
业务工程/分拣库/WCS.WorkEngineering/WebApi/Models/WMS/Request/FJBuildEmptyPalletsStockRequest.cs

@@ -150,6 +150,12 @@ namespace WCS.WorkEngineering.WebApi.Models.WMS.Request
         ///  芯股站台送空托
         /// </summary>
         [Description("芯股站台送空托")]
-        芯股站台送空托 = 15
+        芯股站台送空托 = 15,
+
+        /// <summary>
+        ///  皮盘入库
+        /// </summary>
+        [Description("皮盘入库")]
+        皮盘入库 = 16
     }
 }