林豪 左 1 年之前
父節點
當前提交
4a1606be4a

+ 4 - 8
WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -94,13 +94,6 @@ namespace WCS.WorkEngineering.Extensions
         巷道 = 1 << 14,
         堆垛机 = 1 << 15,
         输送机 = 1 << 16,
-        一楼出库口 = 1 << 17,
-        二楼出库口 = 1 << 18,
-        一楼入库口 = 1 << 19,
-        二楼入库口 = 1 << 20,
-
-        一楼出入库口 = 1 << 21,
-        二楼出入库口 = 1 << 22,
 
         #region 一轨双车堆垛机
 
@@ -110,7 +103,10 @@ namespace WCS.WorkEngineering.Extensions
         #endregion 一轨双车堆垛机
 
         RGV = 1 << 25,
-        桁架 = 1 << 26
+        桁架 = 1 << 26,
+        一楼扫码 = 1 << 27,
+        满轮主线第一次扫码 = 1 << 28,
+        主线分流点 = 1 << 29,
     }
 
     /// <summary>

+ 19 - 0
WCS.WorkEngineering/Extensions/StationExtension.cs

@@ -32,6 +32,25 @@ namespace WCS.WorkEngineering.Extensions
             if (Data3.Status.HasFlag(StationStatus.Run)) throw new KnownException("设备运行中", LogLevelEnum.Low);
             if (Data3.Status.HasFlag(StationStatus.PH_Status) && Data2.Request == 0) throw new KnownException("有光电无请求", LogLevelEnum.Mid);
             if (!Data3.Status.HasFlag(StationStatus.PH_Status) && Data2.Request == 1) throw new KnownException("无光电有请求", LogLevelEnum.Mid);
+            if (!Data3.Status.HasFlag(StationStatus.OT_Status)) throw new KnownException("站台货物信息与实际占用不一致", LogLevelEnum.Low);
+        }
+
+        /// <summary>
+        ///  主线分流点是否满足执行条件
+        /// </summary>
+        /// <returns></returns>
+        public void 主线分流点是否满足执行条件()
+        {
+            if (Data.VoucherNo != Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{Data.VoucherNo}-DB521:{Data2.VoucherNo}", LogLevelEnum.High);
+            if (Data3.Status.HasFlag(StationStatus.Run)) throw new KnownException("设备运行中", LogLevelEnum.Low);
+            if (Data3.Status.HasFlag(StationStatus.PH_Status) && Data2.Request == 0) throw new KnownException("有光电无请求", LogLevelEnum.Mid);
+            if (!Data3.Status.HasFlag(StationStatus.PH_Status) && Data2.Request == 1) throw new KnownException("无光电有请求", LogLevelEnum.Mid);
+            if (!Data3.Status.HasFlag(StationStatus.OT_Status)) throw new KnownException("站台货物信息与实际占用不一致", LogLevelEnum.Low);
+        }
+
+
+        public void GetBarCode()
+        {
         }
     }
 }

+ 9 - 9
WCS.WorkEngineering/Systems/RGVSystems.cs

@@ -24,15 +24,15 @@ namespace WCS.WorkEngineering.Systems
 
         public override void Do(RGV obj)
         {
-            if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
-            if (!obj.Data2.WorkMode.HasFlag(RGVWorkMode.Automatic)) return;
-            if (!obj.Data2.SystemStatus.HasFlag(RGVSystemStatus.空闲)) return;
-            if (obj.Data2.Status.HasFlag(RGVStatus.PH_Status)) throw new KnownException($"有光电", LogLevelEnum.High);
-            obj.Data.TaskNumber = 12345;
-            obj.Data.CmdType = RGVCmdType.PickPutGoods;
-            obj.Data.StartPosition = 1663;
-            obj.Data.DestPosition = 1672;
-            obj.Data.VoucherNo++;
+            //if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
+            //if (!obj.Data2.WorkMode.HasFlag(RGVWorkMode.Automatic)) return;
+            //if (!obj.Data2.SystemStatus.HasFlag(RGVSystemStatus.空闲)) return;
+            //if (obj.Data2.Status.HasFlag(RGVStatus.PH_Status)) throw new KnownException($"有光电", LogLevelEnum.High);
+            //obj.Data.TaskNumber = 12345;
+            //obj.Data.CmdType = RGVCmdType.PickPutGoods;
+            //obj.Data.StartPosition = 1663;
+            //obj.Data.DestPosition = 1672;
+            //obj.Data.VoucherNo++;
         }
 
         public override bool Select(Device dev)

+ 0 - 88
WCS.WorkEngineering/Systems/一楼入库工位处理系统.cs

@@ -1,88 +0,0 @@
-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.Worlds;
-using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
-
-namespace WCS.WorkEngineering.Systems
-{
-    /// <summary>
-    ///  一楼入库工位处理系统
-    /// </summary>
-    [BelongTo(typeof(MainWorld))]
-    [Description("一楼入库工位处理系统")]
-    public class 一楼入库工位处理系统 : DeviceSystem<Station>
-    {
-        protected override bool ParallelDo => true;
-
-        protected override bool SaveLogsToFile => true;
-
-        private List<BCR> BCRS = new List<BCR>();
-
-        public 一楼入库工位处理系统()
-        {
-            BCRS = Device.All.Where(v => v.HasProtocol<IBCR81>()).Select(v => new BCR(v, World)).ToList();
-        }
-
-        public override void Do(Station obj)
-        {
-            obj.入库站点是否被禁止();
-            obj.入库站点是否满足执行条件();
-
-            WCS_TaskInfo task = null;//处理完成的任务
-            try
-            {
-                SqlSugarHelper.Do(_db =>
-                {
-                    var db = _db.Default;
-                    //获取RFID
-                    var barcode = BCRS.GetBCRCode(obj.Entity.Code);
-                    //跟据RFID获取对应的任务
-                    var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.BarCode == barcode) ?? throw new KnownException($"未找到RFID:{barcode}对应WCS任务", LogLevelEnum.Mid);
-                    if (taskInfo.Status != Entity.TaskStatus.AGVExecution)
-                    {
-                        if (db.Queryable<WCS_TaskDtl>().SplitTable(v => v.Take(2)).Any(v => v.ParentTaskCode == taskInfo.ID && v.Desc.Contains("等待分配货位后堆垛机进行取货"))) return;
-                        else throw new KnownException($"任务:{taskInfo.ID}不是AGV执行状态,请检查异常原因", LogLevelEnum.High);
-                    }
-
-                    if (!obj.Data3.Status.HasFlag(StationStatus.ManualStorage)) //不是手动入库
-                    {
-                        //判断AGV任务目标地址是否是当前地址
-                        var agv = db.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(2)).First(v => v.ID == taskInfo.AgvTaskID) ?? throw new KnownException($"任务{taskInfo.ID}未找到对应AGV任务", LogLevelEnum.Mid);
-                        if (taskInfo.AddrNext != obj.Entity.Code) throw new KnownException($"任务{taskInfo.ID}不是货架上的任务,请检查RFID是否正确", LogLevelEnum.Mid);
-                        if (agv.Position != obj.Entity.Code) throw new KnownException($"任务{taskInfo.ID}对应AGV任务目标地址不是当前站台", LogLevelEnum.Mid);
-                    }
-
-                    //获取称重
-                    var dev91 = Device.All.Where(v => v.Code == obj.Entity.Code).Select(v => new Device<IStation91>(v, this.World)).FirstOrDefault();
-                    taskInfo.Weight = dev91.Data.Weight;
-                    if (taskInfo.Weight < 200) throw new KnownException($"称重结果错误:{taskInfo.Weight}", LogLevelEnum.Mid);
-                    //上抛重量
-                    try { WmsApi.WcsUploadInfo(taskInfo.ID, (decimal)taskInfo.Weight, taskInfo.BarCode); } catch (Exception ex) { World.Log(ex.Message, LogLevelEnum.Mid); }
-
-                    taskInfo.Status = Entity.TaskStatus.ConveyorExecution;
-                    db.Updateable(taskInfo).ExecuteCommand();
-                    taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, "SRM", $"状态更新为{Entity.TaskStatus.ConveyorExecution},等待分配货位后堆垛机进行取货");
-                    task = taskInfo;
-                });
-            }
-            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(DeviceFlags.一楼入库口);
-        }
-    }
-}

+ 0 - 82
WCS.WorkEngineering/Systems/一楼出库工位处理系统.cs

@@ -1,82 +0,0 @@
-using ServiceCenter.Logs;
-using ServiceCenter.Redis;
-using ServiceCenter.SqlSugars;
-using System.ComponentModel;
-using WCS.Core;
-using WCS.Entity;
-using WCS.WorkEngineering.Extensions;
-using WCS.WorkEngineering.Protocol.Station;
-using WCS.WorkEngineering.WebApi.Controllers;
-using WCS.WorkEngineering.Worlds;
-using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
-
-namespace WCS.WorkEngineering.Systems
-{
-    /// <summary>
-    /// 出库站台交互
-    /// </summary>
-    [BelongTo(typeof(MainWorld))]
-    [Description("一楼出库工位处理系统")]
-    public class 一楼出库工位处理系统 : DeviceSystem<Station>
-    {
-        protected override bool ParallelDo => true;
-
-        protected override bool SaveLogsToFile => true;
-
-        public override void Do(Station obj)
-        {
-            var key = $"WCS:Lock:{obj.Entity.Code}";
-            try
-            {
-                if (RedisHub.Default.Get(key) != null)
-                {
-                    throw new KnownException($"[{obj.Entity.Code}]--触发并发管控", LogLevelEnum.High);
-                }
-                RedisHub.Default.Set(key, obj.Entity.Code);
-                if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status) && !obj.Data3.Status.HasFlag(StationStatus.OT_Status))
-                {
-                    bool result = true; //是否需要申请出库任务,默认需要
-                    SqlSugarHelper.Do(db =>
-                    {
-                        //当前站台是否有任务在执行
-                        var task = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.AddrTo == obj.Entity.Code && v.Status < Entity.TaskStatus.AGVExecution).OrderByDescending(v => v.AddTime).First();
-                        if (task != null) //有任务
-                        {
-                            if (task.AgvTaskID == 0) throw new KnownException($"WCS任务[{task.ID}],等待AGV申请任务", LogLevelEnum.Mid);
-                            else
-                            {
-                                //检查对应的AGV任务状态是否大于退出储位状态
-                                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(2)).First(v => v.ID == task.ID) ?? throw new KnownException($"未找到AGV中间表任务[{task.AgvTaskID}],请检查异常原因", LogLevelEnum.Mid);
-                                if (agv == null)
-                                {
-                                }
-                                else if (agv.AgvStatus >= AGVTaskStatus.Complete3)
-                                {
-                                    result = true;
-                                }
-                                else
-                                {
-                                    result = false;
-                                }
-                            }
-                        }
-                        else //无任务
-                        {
-                            result = true;
-                        }
-                    });
-                    if (result) WmsApi.ApplyStockOutTask(obj.Entity.Code);
-                }
-            }
-            finally
-            {
-                RedisHub.Default.Del(key);
-            }
-        }
-
-        public override bool Select(Device dev)
-        {
-            return dev.HasFlag(DeviceFlags.一楼出库口);
-        }
-    }
-}

+ 59 - 0
WCS.WorkEngineering/Systems/一楼扫码入库.cs

@@ -0,0 +1,59 @@
+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.Worlds;
+
+namespace WCS.WorkEngineering.Systems
+{
+    /// <summary>
+    ///  一楼入库工位处理系统
+    /// </summary>
+    [BelongTo(typeof(MainWorld))]
+    [Description("一楼扫码入库")]
+    public class 一楼扫码入库 : DeviceSystem<Station>
+    {
+        protected override bool ParallelDo => true;
+
+        protected override bool SaveLogsToFile => true;
+
+        private List<BCR> BCRS = new List<BCR>();
+
+        public 一楼扫码入库()
+        {
+            BCRS = Device.All.Where(v => v.HasProtocol<IBCR81>()).Select(v => new BCR(v, World)).ToList();
+        }
+
+        public override void Do(Station obj)
+        {
+            obj.入库站点是否被禁止();
+            obj.入库站点是否满足执行条件();
+
+            WCS_TaskInfo task = null;//处理完成的任务
+            try
+            {
+                SqlSugarHelper.Do(_db =>
+                {
+                    var db = _db.Default;
+                    //获取托盘条码
+                    var barcode = BCRS.GetBCRCode(obj.Entity.Code);
+
+                });
+            }
+            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.一楼扫码);
+        }
+    }
+}

+ 30 - 0
WCS.WorkEngineering/Systems/主线分流点.cs

@@ -0,0 +1,30 @@
+using System.ComponentModel;
+using WCS.Core;
+using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.Worlds;
+
+namespace WCS.WorkEngineering.Systems
+{
+    /// <summary>
+    ///  主线分流
+    /// </summary>
+    [BelongTo(typeof(MainWorld))]
+    [Description("主线分流点")]
+    public class 主线分流点 : DeviceSystem<Station>
+    {
+        protected override bool ParallelDo => true;
+
+        protected override bool SaveLogsToFile => true;
+
+        public override void Do(Station obj)
+        {
+            obj.入库站点是否满足执行条件();
+            obj.
+        }
+
+        public override bool Select(Device dev)
+        {
+            return dev.HasFlag(Extensions.DeviceFlags.主线分流点);
+        }
+    }
+}

+ 97 - 97
WCS.WorkEngineering/Systems/二楼入库工位处理系统.cs

@@ -1,97 +1,97 @@
-using Microsoft.OpenApi.Extensions;
-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.Worlds;
-using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
-using TaskStatus = WCS.Entity.TaskStatus;
-
-namespace WCS.WorkEngineering.Systems
-{
-    /// <summary>
-    ///  二楼入库工位处理系统
-    /// </summary>
-    [BelongTo(typeof(MainWorld))]
-    [Description("二楼入库工位处理系统")]
-    public class 二楼入库工位处理系统 : DeviceSystem<Station>
-    {
-        protected override bool ParallelDo => false;
-
-        protected override bool SaveLogsToFile => true;
-
-        private List<BCR> BCRS = new List<BCR>();
-
-        public 二楼入库工位处理系统()
-        {
-            BCRS = Device.All.Where(v => v.HasProtocol<IBCR81>()).Select(v => new BCR(v, World)).ToList();
-        }
-
-        public override void Do(Station obj)
-        {
-            obj.入库站点是否被禁止();
-            obj.入库站点是否满足执行条件();
-
-            WCS_TaskInfo task = null; //处理完成的任务
-            SqlSugarHelper.Do(_db =>
-             {
-                 var db = _db.Default;
-                 WCS_TaskInfo taskInfo = null; //需要处理的任务
-
-                 #region 初始化空轮入库任务检索
-
-                 //判断当前站台是否有多条待执行状态的初始化空轮入库任务
-                 if (db.Queryable<WCS_TaskInfo>().Count(v => v.Type == TaskType.EmptyInit && v.Status == TaskStatus.WaitingToExecute && v.SrmStation == obj.Entity.Code) > 1)
-                 {
-                     throw new KnownException($"{obj.Entity.Code}站台存在多个空轮初始化入库任务,请取消RFID不是站台实物的任务", LogLevelEnum.Mid);
-                 }
-                 taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.Type == TaskType.EmptyInit && v.Status == TaskStatus.WaitingToExecute && v.SrmStation == obj.Entity.Code);
-
-                 #endregion 初始化空轮入库任务检索
-
-                 #region 非空轮初始化入库任务
-
-                 if (taskInfo == null)
-                 {
-                     taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data.TaskNumber && v.Type == TaskType.EnterDepot);
-                     if (taskInfo == null) throw new KnownException($"未找到任务[{obj.Data.TaskNumber}],或该任务不是入库任务", LogLevelEnum.Mid);
-                     if (taskInfo.Status != Entity.TaskStatus.AGVExecution)
-                     {
-                         if (!db.Queryable<WCS_TaskDtl>().SplitTable(v => v.Take(2)).Any(v => v.ParentTaskCode == taskInfo.ID && v.Desc.Contains("等待分配货位后堆垛机进行取货"))) return;
-                         else throw new KnownException($"任务:{taskInfo.ID}不是AGV执行状态,请检查异常原因", LogLevelEnum.High);
-
-                     }
-                 }
-
-                 #endregion 非空轮初始化入库任务
-
-                 if (obj.Entity.Code == "1025")//获取称重
-                 {
-                     var dev91 = Device.All.Where(v => v.Code == obj.Entity.Code).Select(v => new Device<IStation91>(v, this.World)).FirstOrDefault();
-                     taskInfo.Weight = dev91.Data.Weight;
-                     if (taskInfo.Weight < 140) throw new KnownException($"称重结果错误:{taskInfo.Weight}", LogLevelEnum.Mid);
-                     //上抛重量
-                     try { WmsApi.WcsUploadInfo(taskInfo.ID, (decimal)taskInfo.Weight, taskInfo.BarCode); } catch (Exception ex) { World.Log(ex.Message, LogLevelEnum.Mid); }
-                 }
-
-                 taskInfo.Status = TaskStatus.ConveyorExecution;
-                 db.Updateable(taskInfo).ExecuteCommand();
-                 taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, "SRM", $"状态更新为{TaskStatus.ConveyorExecution.GetDisplayName()},等待分配货位后堆垛机进行取货");
-                 task = taskInfo;
-             });
-            if (task == null) throw new KnownException("数据更新错误", LogLevelEnum.High);
-            obj.Data.TaskNumber = task.ID;
-            obj.Data.VoucherNo++;
-        }
-
-        public override bool Select(Device dev)
-        {
-            return dev.HasFlag(DeviceFlags.二楼入库口);
-        }
-    }
-}
+//using Microsoft.OpenApi.Extensions;
+//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.Worlds;
+//using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
+//using TaskStatus = WCS.Entity.TaskStatus;
+
+//namespace WCS.WorkEngineering.Systems
+//{
+//    /// <summary>
+//    ///  二楼入库工位处理系统
+//    /// </summary>
+//    [BelongTo(typeof(MainWorld))]
+//    [Description("二楼入库工位处理系统")]
+//    public class 二楼入库工位处理系统 : DeviceSystem<Station>
+//    {
+//        protected override bool ParallelDo => false;
+
+//        protected override bool SaveLogsToFile => true;
+
+//        private List<BCR> BCRS = new List<BCR>();
+
+//        public 二楼入库工位处理系统()
+//        {
+//            BCRS = Device.All.Where(v => v.HasProtocol<IBCR81>()).Select(v => new BCR(v, World)).ToList();
+//        }
+
+//        public override void Do(Station obj)
+//        {
+//            obj.入库站点是否被禁止();
+//            obj.入库站点是否满足执行条件();
+
+//            WCS_TaskInfo task = null; //处理完成的任务
+//            SqlSugarHelper.Do(_db =>
+//             {
+//                 var db = _db.Default;
+//                 WCS_TaskInfo taskInfo = null; //需要处理的任务
+
+//                 #region 初始化空轮入库任务检索
+
+//                 //判断当前站台是否有多条待执行状态的初始化空轮入库任务
+//                 if (db.Queryable<WCS_TaskInfo>().Count(v => v.Type == TaskType.EmptyInit && v.Status == TaskStatus.WaitingToExecute && v.SrmStation == obj.Entity.Code) > 1)
+//                 {
+//                     throw new KnownException($"{obj.Entity.Code}站台存在多个空轮初始化入库任务,请取消RFID不是站台实物的任务", LogLevelEnum.Mid);
+//                 }
+//                 taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.Type == TaskType.EmptyInit && v.Status == TaskStatus.WaitingToExecute && v.SrmStation == obj.Entity.Code);
+
+//                 #endregion 初始化空轮入库任务检索
+
+//                 #region 非空轮初始化入库任务
+
+//                 if (taskInfo == null)
+//                 {
+//                     taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data.TaskNumber && v.Type == TaskType.EnterDepot);
+//                     if (taskInfo == null) throw new KnownException($"未找到任务[{obj.Data.TaskNumber}],或该任务不是入库任务", LogLevelEnum.Mid);
+//                     if (taskInfo.Status != Entity.TaskStatus.AGVExecution)
+//                     {
+//                         if (!db.Queryable<WCS_TaskDtl>().SplitTable(v => v.Take(2)).Any(v => v.ParentTaskCode == taskInfo.ID && v.Desc.Contains("等待分配货位后堆垛机进行取货"))) return;
+//                         else throw new KnownException($"任务:{taskInfo.ID}不是AGV执行状态,请检查异常原因", LogLevelEnum.High);
+
+//                     }
+//                 }
+
+//                 #endregion 非空轮初始化入库任务
+
+//                 if (obj.Entity.Code == "1025")//获取称重
+//                 {
+//                     var dev91 = Device.All.Where(v => v.Code == obj.Entity.Code).Select(v => new Device<IStation91>(v, this.World)).FirstOrDefault();
+//                     taskInfo.Weight = dev91.Data.Weight;
+//                     if (taskInfo.Weight < 140) throw new KnownException($"称重结果错误:{taskInfo.Weight}", LogLevelEnum.Mid);
+//                     //上抛重量
+//                     try { WmsApi.WcsUploadInfo(taskInfo.ID, (decimal)taskInfo.Weight, taskInfo.BarCode); } catch (Exception ex) { World.Log(ex.Message, LogLevelEnum.Mid); }
+//                 }
+
+//                 taskInfo.Status = TaskStatus.ConveyorExecution;
+//                 db.Updateable(taskInfo).ExecuteCommand();
+//                 taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, "SRM", $"状态更新为{TaskStatus.ConveyorExecution.GetDisplayName()},等待分配货位后堆垛机进行取货");
+//                 task = taskInfo;
+//             });
+//            if (task == null) throw new KnownException("数据更新错误", LogLevelEnum.High);
+//            obj.Data.TaskNumber = task.ID;
+//            obj.Data.VoucherNo++;
+//        }
+
+//        public override bool Select(Device dev)
+//        {
+//            return dev.HasFlag(DeviceFlags.二楼入库口);
+//        }
+//    }
+//}

+ 46 - 46
WCS.WorkEngineering/Systems/二楼出库工位处理系统.cs

@@ -1,50 +1,50 @@
-using ServiceCenter.Logs;
-using ServiceCenter.SqlSugars;
-using System.ComponentModel;
-using WCS.Core;
-using WCS.Entity;
-using WCS.WorkEngineering.Extensions;
-using WCS.WorkEngineering.Protocol.Station;
-using WCS.WorkEngineering.WebApi.Controllers;
-using WCS.WorkEngineering.Worlds;
-using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
+//using ServiceCenter.Logs;
+//using ServiceCenter.SqlSugars;
+//using System.ComponentModel;
+//using WCS.Core;
+//using WCS.Entity;
+//using WCS.WorkEngineering.Extensions;
+//using WCS.WorkEngineering.Protocol.Station;
+//using WCS.WorkEngineering.WebApi.Controllers;
+//using WCS.WorkEngineering.Worlds;
+//using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
 
-namespace WCS.WorkEngineering.Systems
-{
-    /// <summary>
-    /// 二楼出库工位处理系统
-    /// </summary>
-    [BelongTo(typeof(MainWorld))]
-    [Description("二楼出库工位处理系统")]
-    public class 二楼出库工位处理系统 : DeviceSystem<Station>
-    {
-        protected override bool ParallelDo => true;
+//namespace WCS.WorkEngineering.Systems
+//{
+//    /// <summary>
+//    /// 二楼出库工位处理系统
+//    /// </summary>
+//    [BelongTo(typeof(MainWorld))]
+//    [Description("二楼出库工位处理系统")]
+//    public class 二楼出库工位处理系统 : DeviceSystem<Station>
+//    {
+//        protected override bool ParallelDo => true;
 
-        protected override bool SaveLogsToFile => true;
+//        protected override bool SaveLogsToFile => true;
 
-        public override void Do(Station obj)
-        {
-            if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) throw new KnownException("无光电", LogLevelEnum.Low);
-            SqlSugarHelper.Do(db =>
-            {
-                var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data.TaskNumber && v.Status == Entity.TaskStatus.ConveyorExecution) ?? throw new KnownException("无可执行任务", LogLevelEnum.Mid);               
-                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(2)).First(v => v.ID == task.AgvTaskID && v.Status == AGVTaskStatus.NewBuild) ?? throw new KnownException("未找到对应的AGV任务", LogLevelEnum.Mid);
-                var res = IwmsApi.满轮出库(task.MatCode, task.AddrTo, task.ID.ToString(), task.BarCode, task.InvBarCode, task.IsSurplus, task.IsRework, task.IsFast, task.Grade, task.WorkBench);
-                agv.Status = AGVTaskStatus.Confirm;
-                agv.AgvID = res.data;
-                agv.Station = obj.Entity.Code;
-                agv.Position = obj.Entity.Code;
-                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
-                task.Status = Entity.TaskStatus.AGVExecution;
-                db.Default.Updateable(task).ExecuteCommand();
-                task.AddWCS_TASK_DTL(db, obj.Entity.Code, "AGV", $"任务已下发AGV,AGVID:{agv.AgvID}");
-            });
-        }
+//        public override void Do(Station obj)
+//        {
+//            if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) throw new KnownException("无光电", LogLevelEnum.Low);
+//            SqlSugarHelper.Do(db =>
+//            {
+//                var task = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data.TaskNumber && v.Status == Entity.TaskStatus.ConveyorExecution) ?? throw new KnownException("无可执行任务", LogLevelEnum.Mid);               
+//                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(v => v.Take(2)).First(v => v.ID == task.AgvTaskID && v.Status == AGVTaskStatus.NewBuild) ?? throw new KnownException("未找到对应的AGV任务", LogLevelEnum.Mid);
+//                var res = IwmsApi.满轮出库(task.MatCode, task.AddrTo, task.ID.ToString(), task.BarCode, task.InvBarCode, task.IsSurplus, task.IsRework, task.IsFast, task.Grade, task.WorkBench);
+//                agv.Status = AGVTaskStatus.Confirm;
+//                agv.AgvID = res.data;
+//                agv.Station = obj.Entity.Code;
+//                agv.Position = obj.Entity.Code;
+//                db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+//                task.Status = Entity.TaskStatus.AGVExecution;
+//                db.Default.Updateable(task).ExecuteCommand();
+//                task.AddWCS_TASK_DTL(db, obj.Entity.Code, "AGV", $"任务已下发AGV,AGVID:{agv.AgvID}");
+//            });
+//        }
 
-        public override bool Select(Device dev)
-        {
-            //return dev.Code == "1026";
-            return dev.HasFlag(DeviceFlags.二楼出库口);
-        }
-    }
-}
+//        public override bool Select(Device dev)
+//        {
+//            //return dev.Code == "1026";
+//            return dev.HasFlag(DeviceFlags.二楼出库口);
+//        }
+//    }
+//}

+ 29 - 29
WCS.WorkEngineering/Systems/桁架.cs

@@ -20,36 +20,36 @@ namespace WCS.WorkEngineering.Systems
 
         public override void Do(Truss obj)
         {
-            if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
-            if (obj.Data2.Status != TrussStatus.Idle) return;
+            //if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
+            //if (obj.Data2.Status != TrussStatus.Idle) return;
 
-            obj.Data.DestPosition_1 = 15;
-            obj.Data.TargetPallte1 = 11;
-            obj.Data.Task1_1 = 1;
-            obj.Data.Dest1_1 = 1;
-            obj.Data.Task1_2 = 2;
-            obj.Data.Dest1_2 = 2;
-            obj.Data.Task1_3 = 3;
-            obj.Data.Dest1_3 = 3;
-            obj.Data.Task1_4 = 4;
-            obj.Data.Dest1_4 = 4;
-            obj.Data.Task1_5 = 5;
-            obj.Data.Dest1_5 = 5;
-            obj.Data.TaskSum1 = 5;
-            obj.Data.DestPosition_2 = 17;
-            obj.Data.TargetPallte2 = 11;
-            obj.Data.Task2_1 = 6;
-            obj.Data.Dest2_1 = 6;
-            obj.Data.Task2_2 = 7;
-            obj.Data.Dest2_2 = 7;
-            obj.Data.Task2_3 = 8;
-            obj.Data.Dest2_3 = 8;
-            obj.Data.Task2_4 = 9;
-            obj.Data.Dest2_4 = 9;
-            obj.Data.Task2_5 = 10;
-            obj.Data.Dest2_5 = 10;
-            obj.Data.TaskSum2 = 5;
-            obj.Data.VoucherNo++;
+            //obj.Data.DestPosition_1 = 15;
+            //obj.Data.TargetPallte1 = 11;
+            //obj.Data.Task1_1 = 1;
+            //obj.Data.Dest1_1 = 1;
+            //obj.Data.Task1_2 = 2;
+            //obj.Data.Dest1_2 = 2;
+            //obj.Data.Task1_3 = 3;
+            //obj.Data.Dest1_3 = 3;
+            //obj.Data.Task1_4 = 4;
+            //obj.Data.Dest1_4 = 4;
+            //obj.Data.Task1_5 = 5;
+            //obj.Data.Dest1_5 = 5;
+            //obj.Data.TaskSum1 = 5;
+            //obj.Data.DestPosition_2 = 17;
+            //obj.Data.TargetPallte2 = 11;
+            //obj.Data.Task2_1 = 6;
+            //obj.Data.Dest2_1 = 6;
+            //obj.Data.Task2_2 = 7;
+            //obj.Data.Dest2_2 = 7;
+            //obj.Data.Task2_3 = 8;
+            //obj.Data.Dest2_3 = 8;
+            //obj.Data.Task2_4 = 9;
+            //obj.Data.Dest2_4 = 9;
+            //obj.Data.Task2_5 = 10;
+            //obj.Data.Dest2_5 = 10;
+            //obj.Data.TaskSum2 = 5;
+            //obj.Data.VoucherNo++;
         }
 
         public override bool Select(Device dev)

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

@@ -0,0 +1,32 @@
+using System.ComponentModel;
+using WCS.Core;
+using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.WebApi.Controllers;
+using WCS.WorkEngineering.Worlds;
+using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
+
+namespace WCS.WorkEngineering.Systems
+{
+    /// <summary>
+    ///  湿拉满轮帘线芯股第一次扫码
+    /// </summary>
+    [BelongTo(typeof(MainWorld))]
+    [Description("湿拉满轮帘线芯股第一次扫码")]
+    public class 湿拉满轮帘线芯股第一次扫码 : DeviceSystem<Station>
+    {
+        protected override bool ParallelDo => true;
+
+        protected override bool SaveLogsToFile => true;
+
+        public override void Do(Station obj)
+        {
+            //获取当前站台对应的编码信息
+            WmsApi.EnteMainLine(new List<string>());
+        }
+
+        public override bool Select(Device dev)
+        {
+            return dev.HasFlag(DeviceFlags.满轮主线第一次扫码);
+        }
+    }
+}

+ 19 - 2
WCS.WorkEngineering/WebApi/Controllers/WmsApi.cs

@@ -4,7 +4,6 @@ using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using ServiceCenter.WebApi;
 using WCS.WorkEngineering.WebApi.Models.AGV.Response;
-using WCS.WorkEngineering.WebApi.Models.WCS.Request;
 using WCS.WorkEngineering.WebApi.Models.WCS.Response;
 using WCS.WorkEngineering.WebApi.Models.WMS.Request;
 using WCS.WorkEngineering.WebApi.Models.WMS.Response;
@@ -306,7 +305,6 @@ namespace WCS.WorkEngineering.WebApi.Controllers
             return res;
         }
 
-
         /// <summary>
         ///  WMS完成或取消任务验证
         /// </summary>
@@ -358,5 +356,24 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                 return null;
             }
         }
+
+        /// <summary>
+        ///  工字轮/芯股进入主线扫码
+        /// </summary>
+        /// <param name="codeList">工字轮条码组</param>
+        /// <returns></returns>
+        /// <exception cref="KnownException"></exception>
+        public static SRes? EnteMainLine(List<string> codeList)
+        {
+            var res = APICaller.CallApi<SRes>(WMSUrl + "/api/FJ/EnteMainLine", new EnteMainLineRequest
+            {
+                IShapedWheelCodes = codeList
+            });
+            if (res.ResCode != ResponseStatusCodeEnum.Sucess)
+            {
+                throw new KnownException(res.ResMsg, LogLevelEnum.High);
+            }
+            return res;
+        }
     }
 }

+ 13 - 0
WCS.WorkEngineering/WebApi/Models/WMS/Request/EnteMainLineRequest.cs

@@ -0,0 +1,13 @@
+namespace WCS.WorkEngineering.WebApi.Models.WMS.Request
+{
+    /// <summary>
+    ///  工字轮/芯股进入主线扫码
+    /// </summary>
+    public class EnteMainLineRequest
+    {
+        /// <summary>
+        ///  工字轮条码集合
+        /// </summary>
+        public List<string> IShapedWheelCodes { get; set; }
+    }
+}

+ 5 - 4
WCS.WorkEngineering/WorkStart.cs

@@ -203,12 +203,13 @@ namespace WCS.WorkEngineering
                 { DeviceFlags.入库, new List<string>() { "2532", "2533", "2534", "2732", "2733", "2734" } },
                 { DeviceFlags.出库, new List<string>() { "2532", "2533", "2534", "2732", "2733", "2734" } },
                 { DeviceFlags.扫码, new List<string>() { "2532", "2732" } },
-                 //{ DeviceFlags.扫码, new List<string>() { "2532", "2732", "RGV1","RGV2" } },
-                { DeviceFlags.一楼出入库口, new List<string>() { "2532", "2533", "2534", "2732", "2733", "2734" } },
-                { DeviceFlags.二楼出库口, new List<string>() { "1601",  "1605", "1611",  "1615" } },
-                { DeviceFlags.二楼入库口, new List<string>() { "1603", "1613" } },
+                //{ DeviceFlags.扫码, new List<string>() { "2532", "2732", "RGV1","RGV2" } },
+                //{ DeviceFlags.一楼出入库口, new List<string>() { "2532", "2533", "2534", "2732", "2733", "2734" } },
+                //{ DeviceFlags.二楼出库口, new List<string>() { "1601",  "1605", "1611",  "1615" } },
+                //{ DeviceFlags.二楼入库口, new List<string>() { "1603", "1613" } },
                 { DeviceFlags.一列堆垛机, new List<string>() { "SRM1"/*, "SRM3", "SRM5"*/} },
                 { DeviceFlags.二列堆垛机, new List<string>() { "SRM2"/*, "SRM4", "SRM6"*/ } },
+                {  DeviceFlags.一楼扫码,new List<string>(){ "2532","2732"} }
                 //{ DeviceFlags.称重, new List<string>() { "1011", "1013", "1015", "1025" } }
             };