huangxiaoqiang
3 天以前 229dcce8c3cc990b9ae5fdb278de12c4235ff876
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -103,6 +103,7 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                WriteLog.GetLog("接收WMS任务").Write(JsonConvert.SerializeObject(taskDTOs), "接收WMS任务");
                Dt_Task task =null;
                // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå‡ºåº“ä»»åŠ¡
                if (taskDTOs.TaskType == "2")
@@ -112,7 +113,7 @@
                        Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTOs.EndPoint);
                        if (stationManagerStart == null)
                        {
                            return content.Error("未找到出库站台信息");
                            throw new Exception("未找到出库站台信息");
                        }
                        task = new Dt_Task()
                        {
@@ -137,21 +138,12 @@
                    {
                        string[] targetCodes = taskDTOs.BeginPoint.Split("-");
                        if(GetScCode(Convert.ToInt32(targetCodes[0]))=="SC01"&&(taskDTOs.EndPoint=="1030"|| taskDTOs.EndPoint == "1029"))
                        {
                            return content.Error($"一号堆垛机不能出库至该点位{taskDTOs.EndPoint}");
                        }
                        if (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC06" && (taskDTOs.EndPoint == "1002" || taskDTOs.EndPoint == "1004"))
                        {
                            return content.Error($"六号堆垛机不能出库至该点位{taskDTOs.EndPoint}");
                        }
                        if (taskDTOs.EndPoint == "3004")
                        {
                            var newTask = BaseDal.QueryFirst(x => x.SourceAddress == "3001" && x.TaskType == (int)TaskInboundTypeEnum.Inbound && x.TaskState != (int)TaskInStatusEnum.HoistNew && x.TaskState != (int)TaskInStatusEnum.HoistInExecuting && x.TaskState > 225);
                            var newTask = BaseDal.QueryFirst(x => x.SourceAddress == "3002" && x.TaskType == (int)TaskInboundTypeEnum.Inbound && x.TaskState != (int)TaskInStatusEnum.HoistNew && x.TaskState != (int)TaskInStatusEnum.HoistInExecuting && x.TaskState > 225);
                            if (newTask != null)
                            {
                                return content.Error("已存在入库任务,出库任务不可下发");
                                throw new Exception("已存在入库任务,出库任务不可下发");
                            }
                        }
@@ -159,7 +151,7 @@
                        Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTOs.EndPoint);
                        if (stationManagerEnd == null)
                        {
                            return content.Error("未找到出库站台信息");
                            throw new Exception("未找到出库站台信息");
                        }
                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == GetScCode(Convert.ToInt32(targetCodes[0])) && x.stationType == 2 && x.stationFloor == stationManagerEnd.stationFloor);
@@ -169,7 +161,7 @@
                        {
                            RGVName = stationManager.RGVName;
                        }
                        task = new Dt_Task()
                        Dt_Task NewTask = new Dt_Task()
                        {
                            TaskNum = BaseDal.GetTaskNo().Result,
                            Creater = "WMS",
@@ -185,10 +177,27 @@
                            TargetAddress = taskDTOs.EndPoint,
                            RGVName = stationManager.RGVName != null ? stationManager.RGVName : RGVName,
                            Floor = stationManager.stationFloor,
                            TargetStation= stationManagerEnd.remark,
                            SourceStation= 0,
                            TargetStation = stationManagerEnd.remark,
                            SourceStation = 0,
                        };
                        BaseDal.AddData(task);
                        if (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC01" && (taskDTOs.EndPoint == "1030" || taskDTOs.EndPoint == "1029"))
                        {
                            Dt_StationManager stationTransfer = _stationManagerRepository.QueryFirst(x => x.stationChildCode== "1025");
                            NewTask.TargetStation = stationTransfer.stationRemark;
                            NewTask.Remark = "1025";
                        }
                        if(taskDTOs.EndPoint == "1004")
                        {
                            throw new Exception("该点位不是出库点位");
                        }
                        if (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC06" && taskDTOs.EndPoint == "1002")
                        {
                            Dt_StationManager stationTransfer = _stationManagerRepository.QueryFirst(x => x.stationChildCode == "1026");
                            NewTask.TargetStation = stationTransfer.stationRemark;
                            NewTask.Remark = "1026";
                        }
                        task = NewTask;
                        BaseDal.AddData(NewTask);
                    }
                }
                // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå…¥åº“ä»»åŠ¡
@@ -226,7 +235,7 @@
                        Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTOs.BeginPoint);
                        if (stationManagerStart == null)
                        {
                            return content.Error("未找到出库站台信息");
                            throw new Exception("未找到出库站台信息");
                        }
                        task = new Dt_Task()
                        {
@@ -251,17 +260,7 @@
                    {
                        task = BaseDal.QueryFirst(x => x.PalletCode == taskDTOs.TPbarcode);
                        string[] targetCodes = taskDTOs.EndPoint.Split("-");
                        if (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC01" && (taskDTOs.BeginPoint == "1030" || taskDTOs.EndPoint == "1029"))
                        {
                            return content.Error($"该点位{taskDTOs.EndPoint}不能入库一号堆垛机");
                        }
                        if (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC06" && (taskDTOs.BeginPoint == "1002" || taskDTOs.BeginPoint == "1004"))
                        {
                            return content.Error($"该点位{taskDTOs.EndPoint}不能入库六号堆垛机");
                        }
                        if (task != null)
                        {
                            task.Creater = "WMS";
@@ -290,11 +289,25 @@
                            task.TargetStation = stationManager.stationRemark;
                            if ((GetScCode(Convert.ToInt32(targetCodes[0])) == "SC01" && (taskDTOs.BeginPoint == "1030" || taskDTOs.EndPoint == "1029")) || (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC01" && task.RGVName == "RGV02"))
                            {
                                Dt_StationManager stationTransfer = _stationManagerRepository.QueryFirst(x => x.stationChildCode == "1026");
                                task.TargetStation = stationTransfer.stationRemark;
                                task.Remark = "1026";
                            }
                            if ((GetScCode(Convert.ToInt32(targetCodes[0])) == "SC06" && (taskDTOs.BeginPoint == "1002" || taskDTOs.BeginPoint == "1004")) || (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC06" && task.RGVName == "RGV01"))
                            {
                                Dt_StationManager stationTransfer = _stationManagerRepository.QueryFirst(x => x.stationChildCode == "1026");
                                task.TargetStation = stationTransfer.stationRemark;
                                task.Remark = "1025";
                            }
                            BaseDal.UpdateData(task);
                        }
                        else
                        {
                            return content.Error($"未找到该托盘【{taskDTOs.TPbarcode}】任务");
                            throw new Exception($"未找到该托盘【{taskDTOs.TPbarcode}】任务");
                        }
                    }
                }
@@ -328,7 +341,7 @@
                    Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress);
                    if (stationManager == null)
                    {
                        return content.Error("未找到起点站台");
                        throw new Exception("未找到起点站台");
                    }
                    
                    if (task != null)
@@ -338,6 +351,7 @@
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        task_Hty.OperateType = (int)OperateTypeEnum.异常退回;
                        BaseDal.DeleteData(task);
                        _taskHtyRepository.AddData(task_Hty);
@@ -347,6 +361,7 @@
                            PalletCode=taskDTOs.TPbarcode,
                            ErrorMessage=taskDTOs.EndPoint,
                            CreateDate=DateTime.Now,
                            Creater = "WMS"
                        };
                        _errorMessageRepository.AddData(message);
                        IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.RGVName);
@@ -383,6 +398,7 @@
                                PalletCode = taskDTOs.TPbarcode,
                                ErrorMessage = taskDTOs.EndPoint,
                                CreateDate = DateTime.Now,
                                Creater ="WMS"
                            };
                            _errorMessageRepository.AddData(message);
                        }
@@ -398,6 +414,7 @@
            }
            catch (Exception ex)
            {
                WriteLog.GetLog("接收WMS任务").Write(JsonConvert.SerializeObject(ex.Message), "接收WMS任务");
                content = WebResponseContent.Instance.Error($"生成任务失败,错误信息:{ex.Message}");
            }
            finally
@@ -425,11 +442,11 @@
            {
                return "SC04";
            }
            else if (number >= 15 && number <= 18)
            else if (number >= 15 && number <= 17)
            {
                return "SC05";
            }
            else if (number >= 19 && number <= 22)
            else if (number >= 18 && number <= 21)
            {
                return "SC06";
            }
@@ -578,7 +595,7 @@
        /// <returns></returns>
        public Dt_Task QueryRGVExecutingTask(string deviceNo)
        {
            return BaseDal.QueryFirst(x => (x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish|| x.TaskState == (int)TaskInStatusEnum.RGV_InAwaitWMS|| x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish) && x.RGVName == deviceNo);
            return BaseDal.QueryFirst(x => (x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish|| x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish) && x.RGVName == deviceNo);
        }
        /// <summary>
@@ -589,7 +606,7 @@
        /// <returns></returns>
        public Dt_Task QueryRGVExecutingTask(string deviceNo,int taskNum)
        {
            return BaseDal.QueryFirst(x => (x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish || x.TaskState == (int)TaskInStatusEnum.RGV_InAwaitWMS) && x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish && x.RGVName == deviceNo&&x.TaskNum==taskNum);
            return BaseDal.QueryFirst(x => (x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish) && x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish && x.RGVName == deviceNo&&x.TaskNum==taskNum);
        }
        /// <summary>
@@ -645,7 +662,7 @@
        public List<Dt_Task> QueryRGVTask()
        {
            return BaseDal.QueryData(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish) && x.Floor == "1F"), TaskOrderBy);
            return BaseDal.QueryData(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)) && x.Floor == "1F", TaskOrderBy);
        }
        /// <summary>
@@ -912,19 +929,6 @@
                    task.TaskState = nextStatus;
                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutFinish)
                    {
                        //task.ModifyDate = DateTime.Now;
                        //task.Modifier = "System";
                        //Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        //task_Hty.TaskId = 0;
                        //BaseDal.DeleteData(task);
                        //_taskHtyRepository.AddData(task_Hty);
                        RGVTaskCompleted(task.TaskNum);
                    }
                    if (task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
                    {
                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode == task.NextAddress);
@@ -939,6 +943,10 @@
                    {
                        content = StackCraneTaskCompleted(task.TaskNum);
                        return content;
                    }
                    if (task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                    {
                        task.Dispatchertime = DateTime.Now;
                    }
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
@@ -1030,6 +1038,7 @@
                    }
                    var wmsIpAddress = wmsBase + requestTask;
                    var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                    WriteLog.GetLog("WMS接口返回信息").Write(JsonConvert.SerializeObject(result), "WMS接口返回信息");
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV调度完成等待WMS任务");
                }
@@ -1092,9 +1101,21 @@
                    }
                    var wmsIpAddress = wmsBase + requestTask;
                    var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                    WriteLog.GetLog("WMS接口返回信息").Write(JsonConvert.SerializeObject(result), "WMS接口返回信息");
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV出库完成");
                }
                else if (task.TaskState == (int)TaskInStatusEnum.RGV_TransFer)
                {
                    task.TaskState = (int)TaskInStatusEnum.RGV_TransFerFInish;
                    BaseDal.UpdateData(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV入库中转");
                }
                else if (task.TaskState == (int)TaskOutStatusEnum.RGV_TransFer)
                {
                    task.TaskState = (int)TaskOutStatusEnum.RGV_TransFerFInish;
                    BaseDal.UpdateData(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV出库中转");
                }
                else
                {
@@ -1160,7 +1181,7 @@
                    Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                    task_Hty.TaskId = 0;
                    task_Hty.OperateType = (int)OperateTypeEnum.自动完成;
                    BaseDal.DeleteData(task);
                    _taskHtyRepository.AddData(task_Hty);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
@@ -1183,6 +1204,7 @@
                    }
                    var wmsIpAddress = wmsBase + requestTask;
                    var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                    WriteLog.GetLog("WMS接口返回信息").Write(JsonConvert.SerializeObject(result), "WMS接口返回信息");
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                {
@@ -1216,6 +1238,7 @@
                    }
                    var wmsIpAddress = wmsBase + requestTask;
                    var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                    WriteLog.GetLog("WMS接口返回信息").Write(JsonConvert.SerializeObject(result), "WMS接口返回信息");
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
                {
@@ -1311,6 +1334,7 @@
                }
                var wmsIpAddress = wmsBase + requestTask;
                var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                WriteLog.GetLog("WMS接口返回信息").Write(JsonConvert.SerializeObject(result), "WMS接口返回信息");
                #endregion
                content = WebResponseContent.Instance.OK("取消任务成功");
@@ -1372,6 +1396,7 @@
                }
                var wmsIpAddress = wmsBase + requestTask;
                var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                WriteLog.GetLog("WMS接口返回信息").Write(JsonConvert.SerializeObject(result), "WMS接口返回信息");
                #endregion
                content = WebResponseContent.Instance.OK("手动完成成功");