From e7be74e711076896e7e841b54691daa95067c567 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 12 六月 2025 15:54:49 +0800
Subject: [PATCH] 1

---
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3a1eae50-a889-44c4-9166-c889690bbbc8.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs                                         |  169 +++++++++++++++++++++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/AGV_ZHExtend.cs                                              |   68 +++++---
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bae546c-39e9-428b-8290-97d10d47c63c.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs                                    |   22 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs                                 |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_GM.cs             |   16 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/SolderMaskModel.cs                                                |   44 +++++
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1698ae63-4bb9-42cb-9eaf-dd8d45ad01c4.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                          |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                                         |    9 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpQmsHelper.cs                                              |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs                                |   21 ++
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/99556534-0033-4f9b-a223-ea76f4271439.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/96129156-96dd-45ed-b9d7-7265981a5200.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                                           |   23 ++
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1aa445a3-8c03-42e2-8c1a-1a0360d417ba.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/AGV_ZHJob.cs                                                 |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs                               |    1 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/干膜仓/StackerCraneJob_GM.cs                                        |    2 
 代码管理/WMS/WIDESEA_WMSClient/src/views/charts/AssembleDist.vue                                                 |    2 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d796ed71-56e2-4bff-9e27-1a5715a7a17e.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/APIEnum/APIEnum.cs                                              |    2 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/ebfc3963-9e49-4674-a4bd-119fd8ccb8b4.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesLotModel.cs                                                    |   21 ++
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs                                        |   33 ++++
 26 files changed, 401 insertions(+), 48 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1698ae63-4bb9-42cb-9eaf-dd8d45ad01c4.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1698ae63-4bb9-42cb-9eaf-dd8d45ad01c4.vsidx"
new file mode 100644
index 0000000..cd69395
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1698ae63-4bb9-42cb-9eaf-dd8d45ad01c4.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3a1eae50-a889-44c4-9166-c889690bbbc8.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3a1eae50-a889-44c4-9166-c889690bbbc8.vsidx"
new file mode 100644
index 0000000..f8ffb07
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3a1eae50-a889-44c4-9166-c889690bbbc8.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/96129156-96dd-45ed-b9d7-7265981a5200.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/96129156-96dd-45ed-b9d7-7265981a5200.vsidx"
new file mode 100644
index 0000000..6d81998
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/96129156-96dd-45ed-b9d7-7265981a5200.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d796ed71-56e2-4bff-9e27-1a5715a7a17e.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d796ed71-56e2-4bff-9e27-1a5715a7a17e.vsidx"
new file mode 100644
index 0000000..d4a315e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d796ed71-56e2-4bff-9e27-1a5715a7a17e.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/APIEnum/APIEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
index 77d63a1..03a24c4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
@@ -41,7 +41,7 @@
         /// <summary>
         /// ZHAGV浠诲姟鍙戦��
         /// </summary>
-        [Description("PPAGV浠诲姟鍙戦��")]
+        [Description("ZHAGV浠诲姟鍙戦��")]
         Agv_ZHSendTask,
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index 9e333cd..cfe9fdd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -72,6 +72,28 @@
         [Description("鎴愬搧MES鎻愬簱")]
         OutMesRworkProduct = 250,
         /// <summary>
+        /// 闃茬剨鍓嶆淳宸ュ皬浠�
+        /// </summary>
+        [Description("闃茬剨鍓嶆淳宸ュ皬浠�")]
+        MaskOutNoticeSmall = 260,
+
+        /// <summary>
+        /// 闃茬剨鍓嶆淳宸ュぇ浠�
+        /// </summary>
+        [Description("闃茬剨鍓嶆淳宸ュぇ浠�")]
+        MaskOutNoticeLarge = 265,
+        /// <summary>
+        /// 闃茬剨鍒扮嚎杈瑰皬浠�
+        /// </summary>
+        [Description("闃茬剨鍒扮嚎杈瑰皬浠�")]
+        MaskOutSmall = 270,
+
+        /// <summary>
+        /// 闃茬剨鍒扮嚎杈瑰ぇ浠�
+        /// </summary>
+        [Description("闃茬剨鍒扮嚎杈瑰ぇ浠�")]
+        MaskOutLarge = 275,
+        /// <summary>
         /// 閲囪喘鍏ュ簱
         /// </summary>
         [Description("閲囪喘鍏ュ簱")]
@@ -156,7 +178,16 @@
         /// </summary>
         [Description("鎴愬搧绌烘鍥炲簱")]
         EmptyProductBack = 630,
-
+        /// <summary>
+        /// 闃荤剨鍏ュ簱灏忎欢
+        /// </summary>
+        [Description("闃荤剨鍏ュ簱灏忎欢")]
+        InZHProductSmall = 640,
+        /// <summary>
+        /// 闃荤剨鍏ュ簱澶т欢
+        /// </summary>
+        [Description("闃荤剨鍏ュ簱澶т欢")]
+        InZHProductLarge = 645,
         /// <summary>
         /// 宸烽亾鍐呯Щ搴�
         /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 085cbdb..14d41e6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -363,7 +363,14 @@
                             }
                             task.NextAddress = stationManger?.AGVStationCode ?? "";
                             task.DeviceCode = stationManger?.Remark ?? "";
-                            task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                            if (task.Roadway != "SC01_ZH")
+                            {
+                                task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt();
+                            }
+                            else
+                            {
+                                task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                            }
                         }
                     }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\345\271\262\350\206\234\344\273\223/StackerCraneJob_GM.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\345\271\262\350\206\234\344\273\223/StackerCraneJob_GM.cs"
index 3d1aa80..e8111b2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\345\271\262\350\206\234\344\273\223/StackerCraneJob_GM.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\345\271\262\350\206\234\344\273\223/StackerCraneJob_GM.cs"
@@ -315,7 +315,7 @@
         /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
         private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
         {
-            Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress && x.StackerCraneCode == task.DeviceCode);
+            Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x =>( x.StationCode == task.NextAddress || x.StackerCraneStationCode==task.NextAddress )&& x.StackerCraneCode == task.DeviceCode);
             if (stationManger != null)
             {
                 IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHExtend.cs"
index cc068a3..a4da7dd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHExtend.cs"
@@ -16,46 +16,64 @@
 {
     public partial class AGV_ZHJob
     {
+        /// <summary>
+        /// 涓嬪彂浠诲姟
+        /// </summary>
         public void SendAGVTask()
         {
             try
             {
-                var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && nameof(AGV_PPJob).Contains(x.DeviceCode) && !string.IsNullOrEmpty(x.DeviceCode)).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
-                foreach (var task in newTasks)
+                var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt() && !string.IsNullOrEmpty(x.DeviceCode) && nameof(AGV_ZHJob).Contains(x.DeviceCode)).OrderByDescending(x => x.Grade).OrderBy(x => x.CreateDate).ToList();
+                if (newTasks.Count > 0)
                 {
-                    try
+                    foreach (var agvTask in newTasks)
                     {
-                        AgvTaskDTO TaskDTO = new AgvTaskDTO()
+                        try
                         {
-                            TaskCode = task.AgvTaskNum,
-                            ReqCode = DateTime.Now.ToString("yyyyMMddHHmmss") + task.AgvTaskNum,
-                            TaskTyp = task.TaskType < TaskTypeEnum.Inbound.ObjToInt() ? "FLC" : "FLR",
-                            ctnrCode = task.PalletCode,
-                            PositionCodePath = new List<CodePath>()
-                        {
+                            AgvTaskDTO taskDTO = new AgvTaskDTO()
+                            {
+                                ReqCode = Guid.NewGuid().ToString().Replace("-", ""),
+                                TaskTyp = "22",
+                                PositionCodePath = new List<CodePath>()
+                            {
                             new CodePath()
                             {
                                 type="00",
-                                positionCode=task.CurrentAddress
+                                positionCode=agvTask.CurrentAddress
                             },
                             new CodePath()
                             {
                                 type="00",
-                                positionCode=task.NextAddress
+                                positionCode=agvTask.NextAddress
                             }
-                        },
-                        };
-                        WebResponseContent content = _taskService.AgvSendTask(TaskDTO, APIEnum.Agv_ZHSendTask);
-                        if (!content.Status) throw new Exception(content.Message);
-                        task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                            },
+                                TaskCode = agvTask.AgvTaskNum,
+                                PodTyp = agvTask.PalletType < 2 ? "XX" : "DD",
+                            };
+                            WebResponseContent content = _taskService.AgvSendTask(taskDTO);
+                            if (content.Status)
+                            {
+                                agvTask.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                                //agvTask.Remark = content.Data.ObjToString();
+                                _taskService.UpdateTask(agvTask, TaskStatusEnum.AGV_Executing);
+                            }
+                            else
+                            {
+                                agvTask.TaskState = TaskStatusEnum.Exception.ObjToInt();
+                                //agvTask.Remark = content.Data.ObjToString();
+                                agvTask.ExceptionMessage = content.Message;
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            agvTask.TaskState = TaskStatusEnum.Exception.ObjToInt();
+                            //agvTask.Remark = content.Data.ObjToString();
+                            agvTask.ExceptionMessage = ex.Message;
+                            WriteError(nameof(AGV_ZHJob), ex.Message, ex);
+                        }
                     }
-                    catch (Exception ex)
-                    {
-                        task.TaskState = TaskStatusEnum.Exception.ObjToInt();
-                        task.ExceptionMessage = ex.Message;
-                    }
+                    _taskService.UpdateData(newTasks);
                 }
-                _taskService.UpdateData(newTasks);
             }
             catch (Exception ex)
             {
@@ -69,7 +87,7 @@
         {
             try
             {
-                var WaitToTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && nameof(AGV_CSJJob).Contains(x.DeviceCode)).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
+                var WaitToTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && nameof(AGV_ZHJob).Contains(x.DeviceCode)).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
                 foreach (var WaitToTask in WaitToTasks)
                 {
                     if (WaitToTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
@@ -156,7 +174,7 @@
             }
             catch (Exception ex)
             {
-                Console.Out.WriteLine(nameof(AGV_CSJJob) + ":" + ex.Message);
+                Console.Out.WriteLine(nameof(AGV_ZHJob) + ":" + ex.Message);
             }
         }
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHJob.cs"
index 14ecf08..01bb0a8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/AGV_ZHJob.cs"
@@ -42,6 +42,8 @@
             try
             {
                 SendAGVTask();
+
+                SendAGVWaitToTask();
             }
             catch (Exception ex)
             {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/charts/AssembleDist.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/charts/AssembleDist.vue"
index b1c2b43..c5d0cfa 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/charts/AssembleDist.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/charts/AssembleDist.vue"
@@ -322,7 +322,7 @@
       monthLabel: {
         formatter: "{M}鏈�",
       },
-      range: "2025-05",
+      range: dayjs().format('YYYY-MM'),
       yearLabel: {
         show: false,
       },
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1aa445a3-8c03-42e2-8c1a-1a0360d417ba.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1aa445a3-8c03-42e2-8c1a-1a0360d417ba.vsidx"
new file mode 100644
index 0000000..115d8c6
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1aa445a3-8c03-42e2-8c1a-1a0360d417ba.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bae546c-39e9-428b-8290-97d10d47c63c.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bae546c-39e9-428b-8290-97d10d47c63c.vsidx"
new file mode 100644
index 0000000..f48b002
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bae546c-39e9-428b-8290-97d10d47c63c.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/99556534-0033-4f9b-a223-ea76f4271439.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/99556534-0033-4f9b-a223-ea76f4271439.vsidx"
new file mode 100644
index 0000000..1946bb3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/99556534-0033-4f9b-a223-ea76f4271439.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/ebfc3963-9e49-4674-a4bd-119fd8ccb8b4.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/ebfc3963-9e49-4674-a4bd-119fd8ccb8b4.vsidx"
new file mode 100644
index 0000000..26e693a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/ebfc3963-9e49-4674-a4bd-119fd8ccb8b4.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_GM.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_GM.cs"
index 82cb34c..7145284 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_GM.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_GM.cs"
@@ -62,10 +62,18 @@
                     if (mathCurrentRow <= maxDepth)
                     {
                         locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 <= maxDepth).ToList();
+                        if (beRelocation.Row> maxDepth)
+                        {
+                            locationInfos = locationInfos.Where(x=>x.Row>maxDepth).ToList();
+                        }
                     }
                     else
                     {
                         locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 > maxDepth).ToList();
+                        if (beRelocation.Row <= maxDepth)
+                        {
+                            locationInfos = locationInfos.Where(x => x.Row <= maxDepth).ToList();
+                        }
                     }
                 }
 
@@ -172,11 +180,11 @@
                         }
                     }
                 }
-                //鍒ゆ柇濡傛灉宸插畾涔夎揣浣嶇被鍨嬬殑璐т綅鍜屾湭瀹氫箟绫诲瀷鐨勭┖璐т綅閮戒负绌洪噴鏀炬弧瓒虫潯浠剁殑璐т綅
-                if (!definedTypeEmptyLocations.Any() && !undefinedTypeEmptyLocations.Any())
-                {
+                ////鍒ゆ柇濡傛灉宸插畾涔夎揣浣嶇被鍨嬬殑璐т綅鍜屾湭瀹氫箟绫诲瀷鐨勭┖璐т綅閮戒负绌洪噴鏀炬弧瓒虫潯浠剁殑璐т綅
+                //if (!definedTypeEmptyLocations.Any() && !undefinedTypeEmptyLocations.Any())
+                //{
 
-                }
+                //}
                 return null;
             }
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
index 2c24ff6..90c524e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
@@ -74,6 +74,29 @@
         /// </summary>
         [Description("鎴愬搧MES鎻愬簱")]
         OutMesRworkProduct =250,
+
+        /// <summary>
+        /// 闃茬剨鍓嶆淳宸ュ皬浠�
+        /// </summary>
+        [Description("闃茬剨鍓嶆淳宸ュ皬浠�")]
+        MaskOutNoticeSmall = 260,
+
+        /// <summary>
+        /// 闃茬剨鍓嶆淳宸ュぇ浠�
+        /// </summary>
+        [Description("闃茬剨鍓嶆淳宸ュぇ浠�")]
+        MaskOutNoticeLarge = 265,
+        /// <summary>
+        /// 闃茬剨鍒扮嚎杈瑰皬浠�
+        /// </summary>
+        [Description("闃茬剨鍒扮嚎杈瑰皬浠�")]
+        MaskOutSmall = 270,
+
+        /// <summary>
+        /// 闃茬剨鍒扮嚎杈瑰ぇ浠�
+        /// </summary>
+        [Description("闃茬剨鍒扮嚎杈瑰ぇ浠�")]
+        MaskOutLarge = 275,
         /// <summary>
         /// 閲囪喘鍏ュ簱
         /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpQmsHelper.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpQmsHelper.cs"
index 525ae13..f504c56 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpQmsHelper.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpQmsHelper.cs"
@@ -24,18 +24,18 @@
                     using HttpClient httpClient = new HttpClient();
                     httpClient.Timeout = new TimeSpan(0, 0, 60);
                     //姝e紡
-                    //string authorization = "AppKey 1930944618148245504";
+                    string authorization = "AppKey 1784536762910281728";
                     //娴嬭瘯
-                    string authorization = "AppKey 1930944618148245504";
+                    //string authorization = "AppKey 1930944618148245504";
 
 
                     headers = new Dictionary<string, string>
                     {
                         { "Authorization", authorization },
                         //姝e紡
-                        //{ "Site_tenant_id", "6ec60d66-b08e-4ff3-90fa-57748053f79b" }
+                        { "Site_tenant_id", "0dc2d164-8a62-417e-8a00-808007464feb" }
                         //娴嬭瘯
-                        { "Site_tenant_id", "6ec60d66-b08e-4ff3-90fa-57748053f79b" }
+                        //{ "Site_tenant_id", "6ec60d66-b08e-4ff3-90fa-57748053f79b" }
                     };
                     if (headers != null)
                     {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesLotModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesLotModel.cs"
index 5744eb6..312a99c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesLotModel.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesLotModel.cs"
@@ -6,13 +6,34 @@
 
 namespace WIDESEA_DTO.MES
 {
+    /// <summary>
+    /// MES闃茬剨鎵规鑾峰彇
+    /// </summary>
     public class MesLotInfoModel
     {
+        /// <summary>
+        /// 鐗╂枡鏂欏彿
+        /// </summary>
         public string Product { get; set; }
+        /// <summary>
+        /// 鐗╂枡鐗堟湰
+        /// </summary>
         public string ProductVersion { get; set; }
+        /// <summary>
+        /// 鐗╂枡鏁伴噺
+        /// </summary>
         public decimal Qty { get; set; }
+        /// <summary>
+        /// 鍛ㄦ湡
+        /// </summary>
         public string DateCode { get; set; }
+        /// <summary>
+        /// 鎵规
+        /// </summary>
         public string LotNo { get; set; }
+        /// <summary>
+        /// 鏄惁婊ot
+        /// </summary>
         public bool IsFullNumber { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/SolderMaskModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/SolderMaskModel.cs"
new file mode 100644
index 0000000..775f97e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/SolderMaskModel.cs"
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.MES
+{
+    /// <summary>
+    /// 闃茬剨鍓嶅鐞嗘淳宸ラ�氱煡WMS
+    /// </summary>
+    [ModelValidate]
+    public class SolderMaskOutNotice
+    {
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [PropertyValidate("鎵规鍙�", NotNullAndEmpty = true)]
+        public string LotNo { get; set; }
+        /// <summary>
+        /// 鐩爣鍦板潃鐮�
+        /// </summary>
+        [PropertyValidate("鐩爣鍦板潃鐮�", NotNullAndEmpty = true)]
+        public string TargetAddressCode { get; set; }
+    }
+    /// <summary>
+    /// 闃茬剨绔嬪簱鍒扮嚎杈圭偣
+    /// </summary>
+    [ModelValidate]
+    public class SolderMaskOut
+    {
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [PropertyValidate("鎵规鍙�", NotNullAndEmpty = true)]
+        public string LotNo { get; set; }
+        /// <summary>
+        /// 鐩爣鍦板潃鐮�
+        /// </summary>
+        [PropertyValidate("鐩爣鍦板潃鐮�", NotNullAndEmpty = true)]
+        public string TargetAddressCode { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
index 4211122..4e12dc7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -147,6 +147,10 @@
         /// <returns></returns>
         MesResponseContent TestToolOut(TestToolOutModel model);
 
+        //闃茬剨鍒扮嚎杈�
+        MesResponseContent SolderMaskOut(SolderMaskOut model);
+        //闃茬剨娲惧伐
+        MesResponseContent SolderMaskOutNotice(SolderMaskOutNotice model);
         /// <summary>
         /// 鐢熸垚鍑哄簱浠诲姟
         /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
index 2e99a29..b71a4cd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
@@ -359,6 +359,7 @@
                                 ReceiptDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                 Remark = " "
                             };
+                            //璋冪敤QMS鏉ユ枡妫�楠屾帴鍙�
                             string response = _invokeQMSService.InvokeReceiveCheckApi(qMSReceiveCheck);
                             MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
                             if (!mesResponseContent.BSucc)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
index 1181cd4..a702bf8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -37,6 +37,8 @@
     {
         static object lock_out = new object();
 
+        static object solderMask_out = new object();
+
         /// <summary>
         /// 娴嬭瘯鏋跺嚭浠�
         /// </summary>
@@ -111,6 +113,165 @@
                     _unitOfWorkManage.CommitTran();
                     //灏嗕换鍔℃帹閫佸埌WCS
                     PushTasksToWCS(new List<Dt_Task>() { taskOut }, "AGV_CSJ");
+                    responseContent.OK();
+                }
+                catch (Exception ex)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    responseContent.Error(ex.Message);
+                }
+                return responseContent;
+            }
+        }
+        public MesResponseContent SolderMaskOutNotice(SolderMaskOutNotice model)
+        {
+            lock (solderMask_out)
+            {
+                MesResponseContent responseContent = new MesResponseContent();
+                try
+                {
+                    Dt_Task exsit = Repository.QueryFirst(x => x.TargetAddress == model.TargetAddressCode);
+                    if (exsit != null)
+                    {
+                        return responseContent.Error($"鐩爣鍦板潃閲嶅");
+                    }
+
+                    Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString());
+                    //鑾峰彇搴撳瓨璁板綍
+                    List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
+                      x.WarehouseId == warehouse.WarehouseId &&
+                      x.StockStatus == (int)StockStatusEmun.鍏ュ簱瀹屾垚).Includes(x => x.Details).ToList();
+                    Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == model.LotNo));
+                    if (stockInfo == null)
+                    {
+                        return responseContent.Error($"闃茬剨搴�:鏃爗model.LotNo}鍙敤搴撳瓨");
+                    }
+                    Dt_Task exsit2 = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
+                    if (exsit2 != null)
+                    {
+                        return responseContent.Error($"闃茬剨浠诲姟{stockInfo.PalletCode}宸插瓨鍦�");
+                    }
+
+                    Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode &&
+                      x.WarehouseId == stockInfo.WarehouseId &&
+                      x.LocationStatus == (int)LocationStatusEnum.InStock &&
+                      (x.EnableStatus == (int)EnableStatusEnum.Normal || x.EnableStatus == (int)EnableStatusEnum.OnlyOut));
+                    if (locationInfo == null)
+                    {
+                        return responseContent.Error($"闃茬剨璐т綅:{stockInfo.LocationCode}鍑哄簱鏉′欢涓嶆弧瓒�");
+                    }
+                    //鐢熸垚闃茬剨鍑哄簱浠诲姟 閿佸畾搴撳瓨 鏇存敼璐т綅鐘舵��
+                    Dt_Task taskOut = new()
+                    {
+                        CurrentAddress = stockInfo.LocationCode,
+                        Grade = 0,
+                        PalletCode = stockInfo.PalletCode,
+                        NextAddress = "",
+                        Roadway = locationInfo.RoadwayNo,
+                        SourceAddress = stockInfo.LocationCode,
+                        TargetAddress = model.TargetAddressCode,
+                        TaskStatus = (int)TaskStatusEnum.New,
+                        TaskType = stockInfo.PalletType<2 ? (int)TaskTypeEnum.MaskOutNoticeSmall : (int)TaskTypeEnum.MaskOutNoticeLarge,
+                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                        PalletType = stockInfo.PalletType,
+                        WarehouseId = stockInfo.WarehouseId,
+                    };
+                    stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
+                    LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
+                    locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
+                    //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+                    _unitOfWorkManage.BeginTran();
+                    //鏇存柊搴撳瓨鐘舵��
+                    _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                    //鏇存柊璐т綅鐘舵��
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
+                    //鏂板缓浠诲姟
+                    BaseDal.AddData(taskOut);
+                    //鍔犲叆璐т綅鍙樺姩璁板綍
+                    _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, locationStatus, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", taskOut.TaskNum);
+                    _unitOfWorkManage.CommitTran();
+                    //灏嗕换鍔℃帹閫佸埌WCS
+                    PushTasksToWCS(new List<Dt_Task>() { taskOut }, "AGV_ZH");
+                    responseContent.OK();
+                }
+                catch (Exception ex)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    responseContent.Error(ex.Message);
+                }
+                return responseContent;
+            }
+        }
+
+        public MesResponseContent SolderMaskOut(SolderMaskOut model)
+        {
+            lock (solderMask_out)
+            {
+                MesResponseContent responseContent = new MesResponseContent();
+                try
+                {
+                    Dt_Task exsit = Repository.QueryFirst(x => x.TargetAddress == model.TargetAddressCode);
+                    if (exsit != null)
+                    {
+                        return responseContent.Error($"鐩爣鍦板潃閲嶅");
+                    }
+
+                    Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString());
+                    //鑾峰彇搴撳瓨璁板綍
+                    List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
+                      x.WarehouseId == warehouse.WarehouseId &&
+                      x.StockStatus == (int)StockStatusEmun.鍏ュ簱瀹屾垚).Includes(x => x.Details).ToList();
+                    Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == model.LotNo));
+                    if (stockInfo == null)
+                    {
+                        return responseContent.Error($"闃茬剨搴�:鏃爗model.LotNo}鍙敤搴撳瓨");
+                    }
+                    Dt_Task exsit2 = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
+                    if (exsit2 != null)
+                    {
+                        return responseContent.Error($"闃茬剨浠诲姟{stockInfo.PalletCode}宸插瓨鍦�");
+                    }
+
+                    Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode &&
+                      x.WarehouseId == stockInfo.WarehouseId &&
+                      x.LocationStatus == (int)LocationStatusEnum.InStock &&
+                      (x.EnableStatus == (int)EnableStatusEnum.Normal || x.EnableStatus == (int)EnableStatusEnum.OnlyOut));
+                    if (locationInfo == null)
+                    {
+                        return responseContent.Error($"闃茬剨璐т綅:{stockInfo.LocationCode}鍑哄簱鏉′欢涓嶆弧瓒�");
+                    }
+                    //鐢熸垚闃茬剨鍑哄簱浠诲姟 閿佸畾搴撳瓨 鏇存敼璐т綅鐘舵��
+                    Dt_Task taskOut = new()
+                    {
+                        CurrentAddress = stockInfo.LocationCode,
+                        Grade = 0,
+                        PalletCode = stockInfo.PalletCode,
+                        NextAddress = "",
+                        Roadway = locationInfo.RoadwayNo,
+                        SourceAddress = stockInfo.LocationCode,
+                        TargetAddress = model.TargetAddressCode,
+                        TaskStatus = (int)TaskStatusEnum.New,
+                        TaskType = stockInfo.PalletType < 2 ? (int)TaskTypeEnum.MaskOutSmall : (int)TaskTypeEnum.m,
+                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                        PalletType = stockInfo.PalletType,
+                        WarehouseId = stockInfo.WarehouseId,
+                    };
+                    stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
+                    LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
+                    locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
+                    //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+                    _unitOfWorkManage.BeginTran();
+                    //鏇存柊搴撳瓨鐘舵��
+                    _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                    //鏇存柊璐т綅鐘舵��
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
+                    //鏂板缓浠诲姟
+                    BaseDal.AddData(taskOut);
+                    //鍔犲叆璐т綅鍙樺姩璁板綍
+                    _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, locationStatus, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", taskOut.TaskNum);
+                    _unitOfWorkManage.CommitTran();
+                    //灏嗕换鍔℃帹閫佸埌WCS
+                    PushTasksToWCS(new List<Dt_Task>() { taskOut }, "AGV_ZH");
                     responseContent.OK();
                 }
                 catch (Exception ex)
@@ -451,10 +612,16 @@
                 }
 
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == palletTypeInfo.WarehouseId);
-
+                //鍒ゆ柇鏄惁鎵樼洏搴撳瓨鏄惁宸插瓨鍦�
+                Dt_StockInfo stockInfoOld = _stockRepository.StockInfo_HtyRepository.QueryData(x => x.PalletCode == model.CarrierCode).First();
+                if (stockInfoOld!=null)
+                {
+                    return MesResponseContent.Instance.Error($"鎵樼洏鍙穥model.CarrierCode}宸插瓨鍦�");
+                }
 
                 Dt_StockInfo_Hty stockInfo_Hty = _stockRepository.StockInfo_HtyRepository.QueryData(x => x.PalletCode == model.CarrierCode).OrderByDescending(x => x.SourceId).First();
                 Dt_StockInfoDetail_Hty stockInfoDetail_Hty = _stockRepository.StockInfoDetail_HtyRepository.QueryFirst(x => x.StockId == stockInfo_Hty.SourceId);
+                
 
                 Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                 {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index c7e9255..fcb6a0e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -765,13 +765,21 @@
                 {
                     return content.Error($"鎵樼洏绫诲瀷淇℃伅涓嶅瓨鍦�");
                 }
-                //鑾峰彇闃荤剨鎵规
-                WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
-                if (!requestLotInfo.Status)
+                ////鑾峰彇闃荤剨鎵规
+                //WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
+                //if (!requestLotInfo.Status)
+                //{
+                //    return content.Error($"璇锋眰闃荤剨鎵规淇℃伅澶辫触,{requestLotInfo.Message}");
+                //}
+                //MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
+                MesLotInfoModel mesLotInfo = new MesLotInfoModel()
                 {
-                    return content.Error($"璇锋眰闃荤剨鎵规淇℃伅澶辫触,{requestLotInfo.Message}");
-                }
-                MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
+                    Product="FH001",
+                    ProductVersion="A1",
+                    Qty=20,
+                    LotNo= materialLot,
+                    IsFullNumber=true
+                };
                 Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                 {
                     MaterielSpec = mesLotInfo.ProductVersion,
@@ -820,7 +828,7 @@
                 //BaseDal.AddData(task);
                 _unitOfWorkManage.CommitTran();
                 //灏嗕换鍔℃帹閫佸埌WCS
-                PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_ZH"); ;
+                PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_ZH", agvTaskCode);
                 content.OK(data: taskIn);
             }
             catch (Exception ex)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
index 0e09293..260b7e8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
@@ -75,7 +75,7 @@
                         heightType = 1;
                     }
 
-                    Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(needRelocationItem.RoadwayNo, task.PalletType, task.WarehouseId, needRelocationItem.LocationCode, heightType);
+                    Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(needRelocationItem.RoadwayNo, stockInfo.PalletType, task.WarehouseId, needRelocationItem.LocationCode, heightType);
                     if (newLocation != null)
                     {
                         Dt_Task newTask = new Dt_Task()
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
index 6f7f214..790729f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs"
@@ -46,7 +46,26 @@
         {
             return _taskService.TestToolOut(model.Content);
         }
-
+        /// <summary>
+        /// 鎺ユ敹MES闃茬剨娲惧伐
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost, Route("SolderMaskOutNotice"), AllowAnonymous, MethodParamsValidate]
+        public MesResponseContent SolderMaskOutNotice([FromBody] Root<SolderMaskOutNotice> model)
+        {
+            return _taskService.SolderMaskOutNotice(model.Content);
+        }
+        /// <summary>
+        /// 鎺ユ敹MES闃茬剨鍒扮嚎杈�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost, Route("SolderMaskOut"), AllowAnonymous, MethodParamsValidate]
+        public MesResponseContent SolderMaskOut([FromBody] Root<SolderMaskOut> model)
+        {
+            return _taskService.SolderMaskOut(model.Content);
+        }
         /// <summary>
         /// 鎺ユ敹MES娴嬭瘯鏋堕��搴�
         /// </summary>

--
Gitblit v1.9.3