林豪 左 2 жил өмнө
parent
commit
c2ce74b12d

+ 1 - 1
WCS.Entity.Protocol/Station/Station91.cs

@@ -22,7 +22,7 @@
         float Length { get; set; }
 
         /// <summary>
-        /// 
+        /// 
         /// </summary>
         float Width { get; set; }
     }

+ 3 - 161
WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -3,12 +3,9 @@ using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
-using System.Threading.Tasks;
 using WCS.Core;
 using WCS.Entity;
 using WCS.WorkEngineering.Extensions;
-using WCS.WorkEngineering.WebApi.Controllers;
-using WCS.WorkEngineering.WebApi.Models.AGV.Response;
 using WCS.WorkEngineering.Worlds;
 
 namespace WCS.WorkEngineering.Systems
@@ -16,7 +13,7 @@ namespace WCS.WorkEngineering.Systems
     /// <summary>
     ///  无交互系统
     /// </summary>
-    //[BelongTo(typeof(MainWorldd))]
+    [BelongTo(typeof(MainWorldd))]
     [Description("无交互系统")]
     public class NoInteractionSystems : DeviceSystem<Station>
     {
@@ -59,50 +56,13 @@ namespace WCS.WorkEngineering.Systems
                                     var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item.ID).First() ?? throw new Exception($"未找到对应的WCS任务[{item.ID}]");
                                     if (task.Type == TaskType.EnterDepot)
                                     {
-                                        //创建AGV任务
-                                        var agvTask = new WCS_AgvTaskInfo()
-                                        {
-                                            ID = db.GetAGVTaskId(),
-                                            TaskType = AGVTaskType.EnterDepot,
-                                            Status = AGVTaskStatus.NewBuild,
-                                            Station = task.WorkBench,
-                                            AddWho = "WCS",
-                                            //Position = task.SrmStation
-                                        };
-                                        if (task.Floor == 2)
-                                        {
-                                            task.Tunnel = "3";
-                                            task.Device = "SRM3";
-                                            task.SrmStation = "1025";
-                                        }
-                                        db.Default.Insertable(agvTask).SplitTable().ExecuteCommand();
                                         //更新任务状态
                                         task.Status = Entity.TaskStatus.WaitingToExecute;
-                                        task.AgvTaskID = agvTask.ID;
                                         db.Default.Updateable(task).ExecuteCommand();
-                                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化入库任务信息,并创建AGV任务中间表,AGV任务目标地址:{agvTask.Position}");
+                                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化入库任务信息");
                                     }
                                     else if (task.Type == TaskType.OutDepot)
                                     {
-                                        #region 二楼非半自动手动出库任务需要创建AGV任务
-
-                                        if (task.Floor == 2 && task.OutType != OutTypeEnum.半自动手动出库任务)
-                                        {
-                                            //创建AGV任务
-                                            var agvTask = new WCS_AgvTaskInfo()
-                                            {
-                                                ID = db.GetAGVTaskId(),
-                                                TaskType = AGVTaskType.CallMaterial,
-                                                Status = AGVTaskStatus.NewBuild,
-                                                Station = task.WorkBench,
-                                                AddWho = "WCS"
-                                            };
-                                            db.Default.Insertable(agvTask).SplitTable().ExecuteCommand();
-                                            task.AgvTaskID = agvTask.ID;
-                                        }
-
-                                        #endregion 二楼非半自动手动出库任务需要创建AGV任务
-
                                         if (task.SrmStation.IsNullOrEmpty()) //如果没有指定放货站台
                                         {
                                             //获取堆垛机到目标地址的路径信息
@@ -116,27 +76,9 @@ namespace WCS.WorkEngineering.Systems
                                     }
                                     else if (task.Type == TaskType.Delivery) //一楼叉车搬运任务
                                     {
-                                        var agv = new WCS_AgvTaskInfo()
-                                        {
-                                            ID = db.GetAGVTaskId(),
-                                            TaskType = AGVTaskType.ForkliftFilling,
-                                            Status = AGVTaskStatus.NewBuild,
-                                            Station = task.WorkBench,
-                                            AddWho = "WCS"
-                                        };
-                                        db.Default.Insertable(agv).SplitTable().ExecuteCommand();
-                                        //更新WCS数据
-                                        task.Status = Entity.TaskStatus.WaitingToExecute;
-                                        task.AgvTaskID = agv.ID;
-                                        db.Default.Updateable(task).ExecuteCommand();
-                                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化搬运任务信息,并创建AGV任务");
                                     }
                                     else if (task.Type == TaskType.EmptyInit)
                                     {
-                                        //更新任务状态
-                                        task.Status = Entity.TaskStatus.WaitingToExecute;
-                                        db.Default.Updateable(task).ExecuteCommand();
-                                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化任务信息");
                                     }
                                 });
                             }
@@ -154,106 +96,6 @@ namespace WCS.WorkEngineering.Systems
                 }
 
                 #endregion 处理所有的新增任务
-
-                #region 下发入库AGV任务
-
-                List<WCS_AgvTaskInfo> agvTaskInfos = new List<WCS_AgvTaskInfo>();
-
-                SqlSugarHelper.Do(db =>
-                {
-                    agvTaskInfos = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.Status == AGVTaskStatus.NewBuild && t.TaskType == AGVTaskType.EnterDepot).SplitTable(v => v.Take(2)).ToList();
-                });
-
-                if (agvTaskInfos.Any())
-                {
-                    foreach (var item in agvTaskInfos)
-                    {
-                        try
-                        {
-                            SqlSugarHelper.Do(db =>
-                            {
-                                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.ID == item.ID).SplitTable(v => v.Take(2)).First() ?? throw new Exception($"未找到对应的AGV任务:{item.ID}");
-                                //获取对应wcs任务
-                                var wcs = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.AgvTaskID == agv.ID && t.Status == Entity.TaskStatus.WaitingToExecute).First() ?? throw new Exception($"AGV任务[{item.ID}]未找到对应的WCS任务");
-
-                                switch (wcs.Floor)
-                                {
-                                    case 1: //一楼下发AGV任务
-                                        var res = AgvApi.满轮入库(wcs.BarCode, agv.Station, Guid.NewGuid().ToString().Replace("-", ""), "1");
-                                        agv.Status = AGVTaskStatus.Confirm;
-                                        agv.AgvID = res.data;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
-                                        break;
-
-                                    case 2:
-                                        var agvRes = IwmsApi.空轮回库(wcs.MatCode, wcs.SrmStation, wcs.IsSurplus, wcs.IsRework, agv.ID, wcs.BarCode);
-                                        agv.Status = AGVTaskStatus.Confirm;
-                                        agv.AgvID = agvRes.data;
-                                        db.Default.Updateable(agv).SplitTable().ExecuteCommand();
-                                        break;
-
-                                    default:
-                                        break;
-                                }
-
-                                //更新WCS数据
-                                wcs.Status = Entity.TaskStatus.AGVExecution;
-                                db.Default.Updateable(wcs).ExecuteCommand();
-                                wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV-AGV任务ID{agv.AgvID}");
-                            });
-                        }
-                        catch (Exception ex)
-                        {
-                            World.Log(ex.Message, LogLevelEnum.Mid);
-                            continue;
-                        }
-                    }
-                }
-
-                #endregion 下发入库AGV任务
-
-                #region 一楼叉车补空任务处理
-
-
-                List<WCS_AgvTaskInfo> agvTaskInfos1 = new List<WCS_AgvTaskInfo>();
-
-                SqlSugarHelper.Do(db =>
-                {
-                    agvTaskInfos1 = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.Status == AGVTaskStatus.NewBuild && t.TaskType == AGVTaskType.ForkliftFilling).SplitTable(v => v.Take(2)).ToList();
-                });
-
-                if (agvTaskInfos1.Any())
-                {
-                    foreach (var item in agvTaskInfos1)
-                    {
-                        try
-                        {
-                            GenAgvSchedulingTaskResponse res = new GenAgvSchedulingTaskResponse();
-                            SqlSugarHelper.Do(db =>
-                            {
-                                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.ID == item.ID).SplitTable(v => v.Take(2)).First() ?? throw new Exception($"未找到对应的AGV任务:{item.ID}");
-                                //获取对应wcs任务
-                                var wcs = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.AgvTaskID == agv.ID && t.Status == Entity.TaskStatus.WaitingToExecute).First() ?? throw new Exception($"AGV任务[{item.ID}]未找到对应的WCS任务");
-                                //下发AGV任务
-                                res = AgvApi.机台补空(agv.Station, Guid.NewGuid().ToString().Replace("-", ""), "1");
-                                agv.Status = AGVTaskStatus.Confirm;
-                                agv.AgvID = res.data;
-                                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
-
-                                wcs.Status = Entity.TaskStatus.AGVExecution;
-                                db.Default.Updateable(wcs).ExecuteCommand();
-                                wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV,AGV任务号:{res.data}");
-                            });
-                        }
-                        catch (Exception ex)
-                        {
-                            World.Log(ex.Message, LogLevelEnum.Mid);
-                            continue;
-                        }
-                    }
-                }
-
-                #endregion 移动任务处理
             }
             finally
             {
@@ -263,7 +105,7 @@ namespace WCS.WorkEngineering.Systems
 
         public override bool Select(Device dev)
         {
-            return dev.Code == "1011";
+            return dev.Code == "2532";
         }
     }
 }

+ 1 - 1
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -265,7 +265,7 @@ namespace WCS.WorkEngineering.Systems
                     //获取任务所有设备
                     station = arrIn.First(v => v.Data.TaskNumber == task.ID);
                     //获取当前货物巷道
-                    var res = WmsApi.GetLocalIn(task.ID, task.Device, station.Entity.Code);
+                    var res = WmsApi.GetLocalIn(task.ID, task.Device, station.Entity.Code, task.Height);
                     var loc = res.ResData.CellNo.Split("-");
                     task.Status = TaskStatus.StackerExecution;
                     task.AddrTo = $"{loc[0]}-{loc[1]}-{loc[2]}";

+ 39 - 9
WCS.WorkEngineering/Systems/一楼叠盘机入库.cs

@@ -31,34 +31,60 @@ namespace WCS.WorkEngineering.Systems
             WCS_TaskInfo task = null;//处理完成的任务
             try
             {
+                var device = "";
+                var barcode = "";
+
+                switch (obj.Entity.Code)
+                {
+                    case "2527":
+                        device = "SRM1";
+                        barcode = "TPA";
+                        break;
+
+                    case "2528":
+                        device = "SRM1";
+                        barcode = "TPA";
+                        break;
+
+                    case "2727":
+                        device = "SRM2";
+                        barcode = "TPA";
+                        break;
+
+                    case "2728":
+                        device = "SRM2";
+                        barcode = "TPA";
+                        break;
+                };
+
                 SqlSugarHelper.Do(_db =>
                 {
                     var db = _db.Default;
-                    //获取托盘条码
-                    var barcode = obj.Data5.GetBCRCode();
 
                     //验证是否有对应的任务
                     if (!db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode == barcode))
                     {
-                        PalletType palletType = PalletType.Pallet09;
-                        if (obj.Entity.Code is "2727" or "2527") palletType = PalletType.Pallet09;
-                        else palletType = PalletType.PalletNo09;
-
-                        WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
+                        var res = WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
                         {
                             PalletCode = barcode,
                             StartLoc = obj.Entity.Code,
-                            PalletType = palletType
+                            Height = 2
                         });
+                        if (res.ResCode == WebApi.Models.WMS.Response.ResponseStatusCodeEnum.Sucess) return;
                     }
                     //找到对应的任务
                     task = db.Queryable<WCS_TaskInfo>().First(v => v.BarCode == barcode);
-                    if (task.Status == Entity.TaskStatus.NewBuild)
+                    if (task.Status == Entity.TaskStatus.WaitingToExecute)
                     {
+                        var tunnel = obj.Entity.Targets.Where(v => v.HasFlag(Extensions.DeviceFlags.巷道)).FirstOrDefault();
                         //开始对任务进行处理
                         task.Status = Entity.TaskStatus.ConveyorExecution;
                         task.StartTime = DateTime.Now;
                         task.SrmStation = task.AddrFrom;
+                        task.LastInteractionPoint = obj.Entity.Code;
+                        task.Tunnel = tunnel.Code;
+                        task.Height = 2;
+
                         task.AddWCS_TASK_DTL(_db, obj.Entity.Code, "开始执行入库任务");
                         db.Updateable(task).ExecuteCommand();
                         task.updateRedisHash();
@@ -70,8 +96,12 @@ namespace WCS.WorkEngineering.Systems
             {
                 throw new KnownException(ex.Message, LogLevelEnum.High);
             }
+            if (task == null) return;
+
+            World.Log($"任务处理:开始-DB520[{obj.Data.TaskNumber}]-[{obj.Data.VoucherNo}]-DB521[{obj.Data2.TaskNumber}]-[{obj.Data2.VoucherNo}]");
             obj.Data.TaskNumber = task.ID;
             obj.Data.VoucherNo++;
+            World.Log($"任务处理:结束-DB520[{obj.Data.TaskNumber}]-[{obj.Data.VoucherNo}]-DB521[{obj.Data2.TaskNumber}]-[{obj.Data2.VoucherNo}]");
         }
 
         public override bool Select(Device dev)

+ 11 - 3
WCS.WorkEngineering/Systems/一楼扫码入库.cs

@@ -1,4 +1,5 @@
-using ServiceCenter.Logs;
+using PlcSiemens.Core.Extension;
+using ServiceCenter.Logs;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
 using WCS.Core;
@@ -44,15 +45,17 @@ namespace WCS.WorkEngineering.Systems
                     //验证是否有对应的任务
                     if (!db.Queryable<WCS_TaskInfo>().Any(v => v.BarCode == barcode))
                     {
-                        WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
+                        var res = WmsApi.OneFloorWorkerBuildEmptyPalletsStock(new OneFloorWorkerBuildEmptyPalletsStockRequest()
                         {
                             PalletCode = barcode,
                             StartLoc = obj.Entity.Code,
+                            Height = obj.Data4.Length.ToInt()
                         });
+                        if (res.ResCode == WebApi.Models.WMS.Response.ResponseStatusCodeEnum.Sucess) return;
                     }
                     //找到对应的任务
                     task = db.Queryable<WCS_TaskInfo>().First(v => v.BarCode == barcode);
-                    if (task.Status == Entity.TaskStatus.NewBuild)
+                    if (task.Status == Entity.TaskStatus.WaitingToExecute)
                     {
                         var tunnel = obj.Entity.Targets.Where(v => v.HasFlag(Extensions.DeviceFlags.巷道)).FirstOrDefault();
                         //开始对任务进行处理
@@ -61,6 +64,7 @@ namespace WCS.WorkEngineering.Systems
                         task.SrmStation = task.AddrFrom;
                         task.LastInteractionPoint = obj.Entity.Code;
                         task.Tunnel = tunnel.Code;
+                        task.Height = (short)obj.Data4.Length;
                         switch (obj.Entity.Code)
                         {
                             case "2532": task.Device = "SRM1"; break;
@@ -77,8 +81,12 @@ namespace WCS.WorkEngineering.Systems
             {
                 throw new KnownException(ex.Message, LogLevelEnum.High);
             }
+            if (task == null) return;
+
+            World.Log($"任务处理:开始-DB520[{obj.Data.TaskNumber}]-[{obj.Data.VoucherNo}]-DB521[{obj.Data2.TaskNumber}]-[{obj.Data2.VoucherNo}]");
             obj.Data.TaskNumber = task.ID;
             obj.Data.VoucherNo++;
+            World.Log($"任务处理:结束-DB520[{obj.Data.TaskNumber}]-[{obj.Data.VoucherNo}]-DB521[{obj.Data2.TaskNumber}]-[{obj.Data2.VoucherNo}]");
         }
 
         public override bool Select(Device dev)

+ 0 - 10
WCS.WorkEngineering/Systems/湿拉满轮帘线芯股第一次扫码.cs

@@ -24,16 +24,6 @@ namespace WCS.WorkEngineering.Systems
 
         public override void Do(Device<IStation520, IStation521, IStation523, IBCR83> obj)
         {
-            List<string> list = new List<string>();
-            for (int i = 0; i < 19; i++)
-            {
-                var a1 = RedisHub.Default.BRPop("EnteMainLine", 0);
-                var a2 = JsonConvert.DeserializeObject<List<string>>(a1);
-                list.AddRange(a2);
-            }
-            var a = list;
-            var b = a.Distinct();
-
             var bcrCodeList = obj.Data4.GetBcrCodeList();
             //获取当前站台对应的编码信息
             WmsApi.EnteMainLine(bcrCodeList, obj.Entity.Code);

+ 5 - 3
WCS.WorkEngineering/WebApi/Controllers/WmsApi.cs

@@ -104,15 +104,17 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// <param name="wcsTaskNum">WMS任务ID</param>
         /// <param name="tunnel">货位</param>
         /// <param name="device">设备号</param>
+        /// <param name="size"></param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public static SRes<ApplyStockInLocResponse> GetLocalIn(int wcsTaskNum, string tunnel, string device)
+        public static SRes<ApplyStockInLocResponse> GetLocalIn(int wcsTaskNum, string tunnel, string device, int size)
         {
             var res = APICaller.CallApi2<SRes<ApplyStockInLocResponse>>(WMSUrl + "/api/FJ/ApplyStockInLoc", new ApplyStockInLocRequest
             {
                 TaskNum = wcsTaskNum,
                 TunnelNum = tunnel.GetLastDigit(),
                 PickUpEquipmentNo = device.ToString(),
+                Height = size
             });
             if (res.ResCode != ResponseStatusCodeEnum.Sucess)
             {
@@ -207,7 +209,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// <exception cref="KnownException"></exception>
         public static SRes<int> CompleteTask(int taskNo)
         {
-            var res = APICaller.CallApi2<SRes<int>>(WMSUrl + "/api/Hj/CompleteTask", new CompleteTaskRequest
+            var res = APICaller.CallApi2<SRes<int>>(WMSUrl + "/api/fj/CompleteTask", new CompleteTaskRequest
             {
                 TaskNum = taskNo,
                 OperationType = Models.WMS.Request.CompleteTask.自动完成,
@@ -365,7 +367,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// <exception cref="KnownException"></exception>
         public static SRes? OneFloorWorkerBuildEmptyPalletsStock(OneFloorWorkerBuildEmptyPalletsStockRequest reqDto)
         {
-            var res = APICaller.CallApi<SRes>(WMSUrl + "/api/FJ/OneFloorWorkerBuildEmptyPalletsStock", new OneFloorWorkerBuildEmptyPalletsStockRequest
+            var res = APICaller.CallApi2<SRes>(WMSUrl + "/api/FJ/OneFloorWorkerBuildEmptyPalletsStock", new OneFloorWorkerBuildEmptyPalletsStockRequest
             {
                 PalletCode = reqDto.PalletCode,
                 PalletType = reqDto.PalletType,

+ 5 - 0
WCS.WorkEngineering/WebApi/Models/WMS/Request/ApplyStockInLocRequest.cs

@@ -23,5 +23,10 @@ namespace WCS.WorkEngineering.WebApi.Models.WMS.Request
         /// </summary>
         [Required(ErrorMessage = "{0} 不可为空")]
         public string PickUpEquipmentNo { get; set; }
+
+        /// <summary>
+        ///  大小货 1表示小货 2表示大货
+        /// </summary>
+        public int Height { get; set; }
     }
 }

+ 9 - 3
WCS.WorkEngineering/WebApi/Models/WMS/Request/OneFloorWorkerBuildEmptyPalletsStockRequest.cs

@@ -4,9 +4,10 @@ using System.ComponentModel.DataAnnotations;
 namespace WCS.WorkEngineering.WebApi.Models.WMS.Request
 {
     public class OneFloorWorkerBuildEmptyPalletsStockRequest
-    {/// <summary>
-     ///  托盘编码
-     /// </summary>
+    {
+        /// <summary>
+        ///  托盘编码
+        /// </summary>
         [Required(ErrorMessage = "{0} 不可为空")]
         public string PalletCode { get; set; }
 
@@ -32,6 +33,11 @@ namespace WCS.WorkEngineering.WebApi.Models.WMS.Request
         /// </summary>
         [Description("托盘数量")]
         public string PalletNum { get; set; }
+
+        /// <summary>
+        ///  大小货 1表示小货 2表示大货
+        /// </summary>
+        public int Height { get; set; }
     }
 
     /// <summary>