From 2190be42c0d77be84fed82d387f2a34da7fe4acc Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 07 八月 2025 16:17:07 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  611 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 502 insertions(+), 109 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index ed50158..e39ead0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -46,6 +46,7 @@
 using WIDESEAWCS_QuartzJob.Repository;
 using WIDESEAWCS_QuartzJob.Service;
 using WIDESEAWCS_TaskInfoRepository;
+using static WIDESEAWCS_QuartzJob.Service.DeviceInfoService;
 
 namespace WIDESEAWCS_TaskInfoService
 {
@@ -60,6 +61,7 @@
         private readonly IMapper _mapper;
         private readonly IDeviceInfoRepository _deviceInfoRepository;
         private readonly IDt_StationManagerRepository _stationManagerRepository;
+        private readonly IDt_WMSErrorMessageRepository _errorMessageRepository;
 
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -76,7 +78,7 @@
         public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList();
 
         public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService taskHtyService, ISys_ConfigService sys_ConfigService, IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository taskHtyRepository,
-        IDeviceInfoRepository deviceInfoRepository) : base(BaseDal)
+        IDeviceInfoRepository deviceInfoRepository, IDt_WMSErrorMessageRepository errorMessageRepository) : base(BaseDal)
         {
             _routerService = routerService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -88,6 +90,7 @@
             _mapper = mapper;
             _sys_ConfigService = sys_ConfigService;
             _deviceInfoRepository = deviceInfoRepository;
+            _errorMessageRepository = errorMessageRepository;
         }
 
         /// <summary>
@@ -100,7 +103,8 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                List<Dt_Task> tasks = new List<Dt_Task>();
+                WriteLog.GetLog("鎺ユ敹WMS浠诲姟").Write(JsonConvert.SerializeObject(taskDTOs), "鎺ユ敹WMS浠诲姟");
+                Dt_Task task =null;
                 // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔�
                 if (taskDTOs.TaskType == "2")
                 {
@@ -111,7 +115,7 @@
                         {
                             return content.Error("鏈壘鍒板嚭搴撶珯鍙颁俊鎭�");
                         }
-                        Dt_Task taskIn = new Dt_Task()
+                        task = new Dt_Task()
                         {
                             TaskNum = BaseDal.GetTaskNo().Result,
                             Creater = "WMS",
@@ -128,12 +132,21 @@
                             Floor = stationManagerStart.stationFloor,
                             RGVName = ""
                         };
-                        BaseDal.AddData(taskIn);
+                        BaseDal.AddData(task);
                     }
                     else
                     {
-
                         string[] targetCodes = taskDTOs.BeginPoint.Split("-");
+
+                        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);
+                            if (newTask != null)
+                            {
+                                return content.Error("宸插瓨鍦ㄥ叆搴撲换鍔★紝鍑哄簱浠诲姟涓嶅彲涓嬪彂");
+                            }
+                        }
+
 
                         Dt_StationManager stationManagerEnd = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTOs.EndPoint);
                         if (stationManagerEnd == null)
@@ -148,7 +161,7 @@
                         {
                             RGVName = stationManager.RGVName;
                         }
-                        Dt_Task taskOut = new Dt_Task()
+                        Dt_Task NewTask = new Dt_Task()
                         {
                             TaskNum = BaseDal.GetTaskNo().Result,
                             Creater = "WMS",
@@ -164,9 +177,27 @@
                             TargetAddress = taskDTOs.EndPoint,
                             RGVName = stationManager.RGVName != null ? stationManager.RGVName : RGVName,
                             Floor = stationManager.stationFloor,
-                            TargetStation= stationManagerEnd.remark,
+                            TargetStation = stationManagerEnd.remark,
+                            SourceStation = 0,
                         };
-                        BaseDal.AddData(taskOut);
+                        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")
+                        {
+                            return content.Error("璇ョ偣浣嶄笉鏄嚭搴撶偣浣�");
+                        }
+                        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);
                     }
                 }
                 // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄叆搴撲换鍔�
@@ -180,7 +211,7 @@
                             return content.Error("鏈壘鍒板叆搴撶珯鍙颁俊鎭�");
                         }
                         string[] targetCodes = taskDTOs.EndPoint.Split("-");
-                        Dt_Task taskIn = new Dt_Task()
+                        task = new Dt_Task()
                         {
                             TaskNum = BaseDal.GetTaskNo().Result,
                             Creater = "WMS",
@@ -197,7 +228,7 @@
                             Floor = stationManagerStart.stationFloor,
                             RGVName = "RGV03"
                         };
-                        BaseDal.AddData(taskIn);
+                        BaseDal.AddData(task);
                     } 
                     else if (Convert.ToInt32(taskDTOs.BeginPoint) > 1999 && Convert.ToInt32(taskDTOs.BeginPoint) < 3000)
                     {
@@ -206,7 +237,7 @@
                         {
                             return content.Error("鏈壘鍒板嚭搴撶珯鍙颁俊鎭�");
                         }
-                        Dt_Task taskIn = new Dt_Task()
+                        task = new Dt_Task()
                         {
                             TaskNum = BaseDal.GetTaskNo().Result,
                             Creater = "WMS",
@@ -223,11 +254,13 @@
                             Floor = stationManagerStart.stationFloor,
                             RGVName = ""
                         };
-                        BaseDal.AddData(taskIn);
+                        BaseDal.AddData(task);
                     }
                     else
                     {
-                        var task = BaseDal.QueryFirst(x => x.PalletCode == taskDTOs.TPbarcode);
+                        task = BaseDal.QueryFirst(x => x.PalletCode == taskDTOs.TPbarcode);
+                        string[] targetCodes = taskDTOs.EndPoint.Split("-");
+                                                
                         if (task != null)
                         {
                             task.Creater = "WMS";
@@ -244,20 +277,32 @@
 
                             task.TargetAddress = taskDTOs.EndPoint;
 
-                            string[] targetCodes = taskDTOs.EndPoint.Split("-");
-
                             task.Roadway = GetScCode(Convert.ToInt32(targetCodes[0]));
 
                             Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationType == 3 && x.stationFloor == task.Floor);
 
-                            Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway &&x.stationChildCode==taskDTOs.BeginPoint && x.stationFloor == task.Floor);
+                            Dt_StationManager stationManagerStart = _stationManagerRepository.QueryFirst(x => x.stationChildCode==taskDTOs.BeginPoint && x.stationFloor == task.Floor);
 
                             task.NextAddress = stationManager.stationChildCode;
 
                             task.SourceStation = stationManagerStart.remark;
 
-                            task.TargetStation = stationManagerStart.stationRemark;
+                            task.TargetStation = stationManager.stationRemark;
 
+
+                            if (GetScCode(Convert.ToInt32(targetCodes[0])) == "SC01" && (taskDTOs.BeginPoint == "1030" || taskDTOs.EndPoint == "1029"))
+                            {
+                                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"))
+                            {
+                                Dt_StationManager stationTransfer = _stationManagerRepository.QueryFirst(x => x.stationChildCode == "1026");
+                                task.TargetStation = stationTransfer.stationRemark;
+                                task.Remark = "1025";
+                            }
                             BaseDal.UpdateData(task);
                         }
                         else
@@ -268,11 +313,14 @@
                 }
                 else if (taskDTOs.TaskType == "3")
                 {
-                    Dt_Task taskRelocation = new Dt_Task()
+                    string[] targetCodes = taskDTOs.BeginPoint.Split("-");
+                    task = new Dt_Task()
                     {
                         TaskType = (int)TaskRelocationTypeEnum.Relocation,
 
                         TaskState = (int)TaskRelocationStatusEnum.RelocationNew,
+
+                        Roadway = GetScCode(Convert.ToInt32(targetCodes[0])),
 
                         SourceAddress = taskDTOs.BeginPoint,
 
@@ -285,17 +333,88 @@
                         Grade = 3,
 
                     };
-                    BaseDal.AddData(taskRelocation);
+                    BaseDal.AddData(task);
+                }
+                else if (taskDTOs.TaskType == "4")
+                {
+                    task = BaseDal.QueryFirst(x => x.PalletCode == taskDTOs.TPbarcode);
+                    Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress);
+                    if (stationManager == null)
+                    {
+                        return content.Error("鏈壘鍒拌捣鐐圭珯鍙�");
+                    }
+                    
+                    if (task != null)
+                    {
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        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);
+                        Dt_WMSErrorMessage message = new Dt_WMSErrorMessage()
+                        {
+                            TaskNum = task.TaskNum,
+                            PalletCode=taskDTOs.TPbarcode,
+                            ErrorMessage=taskDTOs.EndPoint,
+                            CreateDate=DateTime.Now,
+                            Creater = "WMS"
+                        };
+                        _errorMessageRepository.AddData(message);
+                        IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.RGVName);
+                        if (device != null)
+                        {
+                            if (task.RGVName == "RGV01" || task.RGVName == "RGV02")
+                            {
+                                CommonRGV_FirstFloor commonRGV = (CommonRGV_FirstFloor)device;
+
+                                commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, Convert.ToSByte(stationManager.stationRemark));
+                                commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(task.TaskNum));
+                                commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(4));
+                            }
+                            else
+                            {
+                                CommonRGV commonRGV = (CommonRGV)device;
+                                commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, Convert.ToSByte(stationManager.stationRemark));
+                                commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(task.TaskNum));
+                                commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(4));
+                            }
+                        }
+                    }
+                    else
+                    {
+                        IDevice? deviceconveyorline = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC);
+                        if (deviceconveyorline != null)
+                        {
+                            CommonConveyorLine conveyorLine = (CommonConveyorLine)deviceconveyorline;
+
+                            conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode);
+
+                            Dt_WMSErrorMessage message = new Dt_WMSErrorMessage()
+                            {
+                                PalletCode = taskDTOs.TPbarcode,
+                                ErrorMessage = taskDTOs.EndPoint,
+                                CreateDate = DateTime.Now,
+                                Creater ="WMS"
+                            };
+                            _errorMessageRepository.AddData(message);
+                        }
+                    }
+                    return content.OK();
                 }
                 else
                 {
                     return content.Error($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskDTOs.TaskId}銆�,浠诲姟绫诲瀷:銆恵taskDTOs.TaskType}銆�");
                 }
-                _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskId).ToList(), "鎺ユ敹WMS浠诲姟");
+                _taskExecuteDetailService.AddTaskExecuteDetailS(task.TaskNum, "鎺ユ敹WMS浠诲姟");
                 content = WebResponseContent.Instance.OK("鎴愬姛");
             }
             catch (Exception ex)
             {
+                WriteLog.GetLog("鎺ユ敹WMS浠诲姟").Write(JsonConvert.SerializeObject(ex.Message), "鎺ユ敹WMS浠诲姟");
                 content = WebResponseContent.Instance.Error($"鐢熸垚浠诲姟澶辫触,閿欒淇℃伅:{ex.Message}");
             }
             finally
@@ -311,17 +430,25 @@
             {
                 return "SC01";
             }
-            else if (number >= 5 && number <= 8)
+            else if (number >= 5 && number <= 7)
             {
                 return "SC02";
             }
-            else if (number >= 9 && number <= 12)
+            else if (number >= 8 && number <= 10)
             {
                 return "SC03";
             }
-            else if (number >= 13 && number <= 16)
+            else if (number >= 11 && number <= 14)
             {
                 return "SC04";
+            }
+            else if (number >= 15 && number <= 18)
+            {
+                return "SC05";
+            }
+            else if (number >= 19 && number <= 22)
+            {
+                return "SC06";
             }
             else
             {
@@ -466,9 +593,20 @@
         /// <param name="deviceNo">璁惧缂栧彿</param>
         /// <param name="currentAddress">褰撳墠鍦板潃</param>
         /// <returns></returns>
-        public Dt_Task QueryRGVExecutingTask(string deviceNo,int TaskNum)
+        public Dt_Task QueryRGVExecutingTask(string deviceNo)
         {
-            return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish && x.TaskNum == TaskNum && x.RGVName == 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);
+        }
+
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨRGV鏈墽琛岀殑浠诲姟
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <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);
         }
 
         /// <summary>
@@ -617,6 +755,147 @@
         /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬�
         /// </summary>
         /// <param name="taskNum">浠诲姟鍙�</param>
+        public WebResponseContent HandUpdateTaskStatusToNext(int taskNum)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
+                int oldState = task.TaskState;
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+
+                    task.TaskState = nextStatus;
+
+                    if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutFinish)
+                    {
+                        task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        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);
+
+                        var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                        var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                        var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                        WMSTaskDTO taskDTO = new WMSTaskDTO()
+                        {
+                            TaskId = task.WMSTaskNum,
+                            TPbarcode = task.PalletCode,
+                            WhCode = "1001",
+                            BeginPoint = task.SourceAddress,
+                            EndPoint = task.TargetAddress,
+                            Results = "1"
+                        };
+                        if (wmsBase == null || requestTask == null)
+                        {
+                            throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                        }
+                        var wmsIpAddress = wmsBase + requestTask;
+                        var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
+
+
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV鍑哄簱瀹屾垚");
+                    }
+
+                    if (task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
+                    {
+                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode == task.NextAddress);
+                        Dt_StationManager stationManagerend = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.TargetAddress);
+                        task.CurrentAddress = task.NextAddress;
+                        task.NextAddress = task.TargetAddress;
+                        task.SourceStation = stationManager.stationRemark;
+                        task.TargetStation = stationManagerend.remark;
+                    }
+
+                    if (task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
+                    {
+                        content = StackCraneTaskCompleted(task.TaskNum);
+                        return content;
+                    }
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+                {
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
+                    task.TaskState = nextStatus;
+
+                    if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
+                    {
+                        task.CurrentAddress = task.NextAddress;
+                        task.NextAddress = task.TargetAddress;
+                    }
+                    else if (task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
+                    {
+                        return content.Error("璇风瓑寰匴MS涓嬪彂鍏ュ簱浠诲姟");
+                    }
+                    else if (task.TaskState == (int)TaskInStatusEnum.RGV_InExecutingFinish)
+                    {
+                        Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress && x.stationFloor == task.Floor);
+                        task.CurrentAddress = task.NextAddress;
+                        task.NextAddress = stationManager.stationNextChildCode;
+                        task.ModifyDate = DateTime.Now;
+                        BaseDal.UpdateData(task);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV鍏ュ簱瀹屾垚");
+                    }
+                    else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish)
+                    {
+                        if (App.User.UserId > 0)
+                        {
+                            content = StackCraneTaskCompleted(task.TaskNum);
+                            return content;
+                        }
+
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        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);
+                    }
+                    else if (task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish || task.TaskState == (int)TaskInStatusEnum.RGV_InExecutingFinish)
+                    {
+                        RGVTaskCompleted(task.TaskNum);
+                    }
+                }
+                else
+                {
+                    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                }
+
+                if (task.TaskState <= 0)
+                {
+                    return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
+                }
+
+                task.ModifyDate = DateTime.Now;
+                task.Modifier = "System";
+                BaseDal.UpdateData(task);
+
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�");
+
+                content = WebResponseContent.Instance.OK();
+
+                return content;
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬�
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
         public WebResponseContent UpdateTaskStatusToNext(int taskNum)
         {
             WebResponseContent content = new WebResponseContent();
@@ -650,29 +929,24 @@
 
                     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);
-                    }
                     if (task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
                     {
                         Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode == task.NextAddress);
+                        Dt_StationManager stationManagerend = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.TargetAddress);
                         task.CurrentAddress = task.NextAddress;
                         task.NextAddress = task.TargetAddress;
                         task.SourceStation = stationManager.stationRemark;
+                        task.TargetStation = stationManagerend.remark;
                     }
 
                     if (task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
                     {
                         content = StackCraneTaskCompleted(task.TaskNum);
                         return content;
+                    }
+                    if (task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
+                    {
+                        task.Dispatchertime = DateTime.Now;
                     }
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
@@ -701,6 +975,10 @@
 
                         BaseDal.DeleteData(task);
                         _taskHtyRepository.AddData(task_Hty);
+                    }
+                    else if (task.TaskState == (int)TaskInStatusEnum.InFinish|| task.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish)
+                    {
+                        RGVTaskCompleted(task.TaskNum);
                     }
                 }
                 else
@@ -739,6 +1017,11 @@
 
                 if (task.TaskState == (int)TaskInStatusEnum.RGV_Indispatch)
                 {
+                    task.TaskState = (int)TaskInStatusEnum.RGV_InAwaitWMS;
+                    task.PalletCode = Barcode;
+                    task.ModifyDate = DateTime.Now;
+                    BaseDal.UpdateData(task);
+
                     var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                     var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                     var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue;
@@ -755,14 +1038,7 @@
                     }
                     var wmsIpAddress = wmsBase + requestTask;
                     var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
-
-                    //if (result != null)
-                    //{
-                    task.TaskState = (int)TaskInStatusEnum.RGV_InAwaitWMS;
-                        task.PalletCode = Barcode;
-                        task.ModifyDate = DateTime.Now;
-                        BaseDal.UpdateData(task);
-                    //}
+                    WriteLog.GetLog("WMS鎺ュ彛杩斿洖淇℃伅").Write(JsonConvert.SerializeObject(result), "WMS鎺ュ彛杩斿洖淇℃伅");
 
                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV璋冨害瀹屾垚绛夊緟WMS浠诲姟");
                 }
@@ -781,7 +1057,7 @@
                     task.TaskState = (int)TaskOutStatusEnum.RGV_OutdispatchFinish;
                     task.ModifyDate = DateTime.Now;
                     BaseDal.UpdateData(task);
-
+                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV鍑哄簱璋冨害");
                 }
                 else if (task.TaskState == (int)TaskInStatusEnum.InRetuen)
                 {
@@ -803,7 +1079,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);
 
@@ -825,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
                 {
@@ -861,7 +1149,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, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
@@ -893,10 +1181,30 @@
 
                     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, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
+
+                    var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                    var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                    var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    {
+                        TaskId = task.WMSTaskNum,
+                        TPbarcode = task.PalletCode,
+                        WhCode = "1001",
+                        BeginPoint = task.SourceAddress,
+                        EndPoint = task.TargetAddress,
+                        Results = "1"
+                    };
+                    if (wmsBase == null || requestTask == null)
+                    {
+                        throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                    }
+                    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)
                 {
@@ -907,10 +1215,30 @@
 
                     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, $"鍫嗗灈鏈虹Щ搴撳畬鎴�");
+
+                    var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                    var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                    var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    {
+                        TaskId = task.WMSTaskNum,
+                        TPbarcode = task.PalletCode,
+                        WhCode = "1001",
+                        BeginPoint = task.SourceAddress,
+                        EndPoint = task.TargetAddress,
+                        Results = "1"
+                    };
+                    if (wmsBase == null || requestTask == null)
+                    {
+                        throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                    }
+                    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)
                 {
@@ -948,6 +1276,130 @@
                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, "浜哄伐鍙栨秷浠诲姟");
                 }
                 content = WebResponseContent.Instance.OK("鍙栨秷浠诲姟鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        public WebResponseContent TaskCancel(int taskNum)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return content.Error("鏈壘鍒拌浠诲姟淇℃伅");
+
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    task.TaskState = (int)TaskOutStatusEnum.OutCancel;
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+                {
+                    task.TaskState = (int)TaskInStatusEnum.InCancel;
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                {
+                    task.TaskState = (int)TaskRelocationStatusEnum.RelocationCancel;
+                }
+                else
+                {
+                    return content.Error($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                }
+                task.ModifyDate = DateTime.Now;
+                BaseDal.DeleteData(task);
+
+                Dt_Task_Hty taskHty = _mapper.Map<Dt_Task_Hty>(task);
+                taskHty.OperateType = (int)OperateTypeEnum.WCS浜哄伐鍙栨秷;
+                _taskHtyRepository.AddData(taskHty);
+
+                #region 涓婃姤WMS鎵ц缁撴灉
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                WMSTaskDTO taskDTO = new WMSTaskDTO()
+                {
+                    TaskId = task.WMSTaskNum,
+                    TPbarcode = task.PalletCode,
+                    WhCode = "1001",
+                    BeginPoint = task.SourceAddress,
+                    EndPoint = task.TargetAddress,
+                    Results = "3"
+                };
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                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("鍙栨秷浠诲姟鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        public WebResponseContent TaskComplete(int taskNum)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var task=BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null) return content.Error("鏈壘鍒拌浠诲姟淇℃伅");
+
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    task.TaskState = (int)TaskOutStatusEnum.OutHandFinish;
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+                {
+                    task.TaskState = (int)TaskInStatusEnum.InHandFinish;
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                {
+                    task.TaskState = (int)TaskRelocationStatusEnum.RelocationHandFinish;
+                }
+                else
+                {
+                    return content.Error($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                }
+                task.ModifyDate = DateTime.Now;
+                BaseDal.DeleteData(task);
+
+                Dt_Task_Hty taskHty = _mapper.Map<Dt_Task_Hty>(task);
+                taskHty.OperateType = (int)OperateTypeEnum.浜哄伐瀹屾垚;
+                _taskHtyRepository.AddData(taskHty);
+
+                #region 涓婃姤WMS瀹屾垚
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                WMSTaskDTO taskDTO = new WMSTaskDTO()
+                {
+                    TaskId = task.WMSTaskNum,
+                    TPbarcode = task.PalletCode,
+                    WhCode = "1001",
+                    BeginPoint = task.SourceAddress,
+                    EndPoint = task.TargetAddress,
+                    Results = "2"
+                };
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                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("鎵嬪姩瀹屾垚鎴愬姛");
             }
             catch (Exception ex)
             {
@@ -1104,65 +1556,6 @@
                 ((SqlSugarClient)BaseDal.Db).RollbackTran();
                 return WebResponseContent.Instance.Error(ex.Message);
             }
-        }
-        public WebResponseContent TaskComplete()
-        {
-            WebResponseContent content = new WebResponseContent();
-            //var result = _stationManagerRepository.Db.Queryable<Dt_StationManager>()
-            //    .Where(t => SqlFunc.Abs(t.LevelPointFist - taskNum) <= 1000)
-            //    .ToList();
-            var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-            var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
-            var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
-            WMSTaskDTO taskDTO = new WMSTaskDTO()
-            {
-                TaskId="1",
-                TPbarcode = "123456",
-                WhCode = "1001",
-                BeginPoint = "1013",
-                EndPoint="1-1-1",
-                Results="1"
-            };
-            if (wmsBase == null || requestTask == null)
-            {
-                throw new InvalidOperationException("WMS IP 鏈厤缃�");
-            }
-            var wmsIpAddress = wmsBase + requestTask;
-            var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
-
-            return content.OK(data: result);
-        }
-
-        public WebResponseContent RequestTask()
-        {
-            WebResponseContent content = new WebResponseContent();
-            //var result = _stationManagerRepository.Db.Queryable<Dt_StationManager>()
-            //    .Where(t => SqlFunc.Abs(t.LevelPointFist - taskNum) <= 1000)
-            //    .ToList();
-            var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-            var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
-            var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue;
-            //var keys = new Dictionary<string, object>()
-            //{
-            //    {"TPbarcode", "123456"},
-            //    {"WhCode", "1001"},
-            //    {"BeginPoint", "1013"}
-            //};
-
-            WMSTaskDTO taskDTO = new WMSTaskDTO()
-            {
-                TPbarcode = "123456",
-                WhCode = "1001",
-                BeginPoint = "1013"
-            };
-            if (wmsBase == null || requestTask == null)
-            {
-                throw new InvalidOperationException("WMS IP 鏈厤缃�");
-            }
-            var wmsIpAddress = wmsBase + requestTask;
-            var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
-
-            return content.OK(data: result);
         }
     }
 }

--
Gitblit v1.9.3