|  | @@ -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 静态方法
 | 
	
		
			
				|  |  | +    //}
 | 
	
		
			
				|  |  |  }
 |