From bde09c027eee16a7b05b82e71dea4d3405d6d52d Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期四, 22 一月 2026 17:05:09 +0800
Subject: [PATCH] 前端页面优化,日志记录,日志展示

---
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs                                      |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs                                     |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs                                    |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_任务恢复/2026-01-21/WMS_任务恢复260121.txt                 |    5 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs                                       |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs                     |    6 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db          |    0 
 项目代码/WMS/WIDESEA_WMSClient/public/webconfig.js                                                          |    2 
 项目代码/WMS/WIDESEA_WMSClient/src/api/http.js                                                              |    1 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs                    |   16 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs                                    |  222 ++++
 项目代码/WMS/WIDESEA_WMSClient/src/router/viewGird.js                                                       |    5 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal      |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                     |    3 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs                                         |    3 
 项目代码/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue                                             |   31 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_任务状态修改/2026-01-22/任务修改260122.txt                   |   20 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                |  156 +-
 项目代码/WMS/WIDESEA_WMSClient/config/buttons.js                                                            |    3 
 项目代码/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue                                                |   21 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                         |  149 +-
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                       |  242 +++-
 项目代码/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue                                                  |   77 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                                  |   63 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs                                     |   56 +
 项目资料/WMS库位编码/松补料1-4列12层货架.xls                                                                           |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/views/system/txt_log.vue                                                 |  297 ++++++
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm      |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue                                              |  123 +-
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs                                         |    1 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs                |   18 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js                                               |   67 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db     |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                                |    5 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs                                    |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_删除库存/2026-01-22/删除信息260122.txt                     |   25 
 项目代码/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue                                                | 1276 ++++++++++++++++++-------
 39 files changed, 2,225 insertions(+), 690 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js"
index 37b1064..7e25d29 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/config/buttons.js"
@@ -109,8 +109,7 @@
     }
 },{
     name: "鎵� 鍔� 涓� 浼�",
-    icon: '',
-    class: '',
+    type: 'success',
     value: 'ManualUploadbutton',
     onClick: function () {
     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/webconfig.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/webconfig.js"
index b5c8415..dd01895 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/webconfig.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/public/webconfig.js"
@@ -1,4 +1,4 @@
 window.webConfig = {
-    "webApiBaseUrl": "http://172.18.195.201:8889/",
+    "webApiBaseUrl": "http://127.0.0.1:9291/",
     "webApiProduction":"http://172.18.195.201:8889/"
 }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js"
index 996926f..516e937 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js"
@@ -12,6 +12,7 @@
 let loadingInstance;
 let loadingStatus = false;
 if (process.env.NODE_ENV == 'development') {
+    //axios.defaults.baseURL = window.webConfig.webApiBaseUrl;
     axios.defaults.baseURL = window.webConfig.webApiProduction;
 }
 else if (process.env.NODE_ENV == 'debug') {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js"
index 46e253d..993f28b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js"
@@ -59,20 +59,20 @@
         }
       }
 
-      this.columns.forEach(x => {
-        if (x.field == "palletType") {
-          x.render = (h, { row, column, index }) => {
-            if ((row.roadway == "1" || row.roadway == "2") && row.palletType=="1") {
-              return h('span',"甯冩枡");
-            }else if((row.roadway == "1" || row.roadway == "2") && row.palletType=="2"){
-                  return h('span',"鏉惧竷鏂�");
-            }else{
-              return h('span',"鎴愬搧");
-            }
+      // this.columns.forEach(x => {
+      //   if (x.field == "palletType") {
+      //     x.render = (h, { row, column, index }) => {
+      //       if ((row.roadway == "1" || row.roadway == "2") && row.palletType == "1") {
+      //         return h('span', "甯冩枡");
+      //       } else if ((row.roadway == "1" || row.roadway == "2") && row.palletType == "2") {
+      //         return h('span', "鏉惧竷鏂�");
+      //       } else {
+      //         return h('span', "鎴愬搧");
+      //       }
 
-          }
-        }
-      });
+      //     }
+      //   }
+      // });
 
 
       //鎵嬪姩涓婁紶鎸夐挳
@@ -80,27 +80,52 @@
       if (ManualUploadBtn != null) {
         ManualUploadBtn.onClick = () => {
           let rows = this.$refs.table.getSelected();
-          if (rows.length == 0) {
-            return this.$error("璇烽�夋嫨鏁版嵁!");
-          } else {
-            var ids = rows.map(x => {
-              return  x.taskId
+          if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+          if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+          var ids = rows.map(x => {
+            return x.taskId
+          })
+          var param = {
+            DelKeys: ids, //taskNo
+            Extra: true
+          }
+          this.http
+            .post("api/Task/MESManualUpload", param, "鏁版嵁澶勭悊涓�...")
+            .then((x) => {
+              if (x.status) {
+                this.$Message.success(x.message);
+                this.refresh();
+              } else {
+                return this.$error(x.message);
+              }
+            });
+        }
+      }
+
+      //浠诲姟鎭㈠鎸夐挳
+      var TaskRecoveryBtn = this.buttons.find(x => x.value == "TaskRecovery");
+      if (TaskRecoveryBtn != null) {
+        TaskRecoveryBtn.onClick = () => {
+          let rows = this.$refs.table.getSelected();
+          if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+          if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+          var ids = rows.map(x => {
+              return x.taskId
             })
             var param = {
               DelKeys: ids, //taskNo
               Extra: true
             }
             this.http
-              .post("api/Task/MESManualUpload", param, "鏁版嵁澶勭悊涓�...")
+              .post("api/Task/WMSTaskRecovery", param, "鏁版嵁澶勭悊涓�...")
               .then((x) => {
                 if (x.status) {
-                  this.$Message.success('鎴愬姛.');
+                  this.$Message.success(x.message);
                   this.refresh();
                 } else {
                   return this.$error(x.message);
                 }
               });
-          }
         }
       }
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/viewGird.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/viewGird.js"
index ccb09c9..19f6788 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/viewGird.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/router/viewGird.js"
@@ -6,6 +6,11 @@
     component: () => import('@/views/system/Sys_Log.vue')
   },
   {
+    path: '/txt_log',
+    name: 'txt_log',
+    component: () => import('@/views/system/txt_log.vue')
+  },
+  {
     path: '/Sys_User',
     name: 'Sys_User',
     component: () => import('@/views/system/Sys_User.vue')
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue"
index e4f0c90..cd7057d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue"
@@ -52,7 +52,7 @@
         { title: "绂佺敤鐘舵��", field: "enableStatus" ,type: "select",dataKey: "enableStatusEnum",data: [],},
       ],
       [
-        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
+        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "select",dataKey: "locationStatusEnum",data: [],},
         { title: "琛�", field: "row" ,type: "int"},
         { title: "鍒�", field: "column" ,type: "int"},
         { title: "灞�", field: "layer" ,type: "int"}
@@ -68,6 +68,13 @@
         readonly: true,
         require: true,
         align: "left",
+      },{
+        field: "warehouseId",
+        title: "浠撳簱缂栧彿",
+        type: "int",
+        width: 80,
+        align: "left",
+        bind: { key: "warehouseEnum", data: [] },
       },
       // {
       //   field: "areaId",
@@ -87,13 +94,13 @@
         width: 180,
         align: "left",
       },
-      {
-        field: "locationName",
-        title: "璐т綅鍚嶇О",
-        type: "string",
-        width: 220,
-        align: "left",
-      },
+      // {
+      //   field: "locationName",
+      //   title: "璐т綅鍚嶇О",
+      //   type: "string",
+      //   width: 220,
+      //   align: "left",
+      // },
       {
         field: "roadwayNo",
         title: "宸烽亾缂栧彿",
@@ -120,14 +127,14 @@
         field: "layer",
         title: "璐т綅灞�",
         type: "string",
-        width: 200,
+        width: 120,
         align: "left",
       },
       {
         field: "depth",
         title: "璐т綅娣卞害",
         type: "string",
-        width: 180,
+        width: 120,
         align: "left",
         bind:{key: "locationDepth", data: []}
       },
@@ -143,7 +150,7 @@
         field: "locationStatus",
         title: "璐т綅鐘舵��",
         type: "string",
-        width: 200,
+        width: 120,
         align: "left",
         bind: { key: "locationStatusEnum", data: [] },
       },
@@ -151,7 +158,7 @@
         field: "enableStatus",
         title: "绂佺敤鐘舵��",
         type: "string",
-        width: 180,
+        width: 120,
         align: "left",
         bind: { key: "enableStatusEnum", data: [] },
       },
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue"
index 93d9712..eb8ad2d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue"
@@ -48,8 +48,9 @@
       });
       const searchFormOptions = ref([
         [
-          { title: "鎵樼洏缂栧彿", field: "palletCode" },
-          { title: "璐т綅缂栧彿", field: "locationCode" },
+          { title: "鎵樼洏缂栧彿", field: "palletCode" ,type:'string'},
+          { title: "璐т綅缂栧彿", field: "locationCode",type:'string' },
+          { title: "宸烽亾缂栧彿", field: "roadway",type:'string' },
         ],
       ]);
       const columns = ref([
@@ -62,7 +63,14 @@
           readonly: true,
           require: true,
           align: "left",
-        },
+        },{
+        field: "warehouseId",
+        title: "浠撳簱缂栧彿",
+        type: "int",
+        width: 80,
+        align: "left",
+        bind: { key: "warehouseEnum", data: [] },
+      },
         {
           field: "palletCode",
           title: "鎵樼洏缂栧彿",
@@ -70,6 +78,13 @@
           width: 90,
           align: "left",
         },{
+        field: "roadway",
+        title: "宸烽亾鍙�",
+        type: "string",
+        width: 70,
+        align: "left",
+      },
+        {
           field: "locationCode",
           title: "璐т綅缂栧彿",
           type: "string",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue"
index fc8b569..b8a864d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue"
@@ -1,392 +1,896 @@
-
 <template>
-  <view-grid
-    ref="grid"
-    :columns="columns"
-    :detail="detail"
-    :editFormFields="editFormFields"
-    :editFormOptions="editFormOptions"
-    :searchFormFields="searchFormFields"
-    :searchFormOptions="searchFormOptions"
-    :table="table"
-    :extend="extend"
-  >
-  </view-grid>
+  <div class="container">
+    <div class="content-wrapper">
+      <!-- 鎺у埗闈㈡澘鍖哄煙 -->
+      <div class="control-panel">
+        <div class="panel-header">
+          <h3>鎺у埗闈㈡澘</h3>
+        </div>
+
+        <div class="panel-body">
+          <div class="form-group">
+            <label class="form-label">浠撳簱锛�</label>
+            <el-select size="mini" filterable v-model="selectedWarehouse" placeholder="璇烽�夋嫨浠撳簱" class="full-width"
+              @change="handleWarehouseChange">
+              <el-option v-for="item in warehouseList" :key="item.warehouseId" :value="item.warehouseId"
+                :label="getWarehouseName(item.warehouseId)">
+              </el-option>
+            </el-select>
+          </div>
+
+          <div class="form-group">
+            <label class="form-label">宸烽亾锛�</label>
+            <el-select size="mini" clearable filterable v-model="selectedRoadwayNo" placeholder="璇烽�夋嫨宸烽亾" class="full-width"
+              @change="handleRoadwayNoChange">
+              <el-option v-for="item in roadwayNoList" :key="item" :value="item" :label="'宸烽亾 ' + item"></el-option>
+            </el-select>
+          </div>
+
+          <el-button type="success" class="refresh-btn" @click="fetchLocationStatus" :loading="loading">
+            鍒锋柊
+          </el-button>
+
+          <div class="legend-section">
+            <div class="legend-header">
+              <h4>鍥句緥璇存槑</h4>
+            </div>
+            <div class="legend-list">
+              <div class="legend-item" v-for="(item, index) in infoMsg" :key="index">
+                <span class="color-box" :style="{ 'background-color': item.bgcolor }"></span>
+                <span class="legend-label">{{ item.msg }}</span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <!-- 璐т綅灞曠ず鍖哄煙 -->
+      <div class="main-content">
+        <div v-if="loading" class="loading-container">
+          <el-skeleton :rows="6" animated />
+        </div>
+
+        <div v-else-if="locationData.length > 0" class="location-container">
+          <div class="location-header">
+            <div class="location-info">
+              <span>褰撳墠鏌ョ湅锛歿{ getWarehouseName(selectedWarehouse) }} - 宸烽亾 {{ selectedRoadwayNo }}</span>
+              <span class="total-count">鍏� {{ totalLocations }} 涓揣浣�</span>
+            </div>
+          </div>
+
+          <div class="layers-container">
+            <div class="layer-row" v-for="layer in sortedLayerData" :key="layer.layer">
+              <div class="layer-title-area">
+                <h3 class="layer-title">灞� {{ layer.layer }}</h3>
+                <span class="layer-count">{{ getLayerLocations(layer) }} 涓揣浣�</span>
+              </div>
+
+              <div class="layer-content-wrap">
+                <div class="layer-content">
+                  <div class="location-column" v-for="column in sortedColumns(layer.columns)" :key="column.column">
+                    <div class="column-label">鍒� {{ column.column }}</div>
+                    <div class="locations-wrapper">
+                      <div class="location-item" v-for="depth in sortedDepthsByRow(column.depths)" :key="depth.depth"
+                        :class="getLocationStatusClass(depth)"
+                        @mouseenter="showTooltip(depth, column.column, layer.layer, $event)" @mouseleave="hideTooltip"
+                        @click="handleLocationClick(depth)">
+                        <div class="location-code">
+                          {{ depth.row || '?' }}鎺�-{{ column.column }}鍒�-{{ layer.layer }}灞�-{{ depth.depth == 1 ? '娴�' : '娣�' }}
+                        </div>
+                        <div class="location-status" v-if="depth.enableStatus !== 0">
+                          绂佺敤
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <!-- 鏃犳暟鎹彁绀� -->
+        <div v-else class="empty-container">
+          <el-empty description="鏆傛棤璐т綅鏁版嵁">
+            <template #description>
+              <p>璇烽�夋嫨浠撳簱鍜屽贩閬撴潵鏌ョ湅璐т綅淇℃伅</p>
+            </template>
+          </el-empty>
+        </div>
+
+        <!-- 鎮诞鎻愮ず妗� -->
+        <div v-if="showTooltipFlag" class="location-tooltip" :style="{
+          left: tooltipPosition.x + 'px',
+          top: tooltipPosition.y + 'px',
+        }">
+          <div class="tooltip-content">
+            <div class="tooltip-header">
+              <h4>璐т綅璇︽儏</h4>
+            </div>
+            <div class="tooltip-body">
+              <div class="tooltip-row">
+                <span class="tooltip-label">浣嶇疆锛�</span>
+                <span class="tooltip-value">{{ getLocationCode(currentLocation) }}</span>
+              </div>
+              <div class="tooltip-row">
+                <span class="tooltip-label">宸烽亾锛�</span>
+                <span class="tooltip-value">{{ selectedRoadwayNo }}</span>
+              </div>
+              <div class="tooltip-row">
+                <span class="tooltip-label">娣卞害锛�</span>
+                <span class="tooltip-value">{{ currentLocation.depth === 1 ? '娴�' : '娣�' }}</span>
+              </div>
+              <div class="tooltip-row">
+                <span class="tooltip-label">绫诲瀷锛�</span>
+                <span class="tooltip-value">{{ getLocationTypeText(currentLocation.locationType) }}</span>
+              </div>
+              <div class="tooltip-row">
+                <span class="tooltip-label">鐘舵�侊細</span>
+                <span class="tooltip-value" :class="getStatusClass(currentLocation.locationStatus)">
+                  {{ getStatusText(currentLocation.locationStatus) }}
+                </span>
+              </div>
+              <div class="tooltip-row">
+                <span class="tooltip-label">鍚敤鐘舵�侊細</span>
+                <span class="tooltip-value" :class="{ 'status-disabled': currentLocation.enableStatus !== 0 }">
+                  {{ getEnableStatusText(currentLocation.enableStatus) }}
+                </span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
-    <script>
-import extend from "@/extension/stock/stockView.js";
-import { ref, defineComponent } from "vue";
-export default defineComponent({
-  setup() {
-    const table = ref({
-      key: "stockId",
-      footer: "Foots",
-      cnName: "搴撳瓨瑙嗗浘",
-      name: "stockView",
-      url: "/stockView/",
-      sortName: "stockId",
-    });
-    const editFormFields = ref({
-      palletCode: "",
-      locationCode: "",
-      locationName: "",
-    });
-    const editFormOptions = ref([
-      
-    ]);
-    const searchFormFields = ref({
-      palletCode: "",
-      // locationCode: "",
-      materielCode:"",
-      batchNo:""
-    });
-    const searchFormOptions = ref([
-      [
-        { title: "鎵樼洏缂栧彿", field: "palletCode",type: "like" },
-        // { title: "璐т綅缂栧彿", field: "locationCode",type: "like" },
-        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
-        { title: "搴撳瓨鐘舵��", field: "stockStatus",type: "selectList",dataKey: "stockStatusEmun",data: [],},
-      ],
-      [
-        { title: "鐗╂枡缂栧彿", field: "materielCode",type: "like"},
-        { title: "鎵规鍙�", field: "batchNo",type: "like"},
-        { title: "鎵�灞炰粨搴�", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],},
-      ],
-    ]);
-    const columns = ref([
-      {
-        field: "stockId",
-        title: "Id",
-        type: "int",
-        width: 90,
-        hidden: true,
-        readonly: true,
-        require: true,
-        align: "left",
-      },
-      {
-        field: "palletCode",
-        title: "鎵樼洏缂栧彿",
-        type: "string",
-        width: 150,
-        link: true,
-        align: "left",
-      },
-      {
-        field: "locationCode",
-        title: "璐т綅缂栧彿",
-        type: "string",
-        width: 200,
-        align: "left",
-      },
-      {
-        field: "locationName",
-        title: "璐т綅鍚嶇О",
-        type: "string",
-        width: 270,
-        align: "left",
-      },
-      {
-        field: "warehouseId",
-        title: "鎵�灞炰粨搴�",
-        type: "string",
-        width: 80,
-        align: "left",
-        bind: { key: "warehouses", data: [] },
-      },
-      {
-        field: "roadwayNo",
-        title: "宸烽亾缂栧彿",
-        type: "decimal",
-        width: 100,
-        align: "left",
-        hidden:true
-      },
-      {
-        field: "materielCode",
-        title: "鎵�鍚墿鏂欑紪鍙�",
-        type: "string",
-        width: 120,
-        align: "left",
-      },
-      {
-        field: "batchNo",
-        title: "鎵�鍚墿鏂欐壒娆�",
-        type: "string",
-        width: 200,
-        align: "left"
-      },
-      {
-        field: "materielInfo",
-        title: "鎵�鍚墿鏂欐渶鏃╀复鏈�",
-        type: "string",
-        width: 140,
-        align: "left",
-      },
-      {
-        field: "sumStock",
-        title: "鎬诲簱瀛�",
-        type: "string",
-        width: 140,
-        align: "left",
-      },
-      {
-        field: "row",
-        title: "璐т綅琛�",
-        type: "string",
-        width: 90,
-        align: "left",
-        hidden: true,
-      },
-      {
-        field: "column",
-        title: "璐т綅鍒�",
-        type: "int",
-        width: 120,
-        align: "left",
-        hidden: true,
-      },
-      {
-        field: "layer",
-        title: "璐т綅灞�",
-        type: "string",
-        width: 200,
-        align: "left",
-        hidden: true,
-      },
-      {
-        field: "depth",
-        title: "璐т綅娣卞害",
-        type: "string",
-        width: 180,
-        align: "left",
-        hidden: true,
-      },
-      {
-        field: "stockStatus",
-        title: "搴撳瓨鐘舵��",
-        type: "string",
-        width: 200,
-        align: "left",
-        bind: { key: "stockStatusEmun", data: [] },
-      },
-      {
-        field: "locationType",
-        title: "璐т綅绫诲瀷",
-        type: "string",
-        width: 100,
-        align: "left",
-        bind:{key: "locationTypeEnum", data: []}
-      },
-      {
-        field: "locationStatus",
-        title: "璐т綅鐘舵��",
-        type: "string",
-        width: 120,
-        align: "left",
-        bind: { key: "locationStatusEnum", data: [] },
-      },
-      {
-        field: "enalbeStatus",
-        title: "绂佺敤鐘舵��",
-        type: "string",
-        width: 80,
-        align: "left",
-        bind: { key: "enableStatusEnum", data: [] },
-      },
-      {
-        field: "creater",
-        title: "鍒涘缓浜�",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
-      {
-        field: "createDate",
-        title: "鍒涘缓鏃堕棿",
-        type: "datetime",
-        width: 160,
-        align: "left",
-      },
-      {
-        field: "modifier",
-        title: "淇敼浜�",
-        type: "string",
-        width: 100,
-        align: "left",
-      },
-      {
-        field: "modifyDate",
-        title: "淇敼鏃堕棿",
-        type: "datetime",
-        width: 160,
-        align: "left",
-      },
-      {
-        field: "remark",
-        title: "澶囨敞",
-        type: "string",
-        width: 100,
-        align: "left",
-        hidden:true
-      },
-    ]);
-    const detail = ref({
-      cnName: "搴撳瓨鏄庣粏淇℃伅",
-      table: "StockInfoDetail",
-      columns: [
-        {
-          field: "id",
-          title: "Id",
-          type: "int",
-          width: 90,
-          hidden: true,
-          readonly: true,
-          require: true,
-          align: "left",
-        },
-        {
-          field: "stockId",
-          title: "搴撳瓨淇℃伅涓婚敭",
-          type: "string",
-          width: 90,
-          align: "left",
-          hidden: true
-        },
-        {
-          field: "materielCode",
-          title: "鐗╂枡缂栧彿",
-          type: "string",
-          width: 110,
-          align: "left",
-        },
-        {
-          field: "materielName",
-          title: "鐗╂枡鍚嶇О",
-          type: "string",
-          width: 130,
-          align: "left",
-        },
-        {
-          field: "orderNo",
-          title: "鍗曟嵁缂栧彿",
-          type: "decimal",
-          width: 130,
-          align: "left",
-        },
-        {
-          field: "batchNo",
-          title: "鎵规鍙�",
-          type: "string",
-          width: 180,
-          align: "left",
-        },
-        {
-          field: "serialNumber",
-          title: "搴忓垪鍙�",
-          type: "int",
-          width: 120,
-          align: "left",
-          hidden: true,
-        },
-        {
-          field: "stockQuantity",
-          title: "搴撳瓨鏁伴噺",
-          type: "string",
-          width: 80,
-          align: "left",
-        },
-        {
-          field: "outboundQuantity",
-          title: "鍑哄簱鏁伴噺",
-          type: "string",
-          width: 80,
-          align: "left",
-        },
-        {
-          field: "unit",
-          title: "鍗曚綅",
-          type: "string",
-          width: 50,
-          align: "left",
-        },
-        {
-          field: "productionDate",
-          title: "鐢熶骇鏃ユ湡",
-          type: "string",
-          width: 80,
-          align: "left",
-        },
-        {
-          field: "effectiveDate",
-          title: "鏈夋晥鏃ユ湡",
-          type: "string",
-          width: 80,
-          align: "left",
-        },
-        {
-          field: "status",
-          title: "搴撳瓨鏄庣粏鐘舵��",
-          type: "string",
-          width: 120,
-          align: "left",
-          bind: { key: "stockStatusEmun", data: [] }
-        },
-        {
-          field: "creater",
-          title: "鍒涘缓浜�",
-          type: "string",
-          width: 90,
-          align: "left",
-          hidden: true
-        },
-        {
-          field: "createDate",
-          title: "鍒涘缓鏃堕棿",
-          type: "datetime",
-          width: 160,
-          align: "left",
-          hidden: true
-        },
-        {
-          field: "modifier",
-          title: "淇敼浜�",
-          type: "string",
-          width: 100,
-          align: "left",
-          hidden: true
-        },
-        {
-          field: "modifyDate",
-          title: "淇敼鏃堕棿",
-          type: "datetime",
-          width: 160,
-          align: "left",
-          hidden: true
-        },
-        {
-          field: "remark",
-          title: "澶囨敞",
-          type: "string",
-          width: 100,
-          align: "left",
-          hidden: true
-        },
-      ],
-      sortName: "id",
-      key: "id",
-    });
+
+<script>
+import { ElButton, ElMessage, ElSelect, ElOption, ElEmpty, ElSkeleton } from "element-plus";
+
+export default {
+  data() {
     return {
-      table,
-      extend,
-      editFormFields,
-      editFormOptions,
-      searchFormFields,
-      searchFormOptions,
-      columns,
-      detail,
+      warehouseList: [],
+      roadwayNoList: [],
+      selectedWarehouse: null,
+      selectedRoadwayNo: null,
+      infoMsg: [
+        { bgcolor: "lightgreen", msg: "绌鸿揣浣�" },
+        { bgcolor: "orange", msg: "鏈夎揣" },
+        { bgcolor: "#2BB3D5", msg: "閿佸畾" },
+        { bgcolor: "#ccc", msg: "绂佺敤" },
+        { bgcolor: "#b7ba6b", msg: "鍏跺畠" },
+      ],
+      locationData: [],
+      showTooltipFlag: false,
+      currentLocation: null,
+      tooltipPosition: { x: 0, y: 0 },
+      currentColumn: null,
+      currentLayer: null,
+      loading: false
     };
   },
-});
+  computed: {
+    sortedLayerData() {
+      const layerMap = {};
+
+      this.locationData.forEach(layer => {
+        if (!layerMap[layer.layer]) {
+          layerMap[layer.layer] = {
+            layer: layer.layer,
+            columns: []
+          };
+        }
+
+        layer.columns?.forEach(column => {
+          layerMap[layer.layer].columns.push({
+            column: column.column,
+            depths: column.depths || []
+          });
+        });
+      });
+
+      return Object.values(layerMap).sort((a, b) => a.layer - b.layer);
+    },
+
+    totalLocations() {
+      let count = 0;
+      this.locationData.forEach(layer => {
+        layer.columns?.forEach(column => {
+          count += column.depths?.length || 0;
+        });
+      });
+      return count;
+    }
+  },
+  methods: {
+    sortedColumns(columns) {
+      // 鎸夊垪鍙锋帓搴�
+      return columns?.sort((a, b) => a.column - b.column) || [];
+    },
+
+    sortedDepthsByRow(depths) {
+      // 棣栧厛鎸夎(row)鎺掑簭锛岀劧鍚庢寜娣卞害(depth)鎺掑簭
+      return depths?.sort((a, b) => {
+        // 濡傛灉琛屽彿鐩稿悓锛屾寜娣卞害鎺掑簭
+        if (a.row === b.row) {
+          return a.depth - b.depth;
+        }
+        // 鎸夎鍙锋帓搴忥紙杩欓噷鍋囪琛屽彿鏄暟瀛楁垨鍙瘮杈冪殑瀛楃涓诧級
+        return this.compareRows(a.row, b.row);
+      }) || [];
+    },
+
+    // 姣旇緝琛屽彿鐨勮緟鍔╂柟娉�
+    compareRows(rowA, rowB) {
+      // 濡傛灉閮芥槸鏁板瓧锛屾寜鏁板瓧姣旇緝
+      if (!isNaN(rowA) && !isNaN(rowB)) {
+        return Number(rowA) - Number(rowB);
+      }
+      // 鍚﹀垯鎸夊瓧绗︿覆姣旇緝
+      return String(rowA).localeCompare(String(rowB));
+    },
+
+    async fetchWarehouseData() {
+      try {
+        this.loading = true;
+        const response = await this.http.get("/api/LocationInfo/GetArea");
+        this.warehouseList = response.data || [];
+
+        if (this.warehouseList.length > 0) {
+          this.selectedWarehouse = this.warehouseList[0].warehouseId;
+          this.roadwayNoList = this.warehouseList[0].roadwayNo || [];
+
+          if (this.roadwayNoList.length > 0) {
+            this.selectedRoadwayNo = this.roadwayNoList[0];
+            await this.fetchLocationStatus();
+          }
+        }
+      } catch (error) {
+        console.error("鑾峰彇浠撳簱鏁版嵁澶辫触:", error);
+        this.warehouseList = [];
+        this.roadwayNoList = [];
+        ElMessage.error("鑾峰彇浠撳簱鏁版嵁澶辫触锛岃绋嶅悗閲嶈瘯");
+      } finally {
+        this.loading = false;
+      }
+    },
+
+    async fetchLocationStatus() {
+      if (!this.selectedWarehouse || !this.selectedRoadwayNo) {
+        ElMessage.warning("璇烽�夋嫨浠撳簱鍜屽贩閬�");
+        return;
+      }
+
+      try {
+        this.loading = true;
+        const response = await this.http.get(
+          `/api/LocationInfo/GetLocationStatus?WarehouseId=${this.selectedWarehouse}&RoadwayNo=${this.selectedRoadwayNo}`
+        );
+
+        if (response.data && response.status) {
+          this.locationData = response.data || [];
+          
+          // 楠岃瘉鏁版嵁涓槸鍚︽湁row瀛楁
+          console.log("璐т綅鏁版嵁绀轰緥:", this.locationData[0]);
+          if (this.locationData.length > 0 && this.locationData[0].columns) {
+            console.log("绗竴涓揣浣嶇殑row瀛楁:", this.locationData[0].columns[0]?.depths?.[0]?.row);
+          }
+          
+          if (this.locationData.length === 0) {
+            ElMessage.info("璇ュ贩閬撴病鏈夎揣浣嶆暟鎹�");
+          }
+        } else {
+          this.locationData = [];
+          ElMessage.error(response.data?.message || "鑾峰彇璐т綅鐘舵�佸け璐�");
+        }
+      } catch (error) {
+        console.error("鑾峰彇璐т綅鐘舵�佸け璐�:", error);
+        this.locationData = [];
+        ElMessage.error("鑾峰彇璐т綅鐘舵�佸け璐ワ紝璇风◢鍚庨噸璇�");
+      } finally {
+        this.loading = false;
+      }
+    },
+
+    handleWarehouseChange() {
+      const selectedWarehouse = this.warehouseList.find(
+        w => w.warehouseId === this.selectedWarehouse
+      );
+      this.roadwayNoList = selectedWarehouse ? selectedWarehouse.roadwayNo : [];
+      this.selectedRoadwayNo = this.roadwayNoList.length > 0 ? this.roadwayNoList[0] : null;
+      this.fetchLocationStatus();
+    },
+
+    getWarehouseName(warehouseId) {
+      const warehouseMap = {
+        1: '鍘熸潗鏂欎粨',
+        2: '鎴愬搧浠�'
+      };
+      return warehouseMap[warehouseId] || `浠撳簱 ${warehouseId}`;
+    },
+
+    handleRoadwayNoChange() {
+      this.fetchLocationStatus();
+    },
+
+    getLocationStatusClass(depth) {
+      if (depth.enableStatus !== 0) {
+        return 'location-disabled';
+      }
+
+      switch (depth.locationStatus) {
+        case 0: return 'location-empty';    // 绌鸿揣浣�
+        case 1: return 'location-locked';   // 閿佸畾
+        case 100: return 'location-occupied'; // 鏈夎揣
+        default: return 'location-other';   // 鍏朵粬鐘舵��
+      }
+    },
+
+    getLayerLocations(layer) {
+      let count = 0;
+      layer.columns?.forEach(column => {
+        count += column.depths?.length || 0;
+      });
+      return count;
+    },
+
+    showTooltip(depth, column, layer, event) {
+      this.currentLocation = depth;
+      this.currentColumn = column;
+      this.currentLayer = layer;
+      this.showTooltipFlag = true;
+
+      const offsetX = 15;
+      const offsetY = 15;
+      this.tooltipPosition = {
+        x: event.clientX + offsetX,
+        y: event.clientY + offsetY,
+      };
+    },
+
+    hideTooltip() {
+      this.showTooltipFlag = false;
+      this.currentLocation = null;
+      this.currentColumn = null;
+      this.currentLayer = null;
+    },
+
+    handleLocationClick(depth) {
+      console.log('鐐瑰嚮璐т綅:', depth);
+    },
+
+    getLocationCode(location) {
+      if (!location) return '';
+      return `${location.row || '?'}鎺�-${this.currentColumn}鍒�-${this.currentLayer}灞�-${location.depth === 1 ? '娴�' : '娣�'}`;
+    },
+
+    getStatusText(status) {
+      const statusMap = {
+        0: "绌鸿揣浣�",
+        1: "閿佸畾",
+        100: "鏈夎揣",
+      };
+      return statusMap[status] || "鏈煡鐘舵��";
+    },
+
+    getStatusClass(status) {
+      const classMap = {
+        0: 'status-empty',
+        1: 'status-locked',
+        100: 'status-occupied'
+      };
+      return classMap[status] || '';
+    },
+
+    getLocationTypeText(type) {
+      const typeMap = {
+        1: "甯冨嵎",
+        2: "鏉惧竷鍗�",
+        3: "鎴愬搧璐т綅"
+      };
+      return typeMap[type] || "鏈煡绫诲瀷";
+    },
+
+    getEnableStatusText(status) {
+      return status === 0 ? '鍚敤' : '绂佺敤';
+    }
+  },
+  mounted() {
+    this.fetchWarehouseData();
+  },
+  components: {
+    ElButton,
+    ElSelect,
+    ElOption,
+    ElEmpty,
+    ElSkeleton
+  },
+};
 </script>
-    
\ No newline at end of file
+
+<style scoped>
+/* 鏍峰紡閮ㄥ垎淇濇寔涓嶅彉锛屼笌涔嬪墠鐩稿悓 */
+.container {
+  display: flex;
+  flex-direction: column;
+  height: 100vh;
+  padding: 16px;
+  box-sizing: border-box;
+  background-color: #f0f2f5;
+}
+
+.header {
+  text-align: center;
+  margin-bottom: 20px;
+  padding-bottom: 16px;
+  border-bottom: 1px solid #e8e8e8;
+}
+
+.title {
+  font-size: 22px;
+  font-weight: 600;
+  margin: 0;
+  color: #1890ff;
+}
+
+.content-wrapper {
+  display: flex;
+  flex: 1;
+  min-height: 0;
+  gap: 16px;
+}
+
+.control-panel {
+  width: 260px;
+  background-color: white;
+  border-radius: 8px;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
+  display: flex;
+  flex-direction: column;
+  flex-shrink: 0;
+  overflow: hidden;
+}
+
+.panel-header {
+  padding: 16px;
+  border-bottom: 1px solid #e8e8e8;
+  background-color: #fafafa;
+}
+
+.panel-header h3 {
+  margin: 0;
+  font-size: 16px;
+  font-weight: 600;
+  color: #333;
+}
+
+.panel-body {
+  padding: 16px;
+  display: flex;
+  flex-direction: column;
+  gap: 20px;
+}
+
+.form-group {
+  margin-bottom: 0;
+}
+
+.form-label {
+  display: block;
+  margin-bottom: 6px;
+  font-size: 14px;
+  color: #666;
+  font-weight: 500;
+}
+
+.full-width {
+  width: 100%;
+}
+
+.refresh-btn {
+  margin-top: 8px;
+  width: 100%;
+  height: 32px;
+}
+
+.legend-section {
+  margin-top: 8px;
+  padding-top: 16px;
+  border-top: 1px solid #e8e8e8;
+}
+
+.legend-header h4 {
+  margin: 0 0 12px 0;
+  font-size: 15px;
+  font-weight: 600;
+  color: #333;
+}
+
+.legend-list {
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+}
+
+.legend-item {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+
+.color-box {
+  width: 20px;
+  height: 20px;
+  border-radius: 4px;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  flex-shrink: 0;
+}
+
+.depth-shallow-legend {
+  background-color: rgba(255, 255, 255, 0.7);
+  border: 1px solid #2c3e50;
+}
+
+.depth-deep-legend {
+  background-color: rgba(0, 0, 0, 0.7);
+  border: 1px solid #000;
+}
+
+.legend-label {
+  font-size: 13px;
+  color: #666;
+}
+
+.main-content {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  min-width: 0;
+}
+
+.loading-container {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: white;
+  border-radius: 8px;
+  padding: 24px;
+}
+
+.location-container {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  background: white;
+  border-radius: 8px;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
+  overflow: hidden;
+  min-height: 0;
+}
+
+.location-header {
+  padding: 16px 20px;
+  background: #fafafa;
+  border-bottom: 1px solid #e8e8e8;
+  flex-shrink: 0;
+}
+
+.location-info {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: 14px;
+}
+
+.total-count {
+  font-weight: 600;
+  color: #1890ff;
+}
+
+.layers-container {
+  width: 100%;
+  height: 100%;
+  flex: 1;
+  overflow-y: auto;
+  padding: 20px;
+  display: flex;
+  flex-direction: column;
+  gap: 24px;
+}
+
+.layer-row {
+  background: #f9f9f9;
+  border-radius: 8px;
+  border: 1px solid #e8e8e8;
+  display: flex;
+  flex-direction: column;
+  min-height: auto;
+}
+
+.layer-title-area {
+  padding: 12px 16px;
+  background: #f0f0f0;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  flex-shrink: 0;
+}
+
+.layer-title {
+  margin: 0;
+  font-size: 16px;
+  font-weight: 600;
+  color: #333;
+}
+
+.layer-count {
+  font-size: 12px;
+  color: #666;
+  background: white;
+  padding: 4px 10px;
+  border-radius: 12px;
+  border: 1px solid #ddd;
+}
+
+.layer-content-wrap {
+  width: 100%;
+  overflow: hidden;
+  flex: 1;
+}
+
+.layer-content {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 16px;
+  padding: 16px;
+  min-width: 0;
+  box-sizing: border-box;
+}
+
+.location-column {
+  flex: 0 0 auto;
+  width: 140px;
+  min-height: 120px;
+  display: flex;
+  flex-direction: column;
+  box-sizing: border-box;
+}
+
+.column-label {
+  font-size: 13px;
+  font-weight: 600;
+  color: #666;
+  text-align: center;
+  margin-bottom: 8px;
+  padding-bottom: 4px;
+  border-bottom: 1px dashed #ddd;
+  flex-shrink: 0;
+}
+
+.locations-wrapper {
+  display: flex;
+  flex-direction: column;
+  gap: 6px;
+  flex: 1;
+  min-height: 0;
+}
+
+.location-item {
+  min-height: 40px;
+  padding: 6px 4px;
+  border-radius: 4px;
+  text-align: center;
+  cursor: pointer;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  transition: all 0.2s;
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  gap: 2px;
+  flex: 1;
+}
+
+.location-item:hover {
+  transform: scale(1.05);
+  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
+  z-index: 10;
+}
+
+.location-code {
+  font-size: 11px;
+  font-weight: 500;
+  line-height: 1.2;
+  word-break: break-all;
+}
+
+.depth-indicator {
+  font-size: 10px;
+  padding: 2px 4px;
+  border-radius: 3px;
+  margin-top: 2px;
+  font-weight: bold;
+  transition: all 0.2s;
+}
+
+.depth-shallow {
+  background-color: rgba(255, 255, 255, 0.7);
+  color: #2c3e50;
+}
+
+.depth-deep {
+  background-color: rgba(0, 0, 0, 0.7);
+  color: white;
+}
+
+.location-item:hover .depth-indicator {
+  transform: scale(1.1);
+}
+
+.location-status {
+  font-size: 10px;
+  padding: 1px 4px;
+  border-radius: 2px;
+  background: rgba(0, 0, 0, 0.1);
+}
+
+.location-empty {
+  background-color: lightgreen;
+  color: #333;
+}
+
+.location-occupied {
+  background-color: orange;
+  color: white;
+}
+
+.location-locked {
+  background-color: #2BB3D5;
+  color: white;
+}
+
+.location-disabled {
+  background-color: #ccc;
+  color: #666;
+  cursor: not-allowed;
+}
+
+.location-other {
+  background-color: #b7ba6b;
+  color: white;
+}
+
+.empty-container {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: white;
+  border-radius: 8px;
+}
+
+.location-tooltip {
+  position: fixed;
+  z-index: 9999;
+  background-color: white;
+  border: 1px solid #ddd;
+  border-radius: 6px;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+  pointer-events: none;
+  min-width: 220px;
+  max-width: 300px;
+}
+
+.tooltip-content {
+  overflow: hidden;
+}
+
+.tooltip-header {
+  padding: 12px 16px;
+  background-color: #1890ff;
+  color: white;
+}
+
+.tooltip-header h4 {
+  margin: 0;
+  font-size: 14px;
+  font-weight: 600;
+}
+
+.tooltip-body {
+  padding: 12px 16px;
+}
+
+.tooltip-row {
+  display: flex;
+  margin-bottom: 8px;
+  font-size: 13px;
+  line-height: 1.4;
+}
+
+.tooltip-row:last-child {
+  margin-bottom: 0;
+}
+
+.tooltip-label {
+  flex: 0 0 80px;
+  color: #666;
+  font-weight: 500;
+}
+
+.tooltip-value {
+  flex: 1;
+  color: #333;
+  word-break: break-all;
+}
+
+.status-disabled {
+  color: #f5222d;
+}
+
+@media (max-width: 1200px) {
+  .location-column {
+    width: 130px;
+  }
+}
+
+@media (max-width: 768px) {
+  .content-wrapper {
+    flex-direction: column;
+  }
+
+  .control-panel {
+    width: 100%;
+  }
+
+  .location-column {
+    width: 120px;
+  }
+
+  .layer-content {
+    gap: 12px;
+  }
+}
+
+@media (max-width: 480px) {
+  .location-column {
+    width: 110px;
+  }
+
+  .location-code {
+    font-size: 10px;
+  }
+
+  .layer-content {
+    gap: 10px;
+    padding: 12px;
+  }
+
+  @media (max-width: 380px) {
+    .location-column {
+      width: 100px;
+    }
+  }
+}
+
+.layers-container::-webkit-scrollbar {
+  width: 8px;
+}
+
+.layers-container::-webkit-scrollbar-track {
+  background: #f1f1f1;
+  border-radius: 4px;
+}
+
+.layers-container::-webkit-scrollbar-thumb {
+  background: #c1c1c1;
+  border-radius: 4px;
+}
+
+.layers-container::-webkit-scrollbar-thumb:hover {
+  background: #a8a8a8;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/txt_log.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/txt_log.vue"
new file mode 100644
index 0000000..0c2ccba
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/system/txt_log.vue"
@@ -0,0 +1,297 @@
+<template>
+    <div class="mian_log">
+        <div class="log_tree">
+            <div class="log_search">
+                <el-input v-model.lazy="filterText" placeholder="璇疯緭鍏ユ煡璇㈠叧閿瓧" clearable />
+                <el-button type="success" @click="ReloadTree()">鍒� 鏂�</el-button>
+            </div>
+            <el-tree class="log_el_tree" ref="treeRef" :data="treeData" :props="treeProps" :filter-node-method="treeFilter">
+                <template #default="{ node, data }">
+                    <div class="treeItem">
+                        <div>{{ node.label }}</div>
+                        <div style="padding-left: 10px;" v-if="isFile(data)">
+                            <a href="javascript:;" @click="GetContent(data)"> 鎵撳紑 </a>
+                            <!-- ||<a href="javascript:;" @click="DonwLog(data)"> 涓嬭浇 </a> -->
+                        </div>
+                    </div>
+                </template>
+            </el-tree>
+        </div>
+
+        <div class="log_line"></div>
+
+        <div class="log_content">
+            <div>
+                <h2>{{ this.fileName }}</h2>
+                <div class="log_size">{{ GetSize() }}</div>
+                <el-checkbox v-model="keepRead">淇濇寔璇诲彇</el-checkbox>
+            </div>
+
+            <div ref="pre" v-if="content">
+                <el-progress :percentage="percentage" @click="ChangePercent($event)" color="#f56c6c" />
+            </div>
+            <div ref="showdata" @scroll="handleScroll($event)" style="white-space: pre-wrap;word-break: break-all">{{
+                content }}</div>
+        </div>
+    </div>
+</template>
+
+<script>
+export default ({
+    data() {
+        return {
+            filterText: "",
+            treeData: [],
+            treeProps: {
+                children: 'dirs',
+                label: 'dirName',
+            },
+            keepRead: false,
+
+            percentage: 100,
+            topStartPos: 0,
+            fileSize: "",
+            filePath: "",
+            fileName: "",
+            content: "",
+            isClick: false,
+
+            keepReadTimer: null
+        }
+    },
+    watch: {
+        filterText(val) {
+            this.$refs.treeRef.filter(val)
+        },
+        keepRead(val) {
+            if (val) {
+                this.keepReadTimer = setInterval(() => {
+                    if (this.filePath) {
+                        var parm = {
+                            path: this.filePath,
+                            percent: 100,
+                            maxsize_KB: 10
+                        }
+                        this.percentage = 100;
+                        this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
+                            this.content = res.data.content;
+                            this.topStartPos = res.data.startIndex;
+                            this.$nextTick(function () {
+                                this.$refs.showdata.scrollTo(0, this.$refs.showdata.scrollHeight)
+                            })
+                        })
+                    }
+                }, 1500);
+            } else {
+                clearInterval(this.keepReadTimer);
+            }
+        }
+    },
+    methods: {
+        treeFilter(value, data) {
+            if (!value) return true
+            return data.dirName.includes(value)
+        },
+        isFile(data) {
+            if (data.dirPath) {
+                return data.dirPath.indexOf(".log") != -1 || data.dirPath.indexOf(".txt") != -1;
+            }
+            return false;
+        },
+        ChangePercent(event) {
+            var bar = window.document.getElementsByClassName('el-progress-bar')[0]
+            var res = event.offsetX / bar.offsetWidth * 100;
+            var percent = parseFloat(res.toFixed(2));
+            if (percent < 1) {
+                percent = 0;
+            }
+            if (percent > 99) {
+                percent = 100;
+            }
+            this.percentage = percent;
+            var parm = {
+                path: this.filePath,
+                percent: this.percentage,
+                maxsize_KB: 20
+            }
+            
+            this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
+                this.isClick = true;
+                this.content = res.data.content;
+                this.topStartPos = res.data.startIndex;
+                this.$nextTick(function () {
+                    if (percent == 100) {
+                        this.$refs.showdata.scrollTo(0, this.$refs.showdata.scrollHeight)
+                    } else {
+                        this.$refs.showdata.scrollTo(0, 1)
+                    }
+                })
+                setTimeout(() => {
+                    this.isClick = false;
+                }, 1000)
+            })
+        },
+        GetContent(data) {
+            var parm = {
+                path: data.dirPath,
+                percent: 100,
+                maxsize_KB: 20
+            }
+            this.filePath = data.dirPath;
+            this.fileName = data.dirName;
+            this.percentage = parm.percent;
+            this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
+                this.content = res.data.content;
+                this.topStartPos = res.data.startIndex;
+                this.fileSize = res.data.len;
+                this.$nextTick(function () {
+                    this.$refs.showdata.scrollTo(0, this.$refs.showdata.scrollHeight);
+                })
+            })
+        },
+        handleScroll() {
+            const scrollTop = this.$refs.showdata.scrollTop;
+            if (scrollTop == 0 && !this.isClick) {
+                if (this.topStartPos == 0) {
+                    this.percentage = 0;
+                    return;
+                }
+                var parm = {
+                    path: this.filePath,
+                    maxsize_KB: 10,
+                    topStartPos: this.topStartPos
+                }
+                this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
+                    this.topStartPos = res.data.startIndex;
+                    var per = res.data.startIndex / res.data.len * 100;
+
+                    this.percentage = parseFloat(per.toFixed(2));
+                    if (this.percentage == 0 && res.data.startIndex != 0) {
+                        this.percentage = 0.1;
+                    }
+                    this.content = res.data.content + this.content;
+                    this.$nextTick(function () {
+                        this.$refs.showdata.scrollTo(0, 1)
+                    })
+                })
+            }
+        },
+        DonwLog(data) {
+            var url = this.http.axios.defaults.baseURL + 'api/Sys_Log/DownLog';
+            url += "?filePath=" + data.dirPath;
+            window.location.href = encodeURI(url);
+        },
+        ReloadTree() {
+            this.http.post("/api/Sys_Log/GetLogList", {}, "鍔犺浇鐩綍涓�︹��")
+                .then(res => {
+                    this.treeData = res.data.dirs;
+                })
+        },
+        GetSize(size) {
+            var size = this.fileSize;
+            if (!size) {
+                return ''
+            } else if (size < 1024) {
+                size = size + "B"
+            } else if (size < 1024 * 1024) {
+                size = (size / 1024).toFixed(2) + "KB"
+            } else {
+                size = (size / 1024 / 1024).toFixed(2) + "MB"
+            }
+            return "鏂囦欢澶у皬:" + size;
+        }
+    },
+    mounted() {
+        this.http.post("/api/Sys_Log/GetLogList", {}, "鍔犺浇鐩綍涓�︹��")
+            .then(res => {
+                this.treeData = res.data.dirs;
+            })
+    }
+})
+</script>
+
+<style scoped>
+.mian_log {
+    height: calc(100vh - 96px);
+    padding: 10px 10px;
+    display: flex;
+    width: 100%;
+}
+
+.log_tree {
+    width: 420px;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+}
+
+.log_search {
+    display: flex;
+}
+
+.log_search :last-child {
+    margin-left: 5px;
+}
+
+.log_el_tree {
+    width: 100%;
+    overflow-x: auto;
+    flex: 1;
+}
+
+
+.treeItem {
+    overflow-x: auto;
+    flex: 1;
+    display: flex;
+    justify-content: space-between;
+}
+
+.treeItem::-webkit-scrollbar {
+    height: 5px;
+}
+
+.treeItem::-webkit-scrollbar-thumb {
+    /* 瀹氫箟婊氬姩鏉℃粦鍧楅鑹� */
+    background: #ccc;
+}
+
+.treeItem::-webkit-scrollbar-thumb:hover {
+    /* 瀹氫箟婊氬姩鏉℃粦鍧楁偓鍋滈鑹� */
+    background: orange;
+}
+
+.log_line {
+    margin: 5px 16px;
+    border-left: 2px dashed orange;
+}
+
+.log_content {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+}
+
+.log_content>div:first-child {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.log_size {
+    font-size: 13px;
+    color: #bbb;
+}
+
+.log_content>div:last-child {
+    flex: 1;
+    overflow-y: scroll;
+    margin-top: 5px;
+    padding-top: 5px;
+    border-top: 1px solid black;
+}
+
+a {
+    color: blue;
+}
+</style>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
index 545ea62..e0109d2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
@@ -26,8 +26,34 @@
       url: "/Task/",
       sortName: "CreateDate",
     });
-    const editFormFields = ref({});
-    const editFormOptions = ref([]);
+    const editFormFields = ref({
+      taskNum: "",
+      palletCode: "",
+      roadway: "",
+      taskStatus: "",
+      taskType: "",
+      sourceAddress: "",
+      targetAddress: "",
+      currentAddress: "",
+      nextAddress: "",
+      creater: "",
+      createDate: "",
+      palletType:"",
+      WarehouseId:"",
+    });
+    const editFormOptions = ref([
+      [
+        { title: "浠诲姟鐘舵��",field: "taskStatus",type: "select",dataKey: "taskStatusEnum",data: [],},
+      ],
+      [
+        { title: "璧峰鍦板潃", field: "sourceAddress", type: "string" },
+        { title: "鐩爣鍦板潃", field: "targetAddress", type: "string" },
+      ],
+      [
+        { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "string" },
+        { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "string" },
+      ]
+    ]);
     const searchFormFields = ref({
       taskNum: "",
       palletCode: "",
@@ -77,14 +103,14 @@
         field: "palletCode",
         title: "鎵樼洏缂栧彿",
         type: "string",
-        width: 160,
+        width: 120,
         align: "left",
       },
       {
         field: "palletType",
         title: "鎵樼洏绫诲瀷",
         type: "string",
-        width: 120,
+        width: 80,
         align: "left",
         bind: { key: "taskpalltype", data: [] },
       },
@@ -92,14 +118,21 @@
         field: "roadway",
         title: "宸烽亾鍙�",
         type: "string",
-        width: 120,
+        width: 70,
         align: "left",
+      },{
+        field: "warehouseId",
+        title: "浠撳簱缂栧彿",
+        type: "int",
+        width: 80,
+        align: "left",
+        bind: { key: "warehouseEnum", data: [] },
       },
       {
         field: "taskType",
         title: "浠诲姟绫诲瀷",
         type: "int",
-        width: 120,
+        width: 90,
         align: "left",
         bind: { key: "taskTypeEnum", data: [] },
       },
@@ -107,7 +140,7 @@
         field: "taskStatus",
         title: "浠诲姟鐘舵��",
         type: "int",
-        width: 150,
+        width: 120,
         align: "left",
         bind: { key: "taskStatusEnum", data: [] },
       },
@@ -115,28 +148,35 @@
         field: "sourceAddress",
         title: "璧峰鍦板潃",
         type: "int",
-        width: 220,
+        width: 150,
         align: "left",
       },
       {
         field: "targetAddress",
         title: "鐩爣鍦板潃",
         type: "string",
-        width: 220,
+        width: 150,
         align: "left",
       },
       {
         field: "currentAddress",
         title: "褰撳墠浣嶇疆",
         type: "string",
-        width: 120,
+        width: 150,
         align: "left",
       },
       {
         field: "nextAddress",
         title: "涓嬩竴浣嶇疆",
         type: "string",
-        width: 120,
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "numberSsuances",
+        title: "寮傚父娆℃暟",
+        type: "string",
+        width: 100,
         align: "left",
       },
       {
@@ -145,15 +185,14 @@
         type: "string",
         width: 100,
         align: "left",
-        hidden: true,
       },
-      {
-        field: "grade",
-        title: "浼樺厛绾�",
-        type: "int",
-        width: 80,
-        align: "left",
-      },
+      // {
+      //   field: "grade",
+      //   title: "浼樺厛绾�",
+      //   type: "int",
+      //   width: 80,
+      //   align: "left",
+      // },
       {
         field: "dispatchertime",
         title: "浠诲姟涓嬪彂鏃堕棿",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue"
index fcc2545..c7ccdd7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue"
@@ -61,12 +61,17 @@
     const columns = ref([
       {
         field: "taskId",
-        title: "taskId",
+        title: "涓婚敭",
         type: "int",
         width: 90,
+        align: "left",
         hidden: true,
-        readonly: true,
-        require: true,
+      },
+      {
+        field: "sourceId",
+        title: "浠诲姟鍙�",
+        type: "int",
+        width: 90,
         align: "left",
       },
       {
@@ -80,28 +85,37 @@
         field: "palletCode",
         title: "鎵樼洏缂栧彿",
         type: "string",
-        width: 160,
+        width: 120,
         align: "left",
-      },{
+      },
+      {
         field: "palletType",
         title: "鎵樼洏绫诲瀷",
         type: "string",
-        width: 120,
+        width: 80,
         align: "left",
         bind: { key: "taskhtypalltype", data: [] },
+      },
+      {
+        field: "warehouseId",
+        title: "浠撳簱缂栧彿",
+        type: "int",
+        width: 80,
+        align: "left",
+        bind: { key: "warehouseEnum", data: [] },
       },
       {
         field: "roadway",
         title: "宸烽亾鍙�",
         type: "string",
-        width: 120,
+        width: 70,
         align: "left",
       },
       {
         field: "taskType",
         title: "浠诲姟绫诲瀷",
         type: "int",
-        width: 120,
+        width: 90,
         align: "left",
         bind: { key: "taskTypeEnum", data: [] },
       },
@@ -109,7 +123,7 @@
         field: "taskStatus",
         title: "浠诲姟鐘舵��",
         type: "int",
-        width: 150,
+        width: 120,
         align: "left",
         bind: { key: "taskStatusEnum", data: [] },
       },
@@ -117,58 +131,58 @@
         field: "sourceAddress",
         title: "璧峰鍦板潃",
         type: "int",
-        width: 220,
+        width: 150,
         align: "left",
       },
       {
         field: "targetAddress",
         title: "鐩爣鍦板潃",
         type: "string",
-        width: 220,
+        width: 150,
         align: "left",
       },
       {
         field: "currentAddress",
         title: "褰撳墠浣嶇疆",
         type: "string",
-        width: 120,
+        width: 150,
         align: "left",
       },
       {
         field: "nextAddress",
         title: "涓嬩竴浣嶇疆",
         type: "string",
-        width: 120,
+        width: 150,
         align: "left",
       },
       {
-        field: "exceptionMessage",
-        title: "寮傚父淇℃伅",
+        field: "numberSsuances",
+        title: "寮傚父娆℃暟",
         type: "string",
-        width: 90,
-        align: "left",
-        hidden: true,
-      },
-      {
-        field: "grade",
-        title: "浼樺厛绾�",
-        type: "int",
-        width: 80,
+        width: 100,
         align: "left",
       },
       {
-        field: "depth",
-        title: "娣卞害",
-        type: "int",
-        width: 80,
+        field: "remark",
+        title: "澶囨敞",
+        type: "string",
+        width: 100,
         align: "left",
       },
+      // {
+      //   field: "grade",
+      //   title: "浼樺厛绾�",
+      //   type: "int",
+      //   width: 80,
+      //   align: "left",
+      // },
       {
         field: "dispatchertime",
         title: "浠诲姟涓嬪彂鏃堕棿",
         type: "datetime",
-        width: 150,
+        width: 160,
         align: "left",
+        hidden:true,
       },
       {
         field: "wMSId",
@@ -178,13 +192,13 @@
         align: "left",
         hidden: true,
       },
-      {
-        field: "creater",
-        title: "鍒涘缓浜�",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
+      // {
+      //   field: "creater",
+      //   title: "鍒涘缓浜�",
+      //   type: "string",
+      //   width: 90,
+      //   align: "left",
+      // },
       {
         field: "createDate",
         title: "鍒涘缓鏃堕棿",
@@ -192,28 +206,21 @@
         width: 160,
         align: "left",
       },
-      {
-        field: "modifier",
-        title: "淇敼浜�",
-        type: "string",
-        width: 100,
-        align: "left",
-      },
-      {
-        field: "modifyDate",
-        title: "淇敼鏃堕棿",
-        type: "datetime",
-        width: 160,
-        align: "left",
-      },
-      {
-        field: "remark",
-        title: "澶囨敞",
-        type: "string",
-        width: 100,
-        align: "left",
-        hidden: true,
-      },
+      // {
+      //   field: "modifier",
+      //   title: "淇敼浜�",
+      //   type: "string",
+      //   width: 100,
+      //   align: "left",
+      // },
+      // {
+      //   field: "modifyDate",
+      //   title: "淇敼鏃堕棿",
+      //   type: "datetime",
+      //   width: 160,
+      //   align: "left",
+      // },
+      
     ]);
     const detail = ref({
       cnName: "#detailCnName",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db"
index 1737971..214c32e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm"
index 84957f6..fd184cc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal"
index e832c34..9ab76e6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db"
index fdb6b93..982bdc7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm"
index abb8b7d..b9ca43f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal"
index 30c5784..4a4f661 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
index fe7a0f0..1204094 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
@@ -3,28 +3,36 @@
   "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -38,79 +46,108 @@
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "TaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAG0BAAAAAAAAAAAiwEsBAAAAAAAAAAAAAA==",
+              "DocumentIndex": 4,
+              "Title": "ServiceBase.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "ViewState": "AgIAABYCAAAAAAAAAAAkwCUCAAANAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-21T01:17:15.212Z",
+              "WhenOpened": "2026-01-22T07:17:23.833Z",
+              "IsPinned": true,
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 0,
-              "Title": "WCSTaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ViewState": "AgIAAFAAAAAAAAAAAAAgwFoAAABVAAAAAAAAAA==",
+              "Title": "TaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
+              "ViewState": "AgIAAGQCAAAAAAAAAADgv4oCAAC4AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-21T01:27:15.484Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "MESTaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "ViewState": "AgIAAFoAAAAAAAAAAAAUwDgAAAA8AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T02:01:01.744Z",
+              "WhenOpened": "2026-01-22T06:53:09.745Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 3,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAAAwAAAAAAAAAAAAmwCMAAAAsAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T01:43:30.571Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
               "Title": "WCSTaskController.cs",
               "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxwAAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T01:43:23.989Z"
+              "WhenOpened": "2026-01-22T06:53:05.769Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 5,
               "Title": "MesTaskController.cs",
               "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "ViewState": "AgIAACMAAAAAAAAAAAAUwDoAAAAeAAAAAAAAAA==",
+              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T01:28:52.214Z"
+              "WhenOpened": "2026-01-22T06:53:03.269Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "Dt_Task.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "ViewState": "AgIAAHcAAAAAAAAAAAAqwJYAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T06:36:14.643Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "WMSCruJob.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "ViewState": "AgIAABsBAAAAAAAAAAAtwDEBAABHAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T06:23:38.441Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "WCSTaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "ViewState": "AgIAAAsAAAAAAAAAAAAcwCgAAABpAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T03:56:43.195Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "ViewState": "AgIAABIAAAAAAAAAAAAAABwAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-21T09:31:31.363Z",
+              "EditorCaption": ""
             }
           ]
         }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
index 15cedf9..14d066b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
@@ -3,32 +3,36 @@
   "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -38,84 +42,47 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 0,
+          "SelectedChildIndex": 1,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "appsettings.json",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
-              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAxAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2026-01-21T05:38:33.518Z",
+              "DocumentIndex": 4,
+              "Title": "ServiceBase.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
+              "ViewState": "AgIAABYCAAAAAAAAAAAkwCUCAAANAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T07:17:23.833Z",
+              "IsPinned": true,
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
+              "DocumentIndex": 0,
               "Title": "TaskService.cs",
               "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAG0BAAAAAAAAAAAiwEsBAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAAFoCAAAAAAAAAAAAAIoCAAAuAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-21T01:17:15.212Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "WCSTaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ViewState": "AgIAAFAAAAAAAAAAAAAgwFoAAABVAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-21T01:27:15.484Z",
+              "WhenOpened": "2026-01-22T06:53:09.745Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 3,
-              "Title": "MESTaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs",
-              "ViewState": "AgIAAFoAAAAAAAAAAAAUwDgAAAA8AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T02:01:01.744Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAAAwAAAAAAAAAAAAmwCMAAAAsAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T01:43:30.571Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
               "Title": "WCSTaskController.cs",
               "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxwAAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T01:43:23.989Z"
+              "WhenOpened": "2026-01-22T06:53:05.769Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
@@ -125,9 +92,62 @@
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "ViewState": "AgIAACMAAAAAAAAAAAAUwDoAAAAeAAAAAAAAAA==",
+              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-20T01:28:52.214Z"
+              "WhenOpened": "2026-01-22T06:53:03.269Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "Dt_Task.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
+              "ViewState": "AgIAAHcAAAAAAAAAAAAqwJYAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T06:36:14.643Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "WMSCruJob.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "ViewState": "AgIAABsBAAAAAAAAAAAtwDEBAABHAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T06:23:38.441Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "WCSTaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
+              "ViewState": "AgIAAAsAAAAAAAAAAAAcwCgAAABpAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-22T03:56:43.195Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
+              "ViewState": "AgIAABIAAAAAAAAAAAAAABwAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-21T09:31:31.363Z",
+              "EditorCaption": ""
             }
           ]
         }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
index 2b89e47..2398b4d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
@@ -305,5 +305,68 @@
 
             public DateTime DateTime { get; set; }
         }
+
+
+
+        public WebResponseContent GetArea()
+        {
+            // WarehouseId鍒嗙粍锛岀劧鍚庢槸RoadwayNo
+            var result = BaseDal.QueryData()
+                .GroupBy(x => x.WarehouseId)
+                .Select(g => new {
+                    WarehouseId = g.Key,
+                    RoadwayNo = g.Select(x => x.RoadwayNo).Distinct().ToList()
+                })
+                .ToList();
+            return WebResponseContent.Instance.OK("鎴愬姛", result);
+        }
+
+        public WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo)
+        {
+            // 鏍煎紡{灞�,{杩欎竴灞傜殑鍒楁暟鎹畗}
+            var locations = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.RoadwayNo == RoadwayNo)
+                .Select(x => new
+                {
+                    x.RoadwayNo,
+                    x.WarehouseId,
+                    x.Row,
+                    x.Column,
+                    x.Layer,
+                    x.Depth,
+                    x.LocationType,
+                    x.LocationStatus,
+                    x.EnableStatus
+                })
+                .ToList();
+
+            // 濡傛灉娌℃湁鎵惧埌鏁版嵁锛岃繑鍥炵┖鍒楄〃鑰屼笉鏄痭ull
+            if (locations == null || !locations.Any())
+            {
+                return WebResponseContent.Instance.OK("鏈壘鍒板搴斿贩閬撶殑璐т綅鏁版嵁", new List<object>());
+            }
+
+            // 淇敼涓哄眰涓嬮潰鏀炬墍鏈夊垪鐨勪俊鎭�
+            var result = locations
+                .GroupBy(x => x.Layer)  // 鎸夊眰鍒嗙粍
+                .Select(layerGroup => new
+                {
+                    layer = layerGroup.Key,
+                    columns = layerGroup.GroupBy(x => x.Column)  // 姣忓眰涓寜鍒楀垎缁�
+                                       .Select(columnGroup => new
+                                       {
+                                           column = columnGroup.Key,
+                                           depths = columnGroup.Select(d => new
+                                           {
+                                               row = d.Row,
+                                               depth = d.Depth,
+                                               locationType = d.LocationType,
+                                               locationStatus = d.LocationStatus,
+                                               enableStatus = d.EnableStatus
+                                           }).ToList()
+                                       }).ToList()
+                }).ToList();
+
+            return WebResponseContent.Instance.OK("鎴愬姛", result);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
index 4b106f5..3c4f9bc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
@@ -74,5 +74,10 @@
         /// </summary>
         /// <returns></returns>
         Dt_LocationInfo? ShallowGetLocation(string roadway, int Locationtype, int row, int Layer, int Column);
+
+
+        WebResponseContent GetArea();
+        WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo);
+
     }
     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs"
index eb21726..b7fbbcf 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs"
@@ -16,5 +16,7 @@
         IStockInfoDetail_HtyService StockInfoDetail_HtyService { get; }
 
         IStockInfo_HtyService StockInfo_HtyService { get; }
+
+        
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs"
index 27dcb29..933faf7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs"
@@ -3,12 +3,234 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_ISystemService
 {
+    #region 瀹炰綋绫�
+    public class DirInfo
+    {
+        /// <summary>
+        /// 褰撳墠璺緞
+        /// </summary>
+        public string dirPath { get; set; }
+
+        /// <summary>
+        /// 褰撳墠鍚嶇О
+        /// </summary>
+        public string dirName { get; set; }
+
+        /// <summary>
+        /// 瀛愭枃浠�
+        /// </summary>
+        public List<FileDataInfo> files { get; set; }
+
+        /// <summary>
+        /// 瀛愭枃浠跺す
+        /// </summary>
+        public List<DirInfo> dirs { get; set; }
+    }
+
+    public class FileDataInfo
+    {
+        public string filePath { get; set; }
+
+        public string fileName { get; set; }
+
+        public long fileSize { get; set; }
+    }
+
+    public class GetLogParm
+    {
+        /// <summary>
+        /// 鏂囦欢鍦板潃
+        /// </summary>
+        public string path;
+
+        /// <summary>
+        /// 璇诲彇杩涘害
+        /// </summary>
+        public float percent;
+
+        /// <summary>
+        /// 鏈�澶ц鍙栧ぇ灏�
+        /// </summary>
+        public double maxsize_KB = 20;
+
+        /// <summary>
+        /// 褰撳墠璧峰浣嶇疆
+        /// </summary>
+        public long topStartPos = 0;
+    }
+    #endregion
     public interface ISys_LogService : IService<Sys_Log>
     {
+        /// <summary>
+        /// 閫掑綊鑾峰彇鏂囦欢淇℃伅
+        /// </summary>
+        /// <param name="dirPath"></param>
+        /// <returns></returns>
+        private DirInfo GetDirInfo(string dirPath)
+        {
+            //褰撳墠鏂囦欢澶�
+            var dirInfo = new DirInfo();
+            dirInfo.dirName = Path.GetFileName(dirPath);
+
+            //瀛愭枃浠�
+            List<FileDataInfo> files = new List<FileDataInfo>();
+            foreach (var file in Directory.GetFiles(dirPath))
+            {
+                files.Add(new FileDataInfo()
+                {
+                    filePath = file,
+                    fileName = Path.GetFileName(file)
+                });
+            }
+
+            //瀛愭枃浠跺す
+            var dirs = Directory.GetDirectories(dirPath);
+            dirInfo.dirs = new List<DirInfo>();
+            foreach (var dir in dirs)
+            {
+                dirInfo.dirs.Add(GetDirInfo(dir));
+            }
+
+            //瀛愭枃浠跺す锛屼笌瀛愮洰褰曞悎骞�
+            foreach (var file in files)
+            {
+                dirInfo.dirs.Add(new DirInfo() { dirPath = file.filePath, dirName = file.fileName });
+            }
+            return dirInfo;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏃ュ織鏂囦欢鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetLogList()
+        {
+            WebResponseContent content = new WebResponseContent();
+            string path = System.Environment.CurrentDirectory + "/log";
+            if (!System.IO.Directory.Exists(path))
+            {
+                return content.Error("鏆傛棤鏃ュ織鏂囦欢");
+            }
+
+            content.Data = GetDirInfo(path);
+            content.OK();
+            return content;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏂囦欢鍐呭
+        /// </summary>
+        /// <param name="parm"></param>
+        /// <returns></returns>
+        public WebResponseContent GetLogData(GetLogParm parm)
+        {
+            WebResponseContent content = new WebResponseContent();
+            string res = "";
+            //鏄惁璇诲彇鍒版渶鍚�
+            bool isEnd = false;
+            long startIndex = 0;
+            //鏂囦欢澶у皬
+            long len = 0;
+            try
+            {
+                if (!System.IO.File.Exists(parm.path))
+                {
+                    throw new Exception($"鏂囦欢{parm.path}涓嶅瓨鍦紒");
+                }
+                using (FileStream fs = new FileStream(parm.path, FileMode.Open, FileAccess.Read, FileShare.Read))
+                {
+                    //鏈�澶ц鍙栧ぇ灏�
+                    int maxsize = (int)(1024 * parm.maxsize_KB);
+                    len = fs.Length;
+                    long startPos = (long)(len * (parm.percent / 100));//璧峰浣嶇疆
+                    long readLen = len - startPos;//璇诲彇闀垮害
+
+                    //鍚戝墠鍔犺浇
+                    if (parm.topStartPos != 0)
+                    {
+                        startPos = parm.topStartPos - maxsize;
+                        if (startPos < 0)
+                        {
+                            //宸茶鍒拌捣濮嬩綅
+                            startPos = 0;
+                            readLen = parm.topStartPos;
+                        }
+                        else
+                        {
+                            readLen = maxsize;
+                        }
+                    }
+                    else
+                    {
+                        //璇诲彇澶у皬鏄惁瓒呭嚭鏈�澶ч暱搴�
+                        if (readLen > maxsize)
+                        {
+                            readLen = maxsize;
+                        }
+                        else
+                        {
+                            isEnd = true;
+                        }
+                    }
+
+                    //鍔犺浇100%锛屾寜鏈�澶у唴瀹硅鍙�
+                    if (parm.percent == 100)
+                    {
+                        if (len < maxsize)
+                        {
+                            startPos = 0;
+                            readLen = len;
+                        }
+                        else
+                        {
+                            startPos = len - maxsize;
+                            readLen = maxsize;
+                        }
+                    }
+
+                    fs.Seek(startPos, SeekOrigin.Begin);
+                    var buffer = new byte[readLen];
+                    fs.Read(buffer, 0, (int)readLen);
+
+                    startIndex = startPos;
+                    if (startPos != 0 && (parm.percent != 0 || parm.topStartPos != 0))
+                    {
+                        //涓嶆槸浠庡ご鍔犺浇锛屽垹闄ゅ彲鑳戒笉瀹屾暣鐨勭涓�琛�
+                        int skipCount = 0;
+                        for (int i = 0; i < buffer.Length; i++)
+                        {
+                            if (buffer[i] == 10)
+                            {
+                                skipCount = i;
+                                break;
+                            }
+                        }
+                        if (skipCount != 0)
+                        {
+                            //鍘绘帀鎹㈣
+                            skipCount++;
+                            //涓嬫璇诲彇鍓嶅欢
+                            startIndex += skipCount;
+                        }
+                        res = Encoding.UTF8.GetString(buffer.Skip(skipCount).ToArray());
+                    }
+                    else
+                    {
+                        res = Encoding.UTF8.GetString(buffer);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+            return content.OK(data: new { content = res, isEnd, startIndex, len });
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
index cf67cc5..b52ac3a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -48,8 +48,11 @@
         //WCS鍏ュ簱鑾峰彇
         WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask);
 
+        //涓婁紶MES锛屾墜鍔ㄥ畬鎴�
         WebResponseContent MESManualUpload(SaveModel saveModel);
 
+        //鎭㈠浠诲姟
+        WebResponseContent WMSTaskRecovery(SaveModel saveModel);
 
 
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
index e5c4308..7d330c6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
@@ -108,7 +108,7 @@
         /// </summary>
         [ImporterHeader(Name = "浠撳簱涓婚敭")]
         [ExporterHeader(DisplayName = "浠撳簱涓婚敭")]
-        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "浠撳簱涓婚敭")]
         public int WarehouseId { get; set; }
 
         /// <summary>
@@ -124,7 +124,7 @@
         /// </summary>
         [ImporterHeader(Name = "浼樺厛绾�")]
         [ExporterHeader(DisplayName = "浼樺厛绾�")]
-        [SugarColumn(IsNullable = false, ColumnDescription = "浼樺厛绾�")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "浼樺厛绾�")]
         public int Grade { get; set; }
 
         /// <summary>
@@ -148,7 +148,7 @@
         /// </summary>
         [ImporterHeader(Name = "涓嬪彂娆℃暟")]
         [ExporterHeader(DisplayName = "涓嬪彂娆℃暟")]
-        [SugarColumn(IsNullable = false, ColumnDescription = "涓嬪彂娆℃暟")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "涓嬪彂娆℃暟")]
         public int NumberSsuances { get; set; }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
index c743093..7fa3926 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
@@ -1,8 +1,13 @@
 锘縰sing AutoMapper;
+using Org.BouncyCastle.Crypto;
+using SqlSugar;
+using StackExchange.Profiling.Internal;
+using WIDESEA_Common.Log;
 using WIDESEA_Common.StockEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Utilities;
 using WIDESEA_IStockService;
 using WIDESEA_Model.Models;
 
@@ -39,5 +44,56 @@
                 return webResponse.Error($"搴撳瓨娣诲姞閿欒锛氬師鍥狅細{ex.Message}");
             }
         }*/
+
+        
+        public virtual WebResponseContent DeleteData(object[] keys)
+        {
+            List<Dt_StockInfo> stodata = new List<Dt_StockInfo>();
+            try
+            {
+                if (typeof(Dt_StockInfo).GetNavigatePro() == null)
+                    return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+                else
+                {
+                    if (keys != null)
+                    {
+                        Type detailType = typeof(Dt_StockInfo).GetDetailType();
+                        string name = typeof(Dt_StockInfo).GetMainIdByDetail();
+                        List<object> dynamicDelKeys = new List<object>();
+
+                        for (int i = 0; i < keys.Length; i++)
+                        {
+                            dynamicDelKeys.Add(keys[i]);
+                        }
+                        ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                        foreach (var key in keys)
+                        {
+                            int idt = int.Parse(key.ToString());
+                            stodata.Add(BaseDal.QueryData(x => x.Id == idt).FirstOrDefault());
+                        }
+
+                        if (dynamicDelKeys.Count > 0)
+                            WriteLog.Write_Log("WMS_鍒犻櫎搴撳瓨", $"鍒犻櫎淇℃伅", "鎴愬姛", $"鍙傛暟锛歿stodata.ToJson()}");
+                            BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{name} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange();
+
+                        BaseDal.DeleteDataByIds(keys);
+
+                        ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                        return WebResponseContent.Instance.OK();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error("鍙傛暟閿欒");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs"
index 5747dac..c18b6ff 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs"
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
 
 namespace WIDESEA_StockService
 {
@@ -23,5 +24,7 @@
             StockInfoDetail_HtyService = stockInfoDetail_HtyService;
             StockInfo_HtyService = stockInfo_HtyService;
         }
+
+        
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
index 6b8859f..6aa86d3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs"
@@ -15,5 +15,7 @@
         public Sys_LogService(IRepository<Sys_Log> BaseDal) : base(BaseDal)
         {
         }
+
+
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
index d80d531..ddc2e8f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
@@ -33,7 +33,7 @@
         //鍏ュ簱锛岀┖鐩樺洖搴�
         public ApiResponse AddInStoreDoc(MES_InTask mES_In)
         {
-            WriteLog.Write_Log("MES_鎺ユ敹MES鍏ュ簱浠诲姟涓嬪彂", $"浠诲姟鎺ユ敹鍙傛暟", "鎺ユ敹鍙傛暟", $"鍙傛暟锛歿mES_In.ToJson()}");
+            WriteLog.Write_Log("MES_鎺ユ敹鍏ュ簱浠诲姟涓嬪彂", $"浠诲姟鎺ユ敹鍙傛暟", "鎺ユ敹鍙傛暟", $"鍙傛暟锛歿mES_In.ToJson()}");
             ApiResponse apiResponse = new ApiResponse();
             try
             {
@@ -120,13 +120,13 @@
                 BaseDal.AddData(task);
                 //_stockInfoService.Repository.AddData(dt_StockInfo);
                 _unitOfWorkManage.CommitTran();
-                WriteLog.Write_Log("MES_鎺ユ敹MES鍏ュ簱浠诲姟涓嬪彂", $"鍙嶉淇℃伅", "鎴愬姛", $"浠诲姟娣诲姞鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}");
+                WriteLog.Write_Log("MES_鎺ユ敹鍏ュ簱浠诲姟涓嬪彂", $"鍙嶉淇℃伅", "鎴愬姛", $"浠诲姟娣诲姞鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}");
                 return apiResponse.OK();
             }
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
-                WriteLog.Write_Log("MES_鎺ユ敹MES鍏ュ簱浠诲姟涓嬪彂", $"鍙嶉淇℃伅", "澶辫触", $"浠诲姟娣诲姞澶辫触锛屾墭鐩樻潯鐮侊細{mES_In.containerNo},绯荤粺鍑洪敊鍘熷洜锛歿ex.Message}");
+                WriteLog.Write_Log("MES_鎺ユ敹鍏ュ簱浠诲姟涓嬪彂", $"鍙嶉淇℃伅", "澶辫触", $"浠诲姟娣诲姞澶辫触锛屾墭鐩樻潯鐮侊細{mES_In.containerNo},绯荤粺鍑洪敊鍘熷洜锛歿ex.Message}");
                 return apiResponse.Error($"WMS浠诲姟娣诲姞閿欒锛屽師鍥狅細{ex.Message}");
             }
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 4c5f053..4408ee1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -38,6 +38,7 @@
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.Task;
 using WIDESEA_IBasicService;
@@ -99,28 +100,35 @@
             return WebResponseContent.Instance.OK();
         }
 
+
+        //鎵嬪姩锛屼换鍔′笂鎶�
+        #region
         public WebResponseContent MESManualUpload(SaveModel saveModel)
         {
             WebResponseContent response = new WebResponseContent();
 
+            List<Dt_Task> stdata=new List<Dt_Task>();
             try
             {
                 foreach (var key in saveModel.DelKeys)
                 {
                     int taskId = int.Parse(key.ToString());
                     Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
-
+                    
                     WebResponseContent taskResult = ProcessTask(task);
                     if (!taskResult.Status)
                     {
+                        WriteLog.Write_Log("WMS_鎵嬪姩涓婃姤浠诲姟", $"浠诲姟涓婃姤", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},", $"鍘熷洜锛歿taskResult.Message}");
                         return taskResult;
                     }
+                    stdata.Add(task);
                 }
-
+                WriteLog.Write_Log("WMS_鎵嬪姩涓婃姤浠诲姟", $"浠诲姟涓婃姤", $"鎴愬姛", $"涓婃姤鐨勬暟鎹細{stdata.ToJson()}");
                 return response.OK("鎵�鏈変换鍔″鐞嗘垚鍔�");
             }
             catch (Exception ex)
             {
+                WriteLog.Write_Log("WMS_鎵嬪姩涓婃姤浠诲姟", $"浠诲姟涓婃姤", $"澶辫触", $"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
                 return response.Error($"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
             }
         }
@@ -137,7 +145,7 @@
                     {
                         return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                     }
-                    return HandleInboundTask(task, 
+                    return HandleInboundTask(task,
                         GetWcsType(task.TaskStatus,
                         (int)InTaskStatusEnum.InPLCException,
                         (int)InTaskStatusEnum.InSCException)
@@ -168,15 +176,18 @@
             return 0;
         }
 
+        #endregion
 
         /// <summary>
         /// 浠诲姟瀹屾垚鎺ュ彛
         /// </summary>
         /// <param name="wCSTask"></param>
         /// <returns></returns>
+
+        #region 浠诲姟瀹屾垚
         public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask)
         {
-            WebResponseContent webResponse= new WebResponseContent();
+            WebResponseContent webResponse = new WebResponseContent();
             try
             {
                 Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode);
@@ -190,7 +201,7 @@
             }
         }
 
-        public WebResponseContent TaskCompletedtask(Dt_Task task,int wcstype)
+        public WebResponseContent TaskCompletedtask(Dt_Task task, int wcstype)
         {
             WebResponseContent webResponse = new WebResponseContent();
             try
@@ -226,7 +237,7 @@
 
                         if (string.IsNullOrEmpty(task.TargetAddress))
                         {
-                            if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException)
+                            if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException)
                             {
                                 int loctype = 0;
                                 if (task.Roadway == "1" || task.Roadway == "2")
@@ -241,13 +252,22 @@
 
                                 //鏌ユ壘璐т綅锛屾洿鏂颁换鍔�
                                 Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype);
-                                if(dt_Location==null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,鎵樼洏缂栧彿锛歿task.PalletCode}");
+                                if (dt_Location == null)
+                                {
+                                    WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"鏈壘鍒拌璐т綅淇℃伅,鎵樼洏缂栧彿锛歿task.PalletCode}");
+                                    return content.Error($"鏈壘鍒拌璐т綅淇℃伅,鎵樼洏缂栧彿锛歿task.PalletCode}");
+                                }
                                 Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
-                                if (ShallowCargoHold == null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
+                                if (ShallowCargoHold == null)
+                                {
+                                    WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
+                                    return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
+                                }
                                 if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},鏌ユ壘鐨勮揣浣嶆祬璐т綅鏈夎揣锛岃揣浣嶇紪鍙凤細{ShallowCargoHold.LocationCode}");
 
                                 if (task.PalletCode[0] == 1 && (dt_Location.RoadwayNo == "1" || dt_Location.RoadwayNo == "2") && dt_Location.Column < 4)
                                 {
+                                    WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触,鎵樼洏鏉$爜锛歿task.PalletCode},璐т綅缂栧彿:{dt_Location.LocationCode}", $"鏉$爜涓洪珮鎵樼洏锛屼絾鏄煡鎵剧殑璐т綅瑕佸叆鍦ㄤ綆鎵樼洏涓�");
                                     return content.Error($"鏉$爜涓洪珮鎵樼洏锛屼絾鏄煡鎵剧殑璐т綅瑕佸叆鍦ㄤ綆鎵樼洏涓嬶紝鏁呴殰,鎵樼洏鏉$爜锛歿task.PalletCode},璐т綅缂栧彿:{dt_Location.LocationCode}");
                                 }
 
@@ -270,21 +290,24 @@
                                 dt_StockInfo.Creater = "MWS";
                                 dt_StockInfo.CreateDate = DateTime.Now;
                                 dt_StockInfo.Roadway = task.Roadway;
-                                
+
 
                                 _unitOfWorkManage.BeginTran();
                                 _stockInfoService.AddData(dt_StockInfo);
                                 _locationInfoService.UpdateData(dt_Location);
                                 BaseDal.UpdateData(task);
                                 _unitOfWorkManage.CommitTran();
+                                WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅,娣诲姞搴撳瓨淇℃伅锛歿dt_StockInfo.ToJson()}锛屼慨鏀硅揣浣嶏細{dt_Location.ToJson()}");
+
                                 return content.OK($"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                             }
                             else
                             {
+                                WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
                                 return content.Error("涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
                             }
 
-                            
+
                         }
                         else
                         {
@@ -299,22 +322,22 @@
                                     _unitOfWorkManage.BeginTran();
                                     BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                                     _unitOfWorkManage.CommitTran();
+                                    WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎鐐瑰埌鐐瑰畬鎴�", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父");
                                     return content.OK($"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                                 }
                                 else
                                 {
-                                    task.NumberSsuances = task.NumberSsuances + 1;
-                                    if (task.NumberSsuances == 3)
-                                    {
-                                        task.TaskStatus = (int)InTaskStatusEnum.InPLCException;
-                                        task.Remark = "杈撻�佺嚎鍏ュ簱锛氫笂浼燤ES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg;
-                                        BaseDal.UpdateData(task);
-                                    }
+                                    task.NumberSsuances = 3;
+                                    task.TaskStatus = (int)InTaskStatusEnum.InPLCException;
+                                    task.Remark = "杈撻�佺嚎鍏ュ簱锛氫笂浼燤ES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg;
+                                    BaseDal.UpdateData(task);
+                                    WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎鐐瑰埌鐐瑰畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父");
                                     return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg);
                                 }
                             }
                             else
                             {
+                                WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"杈撻�佺嚎鐐瑰埌鐐瑰畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
                                 return content.Error($"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄緭閫佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                             }
 
@@ -339,32 +362,35 @@
                                 _locationInfoService.UpdateData(dt_LocationInfo);
                                 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                                 _unitOfWorkManage.CommitTran();
+
+                                WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"淇敼鍚庣殑搴撳瓨锛歿dt_Stockowc.ToJson()},淇敼鍚庣殑搴撲綅淇℃伅锛歿dt_LocationInfo.ToJson()}");
                                 return content.OK($"宸叉帴鏀跺叆搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                             }
                             else
                             {
-                                task.NumberSsuances = task.NumberSsuances + 1;
-                                if (task.NumberSsuances == 3)
-                                {
-                                    task.TaskStatus = (int)InTaskStatusEnum.InSCException;
-                                    task.Remark = "鍫嗗灈鏈哄叆搴擄紝涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
-                                    BaseDal.UpdateData(task);
-                                }
+                                task.NumberSsuances = 3;
+                                task.TaskStatus = (int)InTaskStatusEnum.InSCException;
+                                task.Remark = "鍫嗗灈鏈哄叆搴擄紝涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+                                BaseDal.UpdateData(task);
+                                WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_Parameter.ResultMsg}");
                                 return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                             }
                         }
                         else
                         {
+                            WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄爢鍨涙満鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
                             return content.Error($"涓婃姤澶辫触锛屽綋鍓嶄换鍔′笉鏄爢鍨涙満鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                         }
-                            
+
                     default:
+                        WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
                         return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
                 }
             }
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
+                WriteLog.Write_Log("WCS_鍏ュ簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
                 return content.Error($"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
             }
         }
@@ -377,7 +403,7 @@
                 switch (wcsTaskType)
                 {
                     case 1:
-                        if(task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException)
+                        if (task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException)
                         {
                             string Resultplc = MesOutTaskStatusEnum.Finish.GetDescription();
                             //涓婃姤MES浠诲姟瀹屾垚
@@ -386,26 +412,27 @@
                             {
                                 task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish;
                                 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+
+                                WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚",$"鎴愬姛,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅");
                                 return content.OK($"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                             }
                             else
                             {
-                                task.NumberSsuances = task.NumberSsuances + 1;
-                                if (task.NumberSsuances == 3)
-                                {
-                                    task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException;
-                                    task.Remark = "鍑哄簱锛岃緭閫佺嚎涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
-                                    BaseDal.UpdateData(task);
-                                }
+                                task.NumberSsuances =3;
+                                task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException;
+                                task.Remark = "鍑哄簱锛岃緭閫佺嚎涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+                                BaseDal.UpdateData(task);
+                                WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_Parameter.ResultMsg}");
                                 return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                             }
 
                         }
                         else
                         {
+                            WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"杈撻�佺嚎瀹屾垚", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸杈撻�佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触");
                             return content.Error($"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸杈撻�佺嚎鎵ц涓紝WCS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                         }
-                        
+
                     case 2:
 
                         if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutSCException)
@@ -430,32 +457,35 @@
                                 _locationInfoService.UpdateData(dt_LocationInfo);
                                 BaseDal.UpdateData(task);
                                 _unitOfWorkManage.CommitTran();
+                                WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�",$"鎴愬姛锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"鍒犻櫎鐨勫簱瀛橈細{dt_Stockowc.ToJson()},淇敼鐨勮揣浣嶏細{dt_LocationInfo.ToJson()}");
+
                                 return content.OK($"宸叉帴鏀跺嚭搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                             }
                             else
                             {
-                                task.NumberSsuances = task.NumberSsuances + 1;
-                                if (task.NumberSsuances == 3)
-                                {
-                                    task.TaskStatus = (int)OutTaskStatusEnum.OutSCException;
-                                    task.Remark = "鍫嗗灈鏈哄嚭搴擄細涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg;
-                                    BaseDal.UpdateData(task);
-                                }
+                                task.NumberSsuances = 3;
+                                task.TaskStatus = (int)OutTaskStatusEnum.OutSCException;
+                                task.Remark = "鍫嗗灈鏈哄嚭搴擄細涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg;
+                                BaseDal.UpdateData(task);
+                                WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_SCParameter.ResultMsg}");
                                 return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg);
                             }
                         }
                         else
                         {
+                            WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触");
                             return content.Error($"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                         }
-                        
+
                     default:
+                        WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
                         return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
                 }
             }
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
+                WriteLog.Write_Log("WCS_鍑哄簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
                 return content.Error($"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
             }
         }
@@ -467,7 +497,7 @@
             {
                 if (wcsTaskType == 2)
                 {
-                    if(task.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting)
+                    if (task.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting)
                     {
                         //涓婃姤MES浠诲姟瀹屾垚
                         MES_parameter mES_Parameter = AbnormalStorageLocation(task.PalletCode, task.SourceAddress, task.TargetAddress);
@@ -494,43 +524,149 @@
                             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                             _unitOfWorkManage.CommitTran();
 
+                            WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"鎴愬姛,浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"淇敼鐨勮揣浣嶏細{dt_Locations.ToJson()},淇敼鐨勫簱瀛橈細{dt_StockInfo.ToJson()}");
                             return responseContent.OK($"宸叉帴鏀剁Щ搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                         }
                         else
                         {
-                            task.NumberSsuances = task.NumberSsuances + 1;
-                            if (task.NumberSsuances == 3)
-                            {
-                                task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException;
-                                task.Remark = "绉诲簱锛屼笂浼燤ES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
-                                BaseDal.UpdateData(task);
-                            }
+                            task.NumberSsuances = 3;
+                            task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException;
+                            task.Remark = "绉诲簱锛屼笂浼燤ES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+                            BaseDal.UpdateData(task);
+                            WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婁紶MES澶辫触锛屽師鍥狅細{mES_Parameter.ResultMsg}");
                             return responseContent.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                         }
                     }
                     else
                     {
+                        WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触");
                         return responseContent.Error($"涓婃姤澶辫触锛學MS褰撳墠浠诲姟涓嶆槸鍫嗗灈鏈烘墽琛屼腑锛學CS涓婃姤瀹屾垚澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
                     }
-                    
+
                 }
                 else
                 {
+                    WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
                     return responseContent.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
                 }
             }
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
+                WriteLog.Write_Log("WCS_绉诲簱_涓婃姤瀹屾垚", $"鍫嗗灈鏈哄畬鎴�", $"澶辫触锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}", $"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
                 return responseContent.Error($"WMS绯荤粺閿欒锛屽師鍥狅細{ex.Message}");
             }
-            
+
+        }
+
+        #endregion
+
+
+
+        //浠诲姟浠诲姟鎭㈠
+        public WebResponseContent WMSTaskRecovery(SaveModel saveModel)
+        {
+            WebResponseContent response = new WebResponseContent();
+            List<Dt_Task> dt_Task = new List<Dt_Task>();
+            try
+            {
+                foreach (var key in saveModel.DelKeys)
+                {
+                    int taskId = int.Parse(key.ToString());
+                    Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
+                    if (task == null)
+                            return response.Error("鏈壘鍒颁换鍔′俊鎭�");
+                    task.NumberSsuances = 0;
+                    task.Remark = "";
+                    dt_Task.Add(task);
+                }
+                bool updatetask= BaseDal.UpdateData(dt_Task);
+                if (updatetask)
+                {
+                    WriteLog.Write_Log("WMS_浠诲姟鎭㈠", $"WMS_浠诲姟鎭㈠", "淇敼鎴愬姛", $"淇敼鐨勬暟鎹細{dt_Task.ToJson()}");
+                    return response.OK("鎵�鏈変换鍔″鐞嗘垚鍔�");
+                }
+                else
+                {
+                    WriteLog.Write_Log("WMS_浠诲姟鎭㈠", $"WMS_浠诲姟鎭㈠", "淇敼澶辫触", $"淇敼鐨勬暟鎹細{dt_Task.ToJson()}");
+                    return response.Error("澶勭悊澶辫触锛屼慨鏀逛换鍔″け璐�");
+                }
+
+                
+            }
+            catch (Exception ex)
+            {
+                WriteLog.Write_Log("WMS_浠诲姟鎭㈠", $"WMS_浠诲姟鎭㈠", "淇敼澶辫触", $"淇敼鐨勬暟鎹細{dt_Task.ToJson()}锛屽け璐ュ師鍥狅細{ex.Message}");
+                return response.Error($"WMS浠诲姟鎭㈠閿欒锛歿ex.Message}");
+            }
         }
 
 
+        public virtual WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            try
+            {
+                List<string>? list = UpdateIgnoreColOnExecute?.Invoke(saveModel);
+                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//鍒ゆ柇鍙傛暟鏄惁浼犲叆
+                {
+                    return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+                }
+                string validResult = typeof(Dt_Task).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray() ?? null);
 
+                if (!string.IsNullOrEmpty(validResult))
+                {
+                    return WebResponseContent.Instance.Error(validResult);
+                }
 
-        
+                PropertyInfo keyPro = typeof(Dt_Task).GetKeyProperty();
+                if (keyPro == null)
+                {
+                    return WebResponseContent.Instance.Error("璇峰厛璁剧疆涓婚敭");
+                }
 
+                Dt_Task entity = saveModel.MainData.DicToModel<Dt_Task>();
+                Dt_Task Dt_Custask= BaseDal.QueryFirst(x=>x.TaskId==entity.TaskId);
+
+                List<string> listCol = new List<string>();
+                foreach (var item in saveModel.MainData)
+                {
+                    PropertyInfo? propertyInfo = typeof(Dt_Task).GetProperty(item.Key);
+                    if (propertyInfo == null)
+                    {
+                        propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToLower());
+                        if (propertyInfo == null)
+                        {
+                            propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToUpper());
+                        }
+                    }
+
+                    listCol.Add(propertyInfo?.Name);
+                }
+
+                if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
+                {
+                    if (list != null)
+                        listCol = listCol.Where(x => !list.Contains(x)).ToList();
+                    bool result = BaseDal.UpdateData(entity, listCol, list);
+                    WriteLog.Write_Log("WMS_浠诲姟淇敼", $"浠诲姟淇敼", $"浠诲姟缂栧彿:{entity.TaskId},鎵樼洏鏉$爜锛歿entity.PalletCode},鏄惁鎴愬姛锛歿result}", $"鍘熸潵鏁版嵁锛歿Dt_Custask.ToJson()}======>>>>>>淇敼鍚庣殑鏁版嵁锛歿entity.ToJson()}");
+                    return WebResponseContent.Instance.OK();
+                }
+
+                if (typeof(Dt_Task).GetNavigatePro() == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈厤缃鑸睘鎬�");
+                }
+
+                Type detailType = typeof(Dt_Task).GetDetailType();
+                MethodInfo? methodInfo = GetType().GetMethod("UpdateDataInculdesDetail");
+                methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
+                object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData, saveModel.DelKeys });
+                return obj as WebResponseContent;
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs"
index cd82295..af9691a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs"
@@ -88,7 +88,7 @@
         public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask)
         {
             
-            WriteLog.Write_Log("杈撻�佺嚎璇锋眰鍏ュ簱", $"浠诲姟淇℃伅", "鎺ユ敹鍙傛暟", $"鍙傛暟锛歿wCSTask.ToJson()}");
+            WriteLog.Write_Log("WCS_杈撻�佺嚎璇锋眰鍏ュ簱", $"浠诲姟淇℃伅", "鎺ユ敹鍙傛暟", $"鍙傛暟锛歿wCSTask.ToJson()}");
             WebResponseContent webResponse = new WebResponseContent();
             try
             {
@@ -127,7 +127,7 @@
                         //杩涜淇敼鏁版嵁搴�
                         BaseDal.UpdateData(task);
 
-                        WriteLog.Write_Log("杈撻�佺嚎璇锋眰鍏ュ簱", $"浠诲姟淇℃伅", "杩斿洖杈撻�佺嚎浠诲姟淇℃伅", $"杩斿洖缁欒緭閫佺嚎鐨勪换鍔′俊鎭細{wcstaskinfo.ToJson()}");
+                        WriteLog.Write_Log("WCS_杈撻�佺嚎璇锋眰鍏ュ簱", $"浠诲姟淇℃伅", "杩斿洖杈撻�佺嚎浠诲姟淇℃伅", $"杩斿洖缁欒緭閫佺嚎鐨勪换鍔′俊鎭細{wcstaskinfo.ToJson()}");
                         return webResponse.OK(data: wcstaskinfo);
                     }
                     else
@@ -143,7 +143,7 @@
             }
             catch (Exception ex)
             {
-                WriteLog.Write_Log("杈撻�佺嚎璇锋眰鍏ュ簱", $"浠诲姟淇℃伅", "澶辫触", $"浠诲姟鑾峰彇澶辫触锛寃ms绯荤粺鏁呴殰锛屽師鍥狅細{ex.Message}");
+                WriteLog.Write_Log("WCS_杈撻�佺嚎璇锋眰鍏ュ簱", $"浠诲姟淇℃伅", "澶辫触", $"浠诲姟鑾峰彇澶辫触锛寃ms绯荤粺鏁呴殰锛屽師鍥狅細{ex.Message}");
                 return webResponse.Error("浠诲姟鑾峰彇澶辫触锛寃ms绯荤粺鏁呴殰锛屽師鍥狅細" + ex.Message);
             }
         }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
index 6b305e7..f186aaf 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
@@ -303,6 +303,7 @@
                 string Locationcodeadd = dt_Task.TaskType == (int)TaskTypeEnum.Inbound ? dt_Task.NextAddress:  dt_Task.CurrentAddress ;
 
                 Dt_LocationInfo dt_Location = _locationInfoService.Repository.QueryData(x => x.LocationCode == Locationcodeadd).FirstOrDefault();
+                if(dt_Location == null) { return content.Error("鏈兘鏌ユ壘鍒板簱浣�"); }
                 if (dt_Location.Depth == 1 || dt_Location.RoadwayNo == "5") return content.OK();
                 int locrow = judgmentRow(dt_Location.RoadwayNo, dt_Location.Row);
                 Dt_LocationInfo shallowLocation = _locationInfoService.Repository.QueryData(x => x.RoadwayNo == dt_Location.RoadwayNo && x.Row == locrow && x.Layer == dt_Location.Layer && x.Column == dt_Location.Column).FirstOrDefault();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs"
index c62202f..6d50f95 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs"
@@ -25,6 +25,22 @@
         {
         }
 
-       
+        /// <summary>
+        /// 鑾峰彇宸烽亾
+        /// </summary>
+        [HttpGet, Route("GetArea"), AllowAnonymous]
+        public WebResponseContent GetArea()
+        {
+            return Service.GetArea();
+        }
+        /// <summary>
+        /// 鑾峰彇璐т綅淇℃伅
+        /// </summary>
+        [HttpGet, Route("GetLocationStatus"), AllowAnonymous]
+        public WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo)
+        {
+            return Service.GetLocationStatus(WarehouseId, RoadwayNo);
+        }
+
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs"
index 3cd2f46..e35fb87 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs"
@@ -1,5 +1,7 @@
-锘縰sing Microsoft.AspNetCore.Http;
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
 using WIDESEA_ISystemService;
 using WIDESEA_Model.Models;
@@ -16,5 +18,17 @@
         public Sys_LogController(ISys_LogService service) : base(service)
         {
         }
+
+        [HttpPost, Route("GetLogList"), AllowAnonymous]
+        public WebResponseContent GetLogList()
+        {
+            return Service.GetLogList();
+        }
+
+        [HttpPost, Route("GetLogData"), AllowAnonymous]
+        public WebResponseContent GetLogData([FromBody] GetLogParm parm)
+        {
+            return Service.GetLogData(parm);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index 840ae9c..db0c3f2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -48,5 +48,11 @@
         {
             return Service.MESManualUpload(saveModel);
         }
+
+        [HttpPost, Route("WMSTaskRecovery"), AllowAnonymous]
+        public WebResponseContent WMSTaskRecovery([FromBody] SaveModel saveModel)
+        {
+            return Service.WMSTaskRecovery(saveModel);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\344\273\273\345\212\241\346\201\242\345\244\215/2026-01-21/WMS_\344\273\273\345\212\241\346\201\242\345\244\215260121.txt" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\344\273\273\345\212\241\346\201\242\345\244\215/2026-01-21/WMS_\344\273\273\345\212\241\346\201\242\345\244\215260121.txt"
new file mode 100644
index 0000000..9a756a0
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\344\273\273\345\212\241\346\201\242\345\244\215/2026-01-21/WMS_\344\273\273\345\212\241\346\201\242\345\244\215260121.txt"
@@ -0,0 +1,5 @@
+2026/1/21 15:29:45.588
+淇敼鎴愬姛
+"淇敼鐨勬暟鎹細[{\"TaskId\":77,\"TaskNum\":\"SD202601210942100001\",\"PalletCode\":\"1010000096\",\"PalletType\":\"1\",\"Roadway\":\"1\",\"TaskType\":200,\"TaskStatus\":999,\"SourceAddress\":\"1103\",\"TargetAddress\":\"YMYL00100401801\",\"CurrentAddress\":\"YMYL00103700220\",\"NextAddress\":\"YMYL00101800401\",\"WarehouseId\":1,\"OrderNo\":\"2026/1/21 9:42:10\",\"Grade\":1,\"Dispatchertime\":null,\"Remark\":\"\",\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-21T09:42:10\",\"Modifier\":\"admin\",\"ModifyDate\":\"2026-01-21T15:29:45.5205361+08:00\"},{\"TaskId\":76,\"TaskNum\":\"SD202601210939470001\",\"PalletCode\":\"1010000097\",\"PalletType\":\"1\",\"Roadway\":\"1\",\"TaskType\":200,\"TaskStatus\":999,\"SourceAddress\":\"1101\",\"TargetAddress\":\"YMYL00100101801\",\"CurrentAddress\":\"YMYL00103700220\",\"NextAddress\":\"YMYL00101800101\",\"WarehouseId\":1,\"OrderNo\":\"2026/1/21 9:39:47\",\"Grade\":1,\"Dispatchertime\":null,\"Remark\":\"\",\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-21T09:39:48\",\"Modifier\":\"admin\",\"ModifyDate\":\"2026-01-21T15:29:45.5257376+08:00\"}]"
+-------------------------------
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\344\273\273\345\212\241\347\212\266\346\200\201\344\277\256\346\224\271/2026-01-22/\344\273\273\345\212\241\344\277\256\346\224\271260122.txt" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\344\273\273\345\212\241\347\212\266\346\200\201\344\277\256\346\224\271/2026-01-22/\344\273\273\345\212\241\344\277\256\346\224\271260122.txt"
new file mode 100644
index 0000000..c82bf4d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\344\273\273\345\212\241\347\212\266\346\200\201\344\277\256\346\224\271/2026-01-22/\344\273\273\345\212\241\344\277\256\346\224\271260122.txt"
@@ -0,0 +1,20 @@
+2026/1/22 15:29:53.403
+浠诲姟缂栧彿:135,鎵樼洏鏉$爜锛�1010000054,鏄惁鎴愬姛锛歍rue
+"涓嬪彂鐨勫弬鏁帮細"
+-------------------------------
+
+2026/1/22 15:30:08.163
+浠诲姟缂栧彿:135,鎵樼洏鏉$爜锛�1010000054,鏄惁鎴愬姛锛歍rue
+"涓嬪彂鐨勫弬鏁帮細"
+-------------------------------
+
+2026/1/22 15:34:58.131
+浠诲姟缂栧彿:135,鎵樼洏鏉$爜锛�1010000054,鏄惁鎴愬姛锛歍rue
+"涓嬪彂鐨勫弬鏁帮細"
+-------------------------------
+
+2026/1/22 15:40:50.429
+浠诲姟缂栧彿:135,鎵樼洏鏉$爜锛�1010000054,鏄惁鎴愬姛锛歍rue
+"鍘熸潵鏁版嵁锛歿\"TaskId\":135,\"TaskNum\":\"SD202601221416060001\",\"PalletCode\":\"1010000054\",\"PalletType\":\"1\",\"Roadway\":\"2\",\"TaskType\":200,\"TaskStatus\":200,\"SourceAddress\":\"1103\",\"TargetAddress\":null,\"CurrentAddress\":\"1103\",\"NextAddress\":\"1108\",\"WarehouseId\":0,\"OrderNo\":\"2026/1/22 14:16:06\",\"Grade\":1,\"Dispatchertime\":null,\"Remark\":null,\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-22T14:16:07\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-22T14:16:34\"},,,\n\r淇敼鍚庣殑鏁版嵁锛歿\"TaskId\":135,\"TaskNum\":\"SD202601221416060001\",\"PalletCode\":\"1010000054\",\"PalletType\":\"1\",\"Roadway\":\"2\",\"TaskType\":200,\"TaskStatus\":200,\"SourceAddress\":\"1103\",\"TargetAddress\":\"222\",\"CurrentAddress\":\"1103\",\"NextAddress\":\"1108\",\"WarehouseId\":0,\"OrderNo\":null,\"Grade\":0,\"Dispatchertime\":null,\"Remark\":null,\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-22T14:16:07+08:00\",\"Modifier\":\"admin\",\"ModifyDate\":\"2026-01-22T15:40:50.375379+08:00\"}"
+-------------------------------
+
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\345\210\240\351\231\244\345\272\223\345\255\230/2026-01-22/\345\210\240\351\231\244\344\277\241\346\201\257260122.txt" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\345\210\240\351\231\244\345\272\223\345\255\230/2026-01-22/\345\210\240\351\231\244\344\277\241\346\201\257260122.txt"
new file mode 100644
index 0000000..70f786f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_\345\210\240\351\231\244\345\272\223\345\255\230/2026-01-22/\345\210\240\351\231\244\344\277\241\346\201\257260122.txt"
@@ -0,0 +1,25 @@
+2026/1/22 11:49:52.430
+鎴愬姛
+"鍙傛暟锛歔{\"Id\":70,\"PalletCode\":\"2020000020\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100300301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:21:24\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:22:15\"}]"
+-------------------------------
+
+2026/1/22 11:49:56.456
+鎴愬姛
+"鍙傛暟锛歔null,{\"Id\":69,\"PalletCode\":\"2020000009\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100200301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:17:45\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:18:33\"}]"
+-------------------------------
+
+2026/1/22 11:52:32.402
+鎴愬姛
+"鍙傛暟锛歔{\"Id\":69,\"PalletCode\":\"2020000009\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100200301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:17:45\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:18:33\"}]"
+-------------------------------
+
+2026/1/22 11:52:46.417
+鎴愬姛
+"鍙傛暟锛歔{\"Id\":68,\"PalletCode\":\"2020000003\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100400301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:13:05\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:14:00\"}]"
+-------------------------------
+
+2026/1/22 11:52:53.41
+鎴愬姛
+"鍙傛暟锛歔{\"Id\":67,\"PalletCode\":\"2020000004\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100300201\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:10:56\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:11:44\"}]"
+-------------------------------
+
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/WMS\345\272\223\344\275\215\347\274\226\347\240\201/\346\235\276\350\241\245\346\226\2311-4\345\210\22712\345\261\202\350\264\247\346\236\266.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/WMS\345\272\223\344\275\215\347\274\226\347\240\201/\346\235\276\350\241\245\346\226\2311-4\345\210\22712\345\261\202\350\264\247\346\236\266.xls"
new file mode 100644
index 0000000..10ebe71
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/WMS\345\272\223\344\275\215\347\274\226\347\240\201/\346\235\276\350\241\245\346\226\2311-4\345\210\22712\345\261\202\350\264\247\346\236\266.xls"
Binary files differ

--
Gitblit v1.9.3