林豪 左 2 năm trước cách đây
mục cha
commit
13af18f5cd

+ 11 - 11
Projects/永冠OPP/WCS.Service/Extensions/WCS_TaskExtensions.cs

@@ -17,17 +17,17 @@ namespace WCS.Service.Extensions
         {
             try
             {
-                WCS_StatusLog statusLog = new WCS_StatusLog()
-                {
-                    WCS_TASKID = task.ID,
-                    NewStatus = task.STATUS,
-                    UPDATETIME = DateTime.Now,
-                    upStatus = task.UPLOADED,
-                    Node = cl.FullName,
-                    UPDATEUSER = "WCS",
-                    msg = msg,
-                };
-                db.Default.Add(statusLog);
+                //WCS_StatusLog statusLog = new WCS_StatusLog()
+                //{
+                //    WCS_TASKID = task.ID,
+                //    NewStatus = task.STATUS,
+                //    UPDATETIME = DateTime.Now,
+                //    upStatus = task.UPLOADED,
+                //    Node = cl.FullName,
+                //    UPDATEUSER = "WCS",
+                //    msg = msg,
+                //};
+                //db.Default.Add(statusLog);
             }
             catch
             {

+ 24 - 24
Projects/永冠OPP/WCS.Service/Helpers/LogHelper.cs

@@ -50,31 +50,31 @@ namespace WCS.Service.Helpers
         /// <param name="type">异常类型</param>
         public static void AddWCS_EXCEPTION(string msg, string device, string type)
         {
-            DB.Do(db =>
-            {
-                var exp = db.Default.Set<WCS_EXCEPTION>()
-                .Where(v => EF.Functions.DateDiffSecond(v.UPDATETIME, DateTime.Now) < 5)
-                .Where(v => v.MSG == msg)
-                .OrderByDescending(v => v.ID)
-                .FirstOrDefault();
+            //DB.Do(db =>
+            //{
+            //    var exp = db.Default.Set<WCS_EXCEPTION>()
+            //    .Where(v => EF.Functions.DateDiffSecond(v.UPDATETIME, DateTime.Now) < 5)
+            //    .Where(v => v.MSG == msg)
+            //    .OrderByDescending(v => v.ID)
+            //    .FirstOrDefault();
 
-                if (exp == null)
-                {
-                    exp = db.Default.Set<WCS_EXCEPTION>().Add(new WCS_EXCEPTION
-                    {
-                        MSG = msg,
-                        DEVICE = device,
-                        EXCEPTIONTYPE = type,
-                        STARTTIME = DateTime.Now,
-                        TIMES = 0,
-                        UPDATETIME = DateTime.Now,
-                        UPDATEUSER = "WCS"
-                    }).Entity;
-                }
-                exp.TIMES++;
-                exp.UPDATETIME = DateTime.Now;
-                db.Default.SaveChanges();
-            });
+            //    if (exp == null)
+            //    {
+            //        exp = db.Default.Set<WCS_EXCEPTION>().Add(new WCS_EXCEPTION
+            //        {
+            //            MSG = msg,
+            //            DEVICE = device,
+            //            EXCEPTIONTYPE = type,
+            //            STARTTIME = DateTime.Now,
+            //            TIMES = 0,
+            //            UPDATETIME = DateTime.Now,
+            //            UPDATEUSER = "WCS"
+            //        }).Entity;
+            //    }
+            //    exp.TIMES++;
+            //    exp.UPDATETIME = DateTime.Now;
+            //    //db.Default.SaveChanges();
+            //});
         }
 
         /// <summary>

+ 23 - 23
Projects/永冠OPP/WCS.Service/Uploader.cs

@@ -31,29 +31,29 @@ namespace WCS.Service
         public static void Upload(DB db)
         {
             //lock (UpLoadLockObj)
-            {
-                try
-                {
-                    var tasks = db.Default.Set<WCS_TASK>().Where(v => v.WMSTASK > 0).Where(v => v.STATUS != v.UPLOADED).ToArray();
-                    foreach (var task in tasks)
-                    {
-                        try
-                        {
-                            WMS.UpdateTask(task.ADDRNEXT?.ToString(), task.WMSTASK, (int)task.STATUS, task.HEIGHT);
-                            var st = task.UPLOADED;
-                            task.UPLOADED = task.STATUS;
-                            //task.CreateStatusLog(db);
-                            InfoLog.INFO_SYTASKSTATUS($"[{task.ID}]---old:[{st}]-new:[{task.UPLOADED}]---{task.HEIGHT}");
-                        }
-                        catch (Exception ex)
-                        {
-                            Console.WriteLine($"上传任务状态失败:WCS任务号{task.ID},{ex.Message}");
-                        }
-                    }
-                    db.Default.SaveChanges();
-                }
-                catch { }
-            }
+            //{
+            //    try
+            //    {
+            //        var tasks = db.Default.Set<WCS_TASK>().Where(v => v.WMSTASK > 0).Where(v => v.STATUS != v.UPLOADED).ToArray();
+            //        foreach (var task in tasks)
+            //        {
+            //            try
+            //            {
+            //                WMS.UpdateTask(task.ADDRNEXT?.ToString(), task.WMSTASK, (int)task.STATUS, task.HEIGHT);
+            //                var st = task.UPLOADED;
+            //                task.UPLOADED = task.STATUS;
+            //                //task.CreateStatusLog(db);
+            //                InfoLog.INFO_SYTASKSTATUS($"[{task.ID}]---old:[{st}]-new:[{task.UPLOADED}]---{task.HEIGHT}");
+            //            }
+            //            catch (Exception ex)
+            //            {
+            //                Console.WriteLine($"上传任务状态失败:WCS任务号{task.ID},{ex.Message}");
+            //            }
+            //        }
+            //        db.Default.SaveChanges();
+            //    }
+            //    catch { }
+            //}
         }
 
         //public static void Stop()

+ 451 - 451
Projects/永冠OPP/WCS.Service/WebApi/WCSApi.cs

@@ -10,455 +10,455 @@ using WCS.Service.Extensions;
 
 namespace WCS.Service.WebApi
 {
-    [ApiController]
-    [Route("[controller]/[action]")]
-    public class WCSApi : ControllerBase
-    {
-        [HttpPost]
-        public WcsContractApiResponse I_WMS_CreateTasks(List<PushCreateWcsTaskRequest> list)
-        {
-            var res = new WcsContractApiResponse();
-            try
-            {
-                DB.Do(db =>
-                {
-                    foreach (var obj in list)
-                    {
-                        if (obj.TaskType == "1") //入库任务
-                        {
-                            var wmstaskid = int.Parse(obj.WMSTaskNo);
-                            if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
-                                throw new Exception("任务号" + wmstaskid + "重复下发");
-
-                            if (obj.StartLocation.Contains("_Back_"))
-                            {
-                                //生成AGV入库任务
-                                var ws = int.Parse(obj.StartLocation.Split('_')[1]);
-                                var agvtask = new WCS_AGVTask
-                                {
-                                    AGVStatus = AGVTaskStatus.新建,
-                                    Status = AGVTaskStatus.新建,
-                                    Position = obj.StartLocation,
-                                    TaskType = AGVTaskType.入库,
-                                    CreateTime = DateTime.Now,
-                                    UpdateTime = DateTime.Now,
-                                    Workshop = ws,
-                                };
-                                if (ws == 13 || ws == 14)
-                                {
-                                    agvtask.Station = "2088";
-                                    agvtask.Workshop = 1314;
-                                }
-                                else if (ws == 1)
-                                {
-                                    agvtask.Station = "2122";
-                                }
-                                else if (ws == 2)
-                                    agvtask.Station = "2131";
-                                else if (ws == 3)
-                                    agvtask.Station = "2143";
-
-                                db.Default.Set<WCS_AGVTask>().Add(agvtask);
-                                db.Default.SaveChanges();
-                            }
-                            else
-                            {
-                                var task = new WCS_TASK
-                                {
-                                    TYPE = TaskType.入库,
-                                    STATUS = WCS.Entity.TaskStatus.新建,
-                                    BARCODE = obj.PalletCode,
-                                    ADDRFROM = obj.StartLocation,
-                                    ADDRTO = obj.EndLocation,
-                                    UPDATETIME = DateTime.Now,
-                                    UPDATEUSER = "WMS",
-                                    WMSTASK = int.Parse(obj.WMSTaskNo)
-                                };
-                                db.Default.Add(task);
-                            }
-                        }
-                        else if (obj.TaskType == "2")//出库任务
-                        {
-                            var wmsTaskId = int.Parse(obj.WMSTaskNo);
-                            if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmsTaskId))
-                                throw new Exception("任务号" + wmsTaskId + "重复下发");
-
-                            var tunnel = "TY" + obj.SRMNo.Last();
-
-                            var task = new WCS_TASK
-                            {
-                                TYPE = TaskType.出库,
-                                STATUS = TaskStatus.新建,
-                                DEVICE = "SRM" + obj.SRMNo.Last(),
-                                BARCODE = obj.PalletCode,
-                                ADDRFROM = $"{obj.StartRow}-{obj.StartCol}-{obj.StartLayer}",
-                                ADDRTO = obj.EndLocation,
-                                UPDATETIME = DateTime.Now,
-                                UPDATEUSER = "WMS",
-                                TUNNEL = tunnel,
-                                WMSTASK = int.Parse(obj.WMSTaskNo),
-                                ADDRNEXT = obj.EndLocation,
-                                Length = obj.Length,
-                                MaterialCode = obj.MaterialCode,
-                                FLOOR = obj.EndLocation == "G1340" ? 1 : 2
-                            };
-
-                            task.TaskGetSrmStation();
-                            db.Default.Add(task);
-                        }
-                        else if (obj.TaskType == "3") //移库任务
-                        {
-                            var wmstaskid = int.Parse(obj.WMSTaskNo);
-                            if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
-                                throw new Exception("任务号" + wmstaskid + "重复下发");
-
-                            var scid = int.Parse(obj.SRMNo.Last().ToString());
-                            var tunnel = "TY" + obj.StartTunnel;
-                            var task = new WCS_TASK
-                            {
-                                TYPE = TaskType.移库,
-                                STATUS = WCS.Entity.TaskStatus.新建,
-                                DEVICE = "SRM" + obj.SRMNo.Last(),
-                                BARCODE = obj.PalletCode,
-                                ADDRFROM = $"{obj.StartRow}-{obj.StartCol}-{obj.StartLayer}",
-                                ADDRTO = $"{obj.EndRow}-{obj.EndCol}-{obj.EndLayer}",
-                                UPDATETIME = DateTime.Now,
-                                UPDATEUSER = "WMS",
-                                TUNNEL = tunnel,
-                                WMSTASK = int.Parse(obj.WMSTaskNo),
-                                TaskGroupKey = obj.TaskGroupKey
-                            };
-                            db.Default.Add(task);
-                        }
-                        else if (obj.TaskType == "6") //倒库任务
-                        {
-                            var wmsTaskId = int.Parse(obj.WMSTaskNo);
-                            if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmsTaskId))
-                                throw new Exception("任务号" + wmsTaskId + "重复下发");
-
-                            var srmNo = obj.SRMNo.Last();
-                            var endSrmNo = obj.EndSRMNo.Last();
-
-                            var task = new WCS_TASK
-                            {
-                                TYPE = TaskType.倒库,
-                                STATUS = TaskStatus.新建,
-                                BARCODE = obj.PalletCode,
-                                ADDRFROM = $"{obj.StartRow}-{obj.StartCol}-{obj.StartLayer}",
-                                ADDRTO = $"{obj.EndRow}-{obj.EndCol}-{obj.EndLayer}",
-                                UPDATETIME = DateTime.Now,
-                                UPDATEUSER = "WMS",
-                                TUNNEL = $"TY{srmNo}",
-                                DEVICE = $"SRM{srmNo}",
-                                TUNNELDL = $"TY{endSrmNo}",
-                                DEVICEDL = $"SRM{endSrmNo}",
-                                WMSTASK = int.Parse(obj.WMSTaskNo),
-                                ADDRNEXT = obj.EndLocation,
-                                Length = obj.Length,
-                                MaterialCode = obj.MaterialCode,
-                                FLOOR = obj.EndLocation == "G1340" ? 1 : 2,
-                                TaskGroupKey = obj.TaskGroupKey
-                            };
-
-                            task.TaskGetSrmStation();
-                            db.Default.Add(task);
-                        }
-                    }
-                    db.Default.SaveChanges();
-                });
-                res.ResType = true;
-            }
-            catch (Exception ex)
-            {
-                res.ResMessage = ex.GetBaseException().Message;
-            }
-            return res;
-        }
-
-        [HttpPost]
-        public WcsContractApiResponse I_WMS_CreateAGVTask(PushCreateAGVTaskRequest obj)
-        {
-            var res = new WcsContractApiResponse();
-            try
-            {
-                DB.Do(db =>
-                {
-                    if (obj.Type == 1)
-                    {
-                        var ws = int.Parse(obj.StartPos.Split('_')[1]);
-                        var agvtask = new WCS_AGVTask
-                        {
-                            AGVStatus = AGVTaskStatus.新建,
-                            Status = AGVTaskStatus.新建,
-                            Position = obj.StartPos,
-                            TaskType = AGVTaskType.入库,
-                            CreateTime = DateTime.Now,
-                            UpdateTime = DateTime.Now,
-                            Workshop = ws,
-                        };
-                        if (ws == 13 || ws == 14)
-                        {
-                            agvtask.Station = "2088";
-                            agvtask.Workshop = 1314;
-                        }
-                        else if (ws == 1)
-                        {
-                            agvtask.Station = "2122";
-                        }
-                        else if (ws == 2)
-                            agvtask.Station = "2131";
-                        else if (ws == 3)
-                            agvtask.Station = "2143";
-
-                        db.Default.Set<WCS_AGVTask>().Add(agvtask);
-                        db.Default.SaveChanges();
-                    }
-                    else
-                        throw new Exception($"类型{obj.Type}不支持");
-                });
-
-                res.ResType = true;
-            }
-            catch (Exception ex)
-            {
-                res.ResMessage = ex.GetBaseException().Message;
-            }
-            return res;
-        }
-
-        [HttpPost]
-        public WcsContractApiResponse I_CancelWCSTaskByCode(string code)
-        {
-            var res = new WcsContractApiResponse();
-            try
-            {
-                DB.Do(db =>
-                {
-                    var task = db.Default.Set<WCS_TASK>().Where(v => v.BARCODE == code && v.STATUS < WCS.Entity.TaskStatus.已完成 && v.TYPE == TaskType.组盘).FirstOrDefault();
-                    if (task == null)
-                        throw new Exception("WCS任务不存在");
-                    task.STATUS = WCS.Entity.TaskStatus.已取消;
-                    task.UPDATETIME = DateTime.Now;
-                    task.UPDATEUSER = "RF";
-                    db.Default.SaveChanges();
-                });
-                res.ResType = true;
-            }
-            catch (Exception ex)
-            {
-                res.ResMessage = ex.GetBaseException().Message;
-            }
-            return res;
-        }
-
-        [HttpPost]
-        public WcsContractApiResponse I_CancelWCSTaskByID(int wmstaskId)
-        {
-            var res = new WcsContractApiResponse();
-            try
-            {
-                DB.Do(db =>
-                {
-                    var task = db.Default.Set<WCS_TASK>().Where(v => v.WMSTASK == wmstaskId).FirstOrDefault();
-                    if (task == null)
-                        throw new Exception("WCS任务不存在");
-                    if (task.STATUS != WCS.Entity.TaskStatus.新建)
-                        throw new Exception("WCS任务当前状态不允许取消");
-                    task.STATUS = WCS.Entity.TaskStatus.已取消;
-                    task.UPDATETIME = DateTime.Now;
-                    task.UPDATEUSER = "WMS";
-                    db.Default.SaveChanges();
-                    if (task.TYPE == TaskType.出库 && task.AgvTask > 0)
-                    {
-                        var agvtask = db.Default.Set<WCS_AGVTask>().Find(task.AgvTask);
-                        agvtask.Status = AGVTaskStatus.取消;
-                        agvtask.UpdateTime = DateTime.Now;
-                        db.Default.SaveChanges();
-                    }
-                });
-                res.ResType = true;
-            }
-            catch (Exception ex)
-            {
-                res.ResMessage = ex.GetBaseException().Message;
-            }
-            return res;
-        }
-
-        /// <summary>
-        /// 通过该接口获取指定条件设备信息
-        /// </summary>
-        /// <param name="model">筛选条件</param>
-        /// <returns></returns>
-        //[HttpGet]
-        //public List<DeviceStatusViewModel> GetDeviceStatus([FromQuery] DeviceStatusViewModel model)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-        //    //找到所有设备的读取协议
-        //    var rgv = Device.Where(v => v.IsRGV()).Select(v => v.Device<IRGV521>());
-        //    var sc = Device.Where(v => v.IsSC()).Select(v => v.Device<ISRM521>());
-        //    var conv = Device.Where(v => v.IsConv()).Select(v => v.Device<IStation521>());
-
-        //    #region 检索分两部分,设备、任务(数据库)
-
-        //    #region 设备信息
-
-        //    if (!string.IsNullOrEmpty(model.CODE))
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Entity.CODE == model.CODE));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => v.Entity.CODE == model.CODE));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Entity.CODE == model.CODE));
-        //    }
-
-        //    if (model.TASKNUM > 10000)
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 == model.TASKNUM));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => v.Data.TaskID_1 == model.TASKNUM));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Tasknum == model.TASKNUM));
-        //    }
-
-        //    if (model.PH_STATUS != null)
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 == model.TASKNUM));
-        //    }
-
-        //    if (!string.IsNullOrEmpty(model.ADDRFROM))
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.StartPosition_1 == short.Parse(model.ADDRFROM)));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => model.ADDRFROM.Contains(v.Data.SLine_1.ToString())
-        //                                                   || model.ADDRFROM.Contains(v.Data.SCol_1.ToString())
-        //                                                   || model.ADDRFROM.Contains(v.Data.SLayer_1.ToString())));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Goodsstart ==short.Parse(model.ADDRFROM)));
-        //    }
-
-        //    if (!string.IsNullOrEmpty(model.ADDRTO))
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.DestPosition_1 == short.Parse(model.ADDRTO)));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => model.ADDRTO.Contains(v.Data.ELine_1.ToString())
-        //                                                   || model.ADDRTO.Contains(v.Data.ECol_1.ToString())
-        //                                                   || model.ADDRTO.Contains(v.Data.ELayer_1.ToString())));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Goodsend == short.Parse(model.ADDRTO)));
-        //    }
-
-        //    #endregion 设备信息
-
-        //    #region 任务信息
-
-        //    //获取所有设备上的任务信息
-        //    if (model.TYPE != null || !string.IsNullOrEmpty(model.BARCODE))
-        //    {
-        //        var info = new List<DeviceStatusViewModel>();
-        //        var ids = result.Select(v => v.TASKNUM);
-        //        info.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 > 10000));
-        //        info.AddRange(GetDeviceStatusWhere(sc, v => v.Data.TaskID_1 > 10000));
-        //        info.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Tasknum > 10000));
-        //        result.AddRange(info.Where(v => !ids.Any(b => b == v.TASKNUM)));
-        //    }
-
-        //    DB.Do(db =>
-        //    {
-        //        var ids = result.Select(v => v.TASKNUM);
-        //        var tasks = db.Default.Set<WCS_TASK>().AsNoTracking().Where(v => ids.Any(b => b == v.ID)).ToList();
-        //        tasks.ForEach(task =>
-        //        {
-        //            var info = result.Find(v => v.TASKNUM == task.ID);
-        //            info.TYPE = task.TYPE;
-        //            info.BARCODE = task.BARCODE;
-        //        });
-        //    });
-
-        //    if (model.TYPE != null)
-        //    {
-        //        result = result.Where(v => v.TYPE == model.TYPE).ToList();
-        //    }
-        //    if (!string.IsNullOrEmpty(model.BARCODE))
-        //    {
-        //        result = result.Where(v => v.BARCODE != null && v.BARCODE.Contains(model.BARCODE)).ToList();
-        //    }
-
-        //    #endregion 任务信息
-
-        //    #endregion 检索分两部分,设备、任务(数据库)
-
-        //    return result;
-        //}
-
-        #region 静态方法
-
-        ///// <summary>
-        ///// 获取RGV设备信息
-        ///// </summary>
-        ///// <param name="soue"></param>
-        ///// <param name="func"></param>
-        ///// <returns></returns>
-        //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<IRGV521>> soue, Func<Device<IRGV521>, bool> func)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-        //    result.AddRange(soue.Where(func).Select(device =>
-        //    {
-        //        return new DeviceStatusViewModel
-        //        {
-        //            CODE = device.Entity.CODE,
-        //            TASKNUM = device.Data.TaskID_1 ,
-        //            PH_STATUS = device.Data.SystemStatus.HasFlag(RGVStatus.光电),
-        //            ADDRFROM = device.Data.StartPosition_1.ToString(),
-        //            ADDRTO = device.Data.DestPosition_1.ToString(),
-        //        };
-        //    }));
-        //    return result;
-        //}
-
-        ///// <summary>
-        ///// 获取堆垛机设备信息
-        ///// </summary>
-        ///// <param name="soue"></param>
-        ///// <param name="func"></param>
-        ///// <returns></returns>
-        //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<ISRM521>> soue, Func<Device<ISRM521>, bool> func)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-
-        //    result.AddRange(soue.Where(func).Select(device =>
-        //    {
-        //        var info = new DeviceStatusViewModel
-        //        {
-        //            CODE = device.Entity.CODE,
-        //            TASKNUM = device.Data.TaskID_1,
-        //            ADDRFROM = $"{device.Data.SLine_1}-{device.Data.SCol_1}-{device.Data.SLayer_1}",
-        //            ADDRTO = device.Data.ELine_1.ToString(),
-        //        };
-        //        if (device.Data.ECol_1 != 0 && device.Data.ELayer_1 != 0)
-        //            info.ADDRTO = $"{device.Data.ELine_1}-{device.Data.ECol_1}-{device.Data.ELayer_1}";
-        //        return info;
-        //    }));
-
-        //    return result;
-        //}
-
-        ///// <summary>
-        ///// 获取输送机设备信息
-        ///// </summary>
-        ///// <param name="soue"></param>
-        ///// <param name="func"></param>
-        ///// <returns></returns>
-        //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<IStation521>> soue, Func<Device<IStation521>, bool> func)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-
-        //    result.AddRange(soue.Where(func).Select(device =>
-        //    {
-        //        return new DeviceStatusViewModel
-        //        {
-        //            CODE = device.Entity.CODE,
-        //            TASKNUM = device.Data.Tasknum,
-        //            ADDRFROM =device.Data.Goodsstart.ToString(),
-        //            ADDRTO = device.Data.Goodsend.ToString(),
-        //        };
-        //    }));
-
-        //    return result;
-        //}
-
-        #endregion 静态方法
-    }
+    //[ApiController]
+    //[Route("[controller]/[action]")]
+    //public class WCSApi : ControllerBase
+    //{
+    //    [HttpPost]
+    //    public WcsContractApiResponse I_WMS_CreateTasks(List<PushCreateWcsTaskRequest> list)
+    //    {
+    //        var res = new WcsContractApiResponse();
+    //        try
+    //        {
+    //            DB.Do(db =>
+    //            {
+    //                foreach (var obj in list)
+    //                {
+    //                    if (obj.TaskType == "1") //入库任务
+    //                    {
+    //                        var wmstaskid = int.Parse(obj.WMSTaskNo);
+    //                        if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
+    //                            throw new Exception("任务号" + wmstaskid + "重复下发");
+
+    //                        if (obj.StartLocation.Contains("_Back_"))
+    //                        {
+    //                            //生成AGV入库任务
+    //                            var ws = int.Parse(obj.StartLocation.Split('_')[1]);
+    //                            var agvtask = new WCS_AGVTask
+    //                            {
+    //                                AGVStatus = AGVTaskStatus.新建,
+    //                                Status = AGVTaskStatus.新建,
+    //                                Position = obj.StartLocation,
+    //                                TaskType = AGVTaskType.入库,
+    //                                CreateTime = DateTime.Now,
+    //                                UpdateTime = DateTime.Now,
+    //                                Workshop = ws,
+    //                            };
+    //                            if (ws == 13 || ws == 14)
+    //                            {
+    //                                agvtask.Station = "2088";
+    //                                agvtask.Workshop = 1314;
+    //                            }
+    //                            else if (ws == 1)
+    //                            {
+    //                                agvtask.Station = "2122";
+    //                            }
+    //                            else if (ws == 2)
+    //                                agvtask.Station = "2131";
+    //                            else if (ws == 3)
+    //                                agvtask.Station = "2143";
+
+    //                            db.Default.Set<WCS_AGVTask>().Add(agvtask);
+    //                            db.Default.SaveChanges();
+    //                        }
+    //                        else
+    //                        {
+    //                            var task = new WCS_TASK
+    //                            {
+    //                                TYPE = TaskType.入库,
+    //                                STATUS = WCS.Entity.TaskStatus.新建,
+    //                                BARCODE = obj.PalletCode,
+    //                                ADDRFROM = obj.StartLocation,
+    //                                ADDRTO = obj.EndLocation,
+    //                                UPDATETIME = DateTime.Now,
+    //                                UPDATEUSER = "WMS",
+    //                                WMSTASK = int.Parse(obj.WMSTaskNo)
+    //                            };
+    //                            db.Default.Add(task);
+    //                        }
+    //                    }
+    //                    else if (obj.TaskType == "2")//出库任务
+    //                    {
+    //                        var wmsTaskId = int.Parse(obj.WMSTaskNo);
+    //                        if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmsTaskId))
+    //                            throw new Exception("任务号" + wmsTaskId + "重复下发");
+
+    //                        var tunnel = "TY" + obj.SRMNo.Last();
+
+    //                        var task = new WCS_TASK
+    //                        {
+    //                            TYPE = TaskType.出库,
+    //                            STATUS = TaskStatus.新建,
+    //                            DEVICE = "SRM" + obj.SRMNo.Last(),
+    //                            BARCODE = obj.PalletCode,
+    //                            ADDRFROM = $"{obj.StartRow}-{obj.StartCol}-{obj.StartLayer}",
+    //                            ADDRTO = obj.EndLocation,
+    //                            UPDATETIME = DateTime.Now,
+    //                            UPDATEUSER = "WMS",
+    //                            TUNNEL = tunnel,
+    //                            WMSTASK = int.Parse(obj.WMSTaskNo),
+    //                            ADDRNEXT = obj.EndLocation,
+    //                            Length = obj.Length,
+    //                            MaterialCode = obj.MaterialCode,
+    //                            FLOOR = obj.EndLocation == "G1340" ? 1 : 2
+    //                        };
+
+    //                        task.TaskGetSrmStation();
+    //                        db.Default.Add(task);
+    //                    }
+    //                    else if (obj.TaskType == "3") //移库任务
+    //                    {
+    //                        var wmstaskid = int.Parse(obj.WMSTaskNo);
+    //                        if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmstaskid))
+    //                            throw new Exception("任务号" + wmstaskid + "重复下发");
+
+    //                        var scid = int.Parse(obj.SRMNo.Last().ToString());
+    //                        var tunnel = "TY" + obj.StartTunnel;
+    //                        var task = new WCS_TASK
+    //                        {
+    //                            TYPE = TaskType.移库,
+    //                            STATUS = WCS.Entity.TaskStatus.新建,
+    //                            DEVICE = "SRM" + obj.SRMNo.Last(),
+    //                            BARCODE = obj.PalletCode,
+    //                            ADDRFROM = $"{obj.StartRow}-{obj.StartCol}-{obj.StartLayer}",
+    //                            ADDRTO = $"{obj.EndRow}-{obj.EndCol}-{obj.EndLayer}",
+    //                            UPDATETIME = DateTime.Now,
+    //                            UPDATEUSER = "WMS",
+    //                            TUNNEL = tunnel,
+    //                            WMSTASK = int.Parse(obj.WMSTaskNo),
+    //                            TaskGroupKey = obj.TaskGroupKey
+    //                        };
+    //                        db.Default.Add(task);
+    //                    }
+    //                    else if (obj.TaskType == "6") //倒库任务
+    //                    {
+    //                        var wmsTaskId = int.Parse(obj.WMSTaskNo);
+    //                        if (db.Default.Set<WCS_TASK>().Any(v => v.WMSTASK == wmsTaskId))
+    //                            throw new Exception("任务号" + wmsTaskId + "重复下发");
+
+    //                        var srmNo = obj.SRMNo.Last();
+    //                        var endSrmNo = obj.EndSRMNo.Last();
+
+    //                        var task = new WCS_TASK
+    //                        {
+    //                            TYPE = TaskType.倒库,
+    //                            STATUS = TaskStatus.新建,
+    //                            BARCODE = obj.PalletCode,
+    //                            ADDRFROM = $"{obj.StartRow}-{obj.StartCol}-{obj.StartLayer}",
+    //                            ADDRTO = $"{obj.EndRow}-{obj.EndCol}-{obj.EndLayer}",
+    //                            UPDATETIME = DateTime.Now,
+    //                            UPDATEUSER = "WMS",
+    //                            TUNNEL = $"TY{srmNo}",
+    //                            DEVICE = $"SRM{srmNo}",
+    //                            TUNNELDL = $"TY{endSrmNo}",
+    //                            DEVICEDL = $"SRM{endSrmNo}",
+    //                            WMSTASK = int.Parse(obj.WMSTaskNo),
+    //                            ADDRNEXT = obj.EndLocation,
+    //                            Length = obj.Length,
+    //                            MaterialCode = obj.MaterialCode,
+    //                            FLOOR = obj.EndLocation == "G1340" ? 1 : 2,
+    //                            TaskGroupKey = obj.TaskGroupKey
+    //                        };
+
+    //                        task.TaskGetSrmStation();
+    //                        db.Default.Add(task);
+    //                    }
+    //                }
+    //                db.Default.SaveChanges();
+    //            });
+    //            res.ResType = true;
+    //        }
+    //        catch (Exception ex)
+    //        {
+    //            res.ResMessage = ex.GetBaseException().Message;
+    //        }
+    //        return res;
+    //    }
+
+    //    [HttpPost]
+    //    public WcsContractApiResponse I_WMS_CreateAGVTask(PushCreateAGVTaskRequest obj)
+    //    {
+    //        var res = new WcsContractApiResponse();
+    //        try
+    //        {
+    //            DB.Do(db =>
+    //            {
+    //                if (obj.Type == 1)
+    //                {
+    //                    var ws = int.Parse(obj.StartPos.Split('_')[1]);
+    //                    var agvtask = new WCS_AGVTask
+    //                    {
+    //                        AGVStatus = AGVTaskStatus.新建,
+    //                        Status = AGVTaskStatus.新建,
+    //                        Position = obj.StartPos,
+    //                        TaskType = AGVTaskType.入库,
+    //                        CreateTime = DateTime.Now,
+    //                        UpdateTime = DateTime.Now,
+    //                        Workshop = ws,
+    //                    };
+    //                    if (ws == 13 || ws == 14)
+    //                    {
+    //                        agvtask.Station = "2088";
+    //                        agvtask.Workshop = 1314;
+    //                    }
+    //                    else if (ws == 1)
+    //                    {
+    //                        agvtask.Station = "2122";
+    //                    }
+    //                    else if (ws == 2)
+    //                        agvtask.Station = "2131";
+    //                    else if (ws == 3)
+    //                        agvtask.Station = "2143";
+
+    //                    db.Default.Set<WCS_AGVTask>().Add(agvtask);
+    //                    db.Default.SaveChanges();
+    //                }
+    //                else
+    //                    throw new Exception($"类型{obj.Type}不支持");
+    //            });
+
+    //            res.ResType = true;
+    //        }
+    //        catch (Exception ex)
+    //        {
+    //            res.ResMessage = ex.GetBaseException().Message;
+    //        }
+    //        return res;
+    //    }
+
+    //    [HttpPost]
+    //    public WcsContractApiResponse I_CancelWCSTaskByCode(string code)
+    //    {
+    //        var res = new WcsContractApiResponse();
+    //        try
+    //        {
+    //            DB.Do(db =>
+    //            {
+    //                var task = db.Default.Set<WCS_TASK>().Where(v => v.BARCODE == code && v.STATUS < WCS.Entity.TaskStatus.已完成 && v.TYPE == TaskType.组盘).FirstOrDefault();
+    //                if (task == null)
+    //                    throw new Exception("WCS任务不存在");
+    //                task.STATUS = WCS.Entity.TaskStatus.已取消;
+    //                task.UPDATETIME = DateTime.Now;
+    //                task.UPDATEUSER = "RF";
+    //                db.Default.SaveChanges();
+    //            });
+    //            res.ResType = true;
+    //        }
+    //        catch (Exception ex)
+    //        {
+    //            res.ResMessage = ex.GetBaseException().Message;
+    //        }
+    //        return res;
+    //    }
+
+    //    [HttpPost]
+    //    public WcsContractApiResponse I_CancelWCSTaskByID(int wmstaskId)
+    //    {
+    //        var res = new WcsContractApiResponse();
+    //        try
+    //        {
+    //            DB.Do(db =>
+    //            {
+    //                var task = db.Default.Set<WCS_TASK>().Where(v => v.WMSTASK == wmstaskId).FirstOrDefault();
+    //                if (task == null)
+    //                    throw new Exception("WCS任务不存在");
+    //                if (task.STATUS != WCS.Entity.TaskStatus.新建)
+    //                    throw new Exception("WCS任务当前状态不允许取消");
+    //                task.STATUS = WCS.Entity.TaskStatus.已取消;
+    //                task.UPDATETIME = DateTime.Now;
+    //                task.UPDATEUSER = "WMS";
+    //                db.Default.SaveChanges();
+    //                if (task.TYPE == TaskType.出库 && task.AgvTask > 0)
+    //                {
+    //                    var agvtask = db.Default.Set<WCS_AGVTask>().Find(task.AgvTask);
+    //                    agvtask.Status = AGVTaskStatus.取消;
+    //                    agvtask.UpdateTime = DateTime.Now;
+    //                    db.Default.SaveChanges();
+    //                }
+    //            });
+    //            res.ResType = true;
+    //        }
+    //        catch (Exception ex)
+    //        {
+    //            res.ResMessage = ex.GetBaseException().Message;
+    //        }
+    //        return res;
+    //    }
+
+    //    /// <summary>
+    //    /// 通过该接口获取指定条件设备信息
+    //    /// </summary>
+    //    /// <param name="model">筛选条件</param>
+    //    /// <returns></returns>
+    //    //[HttpGet]
+    //    //public List<DeviceStatusViewModel> GetDeviceStatus([FromQuery] DeviceStatusViewModel model)
+    //    //{
+    //    //    var result = new List<DeviceStatusViewModel>();
+    //    //    //找到所有设备的读取协议
+    //    //    var rgv = Device.Where(v => v.IsRGV()).Select(v => v.Device<IRGV521>());
+    //    //    var sc = Device.Where(v => v.IsSC()).Select(v => v.Device<ISRM521>());
+    //    //    var conv = Device.Where(v => v.IsConv()).Select(v => v.Device<IStation521>());
+
+    //    //    #region 检索分两部分,设备、任务(数据库)
+
+    //    //    #region 设备信息
+
+    //    //    if (!string.IsNullOrEmpty(model.CODE))
+    //    //    {
+    //    //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Entity.CODE == model.CODE));
+    //    //        result.AddRange(GetDeviceStatusWhere(sc, v => v.Entity.CODE == model.CODE));
+    //    //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Entity.CODE == model.CODE));
+    //    //    }
+
+    //    //    if (model.TASKNUM > 10000)
+    //    //    {
+    //    //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 == model.TASKNUM));
+    //    //        result.AddRange(GetDeviceStatusWhere(sc, v => v.Data.TaskID_1 == model.TASKNUM));
+    //    //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Tasknum == model.TASKNUM));
+    //    //    }
+
+    //    //    if (model.PH_STATUS != null)
+    //    //    {
+    //    //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 == model.TASKNUM));
+    //    //    }
+
+    //    //    if (!string.IsNullOrEmpty(model.ADDRFROM))
+    //    //    {
+    //    //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.StartPosition_1 == short.Parse(model.ADDRFROM)));
+    //    //        result.AddRange(GetDeviceStatusWhere(sc, v => model.ADDRFROM.Contains(v.Data.SLine_1.ToString())
+    //    //                                                   || model.ADDRFROM.Contains(v.Data.SCol_1.ToString())
+    //    //                                                   || model.ADDRFROM.Contains(v.Data.SLayer_1.ToString())));
+    //    //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Goodsstart ==short.Parse(model.ADDRFROM)));
+    //    //    }
+
+    //    //    if (!string.IsNullOrEmpty(model.ADDRTO))
+    //    //    {
+    //    //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.DestPosition_1 == short.Parse(model.ADDRTO)));
+    //    //        result.AddRange(GetDeviceStatusWhere(sc, v => model.ADDRTO.Contains(v.Data.ELine_1.ToString())
+    //    //                                                   || model.ADDRTO.Contains(v.Data.ECol_1.ToString())
+    //    //                                                   || model.ADDRTO.Contains(v.Data.ELayer_1.ToString())));
+    //    //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Goodsend == short.Parse(model.ADDRTO)));
+    //    //    }
+
+    //    //    #endregion 设备信息
+
+    //    //    #region 任务信息
+
+    //    //    //获取所有设备上的任务信息
+    //    //    if (model.TYPE != null || !string.IsNullOrEmpty(model.BARCODE))
+    //    //    {
+    //    //        var info = new List<DeviceStatusViewModel>();
+    //    //        var ids = result.Select(v => v.TASKNUM);
+    //    //        info.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 > 10000));
+    //    //        info.AddRange(GetDeviceStatusWhere(sc, v => v.Data.TaskID_1 > 10000));
+    //    //        info.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Tasknum > 10000));
+    //    //        result.AddRange(info.Where(v => !ids.Any(b => b == v.TASKNUM)));
+    //    //    }
+
+    //    //    DB.Do(db =>
+    //    //    {
+    //    //        var ids = result.Select(v => v.TASKNUM);
+    //    //        var tasks = db.Default.Set<WCS_TASK>().AsNoTracking().Where(v => ids.Any(b => b == v.ID)).ToList();
+    //    //        tasks.ForEach(task =>
+    //    //        {
+    //    //            var info = result.Find(v => v.TASKNUM == task.ID);
+    //    //            info.TYPE = task.TYPE;
+    //    //            info.BARCODE = task.BARCODE;
+    //    //        });
+    //    //    });
+
+    //    //    if (model.TYPE != null)
+    //    //    {
+    //    //        result = result.Where(v => v.TYPE == model.TYPE).ToList();
+    //    //    }
+    //    //    if (!string.IsNullOrEmpty(model.BARCODE))
+    //    //    {
+    //    //        result = result.Where(v => v.BARCODE != null && v.BARCODE.Contains(model.BARCODE)).ToList();
+    //    //    }
+
+    //    //    #endregion 任务信息
+
+    //    //    #endregion 检索分两部分,设备、任务(数据库)
+
+    //    //    return result;
+    //    //}
+
+    //    #region 静态方法
+
+    //    ///// <summary>
+    //    ///// 获取RGV设备信息
+    //    ///// </summary>
+    //    ///// <param name="soue"></param>
+    //    ///// <param name="func"></param>
+    //    ///// <returns></returns>
+    //    //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<IRGV521>> soue, Func<Device<IRGV521>, bool> func)
+    //    //{
+    //    //    var result = new List<DeviceStatusViewModel>();
+    //    //    result.AddRange(soue.Where(func).Select(device =>
+    //    //    {
+    //    //        return new DeviceStatusViewModel
+    //    //        {
+    //    //            CODE = device.Entity.CODE,
+    //    //            TASKNUM = device.Data.TaskID_1 ,
+    //    //            PH_STATUS = device.Data.SystemStatus.HasFlag(RGVStatus.光电),
+    //    //            ADDRFROM = device.Data.StartPosition_1.ToString(),
+    //    //            ADDRTO = device.Data.DestPosition_1.ToString(),
+    //    //        };
+    //    //    }));
+    //    //    return result;
+    //    //}
+
+    //    ///// <summary>
+    //    ///// 获取堆垛机设备信息
+    //    ///// </summary>
+    //    ///// <param name="soue"></param>
+    //    ///// <param name="func"></param>
+    //    ///// <returns></returns>
+    //    //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<ISRM521>> soue, Func<Device<ISRM521>, bool> func)
+    //    //{
+    //    //    var result = new List<DeviceStatusViewModel>();
+
+    //    //    result.AddRange(soue.Where(func).Select(device =>
+    //    //    {
+    //    //        var info = new DeviceStatusViewModel
+    //    //        {
+    //    //            CODE = device.Entity.CODE,
+    //    //            TASKNUM = device.Data.TaskID_1,
+    //    //            ADDRFROM = $"{device.Data.SLine_1}-{device.Data.SCol_1}-{device.Data.SLayer_1}",
+    //    //            ADDRTO = device.Data.ELine_1.ToString(),
+    //    //        };
+    //    //        if (device.Data.ECol_1 != 0 && device.Data.ELayer_1 != 0)
+    //    //            info.ADDRTO = $"{device.Data.ELine_1}-{device.Data.ECol_1}-{device.Data.ELayer_1}";
+    //    //        return info;
+    //    //    }));
+
+    //    //    return result;
+    //    //}
+
+    //    ///// <summary>
+    //    ///// 获取输送机设备信息
+    //    ///// </summary>
+    //    ///// <param name="soue"></param>
+    //    ///// <param name="func"></param>
+    //    ///// <returns></returns>
+    //    //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<IStation521>> soue, Func<Device<IStation521>, bool> func)
+    //    //{
+    //    //    var result = new List<DeviceStatusViewModel>();
+
+    //    //    result.AddRange(soue.Where(func).Select(device =>
+    //    //    {
+    //    //        return new DeviceStatusViewModel
+    //    //        {
+    //    //            CODE = device.Entity.CODE,
+    //    //            TASKNUM = device.Data.Tasknum,
+    //    //            ADDRFROM =device.Data.Goodsstart.ToString(),
+    //    //            ADDRTO = device.Data.Goodsend.ToString(),
+    //    //        };
+    //    //    }));
+
+    //    //    return result;
+    //    //}
+
+    //    #endregion 静态方法
+    //}
 }