|
@@ -257,175 +257,175 @@ namespace WCS.Service.WebApi
|
|
|
/// </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;
|
|
|
- }
|
|
|
+ //[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;
|
|
|
- }
|
|
|
+ ///// <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;
|
|
|
+ //}
|
|
|
|
|
|
|
|
|
|