林豪 左 1 year ago
parent
commit
28e0a6be7a

+ 2 - 1
WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -58,7 +58,7 @@ namespace WCS.WorkEngineering.Extensions
                         Port = 102,
                         Rack = 0,
                         Slot = 1,
-                        //Type = PLCType.Siemens
+                        Type = PLCType.Siemens
                     }
                 }
             };
@@ -198,6 +198,7 @@ namespace WCS.WorkEngineering.Extensions
         一楼扫码 = 1 << 27,
         满轮主线第一次扫码 = 1 << 28,
         主线分流点 = 1 << 29,
+        一楼叠盘机 = 1 << 30,
     }
 
     /// <summary>

+ 14 - 13
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -11,6 +11,7 @@ using WCS.WorkEngineering.Protocol.Station;
 using WCS.WorkEngineering.WebApi.Controllers;
 using WCS.WorkEngineering.WebApi.Models.AGV.Response;
 using WCS.WorkEngineering.Worlds;
+using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
 using KnownException = ServiceCenter.Logs.KnownException;
 using TaskStatus = WCS.Entity.TaskStatus;
 
@@ -35,19 +36,19 @@ namespace WCS.WorkEngineering.Systems
 
         public SrmSystems()
         {
-            ////获取所有的巷道集合
-            //var devices = Device.All.Where(v => v.HasFlag(DeviceFlags.巷道));
-
-            ////开始分配
-            //foreach (var item in devices)
-            //{
-            //    //取货设备
-            //    var srm = item.Targets.Where(v => v.HasFlag(DeviceFlags.堆垛机)).FirstOrDefault();
-            //    PickUpDevices.Add(srm.Code, item.Targets.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => new Station(v, this.World)).ToList());
-            //    //放货设备
-            //    srm = item.Sources.Where(v => v.HasFlag(DeviceFlags.堆垛机)).FirstOrDefault();
-            //    PutDevices.Add(srm.Code, item.Sources.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => new Station(v, this.World)).ToList());
-            //}
+            //获取所有的巷道集合
+            var devices = Device.All.Where(v => v.HasFlag(DeviceFlags.巷道));
+
+            //开始分配
+            foreach (var item in devices)
+            {
+                //取货设备
+                var srm = item.Targets.Where(v => v.HasFlag(DeviceFlags.堆垛机)).FirstOrDefault();
+                PickUpDevices.Add(srm.Code, item.Targets.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => new Station(v, this.World)).ToList());
+                //放货设备
+                srm = item.Sources.Where(v => v.HasFlag(DeviceFlags.堆垛机)).FirstOrDefault();
+                PutDevices.Add(srm.Code, item.Sources.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => new Station(v, this.World)).ToList());
+            }
         }
 
         protected override bool ParallelDo => true;

+ 82 - 0
WCS.WorkEngineering/Systems/一楼叠盘机入库.cs

@@ -0,0 +1,82 @@
+using ServiceCenter.Logs;
+using ServiceCenter.SqlSugars;
+using System.ComponentModel;
+using WCS.Core;
+using WCS.Entity;
+using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.Protocol.BCR;
+using WCS.WorkEngineering.Protocol.Station;
+using WCS.WorkEngineering.WebApi.Controllers;
+using WCS.WorkEngineering.WebApi.Models.WMS.Request;
+using WCS.WorkEngineering.Worlds;
+
+namespace WCS.WorkEngineering.Systems
+{
+    /// <summary>
+    ///  一楼叠盘机入库
+    /// </summary>
+    [BelongTo(typeof(MainWorld))]
+    [Description("一楼叠盘机入库")]
+    public class 一楼叠盘机入库 : DeviceSystem<Device<IStation520, IStation521, IStation523, IStation91, IBCR81>>
+    {
+        protected override bool ParallelDo => true;
+
+        protected override bool SaveLogsToFile => true;
+
+        public override void Do(Device<IStation520, IStation521, IStation523, IStation91, IBCR81> obj)
+        {
+            obj.入库站点是否被禁止();
+            obj.入库站点是否满足执行条件();
+
+            WCS_TaskInfo task = null;//处理完成的任务
+            try
+            {
+                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()
+                        {
+                            PalletCode = barcode,
+                            StartLoc = obj.Entity.Code,
+                            PalletType = palletType
+                        });
+                    }
+                    //找到对应的任务
+                    task = db.Queryable<WCS_TaskInfo>().First(v => v.BarCode == barcode);
+                    if (task.Status == Entity.TaskStatus.NewBuild)
+                    {
+                        //开始对任务进行处理
+                        task.Status = Entity.TaskStatus.ConveyorExecution;
+                        task.StartTime = DateTime.Now;
+                        task.SrmStation = task.AddrFrom;
+                        task.AddWCS_TASK_DTL(_db, obj.Entity.Code, "开始执行入库任务");
+                        db.Updateable(task).ExecuteCommand();
+                        task.updateRedisHash();
+                    }
+                    else return;
+                });
+            }
+            catch (Exception ex)
+            {
+                throw new KnownException(ex.Message, LogLevelEnum.High);
+            }
+            obj.Data.TaskNumber = task.ID;
+            obj.Data.VoucherNo++;
+        }
+
+        public override bool Select(Device dev)
+        {
+            return dev.HasFlag(Extensions.DeviceFlags.一楼叠盘机);
+        }
+    }
+}

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

@@ -23,7 +23,7 @@ namespace WCS.WorkEngineering.Systems
         {
             var bcrCodeList = obj.Data4.GetBcrCodeList();
             //获取当前站台对应的编码信息
-            WmsApi.EnteMainLine(bcrCodeList);
+            //WmsApi.EnteMainLine(bcrCodeList);
         }
 
         public override bool Select(Device dev)

+ 9 - 7
WCS.WorkEngineering/WebApi/Controllers/WmsApi.cs

@@ -384,14 +384,16 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         /// </summary>
         public static string GetWareCode(string add)
         {
-            switch (add)
+            return add switch
             {
-                case "":
-                    return "1N";
-
-                default:
-                    return "";
-            }
+                "2532" => "1N",
+                "2527" => "1N",
+                "2528" => "1N",
+                "2732" => "1S",
+                "2727" => "1S",
+                "2728" => "1S",
+                _ => "",
+            };
         }
     }
 }

+ 29 - 24
WCS.WorkEngineering/WorkStart.cs

@@ -63,8 +63,8 @@ namespace WCS.WorkEngineering
 
             List<StationSegmentInfo> segmentInfo1 = new List<StationSegmentInfo>
             {
-                new StationSegmentInfo(1, 100, "10.30.37.166"),
-                new StationSegmentInfo(401, 586, "10.30.37.166"),
+                //new StationSegmentInfo(1, 100, "10.30.37.166"),
+                //new StationSegmentInfo(401, 586, "10.30.37.166"),
             };
 
             foreach (var item in segmentInfo1)
@@ -84,8 +84,8 @@ namespace WCS.WorkEngineering
             //Item1表示线体号集合,Item2表示IP,Item3表示设备标识
             var list = new List<Tuple<List<int>, string, DeviceFlags>>()
             {
-                new Tuple<List<int>, string,DeviceFlags>(new List<int>(){1 },"10.30.37.166",DeviceFlags.满轮主线第一次扫码),
-                new Tuple<List<int>, string,DeviceFlags>(new List<int>(){22, 41, 61 },"10.30.37.166",DeviceFlags.主线分流点),
+                //new Tuple<List<int>, string,DeviceFlags>(new List<int>(){1 },"10.30.37.166",DeviceFlags.满轮主线第一次扫码),
+                //new Tuple<List<int>, string,DeviceFlags>(new List<int>(){22, 41, 61 },"10.30.37.166",DeviceFlags.主线分流点),
                 //new Tuple<List<int>, string,DeviceFlags>(new List<int>(){418, },"10.30.37.166",DeviceFlags.主线分流点)
             };
 
@@ -106,8 +106,8 @@ namespace WCS.WorkEngineering
 
             var list1 = new List<Tuple<List<int>, string>>()
             {
-                new Tuple<List<int>, string>(new List<int>(){1 },"10.30.37.166"),
-                new Tuple<List<int>, string>(new List<int>(){22, 41, 61 },"10.30.37.166")
+                //new Tuple<List<int>, string>(new List<int>(){1 },"10.30.37.166"),
+                //new Tuple<List<int>, string>(new List<int>(){22, 41, 61 },"10.30.37.166")
             };
             foreach (var item in list1)
             {
@@ -170,12 +170,12 @@ namespace WCS.WorkEngineering
 
             List<RGVSegmentInfo> RgvInfo = new List<RGVSegmentInfo>
             {
-                new RGVSegmentInfo( 1, "10.30.37.113"),
-                new RGVSegmentInfo( 2, "10.30.37.118"),
-                new RGVSegmentInfo( 3, "10.30.37.123"),
-                new RGVSegmentInfo( 4, "10.30.37.128"),
-                new RGVSegmentInfo( 5, "10.30.37.133"),
-                new RGVSegmentInfo( 6, "10.30.37.138")
+                //new RGVSegmentInfo( 1, "10.30.37.113"),
+                //new RGVSegmentInfo( 2, "10.30.37.118"),
+                //new RGVSegmentInfo( 3, "10.30.37.123"),
+                //new RGVSegmentInfo( 4, "10.30.37.128"),
+                //new RGVSegmentInfo( 5, "10.30.37.133"),
+                //new RGVSegmentInfo( 6, "10.30.37.138")
             };
 
             foreach (var item in RgvInfo)
@@ -193,7 +193,7 @@ namespace WCS.WorkEngineering
 
             List<TrussSegmentInfo> TrussInfo = new List<TrussSegmentInfo>
             {
-                new TrussSegmentInfo( 1, "10.30.37.211"),
+                //new TrussSegmentInfo( 1, "10.30.37.211"),
             };
 
             foreach (var item in TrussInfo)
@@ -218,7 +218,7 @@ namespace WCS.WorkEngineering
                 var srm = new Device($"SRM{i + 1}");
                 srm.AddFlag(DeviceFlags.堆垛机);
                 ip = i == 0 ? ip : ip + 8;
-                //三台堆垛机IP主机位分别是 21 31 41
+                //三台堆垛机IP主机位分别是 41、49、57、65、73、81
                 srm.AddProtocol<ISRM520>(0, 520, $"10.30.37.{ip}");
                 srm.AddProtocol<ISRM521>(0, 521, $"10.30.37.{ip}");
                 srm.AddProtocol<ISRM537>(0, 537, $"10.30.37.{ip}");
@@ -234,19 +234,23 @@ namespace WCS.WorkEngineering
 
             List<RouteInfo> routeInfos = new List<RouteInfo>
             {
-                ////new RouteInfo("SRM1", new string[] { "TY1" }),
-                //new RouteInfo("SRM2", new string[] { "TY2" }),
+                new RouteInfo("SRM1", new string[] { "TY1" }),
+                new RouteInfo("SRM2", new string[] { "TY2" }),
                 //new RouteInfo("SRM3", new string[] { "TY3" }),
-                ////new RouteInfo("TY1", new string[] { "SRM1" }),
-                //new RouteInfo("TY2", new string[] { "SRM2" }),
+                //巷道对应堆垛机 及 一楼出库点
+                new RouteInfo("TY1", new string[] { "SRM1","2532"}),
+                new RouteInfo("TY2", new string[] { "SRM2","2732" }),
                 //new RouteInfo("TY3", new string[] { "SRM3" }),
-                ////new RouteInfo("TY1", new string[] { "1011", "1021" }),
+                //new RouteInfo("TY1", new string[] { "1011", "1021" }),
                 //new RouteInfo("TY2", new string[] { "1013", "1023" }),
                 //new RouteInfo("TY3", new string[] { "1015", "1025" }),
-                ////new RouteInfo("1012", new string[] { "TY1" }),
-                ////new RouteInfo("1022", new string[] { "TY1" }),
-                //new RouteInfo("1014", new string[] { "TY2" }),
-                //new RouteInfo("1024", new string[] { "TY2" }),
+                //一楼入库点
+                new RouteInfo("2532", new string[] { "TY1" }),
+                new RouteInfo("2732", new string[] { "TY2" }),
+                new RouteInfo("2527", new string[] { "TY1" }),
+                new RouteInfo("2528", new string[] { "TY1" }),
+                new RouteInfo("2727", new string[] { "TY2" }),
+                new RouteInfo("2728", new string[] { "TY2" }),
                 //new RouteInfo("1016", new string[] { "TY3" }),
                 //new RouteInfo("1026", new string[] { "TY3" })
             };
@@ -282,7 +286,8 @@ namespace WCS.WorkEngineering
                 {  DeviceFlags.一楼扫码,new List<string>(){ "2532","2732"} },
                 //{  DeviceFlags.满轮主线第一次扫码,new List<string>(){ "1"} },
                 //{  DeviceFlags.主线分流点,new List<string>(){ "22","41","61"} }
-                //{ DeviceFlags.称重, new List<string>() { "1011", "1013", "1015", "1025" } }
+                //{ DeviceFlags.称重, new List<string>() { "1011", "1013", "1015", "1025" } },
+                { DeviceFlags.一楼叠盘机,new List<string>() { "2527","2528","2727","2728"} }
             };
 
             devices.ForEach(item =>