林豪 左 2 роки тому
батько
коміт
88dd4087bc

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

@@ -95,8 +95,9 @@ namespace WCS.WorkEngineering.Extensions
         堆垛机 = 1 << 15,
         输送机 = 1 << 16,
         一楼出库口 = 1 << 17,
-        一楼入库口 = 1 << 18,
-        二楼入库口 = 1 << 19,
+        二楼出库口 = 1 << 18,
+        一楼入库口 = 1 << 19,
+        二楼入库口 = 1 << 20,
     }
 
     /// <summary>

+ 101 - 114
WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -27,120 +27,90 @@ namespace WCS.WorkEngineering.Systems
 
         public override void Do(Station obj)
         {
-            #region 处理所有的新增入库任务
+            #region 处理所有的新增任务
 
-            SqlSugarHelper.Do(db =>
-            {
-                List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
-
-                tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.EnterDepot).ToList();
-
-                if (tasks.Count > 0)
-                {
-                    tasks.ForEach(task =>
-                    {
-                        //开始处理
-                        task.Status = Entity.TaskStatus.WaitingToExecute;
-                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化入库任务信息,并创建AGV任务中间表");
-                        var agvTask = new WCS_AgvTaskInfo()
-                        {
-                            ID = db.GetAGVTaskId(),
-                            TaskType = AGVTaskType.EnterDepot,
-                            Status = AGVTaskStatus.NewBuild,
-                            Station = task.WorkBench,
-                            AddWho = "WCS"
-                        };
-                        db.Default.Insertable(agvTask).SplitTable().ExecuteCommand();
-                        task.AgvTaskID = agvTask.ID;
-                        db.Default.Updateable(task).ExecuteCommand();
-                    });
-                }
-            });
-
-            #endregion 处理所有的新增入库任务
-
-            #region 处理所有的新增初始化入库任务
-
-            SqlSugarHelper.Do(db =>
+            try
             {
-                List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
-
-                tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.EmptyInit).ToList();
-
-                if (tasks.Count > 0)
-                {
-                    tasks.ForEach(task =>
-                    {
-                        //开始处理
-                        task.Status = Entity.TaskStatus.WaitingToExecute;
-                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化任务信息");
-                        db.Default.Updateable(task).ExecuteCommand();
-                    });
-                }
-            });
-
-            #endregion 处理所有的新增初始化入库任务
-
-            #region 处理所有新建出库任务
-
-            SqlSugarHelper.Do(db =>
-            {
-                List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
-
-                //获取所有新建状态的出库任务
-                tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.OutDepot).ToList();
-                if (tasks.Count > 0)
+                SqlSugarHelper.Do(db =>
                 {
+                    var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
+                    if (!tasks.Any()) return;
                     tasks.ForEach(task =>
                     {
-                        //获取堆垛机到目标地址的路径信息
-                        var ty = DevicePath.GetPath(task.Device, task.AddrTo);
-                        //开始处理
-                        if (task.SrmStation.IsNullOrEmpty())
+                        switch (task.Type)
                         {
-                            task.SrmStation = ty.Points[1].Code;
+                            case TaskType.SetPlate:
+                                break;
+
+                            case TaskType.EnterDepot:
+                                //创建AGV任务
+                                var agvTask = new WCS_AgvTaskInfo()
+                                {
+                                    ID = db.GetAGVTaskId(),
+                                    TaskType = AGVTaskType.EnterDepot,
+                                    Status = AGVTaskStatus.NewBuild,
+                                    Station = task.WorkBench,
+                                    AddWho = "WCS"
+                                };
+                                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任务中间表");
+                                break;
+
+                            case TaskType.OutDepot:
+                                if (task.SrmStation.IsNullOrEmpty())
+                                {
+                                    //获取堆垛机到目标地址的路径信息
+                                    var path = DevicePath.GetPath(task.Device, task.AddrTo);
+                                    task.SrmStation = path.Points[1].Code;
+                                }
+                                task.Status = Entity.TaskStatus.WaitingToExecute;
+                                db.Default.Updateable(task).ExecuteCommand();
+                                task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");
+                                break;
+
+                            case TaskType.TransferDepot:
+                                break;
+
+                            case 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任务");
+                                break;
+
+                            case TaskType.EmptyInit:
+                                //更新任务状态
+                                task.Status = Entity.TaskStatus.WaitingToExecute;
+                                db.Default.Updateable(task).ExecuteCommand();
+                                task.AddWCS_TASK_DTL(db, task.Device, $"初始化任务信息");
+                                break;
+
+                            default:
+                                break;
                         }
-                        //task.AddrNext = path[2];
-                        task.Status = Entity.TaskStatus.WaitingToExecute;
-                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");
-                        db.Default.Updateable(task).ExecuteCommand();
                     });
-                }
-            });
-
-            #endregion 处理所有新建出库任务
-
-            #region 处理所有的搬运任务
-
-            SqlSugarHelper.Do(db =>
+                });
+            }
+            catch (Exception ex)
             {
-                List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
-
-                tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.Delivery).ToList();
-
-                if (tasks.Count > 0)
-                {
-                    tasks.ForEach(task =>
-                    {
-                        //开始处理
-                        task.Status = Entity.TaskStatus.WaitingToExecute;
-                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化搬运任务信息,并创建AGV任务中间表");
-                        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();
-                        task.AgvTaskID = agv.ID;
-                        db.Default.Updateable(task).ExecuteCommand();
-                    });
-                }
-            });
+                World.Log(ex.Message, Worlds.Logs.LogLevelEnum.Mid);
+            }
 
-            #endregion 处理所有的搬运任务
+            #endregion 处理所有的新增任务
 
             #region 下发入库AGV任务
 
@@ -152,20 +122,33 @@ namespace WCS.WorkEngineering.Systems
                 {
                     foreach (var agv in agvTasks)
                     {
-                        //开始处理
-                        GenAgvSchedulingTaskResponse res = new GenAgvSchedulingTaskResponse();
+                        ////开始处理
+                        //GenAgvSchedulingTaskResponse res = new GenAgvSchedulingTaskResponse();
                         try
                         {
                             //获取对应wcs任务
                             var wcs = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.AgvTaskID == agv.ID && t.Status == Entity.TaskStatus.WaitingToExecute).First();
-                            //下发AGV任务
-                            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();
+
+                            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: //二楼下发AGV任务
+                                    break;
+
+                                default:
+                                    break;
+                            }
+
+                            //更新WCS数据
                             wcs.Status = Entity.TaskStatus.AGVExecution;
-                            wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV,AGV任务号:{res.data}");
                             db.Default.Updateable(wcs).ExecuteCommand();
+                            wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV");
                         }
                         catch (Exception ex)
                         {
@@ -178,9 +161,12 @@ namespace WCS.WorkEngineering.Systems
 
             #endregion 下发入库AGV任务
 
+            Thread.Sleep(1000);
+
             #region 移动任务处理
 
-            try{
+            try
+            {
                 SqlSugarHelper.Do(db =>
                 {
                     var agvTasks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.Status == AGVTaskStatus.NewBuild && t.TaskType == AGVTaskType.ForkliftFilling).SplitTable(v => v.Take(2)).ToList();
@@ -200,9 +186,10 @@ namespace WCS.WorkEngineering.Systems
                                 agv.Status = AGVTaskStatus.Confirm;
                                 agv.AgvID = res.data;
                                 db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+
                                 wcs.Status = Entity.TaskStatus.AGVExecution;
-                                wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV,AGV任务号:{res.data}");
                                 db.Default.Updateable(wcs).ExecuteCommand();
+                                wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV,AGV任务号:{res.data}");
                             }
                             catch (Exception ex)
                             {

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

@@ -45,7 +45,7 @@ namespace WCS.WorkEngineering.Systems
                     var any = false;
                     SqlSugarHelper.Do(db =>
                     {
-                        any = db.Default.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code);
+                        any = db.Default.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code && v.Status <= Entity.TaskStatus.AGVExecution);
                     });
                     if (!any) WmsApi.ApplyStockOutTask(obj.Entity.Code);
                 }

+ 7 - 2
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -105,13 +105,13 @@ namespace WCS.WorkEngineering.Systems
 
                       db.Default.Updateable(task).ExecuteCommand();
                       if (task.Status >= TaskStatus.Finish) task.CompleteOrCancelTasks(db);
-                      if (task.Type == TaskType.OutDepot && task.Status == TaskStatus.ConveyorExecution) WmsApi.SrmPickOutCompleted(task.ID);
 
                       taskInfo = task;
                   });
                 if (!result && taskInfo == null) throw new KnownException("数据库提交事务错误", LogLevelEnum.High);
                 //通知WMS任务完成
                 if (taskInfo.Status == TaskStatus.Finish) WmsApi.CompleteTask(taskInfo.ID);
+                if (taskInfo.Type == TaskType.OutDepot && taskInfo.Status == TaskStatus.ConveyorExecution) WmsApi.SrmPickOutCompleted(taskInfo.ID);
                 // 写入信号
                 obj.Data.OkAck = 1;
             }
@@ -240,7 +240,10 @@ namespace WCS.WorkEngineering.Systems
                 var addrTo = taskInfo.AddrTo.Split("-");
                 //下发任务
                 obj.Data.TaskNumber = taskInfo.ID;
+                obj.Data.TaskType = SrmTaskTypeEnum.Default;
                 obj.Data.SLine = station.Entity.Code.ToShort();
+                obj.Data.SCol = 0;
+                obj.Data.SLayer = 0;
                 obj.Data.ELine = addrTo[0].ToShort();
                 obj.Data.ECol = addrTo[1].ToShort();
                 obj.Data.ELayer = addrTo[2].ToShort();
@@ -295,7 +298,9 @@ namespace WCS.WorkEngineering.Systems
                 obj.Data.SCol = addrFrom[1].ToShort();
                 obj.Data.SLayer = addrFrom[2].ToShort();
                 obj.Data.ELine = taskInfo.SrmStation.ToShort();
-                obj.Data.ECol = taskInfo.AddrNext.ToShort();
+                obj.Data.ECol = 0;
+                obj.Data.SLayer = 0;
+                obj.Data.TaskType = SrmTaskTypeEnum.Default;
                 obj.Data.VoucherNo++;
             }
 

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

@@ -0,0 +1,41 @@
+using ServiceCenter.SqlSugars;
+using System.ComponentModel;
+using WCS.Core;
+using WCS.Entity;
+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)
+        {
+            if (!obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.PH_Status) && !obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.OT_Status))
+            {
+                var any = false;
+                SqlSugarHelper.Do(db =>
+                {
+                    any = db.Default.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code && v.Status <= Entity.TaskStatus.AGVExecution);
+                });
+                if (!any) WmsApi.ApplyStockOutTask(obj.Entity.Code);
+            }
+        }
+
+        public override bool Select(Device dev)
+        {
+            return dev.HasFlag(DeviceFlags.巷道口) && dev.HasFlag(DeviceFlags.出库);
+        }
+    }
+}

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

@@ -0,0 +1,60 @@
+using ServiceCenter.SqlSugars;
+using System.ComponentModel;
+using WCS.Core;
+using WCS.Entity;
+using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.WebApi.Controllers;
+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 IsThereATask = false; //无任务
+
+            #region 判断站点是否有任务
+
+            //光电有货或有任务有货
+            if (obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.PH_Status) || obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.OT_Status))
+            {
+                if (!obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.PH_Status))
+                    IsThereATask = true;
+            }
+
+            #endregion 判断站点是否有任务
+
+            if (IsThereATask)
+            {
+            }
+            else
+            {
+                if (obj.Entity.HasFlag(DeviceFlags.一楼出库口))
+                {
+                    var any = false;
+                    SqlSugarHelper.Do(db =>
+                    {
+                        any = db.Default.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code && v.Status <= Entity.TaskStatus.AGVExecution);
+                    });
+                    if (!any) WmsApi.ApplyStockOutTask(obj.Entity.Code);
+                }
+            }
+        }
+
+        public override bool Select(Device dev)
+        {
+            //return dev.Code == "1016";
+            return dev.HasFlag(DeviceFlags.巷道口) && dev.HasFlag(DeviceFlags.出库);
+        }
+    }
+}

+ 55 - 0
WCS.WorkEngineering/WebApi/Controllers/IwmsSApi.cs

@@ -0,0 +1,55 @@
+using ServiceCenter.Redis;
+using ServiceCenter.WebApi;
+using WCS.WorkEngineering.WebApi.Models.AGV;
+using WCS.WorkEngineering.WebApi.Models.AGV.Request;
+using WCS.WorkEngineering.WebApi.Models.AGV.Response;
+using WCS.WorkEngineering.Worlds.Logs;
+
+namespace WCS.WorkEngineering.WebApi.Controllers
+{
+    public class IwmsSApi
+    {
+        private static string _IwmsUrl = null!;
+
+        /// <summary>
+        /// AGV地址
+        /// </summary>
+        public static string IwmsUrl
+        {
+            get
+            {
+                _IwmsUrl ??= RedisHub.Default.Check("IwmsUrl");
+                if (string.IsNullOrEmpty(_IwmsUrl))
+                {
+                    throw new KnownException($"请在Redis配置IwmsUrl", LogLevelEnum.High);
+                }
+                return _IwmsUrl;
+            }
+        }
+
+        public static zhongTianIntoStockResponse zhongTianIntoStock()
+        {
+            var res = APICaller.CallApi2<zhongTianIntoStockResponse>(IwmsUrl + "/databus/publish/zhongTianIntoStock", new zhongTianIntoStockRequest
+            {
+
+            });
+            //if (res.code != AgvResponseCode.Success)
+            //{
+            //    throw new KnownException(res.message, LogLevelEnum.High);
+            //}
+            return res;
+        }
+
+        public static zhongTianOutStockResponse zhongTianOutStock()
+        {
+            var res = APICaller.CallApi2<zhongTianOutStockResponse>(IwmsUrl + "/databus/publish/zhongTianOutStock", new zhongTianOutStockRequest
+            {
+            });
+            //if (res.code != AgvResponseCode.Success)
+            //{
+            //    throw new KnownException(res.message, LogLevelEnum.High);
+            //}
+            return res;
+        }
+    }
+}

+ 98 - 0
WCS.WorkEngineering/WebApi/Models/AGV/Request/zhongTianIntoStockRequest.cs

@@ -0,0 +1,98 @@
+namespace WCS.WorkEngineering.WebApi.Models.AGV.Request
+{
+    /// <summary>
+    ///  合金二楼下发AGV入库任务
+    /// </summary>
+    public class zhongTianIntoStockRequest
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string matCode { get; set; }
+
+        /// <summary>
+        /// 工作站编号
+        /// </summary>
+        public string wbCode { get; set; }
+
+        /// <summary>
+        /// 空/满工字轮入库标记
+        /// </summary>
+        public string inSpoolFull { get; set; }
+
+        /// <summary>
+        /// 取满补空标记
+        /// </summary>
+        public bool getOutEmpty { get; set; }
+
+        /// <summary>
+        /// 湿拉上线标记
+        /// </summary>
+        public bool wetInto { get; set; }
+
+        /// <summary>
+        /// 湿拉特殊上线标记
+        /// </summary>
+        public bool wetIntoSpec { get; set; }
+
+        /// <summary>
+        /// 湿拉退料入库标记
+        /// </summary>
+        public bool wetIntoReturn { get; set; }
+
+        /// <summary>
+        /// 湿拉特殊上线点位号
+        /// </summary>
+        public string wetSpecWbCode { get; set; }
+
+        /// <summary>
+        /// 改手盘标记
+        /// </summary>
+        public string isSurplus { get; set; }
+
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public string isRework { get; set; }
+
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string matNo { get; set; }
+
+        /// <summary>
+        /// RFID号
+        /// </summary>
+        public string spoolNo { get; set; }
+
+        /// <summary>
+        /// 质量状态标记
+        /// </summary>
+        public string gradeCode { get; set; }
+
+        /// <summary>
+        /// 快投标记
+        /// </summary>
+        public string matFast { get; set; }
+
+        /// <summary>
+        /// 长度
+        /// </summary>
+        public string orderProcessLenOut { get; set; }
+
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        public string taskNo { get; set; }
+
+        /// <summary>
+        /// 退料原因
+        /// </summary>
+        public string returnDesc { get; set; }
+
+        /// <summary>
+        /// 是否锁定
+        /// </summary>
+        public string lockFlag { get; set; }
+    }
+}

+ 73 - 0
WCS.WorkEngineering/WebApi/Models/AGV/Request/zhongTianOutStockRequest.cs

@@ -0,0 +1,73 @@
+namespace WCS.WorkEngineering.WebApi.Models.AGV.Request
+{
+    /// <summary>
+    ///  合金二楼下发AGV出库任务
+    /// </summary>
+    public class zhongTianOutStockRequest
+    {
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        public string matCode { get; set; }
+
+        /// <summary>
+        /// 工作站编号
+        /// </summary>
+        public string workAreaCode { get; set; }
+
+        /// <summary>
+        /// 空/满工字轮标记
+        /// </summary>
+        public string outSpoolFull { get; set; }
+
+        /// <summary>
+        /// 取空补满标记
+        /// </summary>
+        public bool intoEmpty { get; set; }
+
+        /// <summary>
+        /// 湿拉出库标记
+        /// </summary>
+        public string wetOut { get; set; }
+
+        /// <summary>
+        /// 湿拉退料出库标记
+        /// </summary>
+        public string wetOutReturn { get; set; }
+
+        /// <summary>
+        /// 改手盘标记
+        /// </summary>
+        public string isSurplus { get; set; }
+
+        /// <summary>
+        /// 返工标记
+        /// </summary>
+        public string isRework { get; set; }
+
+        /// <summary>
+        /// 材料号
+        /// </summary>
+        public string matNo { get; set; }
+
+        /// <summary>
+        /// RFID号
+        /// </summary>
+        public string spoolNo { get; set; }
+
+        /// <summary>
+        /// 质量状态标记
+        /// </summary>
+        public string gradeCode { get; set; }
+
+        /// <summary>
+        /// 快投标记
+        /// </summary>
+        public string matFast { get; set; }
+
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        public string taskNo { get; set; }
+    }
+}

+ 6 - 0
WCS.WorkEngineering/WebApi/Models/AGV/Response/zhongTianIntoStockResponse.cs

@@ -0,0 +1,6 @@
+namespace WCS.WorkEngineering.WebApi.Models.AGV.Response
+{
+    public class zhongTianIntoStockResponse
+    {
+    }
+}

+ 6 - 0
WCS.WorkEngineering/WebApi/Models/AGV/Response/zhongTianOutStockResponse.cs

@@ -0,0 +1,6 @@
+namespace WCS.WorkEngineering.WebApi.Models.AGV.Response
+{
+    public class zhongTianOutStockResponse
+    {
+    }
+}

+ 0 - 110
WCS.WorkEngineering/WebApi/任务.cs

@@ -1,110 +0,0 @@
-///// <summary>
-//     /// 镀铜一楼res下任务
-//     /// </summary>
-//     /// <param name="reqDto"></param>
-//     /// <returns></returns>
-//     [HttpPost]
-//     public GenAgvSchedulingTaskResponse CopperLineAgvTaskToRcs(GenAgvSchedulingTaskRequest reqDto)
-//     {
-//         var result = new GenAgvSchedulingTaskResponse();
-//         GenAgvSchedulingTaskRequest resReq = new GenAgvSchedulingTaskRequest();
-//         var apiurl = wms.util.AppSettings.GetConfig("RcsCreateTaskPushUrl");
-//         var strRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(resReq), 30000);
-//         if (string.IsNullOrEmpty(strRes))
-//         {
-//             result.message = "返回空";
-//             return result;
-//         }
-//         return JsonConvert.DeserializeObject<GenAgvSchedulingTaskResponse>(strRes);
-//     }
-//     /// <summary>
-//     /// 镀铜一楼res继续任务
-//     /// </summary>
-//     /// <param name="reqDto"></param>
-//     /// <returns></returns>
-//     [HttpPost]
-//     public GenAgvSchedulingTaskResponse CopperLineContinueTaskToRcs(GenAgvSchedulingTaskRequest reqDto)
-//     {
-//         var result = new GenAgvSchedulingTaskResponse();
-//         GenAgvSchedulingTaskRequest resReq = new GenAgvSchedulingTaskRequest()
-//         { };
-//         var apiurl = wms.util.AppSettings.GetConfig("RcsContinuePushUrl");
-//         var strRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(resReq), 30000);
-//         if (string.IsNullOrEmpty(strRes))
-//         {
-//             result.message = "返回空";
-//             return result;
-//         }
-//         return JsonConvert.DeserializeObject<GenAgvSchedulingTaskResponse>(strRes);
-//     }
-//     /// <summary>
-//     /// 镀铜二楼IWMS下发满轮出库
-//     /// </summary>
-//     /// <param name="reqDto"></param>
-//     /// <returns></returns>
-//     [HttpPost]
-//     public SRes CopperLineAgvTaskStockOutToIWms(CopperLineAgvTaskStockOutToIWmsRequest reqDto)
-//     {
-//         var result = new SRes();
-//         CopperLineAgvTaskStockOutToIWmsRequest resReq = new CopperLineAgvTaskStockOutToIWmsRequest()
-//         {
-//             matCode = "",
-//             wbCode = "满轮接驳口",
-//             inSpoolFull = "1",
-//             wetInto = true,
-//             wetIntoSpec = false,
-//             isSurplus = "",
-//             isRework = "",
-//             matNo = "",
-//             spoolNo = "",
-//             gradeCode = "",
-//             taskNo = Guid.NewGuid().ToString(),
-
-//         };
-//         var apiurl = wms.util.AppSettings.GetConfig("IWmsStockOutPushUrl");
-//         var strRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(reqDto), 30000);
-//         if (string.IsNullOrEmpty(strRes))
-//         {
-//             //result.message = "返回空";
-//             return result;
-//         }
-//         return JsonConvert.DeserializeObject<SRes>(strRes);
-//     }
-//     /// <summary>
-//     /// 镀铜二楼IWMS下发空轮/退料/余料入库
-//     /// </summary>
-//     /// <param name="reqDto"></param>
-//     /// <returns></returns>
-//     [HttpPost]
-//     public SRes CopperLineAgvTaskStockInToIWms(CopperLineAgvTaskStockInToIWmsRequest reqDto)
-//     {
-//         var result = new SRes();
-//         CopperLineAgvTaskStockInToIWmsRequest resReq = new CopperLineAgvTaskStockInToIWmsRequest()
-//         {
-//             matCode = "",
-//             workAreaCode = "11",
-//             outSpoolFull = "1",
-//             taskNo = Guid.NewGuid().ToString()
-//         };
-//         var apiurl = wms.util.AppSettings.GetConfig("IWmsStockInPushUrl");
-//         var strRes = HttpUtil.PostRequest(apiurl, JsonConvert.SerializeObject(reqDto), 30000);
-//         if (string.IsNullOrEmpty(strRes))
-//         {
-//             //result.message = "返回空";
-//             return result;
-//         }
-//         return JsonConvert.DeserializeObject<SRes>(strRes);
-//     }
-
-//     /// <summary>
-//     /// AGV执行回调
-//     /// </summary>
-//     /// <param name="reqDto"></param>
-//     /// <returns></returns>
-//     [HttpPost]
-//     public agvCallbackResponse agvCallback(agvCallbackRequest reqDto)
-//     {
-//         var res = new agvCallbackResponse() { code = "0",message = "成功" };
-
-//         return res;
-//     }

+ 1 - 0
WCS.WorkEngineering/WorkStart.cs

@@ -154,6 +154,7 @@ namespace WCS.WorkEngineering
                 { DeviceFlags.出库, new List<string>() { "1012", "1014", "1016", "1022", "1024", "1026" } },
                 { DeviceFlags.扫码, new List<string>() { "1011", "1013", "1015" } },
                 { DeviceFlags.一楼出库口, new List<string>() { "1012", "1014", "1016" } },
+                { DeviceFlags.二楼出库口, new List<string>() { "1022", "1024", "1026" } },
                 { DeviceFlags.一楼入库口, new List<string>() { "1011", "1013", "1015" } },
                 { DeviceFlags.二楼入库口, new List<string>() { "1021", "1023", "1025" } },
                 { DeviceFlags.称重, new List<string>() { "1011", "1013", "1015", "1025" } }