From dc06f58d8ed537555fd529551180f43a0586ec3f Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期日, 22 六月 2025 11:44:43 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGV_CSJExtend.cs                                 |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs                           |    5 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs               |    9 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs                        |   33 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs                        |   65 ++
 代码管理/淮安PDA/pages/stash/receiveorderoutbound.vue                                                  |    2 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js                                      |   29 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs                       |   97 ++++
 代码管理/WMS/WIDESEA_WMSClient/src/views/Index.vue                                                   |   34 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs                       |    6 
 代码管理/WMS/WIDESEA_WMSClient/src/views/check/inspectOrder.vue                                      |   32 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_GM.cs |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrder.cs                     |    2 
 代码管理/淮安PDA/pages.json                                                                            |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs                        |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                              |    5 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                             |   25 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/TakeStockStatusEnum.cs                       |   41 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/干膜仓/ConveyorLineJob_GM.cs                            |    3 
 代码管理/淮安PDA/pages/stash/boxing.vue                                                                |    8 
 代码管理/淮安PDA/pages/stash/InspectIn.vue                                                             |  612 +++++++++++++++++++++++++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                    |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                |    3 
 代码管理/淮安PDA/pages/stash/raworderboxing.vue                                                        |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs              |   17 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs                   |    3 
 代码管理/WMS/WIDESEA_WMSClient/src/views/charts/AssembleDist.vue                                     |   10 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/StackerCraneJob_BC.cs                            |    6 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs                            |   40 +
 代码管理/WMS/WIDESEA_WMSClient/config/buttons.js                                                     |    9 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/RGVJob_BC.cs                                     |   34 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs                       |   15 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs                      |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrderDetail.cs               |   20 
 34 files changed, 1,072 insertions(+), 136 deletions(-)

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 cfe9fdd..7fe6c29 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"
@@ -14,31 +14,37 @@
         /// </summary>
         [Description("棰嗘枡鍑哄簱")]
         Outbound = 100,
+
         /// <summary>
         /// 鐩樼偣鍑哄簱
         /// </summary>
         [Description("鐩樼偣鍑哄簱")]
         OutInventory = 110,
+
         /// <summary>
         /// 鍒嗘嫞鍑哄簱
         /// </summary>
         [Description("鍒嗘嫞鍑哄簱")]
         OutPick = 120,
+
         /// <summary>
         /// 璐ㄦ鍑哄簱
         /// </summary>
         [Description("璐ㄦ鍑哄簱")]
         OutQuality = 130,
+
         /// <summary>
         /// 绌虹鍑哄簱
         /// </summary>
         [Description("绌虹鍑哄簱")]
         OutEmpty = 140,
+
         /// <summary>
         /// 璋冩嫧鍑哄簱
         /// </summary>
         [Description("璋冩嫧鍑哄簱")]
         OutAllocate = 150,
+
         /// <summary>
         /// MES鍑哄簱
         /// </summary>
@@ -61,16 +67,19 @@
         /// </summary>
         [Description("鎴愬搧鍑哄簱")]
         OutProduct = 230,
+
         /// <summary>
         /// 鎴愬搧瀵勫敭鍑哄簱
         /// </summary>
         [Description("鎴愬搧瀵勫敭鍑哄簱")]
         OutSendProduct = 240,
+
         /// <summary>
-        /// 鎴愬搧MES鍑哄簱/鎻愬簱
+        /// 鎴愬搧MES鎻愬簱
         /// </summary>
         [Description("鎴愬搧MES鎻愬簱")]
         OutMesRworkProduct = 250,
+
         /// <summary>
         /// 闃茬剨鍓嶆淳宸ュ皬浠�
         /// </summary>
@@ -82,6 +91,7 @@
         /// </summary>
         [Description("闃茬剨鍓嶆淳宸ュぇ浠�")]
         MaskOutNoticeLarge = 265,
+
         /// <summary>
         /// 闃茬剨鍒扮嚎杈瑰皬浠�
         /// </summary>
@@ -93,21 +103,25 @@
         /// </summary>
         [Description("闃茬剨鍒扮嚎杈瑰ぇ浠�")]
         MaskOutLarge = 275,
+
         /// <summary>
         /// 閲囪喘鍏ュ簱
         /// </summary>
         [Description("閲囪喘鍏ュ簱")]
         Inbound = 510,
+
         /// <summary>
         /// 鐩樼偣鍏ュ簱
         /// </summary>
         [Description("鐩樼偣鍏ュ簱")]
         InInventory = 520,
+
         /// <summary>
         /// 鍒嗘嫞鍏ュ簱
         /// </summary>
         [Description("鍒嗘嫞鍏ュ簱")]
         InPick = 530,
+
         /// <summary>
         /// 璐ㄦ鍏ュ簱
         /// </summary>
@@ -127,6 +141,12 @@
         MesMatReturn = 560,
 
         /// <summary>
+        /// 璋冩嫧鍏ュ簱
+        /// </summary>
+        [Description("璋冩嫧鍏ュ簱")]
+        InAllocate = 570,
+
+        /// <summary>
         /// MES澶х┖鎵橀��鏂�
         /// </summary>
         [Description("MES澶х┖鎵橀��鏂�")]
@@ -137,24 +157,6 @@
         /// </summary>
         [Description("MES灏忕┖鎵橀��鏂�")]
         MesPalletSmallReturn = 585,
-
-        /// <summary>
-        /// 璋冩嫧鍏ュ簱
-        /// </summary>
-        [Description("璋冩嫧鍏ュ簱")]
-        InAllocate = 570,
-
-        /// <summary>
-        /// 绾胯竟浠撳叆搴�
-        /// </summary>
-        [Description("绾胯竟浠撳叆搴�")]
-        InboundXB = 580,
-
-        /// <summary>
-        /// 鏈哄彴鍏ュ簱
-        /// </summary>
-        [Description("鏈哄彴鍏ュ簱")]
-        InboundJT = 590,
 
         /// <summary>
         /// 绌虹鍏ュ簱
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs"
index a8bc416..5ae5962 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGV/CTU_AGVController .cs"
@@ -255,7 +255,8 @@
                                 WebResponseContent content = _taskService.AgvBoxApplyPass(boxApplyPassDTO);
                                 if (content.Status && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                                 {
-                                    _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing);
+                                    task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                                    _taskRepository.UpdateData(task);
                                 }
                                 else
                                 {
@@ -332,7 +333,8 @@
                             WebResponseContent content = _taskService.AgvBoxApplyPass(boxApplyPassDTO);
                             if (content.Status && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                             {
-                                _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing);
+                                task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                                _taskRepository.UpdateData(task);
                             }
                             else
                             {
@@ -356,7 +358,8 @@
                         }
                         else if(task.TaskType == TaskTypeEnum.OutProduct.ObjToInt())
                         {
-                            _taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing);
+                            task.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
+                            _taskRepository.UpdateData(task);
                         }
                         break;
                     default:
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 47af224..74051e8 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"
@@ -196,9 +196,12 @@
             {
                 bool flag = false;
                 List<Dt_Task> tasks = new List<Dt_Task>();
+                List<Dt_Task> tasksOld= BaseDal.QueryData();
+                List<Dt_Router> routersAll = _routerRepository.QueryData();
+                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData();
                 foreach (var item in taskDTOs)
                 {
-                    if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
+                    if (tasksOld.FirstOrDefault(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
                     {
                         flag = true;
                         continue;
@@ -213,13 +216,13 @@
                     TaskTypeGroup taskTypeGroup = item.TaskType.GetTaskTypeGroup();
                     if (string.IsNullOrEmpty(item.AGVArea))
                     {
-                        Dt_StationManger stationManger;
+                        Dt_StationManger? stationManger;
                         if (taskTypeGroup == TaskTypeGroup.InboundGroup)
                         {
-                            stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == item.SourceAddress || x.StationDeviceCode == item.SourceAddress);
+                            stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.SourceAddress || x.StationDeviceCode == item.SourceAddress);
                             if (stationManger==null && task.TaskType==TaskTypeEnum.InProduct.ObjToInt())
                             {
-                                stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneCode==task.SourceAddress);
+                                stationManger = stationMangers.FirstOrDefault(x => x.StackerCraneCode==task.SourceAddress);
                                 //杞崲鎴愬搧浠撹捣鐐圭珯鍙�
                                 item.SourceAddress = stationManger.StationCode;
                                 task.CurrentAddress = stationManger.StationCode;
@@ -228,14 +231,14 @@
                         }
                         else
                         {
-                            stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneCode == item.RoadWay || x.Remark==item.RoadWay);
+                            stationManger = stationMangers.FirstOrDefault(x => x.StackerCraneCode == item.RoadWay || x.Remark==item.RoadWay);
                         }
                         if (stationManger == null)
                         {
                             return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃俊鎭�");
                         }
 
-                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi /*|| item.RoadWay == x.ChildPosiDeviceCode || item.RoadWay == x.ChildPosi*/));
+                        List<Dt_Router> routers = routersAll.Where(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi /*|| item.RoadWay == x.ChildPosiDeviceCode || item.RoadWay == x.ChildPosi*/)).ToList();
                         router = routers.FirstOrDefault();
                         if (router == null)
                         {
@@ -263,7 +266,7 @@
                             {
                                 task.NextAddress = router.NextPosi;
                                 task.DeviceCode = stationManger.StackerCraneCode;
-                                if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt() && task.TargetAddress== "SCUTL-001")
+                                if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt() && (task.TargetAddress== "SCUTL-001" || task.TargetAddress == "SCUTL-002" || task.TargetAddress == "SCUTL_04-001"))
                                 {
                                     task.TaskState = TaskStatusEnum.MesPending.ObjToInt();
                                 }
@@ -305,7 +308,7 @@
                         {
                             if (item.RoadWay=="AGV_CP")
                             {
-                                Dt_Router routerSelect = _routerRepository.QueryFirst(x => x.InOutType == item.TaskType && item.RoadWay == x.StartPosi && x.NextPosi==item.TargetAddress);
+                                Dt_Router? routerSelect = routersAll.FirstOrDefault(x => x.InOutType == item.TaskType && item.RoadWay == x.StartPosi && x.NextPosi==item.TargetAddress);
                                 if (routerSelect != null)
                                 {
                                     task.NextAddress = routerSelect.NextPosi;
@@ -338,7 +341,7 @@
                         if (taskTypeGroup == TaskTypeGroup.OutbondGroup)
                         {
                             task.AgvTaskNum = item.AGVArea + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
-                            List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && item.AGVArea == x.NextPosi);
+                            List<Dt_Router> routers = routersAll.Where(x => x.InOutType == item.TaskType && item.AGVArea == x.NextPosi).ToList();
                             if (routers.FirstOrDefault() == null)
                             {
                                 return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢遍厤缃俊鎭�");
@@ -361,13 +364,13 @@
                             {
                                 task.AgvTaskNum = item.AGVArea + DateTime.Now.ToString("yyyyMMdd") + item.TaskNum;
                             }
-                            List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && item.AGVArea == x.StartPosi);
+                            List<Dt_Router> routers = routersAll.Where(x => x.InOutType == item.TaskType && item.AGVArea == x.StartPosi).ToList();
                             if (routers.FirstOrDefault() == null)
                             {
                                 return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢遍厤缃俊鎭�");
                             }
                             router = routers.FirstOrDefault();
-                            Dt_StationManger? stationManger = _stationMangerRepository.QueryData(x => true).FirstOrDefault(x=>x.StationCode== router?.NextPosi);
+                            Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x=>x.StationCode== router?.NextPosi);
                             if (stationManger == null)
                             {
                                 return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃俊鎭�");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGV_CSJExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGV_CSJExtend.cs"
index 766fe96..a38d496 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGV_CSJExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGV_CSJExtend.cs"
@@ -204,14 +204,6 @@
                     {
                         return TaskType == TaskTypeEnum.ProductionReturn.ObjToInt() ? "23" : "24";
                     }
-                case "AGV_ZH":
-                    {
-                        if (TaskType == TaskTypeEnum.InboundXB.ObjToInt())
-                            return "20";
-                        else if (TaskType == TaskTypeEnum.InboundJT.ObjToInt())
-                            return "21";
-                        else return "22";
-                    }
                 default:
                     throw new Exception($"璁惧缂栧彿閿欒");
             }
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/ConveyorLineJob_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/ConveyorLineJob_GM.cs"
index 187be46..3e84239 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/ConveyorLineJob_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/ConveyorLineJob_GM.cs"
@@ -93,6 +93,7 @@
                         ConveyorLineSignal conveyorLineSignalWrite = conveyorLineInfoWrite.Signal.ByteToBoolObject<ConveyorLineSignal>();
                         if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt())
                         {
+                            //骞茶啘鍏ュ簱绔欏彴浜や簰
                             if (conveyorLineSignalRead.STB && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !conveyorLineSignalWrite.ACK)
                             {
                                 string boxcode = device.GetValue<R_ConveyorLineDB, string>(R_ConveyorLineDB.Boxcode, item.StationCode);
@@ -169,6 +170,7 @@
                             }
                             else
                             {
+                                //骞茶啘鍑哄簱绔欏彴浜や簰
                                 if (!conveyorLineSignalWrite.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Goods)
                                 {
                                     Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode == item.StationDeviceCode);
@@ -197,6 +199,7 @@
                                 }
                                 else if (conveyorLineSignalWrite.STB && conveyorLineSignalRead.ACK && conveyorLineStatus.Goods)
                                 {
+                                    //瀹屾垚骞茶啘鍑哄簱浠诲姟
                                     _taskService.TaskCompleted(conveyorLineInfoWrite.TaskNum);
                                     device.SetValue(W_ConveyorLineDB.STB, false, item.StationCode);
                                 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/RGVJob_BC.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/RGVJob_BC.cs"
index 8d0bb30..75fb49e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/RGVJob_BC.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/RGVJob_BC.cs"
@@ -169,8 +169,8 @@
                             }
                         }
                         //鍏佽鏀捐涓�鍙峰紑鏂欏彛鍑哄簱浠诲姟
-                        bool outAllow = device.Communicator.Read<bool>("DB14.4.6");
-                        if (outAllow)
+                        bool outAllowLine1 = device.Communicator.Read<bool>("DB14.4.6");
+                        if (outAllowLine1)
                         {
                             Dt_Task taskExcuting = _taskRepository.QueryFirst(x => x.WarehouseId== warehouseDevice.WarehouseId && (x.TargetAddress== "SCUTL-001" || x.TargetAddress == "1101")
                             && (x.TaskState==TaskStatusEnum.SC_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt() 
@@ -183,6 +183,36 @@
                                 WriteDebug($"涓�鍙峰紑鏂欏彛鏀捐浠诲姟", $"浠诲姟鍙穥taskExecute.TaskNum}");
                             }
                         }
+                        //鍏佽鏀捐浜屽彿寮�鏂欏彛鍑哄簱浠诲姟
+                        bool outAllowLine2 = device.Communicator.Read<bool>("DB14.12.6");
+                        if (outAllowLine2)
+                        {
+                            Dt_Task taskExcuting = _taskRepository.QueryFirst(x => x.WarehouseId == warehouseDevice.WarehouseId && (x.TargetAddress == "SCUTL-002" || x.TargetAddress == "1103")
+                            && (x.TaskState == TaskStatusEnum.SC_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt()
+                            || x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()));
+                            Dt_Task? taskExecute = _taskRepository.QueryData(x => x.WarehouseId == warehouseDevice.WarehouseId && x.TargetAddress == "SCUTL-002"
+                            && x.TaskState == TaskStatusEnum.MesPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).ThenBy(x => x.CreateDate).FirstOrDefault();
+                            if (taskExcuting == null && taskExecute != null)
+                            {
+                                _taskService.UpdateTask(taskExecute, TaskStatusEnum.SC_Execute);
+                                WriteDebug($"浜屽彿寮�鏂欏彛鏀捐浠诲姟", $"浠诲姟鍙穥taskExecute.TaskNum}");
+                            }
+                        }
+                        //鍏佽鏀捐鎵嬪姩寮�鏂欏彛鍑哄簱浠诲姟
+                        bool outAllowMusual = device.Communicator.Read<bool>("DB14.4.7");
+                        if (outAllowMusual)
+                        {
+                            Dt_Task taskExcuting = _taskRepository.QueryFirst(x => x.WarehouseId == warehouseDevice.WarehouseId && (x.TargetAddress == "SCUTL_04-001" || x.TargetAddress == "1102")
+                            && (x.TaskState == TaskStatusEnum.SC_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt()
+                            || x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()));
+                            Dt_Task? taskExecute = _taskRepository.QueryData(x => x.WarehouseId == warehouseDevice.WarehouseId && x.TargetAddress == "SCUTL_04-001"
+                            && x.TaskState == TaskStatusEnum.MesPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).ThenBy(x => x.CreateDate).FirstOrDefault();
+                            if (taskExcuting == null && taskExecute != null)
+                            {
+                                _taskService.UpdateTask(taskExecute, TaskStatusEnum.SC_Execute);
+                                WriteDebug($"鎵嬪姩寮�鏂欏彛鏀捐浠诲姟", $"浠诲姟鍙穥taskExecute.TaskNum}");
+                            }
+                        }
                     }
                     else
                     {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs"
index 620a9c5..e1f87ec 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\235\277\346\235\220\344\273\223/StackerCraneJob_BC.cs"
@@ -196,15 +196,15 @@
                                 return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
                             }
                         }
-                        if (task.TargetAddress.Contains("SCUTL-001"))
+                        if (task.TargetAddress.Contains("SCUTL-001")) //鑷姩涓�绾�
                         {
                             _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
                         }
-                        else if (task.TargetAddress.Contains("SCUTL-002"))
+                        else if (task.TargetAddress.Contains("SCUTL-002")) //鑷姩浜岀嚎
                         {
                             _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: "1103", targetAddress: "1103");
                         }
-                        else
+                        else //鎵嬪姩绾�
                         {
                             _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: "1102", targetAddress: "1102");
                         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js"
index 5950582..1f63548 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js"
@@ -200,6 +200,15 @@
     onClick: function () {
     }
 },
+{
+    name: "閫夊畾搴撳瓨鐩樼偣",
+    icon: '',
+    class: '',
+    value: 'SelectStockTake',
+    type: 'success',
+    onClick: function () {
+    }
+},
 ]
 
 export default buttons
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js"
index 1b2540a..b8c502e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js"
@@ -20,22 +20,19 @@
     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
     onInit() {
       
-      // let InOrder = this.buttons.find(x => x.value == 'StockOutbound');
-      // if (InOrder) {
-      //   InOrder.onClick = function () {
-      //     let rows = this.$refs.table.getSelected();
-      //     if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
-      //     if (rows.length > 1) return this.$error("璇烽�夋嫨鍗曟潯鏁版嵁!");
-      //     var keys = rows.map(x => { return x.stockId });
-      //     this.http
-      //       .post("api/Task/Outbound?id="+keys[0], null, "鏁版嵁澶勭悊涓�")
-      //       .then((x) => {
-      //         if (!x.status) return this.$message.error(x.message);
-      //         this.$message.success("鎿嶄綔鎴愬姛");
-      //         this.refresh();
-      //       });
-      //   }
-      // }
+      let SelectTake = this.buttons.find(x => x.value == 'SelectStockTake');
+      if (SelectTake) {
+        SelectTake.onClick = function () {
+          let stockViews = this.$refs.table.getSelected();
+          this.http
+            .post("api/Task/TakeOutbound",stockViews, "鏁版嵁澶勭悊涓�")
+            .then((x) => {
+              if (!x.status) return this.$message.error(x.message);
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.refresh();
+            });
+        }
+      }
       this.columns.forEach(column => {
         if (column.field == 'materielCode') {
           column.formatter = (row) => {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/Index.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/Index.vue"
index 519f89b..a882a94 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/Index.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/Index.vue"
@@ -324,24 +324,24 @@
       });
     };
 
-    const createSocket = (url) => {
-      // 鍒涘缓WebSocket杩炴帴
-      //"ws://127.0.0.1:9295/admin"
-      client = new WebSocket(url);
+    // const createSocket = (url) => {
+    //   // 鍒涘缓WebSocket杩炴帴
+    //   //"ws://127.0.0.1:9295/admin"
+    //   client = new WebSocket(url);
 
-      client.onopen = function () {
-        client.onmessage = handleMessage;
-        store.commit("setWebsocket", client);
-        console.log("WebSocket 杩炴帴鎴愬姛");
-      };
+    //   client.onopen = function () {
+    //     client.onmessage = handleMessage;
+    //     store.commit("setWebsocket", client);
+    //     console.log("WebSocket 杩炴帴鎴愬姛");
+    //   };
 
-      client.onclose = function () {
-        console.log("WebSocket 杩炴帴鍏抽棴");
-        setTimeout(createSocket, 10000);
-      };
-      //鐩戝惉socket閿欒淇℃伅
-      client.onerror = function () {};
-    };
+    //   client.onclose = function () {
+    //     console.log("WebSocket 杩炴帴鍏抽棴");
+    //     setTimeout(createSocket, 10000);
+    //   };
+    //   //鐩戝惉socket閿欒淇℃伅
+    //   client.onerror = function () {};
+    // };
 
     const changeTheme = (name) => {
       if (theme.value != name) {
@@ -606,7 +606,7 @@
         }
       }
 
-      createSocket("ws://127.0.0.1:9296/" + _userInfo.userName);
+      // createSocket("ws://127.0.0.1:9296/" + _userInfo.userName);
 
       Object.assign(_config.$tabs, { open: open, close: close });
 
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 c5d0cfa..39c2bb7 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"
@@ -131,7 +131,7 @@
     calendar: {
       left: "center",
       top: 49,
-      cellSize: [70, 70],
+      cellSize: [100, 70],
       orient: "vertical",
       dayLabel: {
         firstDay: 1,
@@ -140,7 +140,7 @@
       monthLabel: {
         formatter: "{M}鏈�",
       },
-      range: "2025-05",
+      range: dayjs().format('YYYY-MM'),
       yearLabel: {
         show: false,
       },
@@ -152,7 +152,7 @@
         symbolSize(params) {
           //鏍稿績2
           if (params[0] === dayjs().format('YYYY-MM-DD')) {
-            return 70; //褰撳墠鏃ユ湡楂樹寒 瀹藉害楂樺害璁剧疆鎴愬拰鍗曞厓鏍煎搴﹂珮搴︿竴鏍�
+            return [100, 70]; //褰撳墠鏃ユ湡楂樹寒 瀹藉害楂樺害璁剧疆鎴愬拰鍗曞厓鏍煎搴﹂珮搴︿竴鏍�
           } else {
             return 1;
           }
@@ -313,7 +313,7 @@
     calendar: {
       left: "center",
       top: 49,
-      cellSize: [70, 70],
+      cellSize: [100, 70],
       orient: "vertical",
       dayLabel: {
         firstDay: 1,
@@ -334,7 +334,7 @@
         symbolSize(params) {
           //鏍稿績2
           if (params[0] === dayjs().format('YYYY-MM-DD')) {
-            return 70; //褰撳墠鏃ユ湡楂樹寒 瀹藉害楂樺害璁剧疆鎴愬拰鍗曞厓鏍煎搴﹂珮搴︿竴鏍�
+            return [100, 70]; //褰撳墠鏃ユ湡楂樹寒 瀹藉害楂樺害璁剧疆鎴愬拰鍗曞厓鏍煎搴﹂珮搴︿竴鏍�
           } else {
             return 1;
           }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/check/inspectOrder.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/check/inspectOrder.vue"
index b821479..c09eed9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/check/inspectOrder.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/check/inspectOrder.vue"
@@ -81,7 +81,6 @@
           width: 150,
           hidden: true,
           readonly: true,
-          require: true,
           align: "left",
         },
         {
@@ -89,7 +88,6 @@
           title: "妫�楠屽崟鍙�",
           type: "string",
           width: 180,
-          require: true,
           align: "left",
         },
         {
@@ -105,7 +103,6 @@
           title: "閫佹鍗曞彿",
           type: "string",
           width: 180,
-          require: true,
           align: "left",
         },
         {
@@ -118,19 +115,17 @@
         },
         //    {field:'auditStatus',title:'瀹℃壒鐘舵��',type:'int',width:110,require:true,align:'left'},
         {
-          field: "receiveDetailRowNo",
-          title: "閫佹鏄庣粏琛�",
+          field: "orderPalletCode",
+          title: "閫佹鎵樼洏",
           type: "int",
-          width: 100,
-          require: true,
+          width: 140,
           align: "left",
         },
         {
           field: "materielCode",
           title: "鐗╂枡缂栧彿",
           type: "string",
-          width: 110,
-          require: true,
+          width: 100,
           align: "left",
         },
         {
@@ -146,14 +141,13 @@
           title: "鎵规鍙�",
           type: "string",
           width: 150,
-          require: true,
           align: "left",
         },
         {
           field: "checkOrderStatus",
           title: "璐ㄦ鍗曠姸鎬�",
           type: "string",
-          width: 110,
+          width: 100,
           require: true,
           align: "left",
           bind: { key: "checkOrderStatusEnum", data: [] },
@@ -173,11 +167,24 @@
           align: "left",
         },
         {
+          field: "defectedQuantity",
+          title: "鐗归噰鏁伴噺",
+          type: "float",
+          width: 110,
+          align: "left",
+        },
+        {
+          field: "scrappedQuantity",
+          title: "鎶ュ簾鏁伴噺",
+          type: "float",
+          width: 110,
+          align: "left",
+        },
+        {
           field: "receivedQuantity",
           title: "妫�楠屾�绘暟",
           type: "float",
           width: 110,
-          require: true,
           align: "left",
         },
         {
@@ -224,7 +231,6 @@
           title: "鍒涘缓鏃堕棿",
           type: "datetime",
           width: 180,
-          require: true,
           align: "left",
         },
         //    {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
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 97f8d03..7a17157 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,17 +62,17 @@
                     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)
+                        if (beRelocation.Row <= maxDepth)
                         {
-                            locationInfos = locationInfos.Where(x=>x.Row>maxDepth).ToList();
+                            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)
+                        if (beRelocation.Row > maxDepth)
                         {
-                            locationInfos = locationInfos.Where(x => x.Row <= maxDepth).ToList();
+                            locationInfos = locationInfos.Where(x => x.Row > maxDepth).ToList();
                         }
                     }
                 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
index 1ecc986..607da70 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
@@ -206,7 +206,8 @@
                     {
                         return content.Error($"鏁伴噺瓒呭嚭");
                     }
-                    if (checkResult.Result == InspectResultEnum.Return.ToString())//閫�璐�
+                    //鍒ゆ柇妫�楠岀粨鏋�
+                    if (checkResult.Result == InspectResultEnum.Return.ToString())
                     {
                         checkOrder.DefectedNote = checkResult.Note;
                         checkOrder.ReturnQuantity += checkResult.Quantity;
@@ -248,8 +249,9 @@
                             }
                             else if(checkResult.Quantity< item.StockQuantity)
                             {
-                                checkResult.Quantity = 0;
                                 item.StockQuantity -= checkResult.Quantity;
+                                item.OutboundQuantity = 0;
+                                checkResult.Quantity = 0;
                                 stockInfoDetails.Add(item);
                             }
                             else if (checkResult.Quantity >= item.StockQuantity)
@@ -287,6 +289,7 @@
                     checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
                 }
                 checkOrder.CheckUserName = App.User.UserName;
+                List<Dt_StockInfoDetail> initialStockDetails = stockInfo.Details.Where(x=> !(stockInfoDetails.Select(v=>v.Id).ToList()).Contains(x.Id)).ToList();
                 _unitOfWorkManage.BeginTran();
 
                 if (checkOrderResult != null)
@@ -298,6 +301,14 @@
                 {
                     _stockRepository.StockInfoDetailRepository.UpdateData(stockInfoDetails);
                 }
+                if (initialStockDetails.Count>0)
+                {
+                    initialStockDetails.ForEach(x =>
+                    {
+                        x.OutboundQuantity = 0;
+                    });
+                    _stockRepository.StockInfoDetailRepository.UpdateData(initialStockDetails);
+                }
                 if (DelStockDetails.Count>0)
                 {
                     _stockRepository.StockInfoDetailRepository.DeleteAndMoveIntoHty(DelStockDetails, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/TakeStockStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/TakeStockStatusEnum.cs"
index f793532..e12bca8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/TakeStockStatusEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Common/OrderEnum/TakeStockStatusEnum.cs"
@@ -13,21 +13,50 @@
     public enum TakeStockStatusEnum
     {
         /// <summary>
-        /// 鏈��鏂�
+        /// 鏈洏鐐�
         /// </summary>
         [Description("鏈洏鐐�")]
-        NotTake = 0,
+        鏈洏鐐� = 0,
 
         /// <summary>
-        /// 閫�鏂欎腑
+        /// 鐩樼偣涓�
         /// </summary>
         [Description("鐩樼偣涓�")]
-        Taking = 1,
+        鐩樼偣涓� = 1,
 
         /// <summary>
-        /// 閫�鏂欏畬鎴�
+        /// 鐩樼偣瀹屾垚
         /// </summary>
         [Description("鐩樼偣瀹屾垚")]
-        Taked = 2
+        鐩樼偣瀹屾垚 = 2
+    }
+    /// <summary>
+    /// 鐩樼偣鐘舵��
+    /// </summary>
+    public enum TakeStockDetailStatusEnum
+    {
+        /// <summary>
+        /// 鏈洏鐐�
+        /// </summary>
+        [Description("鏈洏鐐�")]
+        鏈洏鐐� = 0,
+
+        /// <summary>
+        /// 鐩樼偣涓�
+        /// </summary>
+        [Description("鐩樼偣鍑哄簱涓�")]
+        鐩樼偣鍑哄簱涓� = 1,
+
+        /// <summary>
+        /// 鐩樼偣鍑哄簱瀹屾垚
+        /// </summary>
+        [Description("鐩樼偣鍑哄簱瀹屾垚")]
+        鐩樼偣鍑哄簱瀹屾垚 = 2,
+
+        /// <summary>
+        /// 鐩樼偣瀹屾垚
+        /// </summary>
+        [Description("鐩樼偣瀹屾垚")]
+        鐩樼偣瀹屾垚 = 3
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs"
index ee67db6..3c4f2e0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundRepository/IInboundRepository.cs"
@@ -24,5 +24,7 @@
         IReturnOrderDetailRepository ReturnOrderDetailRepository { get; }
         IMesProInOrderRepository MesProInOrderRepository { get; }
         IMesProInOrderDetailRepository MesProInOrderDetailRepository { get; }
+        ITakeStockOrderRepository TakeStockOrderRepository { get; }
+        ITakeStockOrderDetailRepository TakeStockOrderDetailRepository { get; }
     }
 }
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 4e12dc7..bbc83dc 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"
@@ -66,6 +66,10 @@
         //WebResponseContent RequestInboundTask(string palletCode, string stationCode);
         WebResponseContent RequestInboundTask(SaveModel saveModel);
         /// <summary>
+        /// 鏌ヨ璐ㄦ鏁伴噺
+        /// </summary>
+        WebResponseContent InQualityConfirm(string palletCode);
+        /// <summary>
         /// 绌虹鍏ュ簱
         /// </summary>
         /// <param name="barcode"></param>
@@ -209,6 +213,7 @@
         /// <param name="id"></param>
         /// <returns></returns>
         WebResponseContent Outbound(int id);
+        WebResponseContent TakeOutbound(List<StockViewDTO> stockViews);
 
         /// <summary>
         /// 鐗╂枡鍑哄簱锛學MS鍚屾鍑哄簱鐗╂枡鎵规鑷矼ES
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs"
index e1c76e9..ef0af38 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundRepository/InboundRepository.cs"
@@ -25,7 +25,11 @@
         public IMesProInOrderRepository MesProInOrderRepository { get; }
         public IMesProInOrderDetailRepository MesProInOrderDetailRepository { get; }
 
-        public InboundRepository(IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository, IReceiveOrderRepository receiveOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IPurchaseOrderRepository purchaseOrderRepository, IReturnOrderRepository returnOrderRepository, IReturnOrderDetailRepository returnOrderDetailRepository, IMesProInOrderRepository mesProInOrderRepository, IMesProInOrderDetailRepository mesProInOrderDetailRepository)
+        public ITakeStockOrderRepository TakeStockOrderRepository { get; }
+
+        public ITakeStockOrderDetailRepository TakeStockOrderDetailRepository { get; }
+
+        public InboundRepository(IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository, IReceiveOrderRepository receiveOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IPurchaseOrderRepository purchaseOrderRepository, IReturnOrderRepository returnOrderRepository, IReturnOrderDetailRepository returnOrderDetailRepository, IMesProInOrderRepository mesProInOrderRepository, IMesProInOrderDetailRepository mesProInOrderDetailRepository, ITakeStockOrderRepository takeStockOrderRepository, ITakeStockOrderDetailRepository takeStockOrderDetailRepository)
         {
             InboundOrderDetailRepository = inboundOrderDetailRepository;
             InboundOrderRepository = inboundOrderRepository;
@@ -37,6 +41,8 @@
             ReturnOrderDetailRepository = returnOrderDetailRepository;
             MesProInOrderRepository = mesProInOrderRepository;
             MesProInOrderDetailRepository = mesProInOrderDetailRepository;
+            TakeStockOrderRepository = takeStockOrderRepository;
+            TakeStockOrderDetailRepository = takeStockOrderDetailRepository;
         }
     }
 }
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 d0977fd..a5ebece 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"
@@ -75,8 +75,7 @@
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == receiveOrder.WarehouseId);
                 MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum);
                 Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == receiveOrder.SuppliersId);
-                //鏀惰揣澧炲姞鎵规鍗℃帶
-                //鏌ヨ鏀惰揣鏄庣粏鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆�
+                //鏀惰揣澧炲姞鎵规鍗℃帶,鏌ヨ鏀惰揣鏄庣粏鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆�
                 Dt_ReceiveOrderDetail receiveOrderDetailOld = _inboundRepository.ReceiveOrderDetailRepository.QueryFirst(x => x.LotNo == model.LotNo && x.MaterielCode == model.MaterielCode);
                 Dt_ReceiveOrder? receiveOrderOld = null;
                 if (receiveOrderDetailOld!=null)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
index 94f8e0b..a34d6f6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
@@ -56,7 +56,7 @@
                     }
                 }
             }
-            saveModel.MainData.Add(nameof(Dt_TakeStockOrder.TakeStockStatus).FirstLetterToLower(), TakeStockStatusEnum.NotTake.ObjToInt());
+            saveModel.MainData.Add(nameof(Dt_TakeStockOrder.TakeStockStatus).FirstLetterToLower(), TakeStockStatusEnum.鏈洏鐐�.ObjToInt());
             return base.AddData(saveModel); 
         }
         /// <summary>
@@ -74,11 +74,11 @@
                 List<Dt_TakeStockOrder> takeStockOrders = new List<Dt_TakeStockOrder>();
                 if (string.IsNullOrEmpty(orderNo))
                 {
-                    takeStockOrders = Db.Queryable<Dt_TakeStockOrder>().Where(x => x.TakeStockStatus < TakeStockStatusEnum.Taked.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
+                    takeStockOrders = Db.Queryable<Dt_TakeStockOrder>().Where(x => x.TakeStockStatus < TakeStockStatusEnum.鐩樼偣瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).ToPageList(pageNo, 5);
                 }
                 else
                 {
-                    takeStockOrders = Db.Queryable<Dt_TakeStockOrder>().Where(x => (x.OrderNo.Contains(orderNo) && x.TakeStockStatus < TakeStockStatusEnum.Taked.ObjToInt() && x.WarehouseId == warehouseId)).ToPageList(pageNo, 5);
+                    takeStockOrders = Db.Queryable<Dt_TakeStockOrder>().Where(x => (x.OrderNo.Contains(orderNo) && x.TakeStockStatus < TakeStockStatusEnum.鐩樼偣瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId)).ToPageList(pageNo, 5);
                 }
                 content.OK(data: takeStockOrders);
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
index 2cdd69b..fa07b9a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs"
@@ -138,6 +138,11 @@
         [SugarColumn(IsNullable = true, ColumnDescription = "妫�楠屽崟绫诲瀷")]
         public int OrderType { get; set; }
         /// <summary>
+        /// 妫�楠屾墭鐩�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "妫�楠屾墭鐩�")]
+        public string OrderPalletCode { get; set; }
+        /// <summary>
         /// 璐ㄦ缁撴灉
         /// </summary>
         [Navigate(NavigateType.OneToMany, nameof(Dt_CheckOrderResult.CheckOrderId), nameof(CheckOrderId))]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrder.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrder.cs"
index 324ac31..3f5b586 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrder.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrder.cs"
@@ -50,7 +50,7 @@
         /// <summary>
         /// 鐩樼偣鏄庣粏
         /// </summary>
-        [PropertyValidate("閫�鏂欏崟鏄庣粏", NotNullAndEmpty = true), Navigate(NavigateType.OneToMany, nameof(Dt_TakeStockOrderDetail.TakeStockId), nameof(Id))]
+        [PropertyValidate("鐩樼偣鏄庣粏", NotNullAndEmpty = true), Navigate(NavigateType.OneToMany, nameof(Dt_TakeStockOrderDetail.TakeStockId), nameof(Id))]
         public List<Dt_TakeStockOrderDetail> Details { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrderDetail.cs"
index acbd45d..384267e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrderDetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_TakeStockOrderDetail.cs"
@@ -23,7 +23,7 @@
         /// <summary>
         /// 鐩樼偣鍗曚富閿�
         /// </summary>
-        [SugarColumn(IsNullable = false, ColumnDescription = "閫�鏂欏崟涓婚敭")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐩樼偣鍗曚富閿�")]
         public int TakeStockId { get; set; }
 
         /// <summary>
@@ -51,6 +51,24 @@
         public string MaterielSpec { get; set; }
 
         /// <summary>
+        /// 鍘熶粨浣�
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍘熶粨浣�")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鐩樼偣鎵樼洏
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鐩樼偣鎵樼洏")]
+        public string TakePalletCode { get; set; }
+
+        /// <summary>
+        /// 鐩樼偣鏄庣粏鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐩樼偣鏄庣粏鐘舵��")]
+        public int TakeDetalStatus { get; set; }
+
+        /// <summary>
         /// 鍗曚綅
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曚綅")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
index f7726e8..601ae7b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
@@ -1187,13 +1187,14 @@
                     case "inspectAcceptEnum":
                         {
                             List<object> data = new List<object>();
+
                             {
                                 Type type = typeof(InspectAcceptEnum);
-                                List<int> enums = Enum.GetValues(typeof(InspectAcceptEnum)).Cast<int>().ToList();
+                                List<string> enumNames = Enum.GetNames(typeof(InspectAcceptEnum)).ToList();
                                 int index = 0;
-                                foreach (var item in enums)
+                                foreach (var item in enumNames)
                                 {
-                                    FieldInfo? fieldInfo = typeof(InspectAcceptEnum).GetField(((InspectAcceptEnum)item).ToString());
+                                    FieldInfo? fieldInfo = typeof(InspectAcceptEnum).GetField((item).ToString());
                                     DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                     if (description != null)
                                     {
@@ -1236,6 +1237,32 @@
                             result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                         }
                         break;
+                    case "takeStockDetailStatusEnum":
+                        {
+                            List<object> data = new List<object>();
+                            {
+                                Type type = typeof(TakeStockDetailStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TakeStockDetailStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TakeStockDetailStatusEnum).GetField(((TakeStockDetailStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
                 }
                 return result;
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 4f51249..41ebfc6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -691,7 +691,8 @@
                                         ReceivedQuantity = item.OriginalQuantity,
                                         OrderType = CheckTypeEnum.InspectCheck.ObjToInt(),
                                         ReceiveOrderNo = outboundOrder.OrderNo,
-                                        LotNo= item.BatchNo,
+                                        OrderPalletCode= item.PalletCode,
+                                        LotNo = item.BatchNo,
                                         Result = CheckAcceptEnum.NotCheckAccept.ToString(),
                                         QualifiedQuantity = 0,
                                         ReceiveDetailRowNo = item.Id,
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 2a0977a..ae8089e 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"
@@ -16,6 +16,7 @@
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
+using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_DTO;
 using WIDESEA_DTO.MES;
@@ -60,7 +61,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
                 }
-                if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt())
+                if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹瀹屾垚.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
                 }
@@ -134,6 +135,11 @@
                         stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
                         newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
                     }
+                    else if (stockInfo.StockStatus == StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+                    {
+                        stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+                        newTask.TaskType = TaskTypeEnum.InQuality.ObjToInt();
+                    }
                     else
                     {
                         stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
@@ -162,7 +168,52 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-
+        /// <summary>
+        /// 鏌ヨ璐ㄦ鏁伴噺
+        /// </summary>
+        /// <param name="palletCode">鎵樼洏鍙�</param>
+        /// <returns></returns>
+        public WebResponseContent InQualityConfirm(string palletCode)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(palletCode);
+                if (stockInfo == null)
+                {
+                    return content.Error($"鏈壘鍒拌鎵樼洏搴撳瓨淇℃伅");
+                }
+                if (stockInfo.Details.Count<=0)
+                {
+                    return content.Error($"璇ユ墭鐩樺簱瀛樻槑缁嗕负绌�");
+                }
+                if (stockInfo.StockStatus != StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+                {
+                    return content.Error($"璇ユ墭鐩樿繕鏈�佹鍑哄簱瀹屾垚");
+                }
+                Dt_OutStockLockInfo? outStockLockInfo = _outboundRepository.OutboundStockLockInfoRepository.QueryData(x => x.PalletCode == palletCode && x.Status == OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && x.OrderType== OutOrderTypeEnum.Quality.ObjToInt()).OrderByDescending(x=>x.Id).FirstOrDefault();
+                if (outStockLockInfo != null)
+                {
+                    //鑾峰彇瀵瑰簲妫�楠屽崟
+                    Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x=>x.ReceiveDetailRowNo== outStockLockInfo.Id && x.CheckOrderStatus==CheckOrderStatusEnum.Checked.ObjToInt());
+                    if (checkOrder == null)
+                    {
+                        return content.Error($"璇ユ墭鐩橀�佹淇℃伅鏈");
+                    }
+                    content.OK("鎴愬姛", data:new { stockInfo.Details.FirstOrDefault()?.MaterielCode,checkOrder.ReceivedQuantity,checkOrder.ScrappedQuantity,checkOrder.DefectedQuantity,checkOrder.QualifiedQuantity,stockQuantity= stockInfo.Details.Sum(x=>x.StockQuantity) }) ;
+                }
+                else
+                {
+                    content.Error("璇ユ墭鐩橀�佹鍑哄簱璇︽儏涓嶅瓨鍦�");
+                }
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
         /// <summary>
         /// 鍏ョ┖绠�
         /// </summary>
@@ -382,7 +433,7 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
                 }
-                if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.MES閫�搴�.ObjToInt())
+                if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.MES閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹瀹屾垚.ObjToInt())
                 {
                     return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
                 }
@@ -450,6 +501,11 @@
                 {
                     stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
                     newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
+                }
+                else if (stockInfo.StockStatus == StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+                {
+                    stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+                    newTask.TaskType = TaskTypeEnum.InQuality.ObjToInt();
                 }
                 else
                 {
@@ -544,8 +600,9 @@
                 }
                 else if (stockInfo.StockStatus == StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt())
                 {
+                    Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x=>x.WarehouseId==stockInfo.WarehouseId && x.PalletType==stockInfo.PalletType);
                     //todo 灏忔墭鐩樻殏鏃舵湭鍚敤
-                    if (stockInfo.PalletType == PalletTypeEnum.MediumPallet.ObjToInt())
+                    if (palletTypeInfo.LocaitonCount==2)
                     {
                         newTask.TaskType = TaskTypeEnum.MesPalletLargeReturn.ObjToInt();
                     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index f3e953b..e62bc46 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -20,6 +20,7 @@
 using WIDESEA_Core.CodeConfigEnum;
 using Microsoft.AspNetCore.Mvc;
 using WIDESEA_DTO.ERP;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -78,6 +79,102 @@
             return content;
         }
         /// <summary>
+        /// 閫夊畾搴撳瓨鐢熸垚鐩樼偣鍗曞嚭搴�
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public WebResponseContent TakeOutbound(List<StockViewDTO> stockViews)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (stockViews.Select(x=>x.WarehouseId).Distinct().Count()>=2)
+                {
+                    return content.Error($"璇烽�夋嫨鍚屼竴浠撳簱搴撳瓨杩涜鐩樼偣");
+                }
+                List<int> ids = stockViews.Select(x => x.StockId).ToList();
+                //鑾峰彇搴撳瓨
+                List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => ids.Contains(x.Id)).Includes(x => x.Details).ToList();
+                if (stockInfos.Count!= stockViews.Count)
+                {
+                    StockViewDTO? stockViewDTO = stockViews.FirstOrDefault(x=> !stockInfos.Select(x=>x.PalletCode).ToList().Contains(x.PalletCode));
+                    return content.Error($"鏈壘鍒皗stockViewDTO?.PalletCode}搴撳瓨");
+                }
+                //鑾峰彇璐т綅
+                List<string> locStrs = stockInfos.Select(x => x.LocationCode).ToList();
+                List<Dt_LocationInfo> locationInfos =_basicRepository.LocationInfoRepository.QueryData(x=> locStrs.Contains(x.LocationCode));
+                if (stockInfos.Count != locationInfos.Count)
+                {
+                    string? locStr = locStrs.FirstOrDefault(x=> !locationInfos.Select(x => x.LocationCode).ToList().Contains(x));
+                    return content.Error($"鏈壘鍒皗locStr}璐т綅鏁版嵁");
+                }
+                Dt_TakeStockOrder takeStockOrder = new Dt_TakeStockOrder()
+                {
+                    WarehouseId = stockInfos.FirstOrDefault().WarehouseId,
+                    TakeStockStatus = TakeStockStatusEnum.鐩樼偣涓�.ObjToInt(),
+                    Details = new List<Dt_TakeStockOrderDetail>()
+                };
+                foreach (var item in stockInfos)
+                {
+                    if (item.Details.Count<=0)
+                    {
+                        return content.Error($"鏈壘鍒皗item.PalletCode}搴撳瓨鏄庣粏鏁版嵁");
+                    }
+                    Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x=>x.LocationCode==item.LocationCode);
+                    if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && item.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt())
+                    {
+                        //鍒涘缓鏄庣粏
+                        Dt_TakeStockOrderDetail takeStockOrderDetail = new Dt_TakeStockOrderDetail()
+                        {
+                            MaterielCode= item.Details.FirstOrDefault().MaterielCode,
+                            MaterielName=item.Details.FirstOrDefault().MaterielName ?? "鏃犵墿鏂欏悕绉�",
+                            BatchNo=item.Details.FirstOrDefault().BatchNo,
+                            MaterielSpec=item.Details.FirstOrDefault().MaterielSpec ?? "鏃犵墿鏂欒鏍�",
+                            LocationCode=item.LocationCode,
+                            TakePalletCode=item.PalletCode,
+                            TakeDetalStatus=TakeStockDetailStatusEnum.鐩樼偣鍑哄簱涓�.ObjToInt(),
+                            Unit=item.Details.FirstOrDefault().Unit ?? "鏃犲崟浣�",
+                            SysQty=item.Details.Sum(x=>x.StockQuantity),
+                            Qty=0
+                        };
+                        takeStockOrder.Details.Add(takeStockOrderDetail);
+                    }
+                    else
+                    {
+                        content.Error($"璐т綅鎴栧簱瀛樼姸鎬佷笉婊¤冻鍑哄簱鏉′欢");
+                    }
+                }
+                List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutInventory);
+                if (tasks == null || tasks.Count <= 0)
+                {
+                    return content.Error($"鐢熸垚浠诲姟澶辫触");
+                }
+                stockInfos.ForEach(x =>
+                {
+                    x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                });
+                LocationStatusEnum locationStatus = LocationStatusEnum.Lock;
+                _unitOfWorkManage.BeginTran();
+                //鏇存柊搴撳瓨鐘舵��
+                _stockRepository.StockInfoRepository.UpdateData(stockInfos);
+                _inboundRepository.TakeStockOrderRepository.Db.InsertNav(takeStockOrder).Include(x=>x.Details).ExecuteCommand();
+                //鏂板缓浠诲姟
+                BaseDal.AddData(tasks);
+                //鍔犲叆璐т綅鍙樺姩璁板綍
+                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, locationStatus, LocationChangeType.OutboundAssignLocation, "", tasks?.Select(x => x.TaskNum).ToList());
+                _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, locationStatus);
+                _unitOfWorkManage.CommitTran();
+                PushTasksToWCS(tasks);
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
         /// 鐢熸垚鎴愬搧鍑哄簱浠诲姟
         /// </summary>
         /// <param name="ProOutNo">鍑哄簱璁㈠崟鍙�</param>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index f828daa..21ebc59 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -42,7 +42,14 @@
         {
             return Service.RequestInboundTask(saveModel);
         }
-        
+        /// <summary>
+        /// 鏌ヨ璐ㄦ鏁伴噺
+        /// </summary>
+        [HttpPost, HttpGet, Route("InQualityConfirm"), AllowAnonymous]
+        public WebResponseContent InQualityConfirm(string palletCode)
+        {
+            return Service.InQualityConfirm(palletCode);
+        }
         /// <summary>
         /// 绌虹鍏ュ簱
         /// </summary>
@@ -385,5 +392,13 @@
         {
             return Service.GetZHMesMaterialLot(materialLot);
         }
+        /// <summary>
+        /// 閫夊畾搴撳瓨鐢熸垚鐩樼偣鍗曞嚭搴�
+        /// </summary>
+        [HttpPost, Route("TakeOutbound"), AllowAnonymous]
+        public WebResponseContent TakeOutbound([FromBody] List<StockViewDTO> stockViews)
+        {
+            return Service.TakeOutbound(stockViews);
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
index 8afbe7f..f89c8ff 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -6,7 +6,7 @@
       "Microsoft.AspNetCore": "Warning"
     }
   },
-  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes,locationChangeType,warehouses,suppliers,taskType,receiveStatus,purchaseType,purchaseOrderStatus,printStatus,returnStatus,returnType,outLockStockStatusEnum,checkOrderStatusEnum,checkUploadEnum,checkAcceptEnum,proStockAttributeEnum,materielSourceTypeEnum,materielTypeEnum,customerOutRuleEnum,proScrapStatusEnum,checkTypeEnum,inspectAcceptEnum,inspectResultEnum",
+  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes,locationChangeType,warehouses,suppliers,taskType,receiveStatus,purchaseType,purchaseOrderStatus,printStatus,returnStatus,returnType,outLockStockStatusEnum,checkOrderStatusEnum,checkUploadEnum,checkAcceptEnum,proStockAttributeEnum,materielSourceTypeEnum,materielTypeEnum,customerOutRuleEnum,proScrapStatusEnum,checkTypeEnum,inspectAcceptEnum,inspectResultEnum,takeStockDetailStatusEnum",
   "AllowedHosts": "*",
   "ConnectionStringsEncryption": false,
   "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages.json"
index 913a96b..f5ebd1c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages.json"
@@ -65,6 +65,13 @@
 			}
 		},
 		{
+			"path": "pages/stash/InspectIn",
+			"style": {
+				"navigationBarTitleText": "閫佹鍏ュ簱",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
 			"path": "pages/stash/AGVFinish",
 			"style": {
 				"navigationBarTitleText": "AGV瀹屾垚",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/InspectIn.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/InspectIn.vue"
new file mode 100644
index 0000000..ae655d0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/InspectIn.vue"
@@ -0,0 +1,612 @@
+<template>
+	<view>
+		<uni-segmented-control style="margin-top: 15rpx;" :current="current" :values="items" @clickItem="onClickItem">
+		</uni-segmented-control>
+		<view class="content">
+			<!-- <view v-if="current === 0" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="180">
+						<uni-forms-item label="鎵樼洏鏉$爜:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' :focus="!focus"
+								v-model="barcode" @input="barcodeInput" />
+						</uni-forms-item>
+						<uni-forms-item label="鍐呯鏍囩:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="focus"
+								v-model="materSn" @input="snInput" />
+						</uni-forms-item>
+						<uni-forms-item :label="Testlabel" v-if="Test">
+							<uni-easyinput type="text" :placeholder="Testplaceholder" ref='midInput'
+								v-model="Initiallife" />
+						</uni-forms-item>
+						
+						<uni-forms-item>
+							<button @click="submit" type="primary" size="default" style="margin-top: 2%;">缁勭洏</button>
+						</uni-forms-item>
+					</uni-forms>
+					<uni-list>
+						
+						<uni-list-item direction="column" v-for="(item,index) in matInfos" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
+										@click="deleteList(index)">
+									</uni-icons>
+									<view class="uni-content">
+										<view class="uni-title-sub uni-ellipsis-2">閲囪喘鍗曞彿锛歿{item.purchaseOrderNo}}</view>
+										<view class="uni-note">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view class="uni-note">鎵规鍙凤細{{item.lotNo}}</view>
+										<view class="uni-note">鏁伴噺锛歿{item.quantity}}</view>
+										<view class="uni-note">鐢熶骇鏃ユ湡锛歿{item.productionDate}}</view>
+										<view class="uni-note">鏈夋晥鏈燂細{{item.effectiveDate}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view> -->
+			<view v-if="current === 0" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="120">
+						<uni-forms-item label="鎵樼洏鏉$爜">
+							<uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
+								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @confirm="inputChangebarcode" />
+						</uni-forms-item>
+						<uni-forms-item label="鍦板潃鏉$爜">
+							<uni-easyinput type="text" v-model="address" :disabled="addressdisabled"
+								placeholder="璇锋壂鎻忓湴鍧�鏉$爜" ref='midInput' :focus="addressFocus" />
+						</uni-forms-item>
+						<uni-forms-item>
+							<button @click="inbound" type="primary" size="default" style="margin-top: 2%;">鍏ュ簱纭</button>
+						</uni-forms-item>
+					</uni-forms>
+				</view>
+				<view>
+					<view class="uni-content" v-if="checkStockInfo" style="width: 500rpx; margin: 0px auto;">
+						<view class="uni-title-sub uni-ellipsis-2" style="font-size: 16px;">鐗╂枡缂栧彿锛歿{checkStockInfo.materielCode}}</view>
+						<view class="uni-note" style="font-size: 16px;">妫�楠屾暟閲忥細{{checkStockInfo.receivedQuantity}}</view>
+						<view class="uni-note" style="font-size: 16px;">鎶ュ簾鏁伴噺锛歿{checkStockInfo.scrappedQuantity}}</view>
+						<view class="uni-note" style="font-size: 16px;">鐗归噰鏁伴噺锛歿{checkStockInfo.defectedQuantity}}</view>
+						<view class="uni-note" style="font-size: 16px;">鍚堟牸鏁伴噺锛歿{checkStockInfo.qualifiedQuantity}}</view>
+						<view class="uni-note" style="font-size: 16px;">搴撳瓨鏁伴噺锛歿{checkStockInfo.stockQuantity}}</view>
+					</view>
+				</view>
+			</view>
+			<view v-if="current === 1" class="headerstyle">
+				<view class="itemstyle">
+					<uni-forms label-width="180">
+						<uni-forms-item label="鍐呯鏍囩:">
+							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="pkfocus"
+								v-model="pkmaterSn" @input="pksnInput" />
+						</uni-forms-item>
+						<uni-forms-item>
+							<button @click="pksubmit" type="primary" size="default" style="margin-top: 2%;">鍏ュ钩搴�</button>
+						</uni-forms-item>
+					</uni-forms>
+					<uni-list>
+						<uni-list-item direction="column" v-for="(item,index) in pkmatInfos" :key="index">
+							<template v-slot:body>
+								<view class="uni-list-box">
+									<uni-icons type="trash" size="22" style="position: absolute;right: 5%;"
+										@click="pkdeleteList(index)">
+									</uni-icons>
+									<view class="uni-content">
+										<view class="uni-title-sub uni-ellipsis-2">閲囪喘鍗曞彿锛歿{item.purchaseOrderNo}}</view>
+										<view class="uni-note">鐗╂枡缂栫爜锛歿{item.materielCode}}</view>
+										<view class="uni-note">鎵规鍙凤細{{item.lotNo}}</view>
+										<view class="uni-note">鏁伴噺锛歿{item.quantity}}</view>
+										<view class="uni-note">鐢熶骇鏃ユ湡锛歿{item.productionDate}}</view>
+										<view class="uni-note">鏈夋晥鏈燂細{{item.effectiveDate}}</view>
+									</view>
+								</view>
+							</template>
+						</uni-list-item>
+					</uni-list>
+				</view>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+
+<script>
+	const innerAudioContext = uni.createInnerAudioContext();
+	export default {
+		data() {
+			return {
+				items: ['鍏ュ簱'], //, '鍗曟嵁淇℃伅', '瑙g洏'
+				current: 0,
+				matTotal: [],
+				matInfos: [],
+				orderNo: "",
+				label: "",
+				orderInfo: [],
+				focus: false,
+				pkfocus: false,
+				barcode: "",
+				materSn: "",
+				Initiallife: 1000,
+				sns: [],
+				sn: "",
+				addressFocus: false,
+				inboundBarcode: "",
+				address: "",
+				check: true,
+				value: "",
+				matInfo: [],
+				value2: "",
+				matTotals: [],
+				warehouseId: "",
+				Test: false,
+				Testlabel: "",
+				Testplaceholder: "",
+				Testcheck: false,
+				Summmary: 0,
+				stockInfoDetail: [],
+				addressdisabled: false,
+				pksns: [],
+				pkmaterSn: "",
+				pkmatInfos: [],
+				checkStockInfo:null
+			}
+		},
+		onShow() {},
+		onLoad(res) {
+			this.focus = false;
+			this.addressFocus = false;
+			this.orderNo = res.orderNo;
+			this.warehouseId = res.warehouseId;
+			if (this.warehouseId == 6) { //娴嬭瘯鏋朵粨搴撳尯ID
+				this.Test = true;
+				this.Testlabel = "鍒濆瀵垮懡:";
+				this.Testplaceholder = "璇疯緭鍏ュ垵濮嬪鍛�";
+			} else if (this.warehouseId == 2) { //娌瑰ⅷ浠撳簱鍖篒D
+				this.Test = true;
+				this.Testlabel = "鏁伴噺:";
+				this.Testplaceholder = "璇疯緭鍏ユ暟閲�";
+				this.Initiallife = 16;
+			} else if (this.warehouseId == 5) { //杈呮枡浠撳簱鍖篒D
+				this.address = "8005";
+				this.items.push("鍏ュ钩搴�");
+				this.items[1] = "鍏ョ珛搴�";
+				this.address = "8005";
+			} else if (this.warehouseId == 3) { //杈呮枡浠撳簱鍖篒D
+				this.address = "1011";
+				this.addressdisabled = true;
+			}
+			this.label = "鍗曟嵁缂栧彿锛�" + this.orderNo;
+			this.getData();
+		},
+		methods: {
+			// voiceSpeech(src) {
+			// 	innerAudioContext.src = src; // '../../static/success.mp3';
+			// 	innerAudioContext.play();
+			// },
+			//wms鍏ュ钩搴�
+			pksubmit() {
+				if (this.pkmatInfos.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓唴绠辨爣绛�",
+						type: 'error'
+					})
+					return;
+				}
+				this.$u.post('/api/InboundOrder/WMSInPinKu?warehouseId=' + this.warehouseId, this
+					.pksns).then(res => {
+					debugger
+					if (res.status) {
+						this.$refs.uToast.show({
+							title: "鍏ュ簱鎴愬姛",
+							type: "success"
+						})
+						this.focus = false;
+						this.pkmatInfos = [];
+						this.pksns = [];
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				})
+			},
+			pksnInput() {
+				this.$nextTick(() => {
+					if (this.pkmaterSn != "") {
+						this.focus = false;
+						var matSn = this.pkmaterSn;
+						setTimeout(() => {
+							this.pkmaterSn = "";
+						}, 10);
+						this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
+							if (res.status) {
+								this.pksns.push(res.data.serialNumber);
+								this.pkmatInfos.push(res.data);
+								if (!res.status) {
+									this.$refs.uToast.show({
+										title: res.message,
+										type: "error"
+									})
+									// setTimeout(() => {
+									// 	this.voiceSpeech('../../static/fail.mp3');
+									// }, 100);
+									return;
+								}
+								// setTimeout(() => {
+								// 	this.voiceSpeech('../../static/success.mp3');
+								// }, 100);
+								return;
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								})
+								// setTimeout(() => {
+								// 	this.voiceSpeech('../../static/fail.mp3');
+								// }, 100);
+							}
+						})
+					}
+				})
+			},
+			//瑙g洏
+			releasebox() {
+				if (this.value.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鐮�",
+						type: "error"
+					})
+					return;
+				}
+				var param;
+				var matInfo = this.value.split('|');
+				if (matInfo.length == 7) {
+					param = {
+						MainData: {
+							"innerCode": this.value
+						}
+					}
+				} else {
+					param = {
+						MainData: {
+							"barcode": this.value
+						}
+					}
+				}
+				this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => {
+					if (resdt.status) {
+						uni.$showMsg('瑙g洏鎴愬姛!')
+						this.value = "";
+						this.matInfo = [];
+						this.matTotals = [];
+						this.value2 = "";
+					} else {
+						this.$refs.uToast.show({
+							title: resdt.message,
+							type: "error"
+						})
+					}
+				})
+			},
+			releaseboxInput() {
+				this.$nextTick(() => {
+					if (this.value.length == 0) {
+						return;
+					}
+					var matInfo = this.value.split('|');
+					this.matInfo = [];
+					if (matInfo.length == 7) {
+						this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', {
+							MainData: {
+								"innerCode": this.value
+							}
+						}).then(res => {
+							if (res.status) {
+								this.matInfo = res.data.stockInfo;
+								this.matTotals = res.data.stockTotal;
+								this.value2 = res.data.barcode;
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								})
+							}
+						})
+					} else {
+						this.$u.post('/api/StockOperate/GetStockInfoByBarcode', {
+							MainData: {
+								"barcode": this.value
+							}
+						}).then(res => {
+							if (res.status) {
+								this.matInfo = res.data.stockInfo;
+								this.matTotals = res.data.stockTotal;
+								this.value2 = res.data.barcode;
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								})
+							}
+						})
+					}
+				})
+			},
+
+			updateFocus() {
+				debugger
+				this.$nextTick(() => {
+					this.materSn = '';
+					if (!this.focus) {
+						this.focus = true;
+					}
+				});
+			},
+			barcodeFocus() {
+				debugger
+				this.barcode = '';
+				if (this.focus) {
+					this.focus = false;
+				}
+			},
+			getData() {
+				var postData = {
+					MainData: {
+						orderNo: this.orderNo
+					},
+				}
+				this.$u.post('/api/InboundOrderDetail/GetInboundOrderDetails', postData).then((res) => {
+					if (res.status) {
+						this.orderInfo = res.data;
+						if (this.orderInfo.length > 3) {
+							this.loadVisible = true;
+						}
+					}
+				})
+			},
+			onClickItem(e) {
+				this.focus = false;
+				this.addressFocus = false;
+				if (this.current !== e.currentIndex) {
+					this.current = e.currentIndex;
+					if (this.current == 2) {
+						this.getData();
+					}
+				}
+			},
+			barcodeInput() {
+				this.$nextTick(function(x) {
+					if (this.barcode.length > 0) {
+						// if (this.barcode.substring(0, 1) == 'A' || this.barcode.substring(0, 2) == 'TP') {
+						this.focus = true;
+						// } else {
+						// 	this.$refs.uToast.show({
+						// 		title: "鎵爜閿欒,璇锋壂鎻忔墭鐩樼爜",
+						// 		type: "error"
+						// 	})
+						// }
+					}
+				})
+			},
+			snInput() {
+				this.$nextTick(() => {
+					if (this.warehouseId == 6 || this.warehouseId == 2 || this.warehouseId == 3) {
+						if (this.sns.length > 0) {
+							this.sns = [];
+						}
+					}
+					if (this.materSn != "") {
+						this.focus = false;
+						if (this.warehouseId == 11) {
+							this.materSn = this.materSn.replace(/,SC.*/, '');
+						}
+						if (this.materSn.split(',').length != 6) {
+							this.materSn = "";
+							return;
+						}
+						var matSn = this.materSn;
+						//setTimeout(() => {
+						this.materSn = "";
+						//}, 10);
+						this.$u.post('/api/MaterielInfo/CodeAnalysis?serNum=' + matSn, {}).then((res) => {
+							this.Testcheck = false;
+							if (res.status) {
+								this.sns.push(res.data.serialNumber);
+								if (this.warehouseId == 6 || this.warehouseId == 2 || this.warehouseId ==
+									3) {
+									if (this.matInfos.length > 0) {
+										this.matInfos = [];
+									}
+								}
+								this.matInfos.push(res.data);
+								if (!res.status) {
+									this.$refs.uToast.show({
+										title: res.message,
+										type: "error"
+									})
+									// setTimeout(() => {
+									// 	this.voiceSpeech('../../static/fail.mp3');
+									// }, 100);
+									return;
+								}
+								// setTimeout(() => {
+								// 	this.voiceSpeech('../../static/success.mp3');
+								// }, 100);
+							} else {
+								this.$refs.uToast.show({
+									title: res.message,
+									type: "error"
+								})
+								// setTimeout(() => {
+								// 	this.voiceSpeech('../../static/fail.mp3');
+								// }, 100);
+							}
+						})
+					}
+				})
+			},
+			inbound() {
+				if (this.inboundBarcode == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忔墭鐩樻潯鐮�",
+						type: "error"
+					})
+					return;
+				}
+				if (this.address == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓湴鍧�鏉$爜",
+						type: "error"
+					})
+					return;
+				}
+				var postData = {
+					MainData: {
+						"barcode": this.inboundBarcode,
+						"startPoint": this.address,
+						"warehouseId": this.warehouseId
+					}
+				}
+				this.$u.post('/api/Task/RequestInboundTask', postData).then(res => {
+					if (res.status) {
+						this.inboundBarcode = "";
+						if (this.warehouseId != 5 && this.warehouseId != 3) this.address = "";
+						this.checkStockInfo=null;
+						setTimeout(() => {
+							this.addressFocus = false;
+							this.$refs.uToast.show({
+								title: "鎴愬姛",
+								type: "success"
+							})
+						}, 200);
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				}).catch(err => {
+					this.$refs.uToast.show({
+						title: err.message,
+						type: "error"
+					})
+				})
+			},
+			inputChangebarcode() {
+				this.addressFocus = false;
+				this.$nextTick(function(x) {
+					if (this.inboundBarcode != '') {
+						this.addressFocus = true;
+					}
+				})
+				this.$nextTick(function(x) {
+					if (this.inboundBarcode != '') {
+						this.$u.post('/api/Task/InQualityConfirm?palletCode='+this.inboundBarcode, {}).then(res => {
+							// this.stockInfo = [];
+							this.checkStockInfo=null;
+							if (res.status) {
+								// this.stockInfo = res.data,
+								this.checkStockInfo = res.data;
+							} else {
+								this.inboundBarcode='';
+								this.$refs.uToast.show({
+									// title: "鏈壘鍒版墭鐩樹俊鎭�",
+									title: res.message,
+									type: "error"
+								})
+							}
+						})
+					}
+				})
+			},
+			deleteList(res) {
+				this.matInfos.splice(res, 1);
+				this.sns.splice(res, 1);
+			},
+			submit() {
+				if (this.barcode == "") {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忔墭鐩樻潯鐮�",
+						type: 'error'
+					})
+					return;
+				}
+				if (this.matInfos.length == 0) {
+					this.$refs.uToast.show({
+						title: "璇锋壂鎻忓唴绠辨爣绛�",
+						type: 'error'
+					})
+					return;
+				}
+				if (this.Test) {
+					if (!this.Testcheck) {
+						this.Testcheck = true;
+						if (this.warehouseId == 2) {
+							this.$refs.uToast.show({
+								title: "璇风‘璁ゆ暟閲�",
+								type: 'error'
+							})
+						} else if (this.warehouseId == 6) {
+							this.$refs.uToast.show({
+								title: "璇风‘璁ゅ垵濮嬪鍛�",
+								type: 'error'
+							})
+						}
+						return;
+					}
+				}
+				if (this.warehouseId == 2) { //娌瑰ⅷ浠撳簱鍖篒D
+					this.sn = this.sns[0];
+					for (var i = 0; i < this.Initiallife - 1; i++) {
+						this.sns.push(this.sn);
+					}
+				}
+				let url = 'palletCode=' + this.barcode + '&initiallife=' + this.Initiallife + '&warehouseId=' + this
+					.warehouseId;
+
+				this.$u.post('/api/InboundOrder/ManualMaterielGroup?' + url, this.sns).then(res => {
+					this.Testcheck = false;
+					if (res.status) {
+						this.$refs.uToast.show({
+							title: "缁勭洏鎴愬姛",
+							type: "success"
+						})
+						this.focus = false;
+						this.barcode = "";
+						this.matInfos = [];
+						this.sns = [];
+						this.matTotal = [];
+					} else {
+						this.$refs.uToast.show({
+							title: res.message,
+							type: "error"
+						})
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-ui.scss';
+
+	.content {
+		display: flex;
+		height: 150px;
+	}
+
+	.content-text {
+		font-size: 14px;
+		color: #666;
+	}
+
+	.itemstyle {
+		margin-top: 30px;
+		margin-left: 5%;
+	}
+
+	.headerstyle {
+		width: 90%;
+	}
+</style>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/boxing.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/boxing.vue"
index ead7682..06517fe 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/boxing.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/boxing.vue"
@@ -8,11 +8,11 @@
 					<uni-forms label-width="180">
 						<uni-forms-item label="鎵樼洏鏉$爜:">
 							<uni-easyinput type="text" placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' :focus="!focus"
-								v-model="barcode" @input="barcodeInput" />
+								v-model="barcode" @confirm="barcodeInput" />
 						</uni-forms-item>
 						<uni-forms-item label="鍐呯鏍囩:">
 							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="focus"
-								v-model="materSn" @input="snInput" />
+								v-model="materSn" @confirm="snInput" />
 						</uni-forms-item>
 						<uni-forms-item :label="Testlabel" v-if="Test">
 							<uni-easyinput type="text" :placeholder="Testplaceholder" ref='midInput'
@@ -61,7 +61,7 @@
 					<uni-forms label-width="120">
 						<uni-forms-item label="鎵樼洏鏉$爜">
 							<uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
-								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @input="inputChangebarcode" />
+								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @confirm="inputChangebarcode" />
 						</uni-forms-item>
 						<uni-forms-item label="鍦板潃鏉$爜">
 							<uni-easyinput type="text" v-model="address" :disabled="addressdisabled"
@@ -105,7 +105,7 @@
 					<uni-forms label-width="180">
 						<uni-forms-item label="鍐呯鏍囩:">
 							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="pkfocus"
-								v-model="pkmaterSn" @input="pksnInput" />
+								v-model="pkmaterSn" @confirm="pksnInput" />
 						</uni-forms-item>
 						<uni-forms-item>
 							<button @click="pksubmit" type="primary" size="default" style="margin-top: 2%;">鍏ュ钩搴�</button>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/raworderboxing.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/raworderboxing.vue"
index 18d1f65..ad79014 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/raworderboxing.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/raworderboxing.vue"
@@ -10,11 +10,11 @@
 						</uni-forms-item>
 						<uni-forms-item label="鎵樼洏鏉$爜:">
 							<uni-easyinput type="text" placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' :focus="!focus"
-								v-model="barcode" @input="barcodeInput" />
+								v-model="barcode" @confirm="barcodeInput" />
 						</uni-forms-item>
 						<uni-forms-item label="鍐呯鏍囩:">
 							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="focus"
-								v-model="materSn" @input="snInput" />
+								v-model="materSn" @confirm="snInput" />
 						</uni-forms-item>
 
 						<uni-forms-item :label="Testlabel" v-if="Test">
@@ -69,7 +69,7 @@
 					<uni-forms label-width="120">
 						<uni-forms-item label="鎵樼洏鏉$爜">
 							<uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode"
-								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @input="inputChangebarcode" />
+								placeholder="璇锋壂鎻忔墭鐩樻潯鐮�" ref='midInput' @confirm="inputChangebarcode" />
 						</uni-forms-item>
 						<uni-forms-item label="鍦板潃鏉$爜">
 							<uni-easyinput type="text" v-model="address" :disabled="addressdisabled"
@@ -107,7 +107,7 @@
 					<uni-forms label-width="180">
 						<uni-forms-item label="鍐呯鏍囩:">
 							<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辨爣绛�" ref='midInput' :focus="!pkfocus"
-								v-model="pkmaterSn" @input="pksnInput" />
+								v-model="pkmaterSn" @confirm="pksnInput" />
 						</uni-forms-item>
 
 						<uni-forms-item>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/receiveorderoutbound.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/receiveorderoutbound.vue"
index a74b0fd..2603ece 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/receiveorderoutbound.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\346\267\256\345\256\211PDA/pages/stash/receiveorderoutbound.vue"
@@ -9,7 +9,7 @@
 					<!-- <uni-forms-item label="鍗曟嵁绫诲瀷锛氱敓浜ч鏂欏崟" style="margin-top: -20px;"></uni-forms-item> -->
 					<uni-forms-item label="鍐呯鐮侊細" style="margin-top: -20px;">
 						<uni-easyinput type="text" placeholder="璇锋壂鎻忓唴绠辩爜" ref='midInput' :focus="!focus"
-							v-model="innerCode" @input="innercodeInput" />
+							v-model="innerCode" @confirm="innercodeInput" />
 					</uni-forms-item>
 					<uni-forms-item :label="PurchaseOrderNo" style="margin-top: -20px;"></uni-forms-item>
 					<uni-forms-item :label="matCode" style="margin-top: -20px;"></uni-forms-item>

--
Gitblit v1.9.3