From 6e8866830ef12fc7ae99d8f160cbb37c0f08c3bd Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 11 一月 2025 11:38:24 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                                     |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs                                     |   10 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs                                       |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                      |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService_Pick.cs                           |   27 
 代码管理/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue                                                     |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs                                      |   37 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs              |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs                                  |   25 +
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fd74bb5f-bac3-4a5b-970e-230b01eb2be9.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/palletCodeInfo.js                                             |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                          |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs                                  |   37 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs                                        |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml                |   17 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs                          |   14 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b0001941-8c45-456e-a7be-53676400c6a8.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs                                             |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs                       |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/StackerCraneJob_BC.cs                                        |   17 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json                                                |    2 
 代码管理/WMS/WIDESEA_WMSClient/src/api/http.js                                                                   |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs                                 |   17 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/RGVJob_BC.cs                                                 |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs                                   |   16 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs                                                    |   92 ++++++
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fe16cacc-0308-47f8-a849-c42e92c6fea9.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs                        |   11 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d5a3168f-61c4-46c2-a7e5-00e778c348c5.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs                                        |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs                                          |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs                 |   16 
 代码管理/WMS/WIDESEA_WMSClient/src/views/Index.vue                                                               |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs                                               |   29 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs                                        |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs                                     |   73 ++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs                   |   21 +
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                                         |    3 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs                           |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/干膜仓/ConveyorLineJob_GM.cs                                        |   13 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs                           |   45 +++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                                |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                            |   18 
 /dev/null                                                                                                    |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/板材仓/ConveyorLineJob_BC.cs                                        |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs                                          |    5 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs                                          |   47 +++
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/extend/palletCodeAdd.vue                                      |  169 +++++++++++
 49 files changed, 766 insertions(+), 112 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9e5bb932-a2ae-42b5-8ed0-09de9b346dc6.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9e5bb932-a2ae-42b5-8ed0-09de9b346dc6.vsidx"
deleted file mode 100644
index 859b039..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/9e5bb932-a2ae-42b5-8ed0-09de9b346dc6.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f8288fd8-10a9-42d7-ac09-8c962aedebb7.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f8288fd8-10a9-42d7-ac09-8c962aedebb7.vsidx"
deleted file mode 100644
index e84e8f7..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f8288fd8-10a9-42d7-ac09-8c962aedebb7.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fd74bb5f-bac3-4a5b-970e-230b01eb2be9.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fd74bb5f-bac3-4a5b-970e-230b01eb2be9.vsidx"
new file mode 100644
index 0000000..ad34a56
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fd74bb5f-bac3-4a5b-970e-230b01eb2be9.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fe16cacc-0308-47f8-a849-c42e92c6fea9.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fe16cacc-0308-47f8-a849-c42e92c6fea9.vsidx"
new file mode 100644
index 0000000..7879ab4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/fe16cacc-0308-47f8-a849-c42e92c6fea9.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/read.lock" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/read.lock"
deleted file mode 100644
index e69de29..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/read.lock"
+++ /dev/null
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index d364d1a..cd1e7e5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -164,13 +164,13 @@
         /// <summary>
         /// 鏇存柊浠诲姟淇℃伅鍙婃坊鍔犱换鍔℃槑缁嗚褰�
         /// </summary>
-        /// <param name="task"></param>
-        /// <param name="deviceCode"></param>
-        /// <param name="sourceAddress"></param>
-        /// <param name="targetAddress"></param>
-        /// <param name="currentAddress"></param>
-        /// <param name="nextAddress"></param>
-        /// <param name="taskStatus"></param>
+        /// <param name="task">浠诲姟鍘熷璞″疄渚�(鏈慨鏀圭殑鏁版嵁瀵硅薄)</param>
+        /// <param name="taskStatus">淇敼鍚庣殑浠诲姟鐘舵��</param>
+        /// <param name="deviceCode">淇敼鍚庣殑璁惧缂栧彿</param>
+        /// <param name="sourceAddress">淇敼鍚庣殑璧峰鍦板潃</param>
+        /// <param name="targetAddress">淇敼鍚庣殑鐩爣鍦板潃</param>
+        /// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
+        /// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
         void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "");
 
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml"
new file mode 100644
index 0000000..36847ea
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml"
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <DeleteExistingFiles>false</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
index e04bb50..2ba493c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
@@ -13,7 +13,7 @@
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
   //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  "ConnectionString": "Data Source=.;Initial Catalog=TestWCS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   "WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
   "Cors": {
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 9d72778..64d5cae 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"
@@ -181,7 +181,7 @@
                             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 = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi /*|| item.RoadWay == x.ChildPosiDeviceCode || item.RoadWay == x.ChildPosi*/));
                         router = routers.FirstOrDefault();
                         if (router == null)
                         {
@@ -199,6 +199,7 @@
                             {
                                 task.NextAddress = router.NextPosi;
                                 task.DeviceCode = stationManger.StackerCraneCode;
+                                task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
                             }
                             else
                             {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
index 20b791c..0d1cc07 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
@@ -14,6 +14,16 @@
 {
     public partial class TaskService
     {
+        /// <summary>
+        /// 鏇存柊浠诲姟淇℃伅鍙婃坊鍔犱换鍔℃槑缁嗚褰�
+        /// </summary>
+        /// <param name="task">浠诲姟鍘熷璞″疄渚�(鏈慨鏀圭殑鏁版嵁瀵硅薄)</param>
+        /// <param name="taskStatus">淇敼鍚庣殑浠诲姟鐘舵��</param>
+        /// <param name="deviceCode">淇敼鍚庣殑璁惧缂栧彿</param>
+        /// <param name="sourceAddress">淇敼鍚庣殑璧峰鍦板潃</param>
+        /// <param name="targetAddress">淇敼鍚庣殑鐩爣鍦板潃</param>
+        /// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
+        /// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
         public void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "")
         {
             StringBuilder stringBuilder = new StringBuilder(App.User?.UserId == 0 ? $"绯荤粺鑷姩娴佺▼" : "浜哄伐鎵嬪姩娴佺▼");
@@ -82,6 +92,13 @@
 
             _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, stringBuilder.ToString());
 
+            string address = AppSettings.Get("WMSApiAddress");
+            if (!string.IsNullOrEmpty(address))
+            {
+                HttpHelper.Post($"{address}/api/Task/UpdateTaskInfo", task.Serialize());
+            }
+            
+
         }
     }
 }
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 1cf5e15..94217b8 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"
@@ -87,10 +87,7 @@
                                 Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && x.PalletCode == conveyorLineInfoRead.Barcode && x.DeviceCode == item.StationDeviceCode);
                                 if (task != null)
                                 {
-                                    task.CurrentAddress = item.StackerCraneStationCode;
-                                    task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
-                                    task.DeviceCode = item.StackerCraneCode;
-                                    _taskRepository.UpdateData(task);
+                                    _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, currentAddress: item.StackerCraneStationCode);
                                 }
 
                                 device.SetValue(W_ConveyorLineDB.ACK, false, item.StationCode);
@@ -116,13 +113,13 @@
                                     Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode);
                                     if (stationManger == null)
                                     {
-                                        WriteInfo(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                        WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
                                         continue;
                                     }
                                     string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, stationManger.StackerCraneCode);
                                     if (string.IsNullOrEmpty(locationCode))
                                     {
-                                        WriteInfo(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                        WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
                                         continue;
                                     }
                                     _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, currentAddress: stationManger.StackerCraneStationCode, targetAddress: locationCode, nextAddress: locationCode, deviceCode: stationManger.StackerCraneCode);
@@ -145,14 +142,14 @@
                                         Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode);
                                         if (stationManger == null)
                                         {
-                                            WriteInfo(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                            WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
                                             continue;
                                         }
 
                                         Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && (task.CurrentAddress == x.StartPosi));
                                         if (router == null)
                                         {
-                                            WriteInfo(item.StationName, $"鏈壘鍒拌矾鐢遍厤缃俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                            WriteError(item.StationName, $"鏈壘鍒拌矾鐢遍厤缃俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
                                             continue;
                                         }
 
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/ConveyorLineJob_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/ConveyorLineJob_BC.cs"
index 2e763fc..cffd0bb 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/ConveyorLineJob_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/ConveyorLineJob_BC.cs"
@@ -116,13 +116,25 @@
                                 Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.DeviceCode == item.StationDeviceCode && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt());
                                 if (task != null)
                                 {
-                                    _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
+                                    _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
 
                                     device.SetValue(W_ConveyorLineDB.TaskNum, task.TaskNum, item.StationCode);
                                     device.SetValue(W_ConveyorLineDB.StartPos, task.CurrentAddress, item.StationCode);
                                     device.SetValue(W_ConveyorLineDB.EndPos, task.NextAddress, item.StationCode);
                                     device.SetValue(W_ConveyorLineDB.Spare1, ConveyorWorkTypeEnum.Outbound.ObjToInt(), item.StationCode);
                                     device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
+                                }
+                                else
+                                {
+                                    task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && string.IsNullOrEmpty(x.DeviceCode) && x.TaskState == TaskStatusEnum.New.ObjToInt());
+                                    if (task != null)
+                                    {
+                                        Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.CurrentAddress);
+                                        if (stationManger != null)
+                                        {
+                                            _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, deviceCode: stationManger.StackerCraneCode, currentAddress: stationManger.StackerCraneStationCode, nextAddress: task.TargetAddress);
+                                        }
+                                    }
                                 }
                             }
                             else if (!conveyorLineSignalRead.STB && conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && conveyorLineSignalWrite.STB && !conveyorLineSignalWrite.ACK)
@@ -155,7 +167,7 @@
                     }
                     else
                     {
-                        WriteInfo(device.DeviceName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
+                        WriteError(device.DeviceName, $"鏈壘鍒拌澶囧瓙缂栧彿{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 71585c2..06d054b 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"
@@ -85,7 +85,7 @@
                                     Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode);
                                     if (stationManger == null)
                                     {
-                                        WriteInfo(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                        WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
                                         continue;
                                     }
                                     List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && (task.Roadway == x.ChildPosiDeviceCode || task.Roadway == x.ChildPosi));
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 b79bd18..3263fcf 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"
@@ -26,6 +26,8 @@
 using WIDESEAWCS_Core.Caches;
 using Newtonsoft.Json;
 using WIDESEAWCS_TaskInfoService;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using WIDESEAWCS_QuartzJob.Repository;
 
 namespace WIDESEAWCS_Tasks
 {
@@ -38,9 +40,10 @@
         private readonly ITaskRepository _taskRepository;
         private readonly IRouterService _routerService;
         private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly IRouterRepository _routerRepository;
         private List<Dt_ApiInfo> apiInfos;
 
-        public StackerCraneJob_BC(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository)
+        public StackerCraneJob_BC(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository)
         {
             _taskService = taskService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -48,6 +51,7 @@
             _routerService = routerService;
             _stationMangerRepository = stationMangerRepository;
             _cacheService = cacheService;
+            _routerRepository = routerRepository;
 
             string? apiInfoStr = _cacheService.Get("apiInfos");
             if (!string.IsNullOrEmpty(apiInfoStr))
@@ -138,6 +142,14 @@
                             _taskService.UpdateTaskExceptionMessage(taskNum, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
                             return WebResponseContent.Instance.Error($"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
                         }
+                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode);
+                        if (router == null)
+                        {
+                            _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+                            _taskService.UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+                            return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+                        }
+
                         _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: task.TargetAddress);
                     }
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
@@ -250,11 +262,10 @@
                 if (device != null)
                 {
                     OtherDevice client = (OtherDevice)device;
-                    if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤
+                    if (!client.GetValue<R_ConveyorLineDB, bool>(R_ConveyorLineDB.Goods, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤
                     {
                         task.NextAddress = stationManger.StackerCraneStationCode;
                         _taskRepository.UpdateData(task);
-                        client.SetValue(GroundStationDBName.R_IsCanPut, true, stationManger.StationCode);
                         return task;
                     }
                 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js"
index 70a500f..23d4a39 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js"
@@ -12,7 +12,7 @@
 let loadingInstance;
 let loadingStatus = false;
 if (process.env.NODE_ENV == 'development') {
-    axios.defaults.baseURL = window.webConfig.webApiBaseUrl;
+    axios.defaults.baseURL = 'http://10.30.100.52:9293/';
 }
 else if (process.env.NODE_ENV == 'debug') {
     axios.defaults.baseURL = 'http://127.0.0.1:8098/';
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/extend/palletCodeAdd.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/extend/palletCodeAdd.vue"
new file mode 100644
index 0000000..7ad7205
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/extend/palletCodeAdd.vue"
@@ -0,0 +1,169 @@
+<template>
+  <div>
+    <vol-box
+      v-model="showDetialBox"
+      :lazy="true"
+      width="600px"
+      :padding="15"
+      title="鎵撳嵃"
+    >
+      <div>
+        <el-form>
+          <el-form-item required label="璇烽�夋嫨浠撳簱锛�">
+            <el-select
+              v-model="warehouseId"
+              filterable
+              placeholder="璇烽�夋嫨"
+              @change="getPalletType"
+            >
+              <el-option
+                v-for="item in warehouses"
+                :key="item.key"
+                :label="item.value"
+                :value="item.key"
+              >
+                <span style="float: left">{{ item.value }}</span>
+                <span style="float: right; color: #8492a6; font-size: 13px">{{
+                  item.key
+                }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item required label="璇疯緭鍏ユ暟閲忥細"
+            ><el-input-number
+              v-model="num"
+              :min="1"
+              :max="100"
+              label="璇疯緭鍏ユ暟閲�"
+            ></el-input-number>
+          </el-form-item>
+          <el-form-item
+            required
+            label="璇烽�夋嫨鎵樼洏绫诲瀷锛�"
+            v-show="warehouseId != ''"
+          >
+            <el-radio-group v-model="palletType">
+              <el-radio
+                v-for="item in palletTypes"
+                :key="item.key"
+                :label="item"
+                >{{ item.value }}</el-radio
+              >
+            </el-radio-group>
+          </el-form-item>
+        </el-form>
+      </div>
+      <template #footer>
+        <el-button type="primary" size="small" @click="submit">纭</el-button>
+        <el-button type="danger" size="small" @click="close">鍏抽棴</el-button>
+      </template>
+    </vol-box>
+  </div>
+</template>
+    
+    <script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+  components: { VolBox },
+  data() {
+    return {
+      showDetialBox: false,
+      warehouses: [],
+      warehouseId: "",
+      palletType: "",
+      palletTypes: [],
+      num: 1,
+    };
+  },
+  methods: {
+    open() {
+      if (this.warehouses.length == 0) {
+        this.getWarehouseInfos();
+      }
+      if (this.warehouses.length == 1) {
+            this.warehouseId = this.warehouses[0].key;
+          }
+      this.showDetialBox = true;
+    },
+    getWarehouseInfos() {
+      this.http
+        .post("api/Warehouse/GetWarehouseDicByUser", null, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.warehouses = x.data;
+          if (this.warehouses.length == 1) {
+            this.warehouseId = this.warehouses[0].key;
+          }
+        });
+    },
+    getPalletType() {
+      this.palletTypes = this.warehouses.find(
+        (x) => x.key == this.warehouseId
+      ).extra;
+    },
+    close() {
+      this.showDetialBox = false;
+      if (this.warehouses.length > 1) {
+        this.warehouseId = "";
+      }
+      this.palletType = "";
+    },
+    submit() {
+      this.http
+        .post(
+          `api/PalletCodeInfo/AddPalletCodeData?count=${this.num}&warehouseId=${this.warehouseId}&palletTypeId=${this.palletType.key}`,
+          null,
+          "鏁版嵁澶勭悊涓�"
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.$parent.refresh();
+          this.close();
+        });
+    },
+  },
+  created() {},
+};
+</script>
+    
+    <style scoped>
+.el-col {
+  border-radius: 4px;
+}
+
+.grid-content {
+  border-radius: 4px;
+  min-height: 36px;
+}
+
+.content-text {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.right-text {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+</style>
+    <style>
+.el-table .warning-row {
+  background: #e6a23c;
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.el-table .error-row {
+  background: #f56c6c;
+}
+
+canvas {
+  display: block;
+  margin: auto;
+}
+</style>
\ 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/basic/palletCodeInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/palletCodeInfo.js"
index 786d497..6c2dee4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/palletCodeInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/palletCodeInfo.js"
@@ -1,9 +1,10 @@
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 import gridBody from './extend/printView.vue'
+import gridHeader from './extend/palletCodeAdd.vue'
 let extension = {
   components: {
     //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-    gridHeader: '',
+    gridHeader: gridHeader,
     gridBody: gridBody,
     gridFooter: '',
     //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
@@ -15,7 +16,14 @@
   buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
   methods: {
     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-    onInit() {  //妗嗘灦鍒濆鍖栭厤缃墠锛�
+    onInit() {  
+      let addBtn = this.buttons.find(x => x.value == 'Add');
+      if (addBtn) {
+        addBtn.onClick = function () {
+          this.$refs.gridHeader.open();
+        }
+      }
+      //妗嗘灦鍒濆鍖栭厤缃墠锛�
       this.columns.push({
         field: '鎿嶄綔',
         title: '鎿嶄綔',
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 db301d8..a087196 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"
@@ -71,7 +71,7 @@
             <img class="user-header" :src="userImg" :onerror="errorImg" />
           </div>
           <div class="user">
-            <span>{{ userName }}</span>
+            <span>{{ userTrueName }}</span>
             <span id="index-date"></span>
           </div>
           <div class="settings">
@@ -281,6 +281,7 @@
     //2022.05.29澧炲姞tab閫夐」涓庤彍鍗曡仈鍔ㄥ姛鑳�
     const currentMenuId = ref(0);
     const userName = ref("--");
+    const userTrueName = ref("--");
     const userInfo = ref({});
     const visibleItem = reactive({
       left: false,
@@ -598,8 +599,8 @@
 
       let _userInfo = store.getters.getUserInfo();
       if (_userInfo) {
-        console.log(_userInfo);
-        userName.value = _userInfo.trueNmae;
+        userName.value = _userInfo.userName;
+        userTrueName.value = _userInfo.userTrueName;
         if (_userInfo.img) {
           userImg.value = _config.base.getImgSrc(_userInfo.img, http.ipAddress);
         }
@@ -661,6 +662,7 @@
       errorImg,
       userInfo,
       userName,
+      userTrueName,
       userImg,
       selectId,
       selectMenuIndex,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue"
index f3f8885..b53cf53 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue"
@@ -19,18 +19,18 @@
 export default defineComponent({
   setup() {
     const table = ref({
-      key: "user_Id",
+      key: "userId",
       footer: "Foots",
       cnName: "鐢ㄦ埛绠$悊",
       name: "Sys_User",
       url: "/User/",
-      sortName: "user_Id",
+      sortName: "userId",
     });
     const editFormFields = ref({
       systemType: "0",
       userName: "",
       userTrueName: "",
-      roleId: [],
+      roleId: "",
       deptIds: "",
       enable: "",
       gender: "",
@@ -47,7 +47,7 @@
           title: "瑙掕壊",
           required: true,
           field: "roleId",
-          type: "cascader",
+          type: "select",
         },
       ],
       // [
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/157ae1fd-6c00-4a8d-bfe7-e0b23990d57b.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/157ae1fd-6c00-4a8d-bfe7-e0b23990d57b.vsidx"
deleted file mode 100644
index 363e52e..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/157ae1fd-6c00-4a8d-bfe7-e0b23990d57b.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/24d336e2-4ecf-49a4-b35f-69e0e3bc8d65.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/24d336e2-4ecf-49a4-b35f-69e0e3bc8d65.vsidx"
deleted file mode 100644
index 290d52a..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/24d336e2-4ecf-49a4-b35f-69e0e3bc8d65.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ae4399a-b674-44c1-b399-de956d3e1f8a.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ae4399a-b674-44c1-b399-de956d3e1f8a.vsidx"
deleted file mode 100644
index 715da9b..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ae4399a-b674-44c1-b399-de956d3e1f8a.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx"
new file mode 100644
index 0000000..249ddd8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3ba3019c-440c-48eb-82b3-06cc25ec7301.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/872f6857-ecdf-4715-ac7a-765ab4769441.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/872f6857-ecdf-4715-ac7a-765ab4769441.vsidx"
deleted file mode 100644
index 6e724b6..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/872f6857-ecdf-4715-ac7a-765ab4769441.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b0001941-8c45-456e-a7be-53676400c6a8.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b0001941-8c45-456e-a7be-53676400c6a8.vsidx"
new file mode 100644
index 0000000..aac3b1f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b0001941-8c45-456e-a7be-53676400c6a8.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d5a3168f-61c4-46c2-a7e5-00e778c348c5.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d5a3168f-61c4-46c2-a7e5-00e778c348c5.vsidx"
new file mode 100644
index 0000000..8430a0f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d5a3168f-61c4-46c2-a7e5-00e778c348c5.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/e1699c03-c050-4a8a-9e44-918bffcfc3ce.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/e1699c03-c050-4a8a-9e44-918bffcfc3ce.vsidx"
deleted file mode 100644
index 11b5b65..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/e1699c03-c050-4a8a-9e44-918bffcfc3ce.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fe4c888c-4628-47ca-995c-f8221d13ee48.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fe4c888c-4628-47ca-995c-f8221d13ee48.vsidx"
deleted file mode 100644
index 38bc46e..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fe4c888c-4628-47ca-995c-f8221d13ee48.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/read.lock" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/read.lock"
deleted file mode 100644
index e69de29..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/read.lock"
+++ /dev/null
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs"
index f241f34..c0777b0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs"
@@ -11,13 +11,19 @@
 using WIDESEA_Model.Models;
 using WIDESEA_Core.Helper;
 using WIDESEA_Common.CommonEnum;
+using WIDESEA_Core.Caches;
 
 namespace WIDESEA_BasicService
 {
     public partial class WarehouseService : ServiceBase<Dt_Warehouse, IWarehouseRepository>, IWarehouseService
     {
-        public WarehouseService(IWarehouseRepository BaseDal) : base(BaseDal)
+        private readonly ICacheService _cacheService;
+        private readonly IPalletTypeInfoRepository _palletTypeInfoRepository;
+
+        public WarehouseService(IWarehouseRepository BaseDal,ICacheService cacheService, IPalletTypeInfoRepository palletTypeInfoRepository) : base(BaseDal)
         {
+            _cacheService = cacheService;
+            _palletTypeInfoRepository = palletTypeInfoRepository;
         }
 
         public IWarehouseRepository Repository => BaseDal;
@@ -75,5 +81,7 @@
         {
             return WarehouseDisableStatus(new int[] { key });
         }
+
+
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs"
index 220c2a5..e93ce7b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs"
@@ -18,9 +18,12 @@
     public class PalletCodeInfoService : ServiceBase<Dt_PalletCodeInfo, IPalletCodeInfoRepository>, IPalletCodeInfoService
     {
         private readonly IWarehouseRepository _warehouseRepository;
-        public PalletCodeInfoService(IPalletCodeInfoRepository BaseDal, IWarehouseRepository warehouseRepository) : base(BaseDal)
+        private readonly IPalletTypeInfoRepository _palletTypeInfoRepository;
+
+        public PalletCodeInfoService(IPalletCodeInfoRepository BaseDal, IWarehouseRepository warehouseRepository, IPalletTypeInfoRepository palletTypeInfoRepository) : base(BaseDal)
         {
             _warehouseRepository = warehouseRepository;
+            _palletTypeInfoRepository = palletTypeInfoRepository;
         }
 
         static object locker = new object();
@@ -51,9 +54,9 @@
                 {
                     serialNo = 1;
                 }
-                Dt_Warehouse _Warehouse = _warehouseRepository.QueryFirst(x=>x.WarehouseId== warehouseId);
-
-                string uplen = _Warehouse.WarehouseCode switch
+                Dt_Warehouse _Warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
+                string uplen = "";
+                switch (_Warehouse.WarehouseCode)
                 {
                     "HA57" => "B",
                     "HA58" => "P",
@@ -67,11 +70,11 @@
                 };
                 for (int i = 0; i < count; i++)
                 {
-                    
+
                     palletCodeInfos.Add(new Dt_PalletCodeInfo
                     {
                         SerialNo = serialNo,
-                        PalletCode = uplen+now.ToString("yyyyMMdd") + serialNo.ToString().PadLeft(3, '0'),
+                        PalletCode = uplen + now.ToString("yyyyMMdd") + serialNo.ToString().PadLeft(3, '0'),
                         PalletType = 1,
                         PalletTypeId = 0,
                         WarehouseId = warehouseId,
@@ -84,13 +87,65 @@
                 return base.AddData(palletCodeInfos);
             }
         }
+
+        public WebResponseContent AddData(int warehouseId, int count, int palletTypeId)
+        {
+            try
+            {
+                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.Id == palletTypeId && x.WarehouseId == warehouseId);
+                if (palletTypeInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樼被鍨嬮厤缃俊鎭�");
+                }
+                lock (locker)
+                {
+                    List<Dt_PalletCodeInfo> palletCodeInfos = new List<Dt_PalletCodeInfo>();
+                    int serialNo = 0;
+                    DateTime now = DateTime.Now;
+                    Dt_PalletCodeInfo palletCodeInfo = BaseDal.QueryFirst(x => x.WarehouseId == warehouseId, new Dictionary<string, OrderByType> { { nameof(Dt_PalletCodeInfo.SerialNo), OrderByType.Desc } });
+                    if (palletCodeInfo != null && palletCodeInfo.CreateDate.Year == now.Year && palletCodeInfo.CreateDate.Month == now.Month && palletCodeInfo.CreateDate.Day == now.Day)
+                    {
+                        serialNo = palletCodeInfo.SerialNo + 1;
+
+                    }
+                    else
+                    {
+                        serialNo = 1;
+                    }
+
+                    for (int i = 0; i < count; i++)
+                    {
+
+                        palletCodeInfos.Add(new Dt_PalletCodeInfo
+                        {
+                            SerialNo = serialNo,
+                            PalletCode = palletTypeInfo.CodeStartStr + now.ToString("yyyyMMdd") + serialNo.ToString().PadLeft(3, '0'),
+                            PalletType = 1,
+                            PalletTypeId = 0,
+                            WarehouseId = warehouseId,
+                            Status = 0,
+                            Size = 0
+                        });
+
+                        serialNo = serialNo + 1;
+                    }
+                    BaseDal.AddData(palletCodeInfos);
+                }
+                return WebResponseContent.Instance.OK();
+            }
+            catch(Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
         public WebResponseContent PrintStatusUp(string printCode)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_PalletCodeInfo palletCodeInfo = BaseDal.QueryFirst(x=>x.PalletCode==printCode);
-                if (palletCodeInfo==null)
+                Dt_PalletCodeInfo palletCodeInfo = BaseDal.QueryFirst(x => x.PalletCode == printCode);
+                if (palletCodeInfo == null)
                 {
                     return content.Error("鎵撳嵃鐨勬墭鐩樼爜涓嶅瓨鍦�");
                 }
@@ -100,7 +155,7 @@
             }
             catch (Exception ex)
             {
-                content.Error("閿欒:"+ex.Message);
+                content.Error("閿欒:" + ex.Message);
             }
             return content;
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs"
index 1353a56..768ee2f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs"
@@ -3,14 +3,37 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HostedService;
+using WIDESEA_DTO.System;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_BasicService
 {
-    public partial class WarehouseService : ServiceBase<Dt_Warehouse, IWarehouseRepository>, IWarehouseService
+    public partial class WarehouseService
     {
+        public WebResponseContent GetWarehouseDicByUser()
+        {
+            try
+            {
+                List<int> warehouseIds = Db.Queryable<Sys_RoleDataPermission>().Where(x => x.RoleId == App.User.RoleId).Select(x => x.WarehouseId).ToList();
+                List<DictionaryDTO> dic = Repository.QueryData(x => new DictionaryDTO { Key = x.WarehouseId, Value = x.WarehouseName + $"({x.WarehouseCode})" }, x => warehouseIds.Contains(x.WarehouseId)).ToList();
+                List<Dt_PalletTypeInfo> palletTypeInfos = _palletTypeInfoRepository.QueryData();//x => x.TypeName + $"({x.CodeStartStr})", x => true
+                dic.ForEach(x =>
+                {
+                    x.Extra = palletTypeInfos.Where(v => v.WarehouseId == x.Key.ObjToInt()).Select(x => new DictionaryDTO { Key = x.Id, Value = x.TypeName + $"({x.CodeStartStr})" }).ToList();
+                });
+
+                return WebResponseContent.Instance.OK(data: dic);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
index fed318a..41c5bd7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
@@ -908,7 +908,8 @@
                             }
                         }
                     }
-                    _db.InsertableByObject(obj).AS(type.Name + "_Hty").ExecuteCommand();
+                    if (obj != null)
+                        _db.InsertableByObject(obj).AS(type.Name + "_Hty").ExecuteCommand();
                 }
             }
             return DeleteData(entity);
@@ -960,7 +961,8 @@
                             list.Add(obj);
                         }
                     }
-                    _db.InsertableByObject(list).AS(type.Name + "_Hty").ExecuteCommand();
+                    if (list.Count > 0)
+                        _db.InsertableByObject(list).AS(type.Name + "_Hty").ExecuteCommand();
 
                 }
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
index 23c0f6a..98d28b2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
@@ -80,7 +80,7 @@
             return pageGridData;
         }
 
-        void ValidatePageOptions(PageDataOptions options, PropertyInfo[] entityProperties, ref ISugarQueryable<TEntity> sugarQueryable)
+        protected void ValidatePageOptions(PageDataOptions options, PropertyInfo[] entityProperties, ref ISugarQueryable<TEntity> sugarQueryable)
         {
             string where = string.Empty;
             List<SearchParameters> searchParametersList = new List<SearchParameters>();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
index 1656f81..0ff7fb6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/PermissionDataHostService.cs"
@@ -87,6 +87,51 @@
             return userRoles;
         }
 
+        public static List<UserRole> GetUserRoles(ISqlSugarClient db, int userId)
+        {
+            List<ExpandoObject> roles = db.Queryable("Sys_Role", "x").Select(RoleSelectModes).ToList();
+            List<dynamic> roleDynamics = new List<dynamic>();
+            foreach (var item in roles)
+            {
+                roleDynamics.Add(item);
+            }
+
+            List<dynamic> roleDataDynamics = new List<dynamic>();
+            List<ExpandoObject> roleDatas = db.Queryable("Sys_RoleDataPermission", "x").Select(RoleDataSelectModes).ToList();
+            foreach (var item in roleDatas)
+            {
+                roleDataDynamics.Add(item);
+            }
+
+            List<ExpandoObject> users = db.Queryable("Sys_User", "x").Where($"UserId={userId}").Select(UserSelectModes).ToList();
+
+            List<UserRole> userRoles = new List<UserRole>();
+            foreach (var item in users)
+            {
+                dynamic user = item;
+                dynamic? role = roleDynamics.FirstOrDefault(x => x.RoleId == user.RoleId);
+                List<object> warehouseIds = roleDataDynamics.Where(x => x.RoleId == user.RoleId).Select(x => x.WarehouseId).ToList();
+                List<int> ids = new List<int>();
+                for (int i = 0; i < warehouseIds.Count; i++)
+                {
+                    ids.Add(Convert.ToInt32(warehouseIds[i]));
+                }
+                if (role != null)
+                {
+                    userRoles.Add(new UserRole
+                    {
+                        RoleId = role.RoleId,
+                        RoleName = role.RoleName,
+                        ParentId = role.ParentId,
+                        UserId = user.UserId,
+                        UserName = user.UserName,
+                        WarehouseIds = ids
+                    });
+                }
+            }
+            return userRoles;
+        }
+
         static List<SelectModel> RoleSelectModes = new List<SelectModel>()
         {
             new SelectModel()
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs"
index 4ad30c7..87092e2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs"
@@ -86,6 +86,8 @@
 
         public bool IsSuperAdmin => IsRoleIdSuperAdmin(RoleId);
 
+        public bool IsHighestRole => UserId == 1;
+
         public List<string> GetUserInfoFromToken(string ClaimType)
         {
             var jwtHandler = new JwtSecurityTokenHandler();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs"
index 1c3acbe..0c40736 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs"
@@ -24,11 +24,11 @@
         /// </summary>
         long TenantId { get; }
 
-        int RoleId { get;}
+        int RoleId { get; }
 
         string Token { get; }
 
-        int MenuType {  get; }
+        int MenuType { get; }
 
         void UpdateToke(string token);
 
@@ -46,7 +46,9 @@
 
         List<string> GetUserInfoFromToken(string ClaimType);
 
-        bool IsSuperAdmin {  get; }
+        bool IsSuperAdmin { get; }
+
+        bool IsHighestRole { get; }
 
         bool IsRoleIdSuperAdmin(int roleId);
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
index e576b3d..a6c169c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
@@ -1,6 +1,7 @@
 锘縰sing Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -83,28 +84,36 @@
         private string RequestDataLog(HttpContext context)
         {
             var request = context.Request;
-            var sr = new StreamReader(request.Body);
-
-            object obj = new
+            if (request.ContentType?.ToLower() != "multipart/form-data" && request.ContentLength <= 100000)
             {
-                QueryString = request.QueryString.ToString(),
-                BodyData = sr.ReadToEndAsync().Result
-            };
+                var sr = new StreamReader(request.Body);
 
-            string data = JsonConvert.SerializeObject(obj);
+                object obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = sr.ReadToEndAsync().Result
+                };
 
-            request.Body.Position = 0;
+                string data = JsonConvert.SerializeObject(obj);
 
-            return data;
+                request.Body.Position = 0;
+
+                return data;
+            }
+            return "";
         }
 
         private string ResponseDataLog(HttpResponse response)
         {
-            response.Body.Position = 0;
-            using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
-            string body = stream.ReadToEnd();
-            response.Body.Position = 0;
-            return body;
+            if (response.ContentType?.ToLower() != "multipart/form-data" && response.ContentLength <= 100000)
+            {
+                response.Body.Position = 0;
+                using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
+                string body = stream.ReadToEnd();
+                response.Body.Position = 0;
+                return body;
+            }
+            return "";
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs"
new file mode 100644
index 0000000..c914b41
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.System
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DictionaryDTO
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public object Key {  get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public object Value {  get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public object Extra {  get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
index 5e6fe8e..570a8c1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
@@ -1,4 +1,6 @@
-锘縰sing System;
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -11,6 +13,92 @@
     /// </summary>
     public class WCSTaskDTO
     {
-       // public int Task
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        public int TaskId { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNum { get; set; }
+        /// <summary>
+        /// AGV浠诲姟鍙�
+        /// </summary>
+        public string AgvTaskNum { get; set; }
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏绫诲瀷
+        /// </summary>
+        public int PalletType { get; set; }
+
+        /// <summary>
+        /// 璁惧缂栧彿
+        /// </summary>
+        public string DeviceCode { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        public string Roadway { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public int TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public int TaskState { get; set; }
+
+        /// <summary>
+        /// 璧峰鍦板潃
+        /// </summary>
+        public string SourceAddress { get; set; }
+
+        /// <summary>
+        /// 鐩爣鍦板潃
+        /// </summary>
+        public string TargetAddress { get; set; }
+
+        /// <summary>
+        /// 褰撳墠浣嶇疆
+        /// </summary>
+        public string CurrentAddress { get; set; }
+
+        /// <summary>
+        /// 涓嬩竴鍦板潃
+        /// </summary>
+        public string NextAddress { get; set; }
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public string? ExceptionMessage { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Grade { get; set; }
+
+        /// <summary>
+        /// WMS浠诲姟涓婚敭
+        /// </summary>
+        public int WMSId { get; set; }
+
+        /// <summary>
+        /// 浠诲姟涓嬪彂鏃堕棿
+        /// </summary>
+        public DateTime? Dispatchertime { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs"
index 51916de..1961cf4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs"
@@ -11,7 +11,21 @@
 {
     public interface IPalletCodeInfoService : IService<Dt_PalletCodeInfo>
     {
-        //鏇存柊鎵撳嵃鐘舵��
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="warehouseId"></param>
+        /// <param name="count"></param>
+        /// <param name="palletTypeId"></param>
+        /// <returns></returns>
+        WebResponseContent AddData(int warehouseId, int count, int palletTypeId);
+
+        /// <summary>
+        /// 鏇存柊鎵撳嵃鐘舵��
+        /// </summary>
+        /// <param name="printCode"></param>
+        /// <returns></returns>
         WebResponseContent PrintStatusUp(string printCode);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
index b004d66..fbe0142 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
@@ -41,5 +41,11 @@
         /// <param name="key">浠撳簱涓婚敭</param>
         /// <returns></returns>
         WebResponseContent WarehouseDisableStatus(int key);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent GetWarehouseDicByUser();
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs"
index 2630049..a71ba42 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs"
@@ -17,6 +17,6 @@
 
         void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, float beforeQuantity, float totalQuantity, StockChangeTypeEnum changeType, int? taskNum = null);
 
-        void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> updateDetails, List<Dt_StockInfoDetail> deleteDetails, StockChangeTypeEnum changeType, int? taskNum = null);
+        void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> residueDetailList, List<Dt_StockInfoDetail> updateDetails, List<Dt_StockInfoDetail> deleteDetails, StockChangeTypeEnum changeType, int? taskNum = null);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs"
index ecf033c..f99e354 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_RoleService.cs"
@@ -16,6 +16,8 @@
     {
         ISys_RoleRepository Repository { get; }
 
+        List<int> GetAllChildrenRoleId(int roleId);
+
         List<RoleNodes> GetAllChildren(int roleId);
 
         WebResponseContent GetCurrentTreePermission();
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 41ecf7e..021df9b 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"
@@ -30,6 +30,7 @@
 using WIDESEA_DTO.ERP;
 using WIDESEA_DTO.MES;
 using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.Task;
 using WIDESEA_ITaskInfoRepository;
 using WIDESEA_Model.Models;
 
@@ -196,6 +197,19 @@
         /// <returns></returns>
         MesResponseContent SubstrateBack(SubstrateBackModel model);
 
+        /// <summary>
+        /// 鍒嗛厤宸烽亾
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <param name="roadwayNos"></param>
+        /// <returns></returns>
         WebResponseContent AssignRoadway(int taskNum, List<string> roadwayNos);
+
+        /// <summary>
+        /// 淇敼浠诲姟鐘舵��
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        WebResponseContent UpdateTaskInfo(WCSTaskDTO task);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService_Pick.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService_Pick.cs"
index 07384b3..79b47fc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService_Pick.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService_Pick.cs"
@@ -36,7 +36,11 @@
                 {
                     return WebResponseContent.Instance.Error($"璇ユ墭鐩樿繕鏈嚭搴撳畬鎴�");
                 }
-                List<Dt_OutStockLockInfo> outStockLockInfos = Repository.QueryData(x => x.PalletCode == palletCode);
+                List<Dt_OutStockLockInfo> outStockLockInfos = Repository.QueryData(x => x.PalletCode == palletCode && x.Status == OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
+                if (outStockLockInfos == null || outStockLockInfos.Count == 0)
+                {
+                    return WebResponseContent.Instance.Error("璇ユ墭鐩樺凡鍏ㄩ儴鍒嗘嫞瀹屾垚");
+                }
                 for (int i = 0; i < outStockLockInfos.Count; i++)
                 {
                     outStockLockInfos[i].Status = OutLockStockStatusEnum.鎷i�夊畬鎴�.ObjToInt();
@@ -44,6 +48,7 @@
                 List<Dt_StockInfoDetail> beforeDetaile = stockInfo.Details.GroupBy(x => x.MaterielCode).Select(x => new Dt_StockInfoDetail { MaterielCode = x.Key, StockQuantity = x.Sum(v => v.StockQuantity) }).ToList();
                 List<Dt_StockInfoDetail> updateDetailList = new List<Dt_StockInfoDetail>();
                 List<Dt_StockInfoDetail> deleteDetailList = new List<Dt_StockInfoDetail>();
+                List<Dt_StockInfoDetail> residueDetailList = new List<Dt_StockInfoDetail>();
                 for (int i = 0; i < stockInfo.Details.Count; i++)
                 {
                     if (stockInfo.Details[i].OutboundQuantity > 0)
@@ -58,30 +63,26 @@
                             deleteDetailList.Add(stockInfo.Details[i]);
                         }
                     }
+                    else
+                    {
+                        residueDetailList.Add(stockInfo.Details[i]);
+                    }
                 }
 
                 List<string> mCodes = stockInfo.Details.GroupBy(x => x.MaterielCode).Select(x => x.Key).ToList();
                 _unitOfWorkManage.BeginTran();
                 foreach (string code in mCodes)
                 {
-                    _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, updateDetailList, deleteDetailList, StockChangeTypeEnum.Outbound);
+                    _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, residueDetailList, updateDetailList, deleteDetailList, StockChangeTypeEnum.Outbound);
                 }
                 updateDetailList.ForEach(x =>
                 {
                     x.OutboundQuantity = 0;
                 });
-                stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
-                //_stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(deleteDetailList, OperateTypeEnum.鑷姩瀹屾垚);
-                if (stockInfo.Details.Sum(x=>x.StockQuantity)== stockInfo.Details.Sum(x => x.OutboundQuantity))
-                {
-                    _stockService.StockInfoService.Repository.DeleteData(stockInfo);
-                }
-                else
-                {
-                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-                }
+
+                _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(deleteDetailList, OperateTypeEnum.鑷姩瀹屾垚);
                 _stockService.StockInfoDetailService.Repository.UpdateData(updateDetailList);
-                _stockService.StockInfoDetailService.Repository.DeleteData(deleteDetailList);
+                //_stockService.StockInfoDetailService.Repository.DeleteData(deleteDetailList);
                 BaseDal.UpdateData(outStockLockInfos);
                 _unitOfWorkManage.BeginTran();
                 return WebResponseContent.Instance.OK();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs"
index 685992d..adf306a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs"
@@ -54,7 +54,7 @@
             }
         }
 
-        public void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> updateDetails, List<Dt_StockInfoDetail> deleteDetails, StockChangeTypeEnum changeType, int? taskNum = null)
+        public void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> residueDetailList, List<Dt_StockInfoDetail> updateDetails, List<Dt_StockInfoDetail> deleteDetails, StockChangeTypeEnum changeType, int? taskNum = null)
         {
             try
             {
@@ -62,12 +62,15 @@
 
                 int index1 = 0;
                 List<Dt_StockQuantityChangeRecord> records1 = _mapper.Map<List<Dt_StockQuantityChangeRecord>>(updateDetails);
+                float beforeQuantity = updateDetails.Sum(x => x.OutboundQuantity + x.StockQuantity) + deleteDetails.Sum(x => x.StockQuantity) + residueDetailList.Sum(x => x.StockQuantity);
+
                 records1.ForEach(x =>
                 {
                     x.PalleCode = stockInfo.PalletCode;
-                    x.BeforeQuantity = deleteDetails[index1].StockQuantity + deleteDetails[index1].OutboundQuantity;
-                    x.ChangeQuantity = -deleteDetails[index1].OutboundQuantity;
-                    x.AfterQuantity = deleteDetails[index1].StockQuantity;
+                    x.BeforeQuantity = beforeQuantity;
+                    x.ChangeQuantity = -updateDetails[index1].OutboundQuantity;
+                    x.AfterQuantity = beforeQuantity + x.ChangeQuantity;
+                    beforeQuantity -= updateDetails[index1].OutboundQuantity;
                     index1++;
                 });
                 stockQuantityChangeRecords.AddRange(records1);
@@ -76,9 +79,10 @@
                 records2.ForEach(x =>
                 {
                     x.PalleCode = stockInfo.PalletCode;
-                    x.BeforeQuantity = deleteDetails[index2].StockQuantity;
+                    x.BeforeQuantity = beforeQuantity;
                     x.ChangeQuantity = -deleteDetails[index2].StockQuantity;
-                    x.AfterQuantity = 0;
+                    x.AfterQuantity = beforeQuantity + x.ChangeQuantity;
+                    beforeQuantity -= deleteDetails[index2].StockQuantity;
                     index2++;
                 });
                 stockQuantityChangeRecords.AddRange(records2);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
index b71749e..db45659 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
@@ -124,6 +124,11 @@
             return WebResponseContent.Instance.OK();
         }
 
+        public List<int> GetAllChildrenRoleId(int roleId)
+        {
+            return GetAllChildren(roleId).Select(x => x.Id).ToList();
+        }
+
         public List<RoleNodes> GetAllChildren(int roleId)
         {
             if (roleId <= 0) return new List<RoleNodes>() { };
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
index fe09cc4..9dbed5c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
@@ -14,6 +14,11 @@
 using SqlSugar;
 using ICacheService = WIDESEA_Core.Caches.ICacheService;
 using HslCommunication.WebSocket;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using MailKit.Search;
+using OrderByType = SqlSugar.OrderByType;
+using System.Drawing.Printing;
 
 namespace WIDESEA_SystemService
 {
@@ -22,14 +27,16 @@
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly ICacheService _cacheService;
         private readonly ISys_MenuService _menuService;
+        private readonly ISys_RoleService _roleService;
 
         public ISys_UserRepository Repository => BaseDal;
 
-        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService) : base(repository)
+        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService, ISys_RoleService roleService) : base(repository)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _cacheService = cacheService;
             _menuService = menuService;
+            _roleService = roleService;
         }
 
         public WebResponseContent Login(LoginInfo loginInfo)
@@ -74,8 +81,10 @@
                     });
 
                     _cacheService.AddOrUpdate(user.UserId.ToString(), token);
+                    if (PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == user.UserId) == null)
+                        PermissionDataHostService.UserRoles.AddRange(PermissionDataHostService.GetUserRoles(Db, user.UserId));
 
-                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserName, img = user.HeadImageUrl,trueNmae=user.UserTrueName });
+                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserName, img = user.HeadImageUrl, user.UserTrueName });
                 }
                 else
                 {
@@ -103,6 +112,40 @@
             return base.UpdateData(saveModel);
         }
 
+        public override PageGridData<Sys_User> GetPageData(PageDataOptions options)
+        {
+            int roleId = -1;
+            //鏍戝舰鑿滃崟浼犳煡璇㈣鑹蹭笅鎵�鏈夌敤鎴�
+            if (options.Value != null)
+            {
+                roleId = options.Value.ObjToInt();
+            }
+
+            if (roleId <= 0)
+            {
+                if (App.User.IsHighestRole) return base.GetPageData(options);
+                roleId = App.User.RoleId;
+            }
+            int totalCount = 0;
+            List<int> roleIds = _roleService.GetAllChildrenRoleId(roleId).Where(x => x != roleId).ToList();
+            ISugarQueryable<Sys_User> sugarQueryable = Db.Queryable<Sys_User>();
+            ValidatePageOptions(options, TProperties, ref sugarQueryable);
+
+            Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(TProperties);
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderbyDic)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            List<Sys_User> users = sugarQueryable.Where(x => roleIds.Contains(x.RoleId) || x.UserId == App.User.UserId).OrderBy(orderByModels).ToPageList(options.Page, options.Rows, ref totalCount);
+            return new PageGridData<Sys_User> { Rows = users, Total = totalCount };
+        }
+
         public override WebResponseContent AddData(SaveModel saveModel)
         {
             string pwd = "123456";
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs"
index 5580db0..ba1c709 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/AssignInboundTaskLocation_BC.cs"
@@ -18,7 +18,7 @@
         /// 鍏ュ簱浠诲姟鐢宠鍒嗛厤璐т綅
         /// </summary>
         /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="roadwayNo">宸烽亾鍙�</param>
+        /// <param name="roadwayNos">宸烽亾鍙�</param>
         /// <returns></returns>
         public WebResponseContent AssignRoadway(int taskNum, List<string> roadwayNos)
         {
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 36030d6..b7e9b28 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"
@@ -112,12 +112,12 @@
                 {
                     x.AGVArea = agvDescription;
                 });
-                string address = AppSettings.Get("WCSApiAddress");
-                if (string.IsNullOrEmpty(address))
+                string url = AppSettings.Get("WCS");
+                if(string.IsNullOrEmpty(url))
                 {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒癢CSApi鍦板潃");
+                    throw new Exception($"鏈壘鍒癢CSAApi鍦板潃,璇锋鏌ラ厤缃枃浠�");
                 }
-                string response = HttpHelper.Post($"{address}/api/Task/ReceiveTask", taskDTOs.Serialize());
+                string response = HttpHelper.Post($"{url}/api/Task/ReceiveTask", taskDTOs.Serialize());
 
                 return JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("杩斿洖閿欒");
             }
@@ -135,12 +135,12 @@
         {
             try
             {
-                string address = AppSettings.Get("WCSApiAddress");
-                if (string.IsNullOrEmpty(address))
+                string url = AppSettings.Get("WCS");
+                if (string.IsNullOrEmpty(url))
                 {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒癢CSApi鍦板潃");
+                    throw new Exception($"鏈壘鍒癢CSAApi鍦板潃,璇锋鏌ラ厤缃枃浠�");
                 }
-                string response = HttpHelper.Post($"{address}/api/CTU_AGV/PutFinish?code=" + code);
+                string response = HttpHelper.Post($"{url}/api/CTU_AGV/PutFinish", code);
 
                 return JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("杩斿洖閿欒");
             }
@@ -352,7 +352,7 @@
                     {
                         if (task.TaskType == TaskTypeEnum.MesOutbound.ObjToInt())
                         {
-                            Dt_MesOutboundOrder mesOutboundOrder = _outboundService.MesOutboundOrderService.Repository.QueryFirst(x => x.Id == item.OrderDetailId);
+                            Dt_MesOutboundOrder mesOutboundOrder = _outboundService.MesOutboundOrderService.Repository.QueryFirst(x => x.TaskNo == item.OrderNo);
                             if (mesOutboundOrder != null)
                             {
                                 mesOutboundOrder.OverOutQuantity = item.AssignQuantity;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs"
index 54f6266..d5025b0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Completed.cs"
@@ -69,7 +69,13 @@
                 {
                     x.AGVArea = agvDescription;
                 });
-                string response = HttpHelper.Post("http://127.0.0.1:9281/api/Task/ReceiveTask", taskDTOs.Serialize());
+
+                string url = AppSettings.Get("WCS");
+                if (string.IsNullOrEmpty(url))
+                {
+                    throw new Exception($"鏈壘鍒癢CSAApi鍦板潃,璇锋鏌ラ厤缃枃浠�");
+                }
+                string response = HttpHelper.Post($"{url}/api/Task/ReceiveTask", taskDTOs.Serialize());
 
                 return JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("杩斿洖閿欒");
             }
@@ -79,9 +85,30 @@
             }
         }
 
-        //public WebResponseContent UpdateTaskInfo(WCSTaskDTO taskDTO)
-        //{
-
-        //}
+        /// <summary>
+        /// 淇敼浠诲姟鐘舵��
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateTaskInfo(WCSTaskDTO task)
+        {
+            try
+            {
+                Dt_Task wmsTask = BaseDal.QueryFirst(x=>x.TaskNum == task.TaskNum);
+                if (wmsTask != null)
+                {
+                    wmsTask.TaskStatus = task.TaskState;
+                    wmsTask.CurrentAddress = task.CurrentAddress;
+                    wmsTask.NextAddress = task.NextAddress;
+                    wmsTask.Dispatchertime = task.Dispatchertime;
+                    BaseDal.UpdateData(wmsTask);
+                }
+                return WebResponseContent.Instance.OK();
+            }
+            catch(Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs"
index 24276b1..3830023 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/PalletCodeInfoController.cs"
@@ -14,7 +14,26 @@
         public PalletCodeInfoController(IPalletCodeInfoService service) : base(service)
         {
         }
-        [HttpPost,Route("PrintStatusUp")]
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="warehouseId"></param>
+        /// <param name="count"></param>
+        /// <param name="palletTypeId"></param>
+        /// <returns></returns>
+        [HttpPost, Route("AddPalletCodeData")]
+        public WebResponseContent AddData(int warehouseId, int count, int palletTypeId)
+        {
+            return Service.AddData(warehouseId, count, palletTypeId);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="printCode"></param>
+        /// <returns></returns>
+        [HttpPost, Route("PrintStatusUp")]
         public WebResponseContent PrintStatusUp(string printCode)
         {
             return Service.PrintStatusUp(printCode);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs"
index a6659dc..239218e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/WarehouseController.cs"
@@ -1,5 +1,6 @@
 锘縰sing Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
@@ -16,5 +17,15 @@
         public WarehouseController(IWarehouseService service) : base(service)
         {
         }
+
+        /// <summary>
+        /// 鏍规嵁鐢ㄦ埛鑾峰彇浠撳簱瀛楀吀
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("GetWarehouseDicByUser")]
+        public WebResponseContent GetWarehouseDicByUser()
+        {
+            return Service.GetWarehouseDicByUser();
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs"
index 112ea5c..dd6e86c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutStockLockInfoController.cs"
@@ -34,7 +34,7 @@
         /// </summary>
         /// <param name="palletCode"></param>
         /// <returns></returns>
-        [HttpPost, HttpGet, Route("MaterialPick"), AllowAnonymous]
+        [HttpPost, HttpGet, Route("MaterialPick")]
         public WebResponseContent MaterialPick(string palletCode)
         {
             return Service.MaterialPick(palletCode);
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 4f09979..b5f0c14 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"
@@ -5,6 +5,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
 using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.Task;
 using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
 
@@ -181,9 +182,20 @@
         /// <param name="roadwayNos"></param>
         /// <returns></returns>
         [HttpPost, Route("AssignRoadway"), AllowAnonymous]
-        public WebResponseContent AssignRoadway(int taskNum, [FromBody]List<string> roadwayNos)
+        public WebResponseContent AssignRoadway(int taskNum, [FromBody] List<string> roadwayNos)
         {
             return Service.AssignRoadway(taskNum, roadwayNos);
         }
+
+        /// <summary>
+        /// 淇敼浠诲姟鐘舵��
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        [HttpPost, Route("UpdateTaskInfo"), AllowAnonymous]
+        public WebResponseContent UpdateTaskInfo([FromBody] WCSTaskDTO task)
+        {
+            return Service.UpdateTaskInfo(task);
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index d6f884a..c8b83e9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -43,7 +43,7 @@
 builder.Services.AddWebSocketSetup();
 builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
 builder.Services.AddDbSetup();//Db 启动服务
-builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
+//builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
 builder.Services.AddHostedService<PermissionDataHostService>();//应用初始化服务注入
 builder.Services.AddAutoMapperSetup();
 
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 7b50cb5..0476243 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"
@@ -12,8 +12,8 @@
   "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
-  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TestWMS_CTUAGV;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=.;Initial Catalog=WMS_TC;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  //"ConnectionString": "Data Source=.;Initial Catalog=TestWMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //鏃MS鏁版嵁搴撹繛鎺�
   "TeConnectionString": "Data Source=10.30.4.92;Initial Catalog=TeChuang;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
@@ -25,8 +25,7 @@
     "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
   },
 
-  "WCS": "http://localhost:9291/api/Task/",
-  "WCSApiAddress": "http://127.0.0.1:9291",//"http://127.0.0.1:9281",姝e紡鐜鍦板潃
+  "WCS": "http://localhost:9291",
   "LogAopEnable": false,
   "PrintSql": true, //鎵撳嵃SQL璇彞
   "ApiName": "WIDESEA",

--
Gitblit v1.9.3