From 62bfd66d8980d01f76408c655004c5d848f07759 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 23 一月 2026 09:39:26 +0800
Subject: [PATCH] 添加WMS下发任务接口

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs          |  103 ++++++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs           |    8 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs                   |   73 +++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs       |   18 ++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs             |  181 ++++++++++++++++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json                    |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs          |    6 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs                      |   53 ++++++
 9 files changed, 433 insertions(+), 13 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index 1919700..02fd846 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -7,6 +7,109 @@
 
 namespace WIDESEAWCS_Common.TaskEnum
 {
+
+    public enum TaskStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓浠诲姟
+        /// </summary>
+        [Description("鏂板缓浠诲姟")]
+        New,
+        ///// <summary>
+        ///// 寰呮墽琛�
+        ///// </summary>
+        [Description("寰呮墽琛�")]
+        Execut,
+        ///// <summary>
+        ///// 鍙栬揣涓�
+        ///// </summary>
+        [Description("鍙栬揣涓�")]
+        Takeing,
+        /// <summary>
+        /// 鍙栬揣瀹屾垚
+        /// </summary>
+        [Description("鍙栬揣瀹屾垚")]
+        TakeFinish,
+
+        /// <summary>
+        /// 鏀捐揣涓�
+        /// </summary>
+        [Description("鏀捐揣涓�")]
+        Puting,
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        Finish,
+        /// <summary>
+        /// 澶栧舰妫�娴嬩腑
+        /// </summary>
+        [Description("澶栧舰妫�娴嬩腑")]
+        CheckShapeing,
+        /// <summary>
+        /// 鎵樼洏鍙风‘璁や腑
+        /// </summary>
+        [Description("鎵樼洏鍙风‘璁や腑")]
+        CheckPalletCodeing,
+
+        /// <summary>
+        /// AGV寰呯户缁墽琛�
+        /// </summary>
+        [Description("AGV寰呯户缁墽琛�")]
+        AGV_WaitToExecute,
+
+
+        #region 鍑箰澹獳GV鍏朵粬浠诲姟鐘舵��
+        /// <summary>
+        /// 璧风偣鏃犺揣
+        /// </summary>
+        [Description("璧风偣鏃犺揣")]
+        FromOutOfStock,
+        /// <summary>
+        /// 缁堢偣鏈夎揣
+        /// </summary>
+        [Description("缁堢偣鏈夎揣")]
+        ToaddInStock,
+        /// <summary>
+        /// 浠诲姟鍙烽噸澶�
+        /// </summary>
+        [Description("浠诲姟鍙烽噸澶�")]
+        TaskNumRepetition,
+        /// <summary>
+        /// RCS绯荤粺鎺ユ敹鍒颁换鍔″悗鎿嶄綔鏁版嵁搴撳紓甯�
+        /// </summary>
+        [Description("RCS绯荤粺鎺ユ敹鍒颁换鍔″悗鎿嶄綔鏁版嵁搴撳紓甯�")]
+        RCSDataError,
+        /// <summary>
+        /// 浠诲姟绫诲瀷寮傚父
+        /// </summary>
+        [Description("浠诲姟绫诲瀷寮傚父")]
+        TaskTypeError,
+        /// <summary>
+        /// 鍙傛暟寮傚父
+        /// </summary>
+        [Description("鍙傛暟寮傚父")]
+        ParameterError,
+        /// <summary>
+        /// RCS绯荤粺鏈煡寮傚父
+        /// </summary>
+        [Description("RCS绯荤粺鏈煡寮傚父")]
+        RCSError,
+        /// <summary>
+        /// 浠诲姟搴熸
+        /// </summary>
+        [Description("浠诲姟搴熸")]
+        Cancel
+        #endregion
+
+        #region 娴峰悍AGV鍏朵粬浠诲姟鐘舵��
+
+        #endregion
+
+        #region 鍥涘悜杞﹀叾浠栦换鍔$姸鎬�
+
+        #endregion
+    }
     public enum TaskInStatusEnum
     {
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index f536a07..1aa0f22 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -62,11 +62,11 @@
         public string PalletCode { get; set; }
 
         /// <summary>
-        /// 宸烽亾鍙�
+        /// 鍖哄煙
         /// </summary>
-        [ImporterHeader(Name = "宸烽亾鍙�")]
-        [ExporterHeader(DisplayName = "宸烽亾鍙�")]
-        [SugarColumn(IsNullable = true, Length = 10, ColumnDescription = "宸烽亾鍙�")]
+        [ImporterHeader(Name = "鍖哄煙")]
+        [ExporterHeader(DisplayName = "鍖哄煙")]
+        [SugarColumn(IsNullable = true, Length = 10, ColumnDescription = "鍖哄煙")]
         public string Roadway { get; set; }
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
new file mode 100644
index 0000000..afff1ad
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity
+    {
+        public int SourceId { get; set; }
+
+        public string OperateType { get; set; }
+
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs"
index ec0c524..970ee35 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/KLSAGVController.cs"
@@ -24,7 +24,7 @@
         /// <param name="taskDTOs"></param>
         /// <returns></returns>
         [HttpPost, Route("UpdateTaskStatus"), AllowAnonymous]
-        public WebResponseContent UpdateTaskStatus(object TaskDTO)
+        public WebResponseContent UpdateTaskStatus([FromBody] object TaskDTO)
         {
             return _taskService.UpdateTaskStatus(TaskDTO, DeviceTypeEnum.GALAXIS);
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
index a8bb3e1..c87c48b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
@@ -17,7 +17,7 @@
     //5.PostgreSQL
     "DBType": "SqlServer",
     //杩炴帴瀛楃涓�
-    "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_GP;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+    "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_GP;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
     //璺ㄥ煙
     "Cors": {
         "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
index d7526bf..a9ff92c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
@@ -24,7 +24,7 @@
         {
             try
             {
-                int containerType = taskDTO.containerCode.Contains("") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();
+                int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();
                 //鑾峰彇璐т綅淇℃伅
                 Dt_KLSLocationInfo? kLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.WarehouseId.ToString() == taskDTO.toAreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.LocationType == containerType);
                 if (kLSLocationInfo == null) throw new Exception($"鏈壘鍒扮粓鐐瑰簱鍖恒�恵taskDTO.toAreaCode}銆戝彲鐢ㄧ┖璐т綅锛�");
@@ -34,7 +34,7 @@
                     WMSTaskNum = taskDTO.taskCode,
                     Grade = taskDTO.taskPriority,
                     PalletCode = taskDTO.containerCode,
-                    TaskState = TaskInStatusEnum.InNew.ObjToInt(),
+                    TaskState = TaskStatusEnum.New.ObjToInt(),
                     TaskType = taskType,
                     SourceAddress = taskDTO.fromLocationCode,
                     CurrentAddress = taskDTO.fromLocationCode,
@@ -68,7 +68,7 @@
                     WMSTaskNum = taskDTO.taskCode,
                     Grade = taskDTO.taskPriority,
                     PalletCode = taskDTO.containerCode,
-                    TaskState = TaskOutStatusEnum.OutNew.ObjToInt(),
+                    TaskState = TaskStatusEnum.New.ObjToInt(),
                     TaskType = taskType,
                     SourceAddress = taskDTO.fromLocationCode,
                     CurrentAddress = taskDTO.fromLocationCode,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
index 8a5ba62..0b14d18 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
@@ -1,15 +1,26 @@
-锘縰sing System;
+锘縰sing Magicodes.IE.Core;
+using NetTaste;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Text.Json;
 using System.Threading.Tasks;
 using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.LocationEnum;
+using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_Model.Models;
 
 namespace WIDESEAWCS_TaskInfoService
 {
     public partial class TaskService
     {
+
+        #region 鏇存柊浠诲姟鐘舵��
         /// <summary>
         /// 鏇存柊浠诲姟鐘舵��
         /// </summary>
@@ -23,7 +34,23 @@
             {
                 if (deviceTypeEnum == DeviceTypeEnum.GALAXIS)
                 {
-
+                    GALAXISUpdateTaskStatus? gALAXIS = TaskDTO.Serialize().DeserializeObject<GALAXISUpdateTaskStatus>();
+                    if (gALAXIS == null) throw new Exception("鍙傛暟杞崲澶辫触锛�");
+                    var task = BaseDal.QueryFirst(x => x.WMSTaskNum == gALAXIS.taskId);
+                    if (task == null) throw new Exception($"鏈壘鍒颁换鍔�,浠诲姟缂栧彿銆恵gALAXIS.taskId}銆�");
+                    switch (gALAXIS.taskStatus)
+                    {
+                        case 0:
+                            TaskCompleted(task, deviceTypeEnum);
+                            break;
+                        case 4:
+                            TaskFromCompleted(task, deviceTypeEnum);
+                            break;
+                        default:
+                            task.TaskState = ReturnTaskStatus(gALAXIS.taskStatus, deviceTypeEnum);
+                            BaseDal.UpdateData(task);
+                            break;
+                    }
                 }
                 else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT)
                 {
@@ -37,8 +64,154 @@
             }
             catch (Exception ex)
             {
-                return WebResponseContent.Instance.Error(ex.Message);
+                throw new Exception(ex.Message);
             }
-        }
+        } 
+        #endregion
+
+        #region 浠诲姟鐘舵�佽浆鎹�
+        public int ReturnTaskStatus(object status, DeviceTypeEnum deviceTypeEnum)
+        {
+            try
+            {
+                if (deviceTypeEnum == DeviceTypeEnum.GALAXIS)
+                {
+                    TaskStatusEnum taskStatus = status switch
+                    {
+                        1 => TaskStatusEnum.FromOutOfStock,
+                        2 => TaskStatusEnum.ToaddInStock,
+                        3 => TaskStatusEnum.TaskNumRepetition,
+                        5 => TaskStatusEnum.RCSDataError,
+                        6 => TaskStatusEnum.TaskTypeError,
+                        7 => TaskStatusEnum.ParameterError,
+                        8 => TaskStatusEnum.RCSError,
+                        13 => TaskStatusEnum.Cancel,
+                        _ => throw new ArgumentOutOfRangeException(
+                            nameof(status),
+                            status,
+                            $"鏈煡鐨勪换鍔$姸鎬佺爜: {status}"
+                        )
+                    };
+                    return (int)taskStatus;
+                }
+                else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT)
+                {
+                    return 0;
+                }
+                else
+                {
+                    return 0;
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        } 
+        #endregion
+
+        #region 浠诲姟璧风偣瀹屾垚
+        /// <summary>
+        /// 浠诲姟璧风偣瀹屾垚
+        /// </summary>
+        /// <param name="dt_Task"></param>
+        /// <param name="deviceTypeEnum"></param>
+        /// <returns></returns>
+        public WebResponseContent TaskFromCompleted(Dt_Task dt_Task, DeviceTypeEnum deviceTypeEnum)
+        {
+            try
+            {
+                dt_Task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt();
+                Db.Ado.BeginTran();
+                UpdateLocationStatus(dt_Task.SourceAddress, deviceTypeEnum, LocationStatusEnum.Free);
+                BaseDal.UpdateData(dt_Task);
+                Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        } 
+        #endregion
+
+        #region 浠诲姟瀹屾垚
+        /// <summary>
+        /// 浠诲姟瀹屾垚
+        /// </summary>
+        /// <param name=""></param>
+        /// <param name="deviceTypeEnum"></param>
+        /// <returns></returns>
+        public WebResponseContent TaskCompleted(Dt_Task dt_Task, DeviceTypeEnum deviceTypeEnum)
+        {
+            try
+            {
+                dt_Task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+                Db.Ado.BeginTran();
+                UpdateLocationStatus(dt_Task.TargetAddress, deviceTypeEnum, LocationStatusEnum.InStock);
+                BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.鑷姩瀹屾垚);
+                Db.Ado.CommitTran();
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                Db.Ado.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        } 
+        #endregion
+
+        #region 鏇存柊璐т綅鐘舵��
+        /// <summary>
+        /// 鏇存柊璐т綅鐘舵��
+        /// </summary>
+        /// <param name="LocationCode"></param>
+        /// <param name="deviceTypeEnum"></param>
+        /// <param name="locationStatusEnum"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateLocationStatus(string LocationCode, DeviceTypeEnum deviceTypeEnum, LocationStatusEnum locationStatusEnum)
+        {
+            try
+            {
+                if (deviceTypeEnum == DeviceTypeEnum.GALAXIS)
+                {
+                    Dt_KLSLocationInfo? dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
+                    if (dt_KLSLocationInfo != null)
+                    {
+                        dt_KLSLocationInfo.LocationStatus = locationStatusEnum.ObjToInt();
+                        _kLSLocationInfoService.Repository.UpdateData(dt_KLSLocationInfo);
+                    }
+                }
+                else if (deviceTypeEnum == DeviceTypeEnum.HIKROBOT)
+                {
+                    Dt_HKLocationInfo? dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
+                    if (dt_HKLocationInfo != null)
+                    {
+                        dt_HKLocationInfo.LocationStatus = locationStatusEnum.ObjToInt();
+                        _hKLocationInfoService.Repository.UpdateData(dt_HKLocationInfo);
+                    }
+                }
+                else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe)
+                {
+                    Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
+                    if (dt_RGVLocationInfo != null)
+                    {
+                        dt_RGVLocationInfo.LocationStatus = locationStatusEnum.ObjToInt();
+                        _rGVLocationInfoService.Repository.UpdateData(dt_RGVLocationInfo);
+                    }
+                }
+                else//搴撳绔欏彴
+                {
+
+                }
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        } 
+        #endregion
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
new file mode 100644
index 0000000..9ce6cb4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
@@ -0,0 +1,73 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Tasks
+{
+    public partial class TaskJob
+    {
+        #region 涓嬪彂浠诲姟
+        /// <summary>
+        /// 涓嬪彂浠诲姟
+        /// </summary>
+        public void SendTask()
+        {
+            try
+            {
+                var newTask = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskStatusEnum.New.ObjToInt()).ToList();
+                if (newTask.Count > 0)
+                {
+
+                }
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(TaskJob), ex.Message, ex);
+            }
+        }
+        #endregion
+
+        #region 涓嬪彂寰呮墽琛屼换鍔�
+        /// <summary>
+        /// 涓嬪彂寰呮墽琛屼换鍔�
+        /// </summary>
+        public void SendWaitToTask()
+        {
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(TaskJob), ex.Message, ex);
+            }
+        }
+        #endregion
+
+        #region 涓嬪彂鍑箰澹獳GV浠诲姟
+        public void SendGALAXISTask(List<Dt_Task> tasks)
+        {
+
+        }
+        #endregion
+
+        #region 涓嬪彂鍥涘悜杞︿换鍔�
+        public void SendRGVTask(List<Dt_Task> tasks)
+        {
+
+        }
+        #endregion
+
+        #region 涓嬪彂娴峰悍AGV浠诲姟
+        public void SendHIKROBOTTask(List<Dt_Task> tasks)
+        {
+
+        }
+        #endregion
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
new file mode 100644
index 0000000..47e7144
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
@@ -0,0 +1,53 @@
+锘縰sing Autofac.Core;
+using HslCommunication;
+using HslCommunication.Core;
+using Microsoft.VisualBasic.FileIO;
+using Quartz;
+using SixLabors.ImageSharp.PixelFormats;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoService;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public partial class TaskJob : JobBase, IJob
+    {
+        private readonly ITaskService _taskService;
+        private readonly IApiInfoService _apiInfoService;
+        public TaskJob(ITaskService taskService, IApiInfoService apiInfoService)
+        {
+            _taskService = taskService;//娉ㄥ叆
+            _apiInfoService = apiInfoService;
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                SendTask();
+
+                SendWaitToTask();
+            }
+            catch (Exception ex)
+            {
+                Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message);
+            }
+
+            return Task.CompletedTask;
+        }
+    }
+}

--
Gitblit v1.9.3