From a89c018c3afa43a529f9eb54725bc92ed2b996e8 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期二, 24 九月 2024 15:04:45 +0800
Subject: [PATCH] 1

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs                                                |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs                           |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs                                     |   74 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoDetailService.cs                            |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs                                    |  405 ++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                      |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs                                     |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaInfoService.cs                                   |   19 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/roadwayInfo.js                                                |  115 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs                             |  104 -
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs                                        |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaInfoService.cs                                      |   74 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs                                  |   16 
 代码管理/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue                                                       |  452 +++---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs                                                   |   61 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderDetailService.cs                          |   23 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs                                    |   19 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs                                         |    7 
 代码管理/WMS/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue                                              |    5 
 代码管理/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue                                               |   15 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs                                |  123 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/AreaInfoController.cs                         |   31 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs                                              |  170 --
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue                                                  |   23 
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue                                                     |   23 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs                                    |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs                                                  |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs                                                   |   28 
 代码管理/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue                                                     |    1 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/136ff540-9b25-4fe9-9296-15d34a430bcd.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/CachePointService.cs                                    |   76 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs                                                  |   41 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs                        |   25 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ICachePointService.cs                                       |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderDetailService.cs                     |   22 
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue                                                      |   42 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2b11c927-14d8-4e57-a539-b0e07bdba959.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs                                 |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs                                        |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                                     |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs                                         |    5 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue                                  |   72 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs                              |    4 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js                                               |  131 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaRouterService.cs                                 |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs                                  |  140 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/RoadwayInfoRepository.cs                                  |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_DictionaryRepository.cs                              |   20 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockViewService.cs                                  |   28 
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue                                                   |    3 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderDetailService.cs                        |   48 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs                                  |   18 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderDetailService.cs                       |    9 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs                                                 |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs                               |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs                                                 |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordSetvice.cs                |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaRouterService.cs                                    |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IRoadwayInfoService.cs                                      |    8 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/af5fd854-4fcc-462d-8592-8cd25a8de131.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue                                                     |    5 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/RoadwayInfoService.cs                                |   16 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs                 |   10 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/56991d93-425e-4934-a6f8-51fc16c45172.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs                                                   |   12 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs                                        |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs                                  |   37 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/areaInfo.js                                                   |  115 +
 代码管理/WMS/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue                                                |    7 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs                               |  115 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs                                            |   45 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs                                  |    4 
 代码管理/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue                                                     |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IAreaInfoService.cs                                         |    8 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs                                     |    4 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js                                                  |  115 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderService.cs                           |   27 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs                                     |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                                |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/RoadwayInfoService.cs                                   |   74 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/CachePointService.cs                                 |   19 
 /dev/null                                                                                                    |   21 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoService.cs                                     |   42 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs                                                    |   37 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_RoadwayInfo.cs                                      |    2 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs                                         |    9 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CachePoint.cs                                       |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoDetailService.cs                               |   22 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs                                          |   14 
 代码管理/WMS/WIDESEA_WMSClient/config/buttons.js                                                                 |   92 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/StockQuantityChangeRecordService.cs                    |   27 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordSetvice.cs                   |   25 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs                        |   18 
 93 files changed, 2,418 insertions(+), 1,130 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js"
index 50c4dfd..cabb715 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/config/buttons.js"
@@ -32,20 +32,62 @@
         this.edit();
     }
 },
+
 {
-    name: "浠诲姟瀹屾垚",
+    name: "鍒� 闄�",
+    icon: 'el-icon-delete',
+    class: '',
+    value: 'Delete',
+    type: 'danger',
+    onClick: function () {
+        this.del();
+    }
+},
+{
+    name: "瀹� 鏍�",
+    icon: 'el-icon-check',
+    class: '',
+    value: 'Audit',
+    plain: true,
+    type: 'primary',
+    onClick: function () {
+        this.audit();
+    }
+},
+{
+    name: "瀵� 鍏�",
+    icon: 'el-icon-top',
+    class: '',
+    type: 'success',
+    plain: true,
+    value: 'Import',
+    onClick: function () {
+        this.import();
+    }
+},
+{
+    name: "瀵� 鍑�",
+    icon: 'el-icon-bottom',
+    type: 'success',
+    plain: true,
+    value: 'Export',
+    onClick: function () {
+        this.export();
+    }
+},{
+    name: "鍚� 鐢�",
     icon: '',
     class: '',
-    value: 'TaskCompleted',
+    value: 'Enable',
     type: 'primary',
     onClick: function () {
     }
 },
 {
-    name: "浠诲姟鍙栨秷",
+    name: "绂� 鐢�",
     icon: '',
     class: '',
-    value: 'TaskCancel',
+    value: 'Disable',
     type: 'danger',
     onClick: function () {
     }
@@ -95,48 +137,6 @@
     onClick: function () {
     }
 },
-{
-    name: "鍒� 闄�",
-    icon: 'el-icon-delete',
-    class: '',
-    value: 'Delete',
-    type: 'danger',
-    onClick: function () {
-        this.del();
-    }
-},
-{
-    name: "瀹� 鏍�",
-    icon: 'el-icon-check',
-    class: '',
-    value: 'Audit',
-    plain: true,
-    type: 'primary',
-    onClick: function () {
-        this.audit();
-    }
-},
-{
-    name: "瀵� 鍏�",
-    icon: 'el-icon-top',
-    class: '',
-    type: 'success',
-    plain: true,
-    value: 'Import',
-    onClick: function () {
-        this.import();
-    }
-},
-{
-    name: "瀵� 鍑�",
-    icon: 'el-icon-bottom',
-    type: 'success',
-    plain: true,
-    value: 'Export',
-    onClick: function () {
-        this.export();
-    }
-}
 
 ]
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/areaInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/areaInfo.js"
index a39e193..0994897 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/areaInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/areaInfo.js"
@@ -2,57 +2,68 @@
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 
 let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let enableBtn = this.buttons.find(x => x.value == 'Enable');
+      if (enableBtn) {
+        enableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
       }
+      let disableBtn = this.buttons.find(x => x.value == 'Disable');
+      if (disableBtn) {
+        disableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
+      }
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js"
index a39e193..862e1a8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js"
@@ -2,57 +2,84 @@
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 
 let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let enableBtn = this.buttons.find(x => x.value == 'Enable');
+      if (enableBtn) {
+        enableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
       }
+      let disableBtn = this.buttons.find(x => x.value == 'Disable');
+      if (disableBtn) {
+        disableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
+      }
+
+      this.columns.push({
+        field: '鎿嶄綔',
+        title: '鎿嶄綔',
+        width: 90,
+        fixed: 'right',
+        align: 'center',
+        formatter: (row) => {
+          return (
+            '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">鏌ョ湅鏄庣粏</i>'
+          );
+        },
+        click: (row) => {
+          this.$refs.gridBody.open(row);
+        }
+      });
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/roadwayInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/roadwayInfo.js"
index a39e193..0994897 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/roadwayInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/roadwayInfo.js"
@@ -2,57 +2,68 @@
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 
 let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let enableBtn = this.buttons.find(x => x.value == 'Enable');
+      if (enableBtn) {
+        enableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
       }
+      let disableBtn = this.buttons.find(x => x.value == 'Disable');
+      if (disableBtn) {
+        disableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
+      }
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js"
index a39e193..0994897 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js"
@@ -2,57 +2,68 @@
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 
 let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let enableBtn = this.buttons.find(x => x.value == 'Enable');
+      if (enableBtn) {
+        enableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
       }
+      let disableBtn = this.buttons.find(x => x.value == 'Disable');
+      if (disableBtn) {
+        disableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
+      }
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
index da17d3b..f40e3f9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
@@ -66,18 +66,26 @@
             :width="item.width"
             align="center"
           >
-            <template #default="scoped" v-if="item.type == 'icon'">
-              <el-tooltip
-                class="item"
-                effect="dark"
-                :content="item.title"
-                placement="bottom"
-                ><el-link
-                  type="primary"
-                  :disabled="getButtonEnable(item.prop, scoped.row)"
-                  @click="tableButtonClick(scoped.row, item)"
-                  ><i :class="item.icon" style="font-size: 22px"></i></el-link
-              ></el-tooltip>
+            <template #default="scoped">
+              <div v-if="item.type == 'icon'">
+                <el-tooltip
+                  class="item"
+                  effect="dark"
+                  :content="item.title"
+                  placement="bottom"
+                  ><el-link
+                    type="primary"
+                    :disabled="getButtonEnable(item.prop, scoped.row)"
+                    @click="tableButtonClick(scoped.row, item)"
+                    ><i :class="item.icon" style="font-size: 22px"></i></el-link
+                ></el-tooltip>
+              </div>
+
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
             </template>
           </el-table-column>
         </el-table>
@@ -135,7 +143,7 @@
         {
           prop: "batchNo",
           title: "鎵规鍙�",
-          type: "tag",
+          type: "string",
           width: 90,
         },
         {
@@ -159,8 +167,9 @@
         {
           prop: "orderDetailStatus",
           title: "璁㈠崟鏄庣粏鐘舵��",
-          type: "string",
+          type: "tag",
           width: 180,
+          bindKey:"orderDetailStatusEnum"
         },
         {
           prop: "assignStock",
@@ -246,12 +255,14 @@
         allocation_type: "",
         allocation_state: "",
       },
+      dictionaryList: null,
     };
   },
   methods: {
     open(row) {
       this.row = row;
       this.showDetialBox = true;
+      this.getDictionaryData();
       this.getData();
     },
     getData() {
@@ -341,6 +352,39 @@
     handleSelectionChange(val) {
       this.selection = val;
     },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
+    },
   },
 };
 </script>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue"
index b77540a..554d7b5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/areaInfo.vue"
@@ -49,24 +49,12 @@
           type: "string",
         },
         {
-          title: "鍖哄煙绫诲瀷",
-          required: true,
-          field: "areaType",
-          type: "string",
-        },
-        {
-          title: "鍖哄煙鐘舵��",
-          required: true,
-          field: "areaStatus",
-          type: "string",
-        },
-      ],
-      [
-        {
           title: "浠撳簱涓婚敭",
           required: true,
           field: "warehouseId",
-          type: "string",
+          type: "select",
+          dataKey: "warehouse",
+          data: [],
         },
         {
           title: "鍖哄煙鎻忚堪",
@@ -78,8 +66,6 @@
     const searchFormFields = ref({
       areaCode: "",
       areaName: "",
-      areaType: "",
-      areaStatus: "",
       warehouseId: "",
       areaDes: "",
     });
@@ -87,10 +73,24 @@
       [
         { title: "鍖哄煙缂栧彿", field: "areaCode", type: "like" },
         { title: "鍖哄煙鍚嶇О", field: "areaName", type: "like" },
-        { title: "鍖哄煙绫诲瀷", field: "areaType", type: "like" },
-        { title: "鍖哄煙鐘舵��", field: "areaStatus", type: "like" },
+        { title: "鍖哄煙绫诲瀷", field: "areaType" },
+        {
+          title: "鍖哄煙鐘舵��",
+          field: "areaStatus",
+          type: "select",
+          dataKey: "enableEnum",
+          data: [],
+        },
       ],
-      [{ title: "浠撳簱涓婚敭", field: "warehouseId", type: "like" }],
+      [
+        {
+          title: "浠撳簱涓婚敭",
+          field: "warehouseId",
+          type: "select",
+          dataKey: "warehouse",
+          data: [],
+        },
+      ],
     ]);
     const columns = ref([
       {
@@ -109,6 +109,7 @@
         type: "string",
         width: 90,
         align: "left",
+        bind:{ key: "warehouse", data: [] },
       },
       {
         field: "areaCode",
@@ -137,6 +138,7 @@
         type: "string",
         width: 90,
         align: "left",
+        bind: { key: "enableEnum", data: [] },
       },
       {
         field: "areaDes",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue"
index 32a449a..dd114ec 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue"
@@ -71,25 +71,11 @@
           type: "string",
         },
         {
-          title: "璐т綅鐘舵��",
-          required: true,
-          field: "locationStatus",
-          type: "string",
-        },
-        {
-          title: "绂佺敤鐘舵��",
-          required: true,
-          field: "enalbeStatus",
-          type: "string",
-        },
-        {
           title: "鍖哄煙涓婚敭",
           required: true,
           field: "areaId",
           type: "string",
         },
-      ],
-      [
         {
           title: "宸烽亾缂栧彿",
           required: true,
@@ -125,6 +111,10 @@
         type: "string",
         width: 90,
         align: "left",
+        bind: {
+          key: "areainfo",
+          data: []
+        }
       },
       {
         field: "locationCode",
@@ -185,6 +175,7 @@
         type: "string",
         width: 120,
         align: "left",
+        bind:{key: "locationTypeEnum", data: []}
       },
       {
         field: "locationStatus",
@@ -192,13 +183,15 @@
         type: "string",
         width: 200,
         align: "left",
+        bind: { key: "locationStatusEnum", data: [] },
       },
       {
-        field: "enalbeStatus",
+        field: "enableStatus",
         title: "绂佺敤鐘舵��",
         type: "string",
         width: 180,
         align: "left",
+        bind: { key: "enableStatusEnum", data: [] },
       },
       {
         field: "creater",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue"
index 939d0b2..332e099 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/roadwayInfo.vue"
@@ -141,11 +141,12 @@
         align: "left",
       },
       {
-        field: "enalbeStatus",
+        field: "enableStatus",
         title: "绂佺敤鐘舵��",
         type: "string",
         width: 150,
         align: "left",
+        bind: { key: "enableStatusEnum", data: [] },
       },
       {
         field: "deviceNo",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue"
index 9b9cb36..5a25672 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue"
@@ -48,20 +48,6 @@
           type: "string",
         },
         {
-          title: "浠撳簱绫诲瀷",
-          required: true,
-          field: "warehouseType",
-          type: "string",
-        },
-        {
-          title: "浠撳簱鐘舵��",
-          required: true,
-          field: "warehouseStatus",
-          type: "string",
-        },
-      ],
-      [
-        {
           title: "浠撳簱鎻忚堪",
           field: "warehouseDes",
           type: "textarea",
@@ -79,7 +65,13 @@
         { title: "浠撳簱缂栧彿", field: "warehouseCode", type: "like" },
         { title: "浠撳簱鍚嶇О", field: "warehouseName", type: "like" },
         { title: "浠撳簱绫诲瀷", field: "warehouseType", type: "like" },
-        { title: "浠撳簱鐘舵��", field: "warehouseStatus", type: "like" },
+        {
+          title: "浠撳簱鐘舵��",
+          field: "warehouseStatus",
+          type: "select",
+          dataKey: "enableEnum",
+          data: [],
+        },
       ],
     ]);
     const columns = ref([
@@ -120,6 +112,7 @@
         type: "decimal",
         width: 90,
         align: "left",
+        bind: { key: "enableEnum", data: [] },
       },
       {
         field: "warehouseDes",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
index 6cf1a61..d2535be 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
@@ -110,6 +110,7 @@
         type: "string",
         width: 120,
         align: "left",
+        link: true,
       },
       {
         field: "upperOrderNo",
@@ -203,10 +204,11 @@
         {
           field: "materielCode",
           title: "鐗╂枡缂栧彿",
-          type: "string",
+          type: "select",
           width: 150,
           align: "left",
-          edit: { type: "string" },
+          edit: { type: "select" },
+          bind: { key: "orderDetailStatusEnum", data: [] },
           required: true,
         },
         {
@@ -255,6 +257,7 @@
           type: "string",
           width: 180,
           align: "left",
+          bind: { key: "orderDetailStatusEnum", data: [] },
         },
         {
           field: "creater",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue"
index 0f7617f..bb4071b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/outboundOrder.vue"
@@ -119,6 +119,7 @@
         type: "string",
         width: 120,
         align: "left",
+        link: true,
       },
       {
         field: "upperOrderNo",
@@ -133,6 +134,7 @@
         type: "string",
         width: 150,
         align: "left",
+        bind: { key: "outOrderType", data: [] },
       },
       {
         field: "orderStatus",
@@ -140,6 +142,7 @@
         type: "decimal",
         width: 90,
         align: "left",
+        bind: { key: "outboundStatusEnum", data: [] },
       },
       {
         field: "createType",
@@ -147,6 +150,7 @@
         type: "string",
         width: 90,
         align: "left",
+        bind: { key: "createType", data: [] },
       },
       {
         field: "creater",
@@ -260,6 +264,7 @@
           type: "string",
           width: 180,
           align: "left",
+          bind: { key: "orderDetailStatusEnum", data: [] },
         },
         {
           field: "creater",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue"
index 1036f8f..0adaf93 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue"
@@ -127,6 +127,7 @@
           type: "string",
           width: 150,
           align: "left",
+          bind: { key: "yesno", data: [] },
         },
         {
           field: "creater",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue"
index 9799193..26d463e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue"
@@ -141,6 +141,7 @@
         type: "string",
         width: 200,
         align: "left",
+        bind: { key: "stockStatusEmun", data: [] },
       },
       {
         field: "locationType",
@@ -148,6 +149,7 @@
         type: "string",
         width: 120,
         align: "left",
+        bind:{key: "locationTypeEnum", data: []}
       },
       {
         field: "locationStatus",
@@ -155,6 +157,7 @@
         type: "string",
         width: 200,
         align: "left",
+        bind: { key: "locationStatusEnum", data: [] },
       },
       {
         field: "enalbeStatus",
@@ -162,6 +165,7 @@
         type: "string",
         width: 180,
         align: "left",
+        bind: { key: "enableStatusEnum", data: [] },
       },
       {
         field: "isFull",
@@ -170,6 +174,7 @@
         width: 150,
         align: "left",
         hidden: true,
+          bind: { key: "yesno", data: [] },
       },
       {
         field: "creater",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue"
index 5ceafd6..51df000 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue"
@@ -37,9 +37,8 @@
       parentId: "",
       orderNo: "",
       enable: "",
-      dbSql: "",
+      sql: "",
       remark: "",
-      systemType: 1,
     });
     const editFormOptions = ref([
       [
@@ -59,7 +58,7 @@
         },
       ],
       [
-        { title: "sql璇彞", field: "dbSql", colSize: 8, type: "textarea" },
+        { title: "sql璇彞", field: "sql", colSize: 8, type: "textarea" },
         { title: "澶囨敞", field: "remark", type: "textarea" },
       ],
     ]);
@@ -135,18 +134,10 @@
         align: "left",
       },
       {
-        field: "dbSql",
+        field: "sql",
         title: "sql璇彞",
         type: "string",
         width: 200,
-        align: "left",
-      },
-      {
-        field: "dBServer",
-        title: "DBServer",
-        type: "string",
-        width: 90,
-        hidden: true,
         align: "left",
       },
       {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue"
index 7b1485d..4eee23d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue"
@@ -434,7 +434,6 @@
           ],
         },
         {
-          // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
           title: "鑿滃崟绫诲瀷",
           field: "menuType",
           required: true,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
index a92aae1..70a3f00 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
@@ -1,235 +1,237 @@
 
 <template>
-    <view-grid
-      ref="grid"
-      :columns="columns"
-      :detail="detail"
-      :editFormFields="editFormFields"
-      :editFormOptions="editFormOptions"
-      :searchFormFields="searchFormFields"
-      :searchFormOptions="searchFormOptions"
-      :table="table"
-      :extend="extend"
-    >
-    </view-grid>
-  </template>
+  <view-grid
+    ref="grid"
+    :columns="columns"
+    :detail="detail"
+    :editFormFields="editFormFields"
+    :editFormOptions="editFormOptions"
+    :searchFormFields="searchFormFields"
+    :searchFormOptions="searchFormOptions"
+    :table="table"
+    :extend="extend"
+  >
+  </view-grid>
+</template>
     <script>
-  import extend from "@/extension/taskinfo/task.js";
-  import { ref, defineComponent } from "vue";
-  export default defineComponent({
-    setup() {
-      const table = ref({
-        key: "taskId",
-        footer: "Foots",
-        cnName: "浠诲姟淇℃伅",
-        name: "task",
-        url: "/Task/",
-        sortName: "CreateDate",
-      });
-      const editFormFields = ref({});
-      const editFormOptions = ref([]);
-      const searchFormFields = ref({
-        taskNum: "",
-        palletCode: "",
-        roadway: "",
-        sourceAddress: "",
-        targetAddress: "",
-        currentAddress: "",
-        nextAddress: "",
-        creater: "",
-        createDate: "",
-      });
-      const searchFormOptions = ref([
-        [
-          { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
-          { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
-          {
-            title: "浠诲姟绫诲瀷",
-            field: "taskType",
-            type: "selectList",
-            dataKey: "taskType",
-            data: [],
-          },
-          {
-            title: "浠诲姟鐘舵��",
-            field: "taskState",
-            type: "selectList",
-            dataKey: "taskState",
-            data: [],
-          },
-        ],
-        [
-          { title: "璧峰鍦板潃", field: "sourceAddress", type: "like" },
-          { title: "鐩爣鍦板潃", field: "targetAddress", type: "like" },
-          { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "like" },
-          { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "like" },
-        ],
-        [
-          { title: "宸烽亾鍙�", field: "roadway", type: "like" },
-          { title: "鍒涘缓浜�", field: "creater", type: "like" },
-          { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
-        ],
-      ]);
-      const columns = ref([
+import extend from "@/extension/taskinfo/task.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "taskId",
+      footer: "Foots",
+      cnName: "浠诲姟淇℃伅",
+      name: "task",
+      url: "/Task/",
+      sortName: "CreateDate",
+    });
+    const editFormFields = ref({});
+    const editFormOptions = ref([]);
+    const searchFormFields = ref({
+      taskNum: "",
+      palletCode: "",
+      roadway: "",
+      taskStatus: "",
+      taskType: "",
+      sourceAddress: "",
+      targetAddress: "",
+      currentAddress: "",
+      nextAddress: "",
+      creater: "",
+      createDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
+        { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
         {
-          field: "taskId",
-          title: "taskId",
-          type: "int",
-          width: 90,
-          hidden: true,
-          readonly: true,
-          require: true,
-          align: "left",
-        },
-        {
-          field: "taskNum",
-          title: "浠诲姟鍙�",
-          type: "int",
-          width: 90,
-          align: "left",
-        },
-        {
-          field: "palletCode",
-          title: "鎵樼洏缂栧彿",
-          type: "string",
-          width: 200,
-          align: "left",
-        },
-        {
-          field: "roadway",
-          title: "宸烽亾鍙�",
-          type: "string",
-          width: 90,
-          align: "left",
-        },
-        {
-          field: "taskType",
           title: "浠诲姟绫诲瀷",
-          type: "int",
-          width: 90,
-          align: "left",
-          bind: { key: "taskType", data: [] },
+          field: "taskType",
+          type: "selectList",
+          dataKey: "taskTypeEnum",
+          data: [],
         },
         {
-          field: "taskState",
           title: "浠诲姟鐘舵��",
-          type: "int",
-          width: 150,
-          align: "left",
-          bind: { key: "taskState", data: [] },
+          field: "taskStatus",
+          type: "selectList",
+          dataKey: "taskStatusEnum",
+          data: [],
         },
-        {
-          field: "sourceAddress",
-          title: "璧峰鍦板潃",
-          type: "int",
-          width: 120,
-          align: "left",
-        },
-        {
-          field: "targetAddress",
-          title: "鐩爣鍦板潃",
-          type: "string",
-          width: 120,
-          align: "left",
-        },
-        {
-          field: "currentAddress",
-          title: "褰撳墠浣嶇疆",
-          type: "string",
-          width: 120,
-          align: "left",
-        },
-        {
-          field: "nextAddress",
-          title: "涓嬩竴浣嶇疆",
-          type: "string",
-          width: 120,
-          align: "left",
-        },
-        {
-          field: "exceptionMessage",
-          title: "寮傚父淇℃伅",
-          type: "string",
-          width: 90,
-          align: "left",
-          hidden: true,
-        },
-        {
-          field: "grade",
-          title: "浼樺厛绾�",
-          type: "int",
-          width: 80,
-          align: "left",
-        },
-        {
-          field: "dispatchertime",
-          title: "浠诲姟涓嬪彂鏃堕棿",
-          type: "datetime",
-          width: 150,
-          align: "left",
-        },
-        {
-          field: "wMSId",
-          title: "WMS浠诲姟涓婚敭",
-          type: "int",
-          width: 120,
-          align: "left",
-          hidden: true,
-        },
-        {
-          field: "creater",
-          title: "鍒涘缓浜�",
-          type: "string",
-          width: 90,
-          align: "left",
-        },
-        {
-          field: "createDate",
-          title: "鍒涘缓鏃堕棿",
-          type: "datetime",
-          width: 150,
-          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: "#detailCnName",
-        table: "",
-        columns: [],
-        sortName: "",
-      });
-      return {
-        table,
-        extend,
-        editFormFields,
-        editFormOptions,
-        searchFormFields,
-        searchFormOptions,
-        columns,
-        detail,
-      };
-    },
-  });
-  </script>
+      ],
+      [
+        { title: "璧峰鍦板潃", field: "sourceAddress", type: "like" },
+        { title: "鐩爣鍦板潃", field: "targetAddress", type: "like" },
+        { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "like" },
+        { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "like" },
+      ],
+      [
+        { title: "宸烽亾鍙�", field: "roadway", type: "like" },
+        { title: "鍒涘缓浜�", field: "creater", type: "like" },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "taskId",
+        title: "taskId",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "taskNum",
+        title: "浠诲姟鍙�",
+        type: "int",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "palletCode",
+        title: "鎵樼洏缂栧彿",
+        type: "string",
+        width: 200,
+        align: "left",
+      },
+      {
+        field: "roadway",
+        title: "宸烽亾鍙�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "taskType",
+        title: "浠诲姟绫诲瀷",
+        type: "int",
+        width: 90,
+        align: "left",
+        bind: { key: "taskTypeEnum", data: [] },
+      },
+      {
+        field: "taskStatus",
+        title: "浠诲姟鐘舵��",
+        type: "int",
+        width: 150,
+        align: "left",
+        bind: { key: "taskStatusEnum", data: [] },
+      },
+      {
+        field: "sourceAddress",
+        title: "璧峰鍦板潃",
+        type: "int",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "targetAddress",
+        title: "鐩爣鍦板潃",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "currentAddress",
+        title: "褰撳墠浣嶇疆",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "nextAddress",
+        title: "涓嬩竴浣嶇疆",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "exceptionMessage",
+        title: "寮傚父淇℃伅",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "grade",
+        title: "浼樺厛绾�",
+        type: "int",
+        width: 80,
+        align: "left",
+      },
+      {
+        field: "dispatchertime",
+        title: "浠诲姟涓嬪彂鏃堕棿",
+        type: "datetime",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "wMSId",
+        title: "WMS浠诲姟涓婚敭",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "createDate",
+        title: "鍒涘缓鏃堕棿",
+        type: "datetime",
+        width: 150,
+        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: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
     
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/136ff540-9b25-4fe9-9296-15d34a430bcd.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/136ff540-9b25-4fe9-9296-15d34a430bcd.vsidx"
new file mode 100644
index 0000000..c8d6da1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/136ff540-9b25-4fe9-9296-15d34a430bcd.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/21e966d8-e44a-432b-8c0b-3c4e5e7c05fd.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/21e966d8-e44a-432b-8c0b-3c4e5e7c05fd.vsidx"
deleted file mode 100644
index 8d49e9a..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/21e966d8-e44a-432b-8c0b-3c4e5e7c05fd.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2b11c927-14d8-4e57-a539-b0e07bdba959.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2b11c927-14d8-4e57-a539-b0e07bdba959.vsidx"
new file mode 100644
index 0000000..e13a93a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2b11c927-14d8-4e57-a539-b0e07bdba959.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/56991d93-425e-4934-a6f8-51fc16c45172.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/56991d93-425e-4934-a6f8-51fc16c45172.vsidx"
new file mode 100644
index 0000000..de2e133
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/56991d93-425e-4934-a6f8-51fc16c45172.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/79eb5ca9-e241-4647-98b5-bb5bc7256530.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/79eb5ca9-e241-4647-98b5-bb5bc7256530.vsidx"
deleted file mode 100644
index 8cb6306..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/79eb5ca9-e241-4647-98b5-bb5bc7256530.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/af5fd854-4fcc-462d-8592-8cd25a8de131.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/af5fd854-4fcc-462d-8592-8cd25a8de131.vsidx"
new file mode 100644
index 0000000..3f0a884
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/af5fd854-4fcc-462d-8592-8cd25a8de131.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b7021e69-fa29-4494-8f57-c7b247f7cf0a.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b7021e69-fa29-4494-8f57-c7b247f7cf0a.vsidx"
deleted file mode 100644
index 2be98fe..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/b7021e69-fa29-4494-8f57-c7b247f7cf0a.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f65c354a-0e46-42e0-8d03-b1244d9e8a93.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f65c354a-0e46-42e0-8d03-b1244d9e8a93.vsidx"
deleted file mode 100644
index 173e40a..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f65c354a-0e46-42e0-8d03-b1244d9e8a93.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs"
index 1663761..02e31a6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs"
@@ -42,7 +42,7 @@
 
         public List<string> GetCanOutLocationCodes(List<string> roadways, List<int> areaIds)
         {
-            return QueryData(x => x.LocationCode, x => roadways.Contains(x.RoadwayNo) && (areaIds.Contains(x.AreaId) || x.AreaId == 0) && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt())).Distinct().ToList();
+            return QueryData(x => x.LocationCode, x => roadways.Contains(x.RoadwayNo) && (areaIds.Contains(x.AreaId) || x.AreaId == 0) && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
         }
 
         public List<Dt_LocationInfo> GetLocationInfos(List<string> locationCodes)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/RoadwayInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/RoadwayInfoRepository.cs"
index edeab42..98a7b07 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/RoadwayInfoRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/RoadwayInfoRepository.cs"
@@ -20,6 +20,6 @@
         /// <summary>
         /// 鍙嚭搴撶殑宸烽亾缂栧彿闆嗗悎
         /// </summary>
-        public List<string> CanOutRoadwayNos => QueryData(x => x.RoadwayNo, x => x.EnableStatus == RoadwayStatusEnum.Normal.ObjToInt() || x.EnableStatus == RoadwayStatusEnum.OnlyOut.ObjToInt()).Distinct().ToList();
+        public List<string> CanOutRoadwayNos => QueryData(x => x.RoadwayNo, x => x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() || x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt()).Distinct().ToList();
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/AreaInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/AreaInfoService.cs"
deleted file mode 100644
index 3d498d1..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/AreaInfoService.cs"
+++ /dev/null
@@ -1,26 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Enums;
-using WIDESEA_Core.Helper;
-using WIDESEA_IBasicRepository;
-using WIDESEA_IBasicService;
-using WIDESEA_Model.Models;
-
-namespace WIDESEA_BasicService
-{
-    public class AreaInfoService : ServiceBase<Dt_AreaInfo, IAreaInfoRepository>, IAreaInfoService
-    {
-        public AreaInfoService(IAreaInfoRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public IAreaInfoRepository Repository => BaseDal;
-
-        
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaInfoService.cs"
new file mode 100644
index 0000000..89abb5e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaInfoService.cs"
@@ -0,0 +1,74 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class AreaInfoService : ServiceBase<Dt_AreaInfo, IAreaInfoRepository>, IAreaInfoService
+    {
+        public AreaInfoService(IAreaInfoRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IAreaInfoRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Dt_AreaInfo areaInfo = saveModel.MainData.DicToModel<Dt_AreaInfo>();
+            return base.AddData(areaInfo);
+        }
+
+        public override WebResponseContent UpdateData(Dt_AreaInfo entity)
+        {
+            return base.UpdateData(entity);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+
+        public WebResponseContent AreaEnableStatus(int[] keys)
+        {
+            List<Dt_AreaInfo> areaInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            areaInfos.ForEach(x =>
+            {
+                x.AreaStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(areaInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent AreaDisableStatus(int[] keys)
+        {
+            List<Dt_AreaInfo> areaInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            areaInfos.ForEach(x =>
+            {
+                x.AreaStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(areaInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent AreaEnableStatus(int key)
+        {
+            return AreaEnableStatus(new int[] { key });
+        }
+
+        public WebResponseContent AreaDisableStatus(int key)
+        {
+            return AreaDisableStatus(new int[] { key });
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/AreaRouterService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaRouterService.cs"
similarity index 62%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/AreaRouterService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaRouterService.cs"
index 65952e5..c55c491 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/AreaRouterService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/AreaRouterService.cs"
@@ -3,6 +3,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IBasicService;
@@ -10,12 +11,17 @@
 
 namespace WIDESEA_BasicService
 {
-    public class AreaRouterService : ServiceBase<Dt_AreaRouter, IAreaRouterRepository>, IAreaRouterService
+    public partial class AreaRouterService : ServiceBase<Dt_AreaRouter, IAreaRouterRepository>, IAreaRouterService
     {
         public AreaRouterService(IAreaRouterRepository BaseDal) : base(BaseDal)
         {
         }
 
         public IAreaRouterRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            return base.AddData(saveModel);
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/CachePointService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/CachePointService.cs"
new file mode 100644
index 0000000..5dd2f51
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/CachePointService.cs"
@@ -0,0 +1,76 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class CachePointService : ServiceBase<Dt_CachePoint, ICachePointRepository>, ICachePointService
+    {
+        public CachePointService(ICachePointRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public ICachePointRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Dt_CachePoint cachePoint = saveModel.MainData.DicToModel<Dt_CachePoint>();
+            return base.AddData(cachePoint);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+
+        public WebResponseContent CachePointEnableStatus(int[] keys)
+        {
+            List<Dt_CachePoint> cachePoints = Repository.QueryData(x => keys.Contains(x.Id));
+            cachePoints.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(cachePoints);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent CachePointDisableStatus(int[] keys)
+        {
+            List<Dt_CachePoint> cachePoints = Repository.QueryData(x => keys.Contains(x.Id));
+            cachePoints.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(cachePoints);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent CachePointEnableStatus(int key)
+        {
+            return CachePointEnableStatus(new int[] { key });
+        }
+
+        public WebResponseContent CachePointDisableStatus(int key)
+        {
+            return CachePointDisableStatus(new int[] { key });
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs"
new file mode 100644
index 0000000..6f58879
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/LocationInfoService.cs"
@@ -0,0 +1,140 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
+    {
+        private readonly IBasicRepository _basicRepository;
+        public ILocationInfoRepository Repository => BaseDal;
+
+        public LocationInfoService(ILocationInfoRepository BaseDal, IBasicRepository basicRepository) : base(BaseDal)
+        {
+            _basicRepository = basicRepository;
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Dt_LocationInfo locationInfo = saveModel.MainData.DicToModel<Dt_LocationInfo>();
+            return base.AddData(locationInfo);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+
+        public WebResponseContent LocationEnableStatus(int[] keys)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            locationInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(locationInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent LocationDisableStatus(int[] keys)
+        {
+            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            locationInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(locationInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent LocationEnableStatus(int key)
+        {
+            return LocationEnableStatus(new int[] { key });
+        }
+
+        public WebResponseContent LocationDisableStatus(int key)
+        {
+            return LocationDisableStatus(new int[] { key });
+        }
+
+        public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO)
+        {
+            try
+            {
+                (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO);
+                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2);
+
+                int side = 1;
+                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+                for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
+                {
+                    for (int j = 0; j < initializationLocationDTO.MaxColumn; j++)
+                    {
+                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
+                        {
+                            Dt_LocationInfo locationInfo = new Dt_LocationInfo()
+                            {
+                                AreaId = 0,
+                                Column = j + 1,
+                                EnableStatus = EnableStatusEnum.Normal.ObjToInt(),
+                                Layer = k + 1,
+                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
+                                LocationType = LocationTypeEnum.Cube.ObjToInt(),
+                                RoadwayNo = initializationLocationDTO.Roadway,
+                                Row = i + 1,
+                            };
+
+                            if (initializationLocationDTO.IsSingleDepth)
+                            {
+                                locationInfo.Depth = 1;
+                                locationInfo.LocationCode = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
+                                locationInfo.LocationName = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
+                            }
+                            else
+                            {
+                                if (initializationLocationDTO.FirstDepthRows.Contains(i + 1))
+                                {
+                                    locationInfo.Depth = 1;
+                                }
+                                else
+                                {
+                                    locationInfo.Depth = 2;
+                                }
+                                locationInfo.LocationCode = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
+                                locationInfo.LocationName = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
+                            }
+
+                            locationInfos.Add(locationInfo);
+                        }
+                    }
+                }
+
+                BaseDal.AddData(locationInfos);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs"
new file mode 100644
index 0000000..170abbe
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs"
@@ -0,0 +1,37 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
+    {
+        public MaterielInfoService(IMaterielInfoRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IMaterielInfoRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            return base.AddData(saveModel);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/RoadwayInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/RoadwayInfoService.cs"
new file mode 100644
index 0000000..d946f3d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/RoadwayInfoService.cs"
@@ -0,0 +1,74 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_BasicService
+{
+    public partial class RoadwayInfoService : ServiceBase<Dt_RoadwayInfo, IRoadwayInfoRepository>, IRoadwayInfoService
+    {
+        public RoadwayInfoService(IRoadwayInfoRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IRoadwayInfoRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Dt_RoadwayInfo roadwayInfo = saveModel.MainData.DicToModel<Dt_RoadwayInfo>();
+            return base.AddData(roadwayInfo);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+
+        public WebResponseContent RoadwayEnableStatus(int[] keys)
+        {
+            List<Dt_RoadwayInfo> roadwayInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            roadwayInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(roadwayInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent RoadwayDisableStatus(int[] keys)
+        {
+            List<Dt_RoadwayInfo> roadwayInfos = Repository.QueryData(x => keys.Contains(x.Id));
+            roadwayInfos.ForEach(x =>
+            {
+                x.EnableStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(roadwayInfos);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent RoadwayEnableStatus(int key)
+        {
+            return RoadwayEnableStatus(new int[] { key });
+        }
+
+        public WebResponseContent RoadwayDisableStatus(int key)
+        {
+            return RoadwayDisableStatus(new int[] { key });
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs"
new file mode 100644
index 0000000..b95398a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/WarehouseService.cs"
@@ -0,0 +1,74 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_BasicService
+{
+    public partial class WarehouseService : ServiceBase<Dt_Warehouse, IWarehouseRepository>, IWarehouseService
+    {
+        public WarehouseService(IWarehouseRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IWarehouseRepository Repository => BaseDal;
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Dt_Warehouse warehouse = saveModel.MainData.DicToModel<Dt_Warehouse>();
+            return base.AddData(warehouse);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent DeleteData(object[] keys)
+        {
+            return base.DeleteData(keys);
+        }
+
+        public WebResponseContent WarehouseEnableStatus(int[] keys)
+        {
+            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.Id));
+            warehouses.ForEach(x =>
+            {
+                x.WarehouseStatus = EnableEnum.Enable.ObjToInt();
+            });
+            Repository.UpdateData(warehouses);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent WarehouseDisableStatus(int[] keys)
+        {
+            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.Id));
+            warehouses.ForEach(x =>
+            {
+                x.WarehouseStatus = EnableEnum.Disable.ObjToInt();
+            });
+            Repository.UpdateData(warehouses);
+
+            return WebResponseContent.Instance.OK();
+        }
+
+        public WebResponseContent WarehouseEnableStatus(int key)
+        {
+            return WarehouseEnableStatus(new int[] { key });
+        }
+
+        public WebResponseContent WarehouseDisableStatus(int key)
+        {
+            return WarehouseDisableStatus(new int[] { key });
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
index 72c4f21..ab3c111 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
@@ -40,183 +40,23 @@
         }
 
         #region AreaInfo
-        public WebResponseContent AreaEnableStatus(int[] keys)
-        {
-            List<Dt_AreaInfo> areaInfos = AreaInfoService.Repository.QueryData(x => keys.Contains(x.Id));
-            areaInfos.ForEach(x =>
-            {
-                x.AreaStatus = EnableEnum.Enable.ObjToInt();
-            });
-            AreaInfoService.Repository.UpdateData(areaInfos);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent AreaDisableStatus(int[] keys)
-        {
-            List<Dt_AreaInfo> areaInfos = AreaInfoService.Repository.QueryData(x => keys.Contains(x.Id));
-            areaInfos.ForEach(x =>
-            {
-                x.AreaStatus = EnableEnum.Disable.ObjToInt();
-            });
-            AreaInfoService.Repository.UpdateData(areaInfos);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent AreaEnableStatus(int key)
-        {
-            return AreaEnableStatus(new int[] { key });
-        }
-
-        public WebResponseContent AreaDisableStatus(int key)
-        {
-            return AreaDisableStatus(new int[] { key });
-        }
+       
         #endregion
 
         #region CachePoint
-        public WebResponseContent CachePointEnableStatus(int[] keys)
-        {
-            List<Dt_CachePoint> cachePoints = CachePointService.Repository.QueryData(x => keys.Contains(x.Id));
-            cachePoints.ForEach(x =>
-            {
-                x.EnableStatus = EnableEnum.Enable.ObjToInt();
-            });
-            CachePointService.Repository.UpdateData(cachePoints);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent CachePointDisableStatus(int[] keys)
-        {
-            List<Dt_CachePoint> cachePoints = CachePointService.Repository.QueryData(x => keys.Contains(x.Id));
-            cachePoints.ForEach(x =>
-            {
-                x.EnableStatus = EnableEnum.Disable.ObjToInt();
-            });
-            CachePointService.Repository.UpdateData(cachePoints);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent CachePointEnableStatus(int key)
-        {
-            return CachePointEnableStatus(new int[] { key });
-        }
-
-        public WebResponseContent CachePointDisableStatus(int key)
-        {
-            return CachePointDisableStatus(new int[] { key });
-        }
+        
         #endregion
 
         #region LocationInfo
-        public WebResponseContent LocationEnableStatus(int[] keys)
-        {
-            List<Dt_LocationInfo> locationInfos = LocationInfoService.Repository.QueryData(x => keys.Contains(x.Id));
-            locationInfos.ForEach(x =>
-            {
-                x.EnableStatus = EnableEnum.Enable.ObjToInt();
-            });
-            LocationInfoService.Repository.UpdateData(locationInfos);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent LocationDisableStatus(int[] keys)
-        {
-            List<Dt_LocationInfo> locationInfos = LocationInfoService.Repository.QueryData(x => keys.Contains(x.Id));
-            locationInfos.ForEach(x =>
-            {
-                x.EnableStatus = EnableEnum.Disable.ObjToInt();
-            });
-            LocationInfoService.Repository.UpdateData(locationInfos);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent LocationEnableStatus(int key)
-        {
-            return LocationEnableStatus(new int[] { key });
-        }
-
-        public WebResponseContent LocationDisableStatus(int key)
-        {
-            return LocationDisableStatus(new int[] { key });
-        }
+        
         #endregion
 
         #region RoadwayInfo
-        public WebResponseContent RoadwayEnableStatus(int[] keys)
-        {
-            List<Dt_RoadwayInfo> roadwayInfos = RoadwayInfoService.Repository.QueryData(x => keys.Contains(x.Id));
-            roadwayInfos.ForEach(x =>
-            {
-                x.EnableStatus = EnableEnum.Enable.ObjToInt();
-            });
-            RoadwayInfoService.Repository.UpdateData(roadwayInfos);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent RoadwayDisableStatus(int[] keys)
-        {
-            List<Dt_RoadwayInfo> roadwayInfos = RoadwayInfoService.Repository.QueryData(x => keys.Contains(x.Id));
-            roadwayInfos.ForEach(x =>
-            {
-                x.EnableStatus = EnableEnum.Disable.ObjToInt();
-            });
-            RoadwayInfoService.Repository.UpdateData(roadwayInfos);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent RoadwayEnableStatus(int key)
-        {
-            return RoadwayEnableStatus(new int[] { key });
-        }
-
-        public WebResponseContent RoadwayDisableStatus(int key)
-        {
-            return RoadwayDisableStatus(new int[] { key });
-        }
+       
         #endregion
 
         #region Warehouse
-        public WebResponseContent WarehouseEnableStatus(int[] keys)
-        {
-            List<Dt_Warehouse> warehouses = WarehouseService.Repository.QueryData(x => keys.Contains(x.Id));
-            warehouses.ForEach(x =>
-            {
-                x.WarehouseStatus = EnableEnum.Enable.ObjToInt();
-            });
-            WarehouseService.Repository.UpdateData(warehouses);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent WarehouseDisableStatus(int[] keys)
-        {
-            List<Dt_Warehouse> warehouses = WarehouseService.Repository.QueryData(x => keys.Contains(x.Id));
-            warehouses.ForEach(x =>
-            {
-                x.WarehouseStatus = EnableEnum.Disable.ObjToInt();
-            });
-            WarehouseService.Repository.UpdateData(warehouses);
-
-            return WebResponseContent.Instance.OK();
-        }
-
-        public WebResponseContent WarehouseEnableStatus(int key)
-        {
-            return WarehouseEnableStatus(new int[] { key });
-        }
-
-        public WebResponseContent WarehouseDisableStatus(int key)
-        {
-            return WarehouseDisableStatus(new int[] { key });
-        }
+        
         #endregion
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
deleted file mode 100644
index 1a043f5..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
+++ /dev/null
@@ -1,189 +0,0 @@
-锘縰sing SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Enums;
-using WIDESEA_Core.Helper;
-using WIDESEA_Core.Utilities;
-using WIDESEA_DTO.Basic;
-using WIDESEA_IBasicRepository;
-using WIDESEA_IBasicService;
-using WIDESEA_Model.Models;
-
-namespace WIDESEA_BasicService
-{
-    public class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
-    {
-        private readonly IBasicRepository _basicRepository;
-
-        private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
-        {
-            { nameof(Dt_LocationInfo.Depth), OrderByType.Desc },
-            { nameof(Dt_LocationInfo.Layer), OrderByType.Asc },
-            { nameof(Dt_LocationInfo.Column), OrderByType.Asc },
-            { nameof(Dt_LocationInfo.Row), OrderByType.Asc },
-        };
-
-        public ILocationInfoRepository Repository => BaseDal;
-
-        public LocationInfoService(ILocationInfoRepository BaseDal, IBasicRepository basicRepository) : base(BaseDal)
-        {
-            _basicRepository = basicRepository;
-        }
-
-        public override WebResponseContent AddData(SaveModel saveModel)
-        {
-            return base.AddData(saveModel);
-        }
-
-        public Dt_LocationInfo? AssignLocation(string stationCode, int inboundType)
-        {
-            try
-            {
-                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.InStationCode == stationCode) ?? throw new Exception("鏈壘鍒拌绔欏彴瀵瑰簲鐨勫贩閬擄紝璇锋鏌ュ熀纭�閰嶇疆淇℃伅");
-                if (roadwayInfo.EnableStatus != RoadwayStatusEnum.Normal.ObjToInt() && roadwayInfo.EnableStatus != RoadwayStatusEnum.OnlyIn.ObjToInt())
-                {
-                    throw new Exception("璇ュ贩閬撲笉鍙叆搴擄紝璇锋鏌ュ贩閬撶鐢ㄤ俊鎭�");
-                }
-                if (roadwayInfo.AreaId > 0)
-                {
-                    Dt_AreaInfo areaInfo = _basicRepository.AreaInfoRepository.QueryFirst(x => x.Id == roadwayInfo.AreaId);
-                    if (areaInfo != null && areaInfo.AreaStatus == EnableEnum.Disable.ObjToInt())
-                    {
-                        throw new Exception("鍖哄煙琚鐢紝涓嶅彲鍏ュ簱");
-                    }
-                }
-                if (inboundType == TaskTypeEnum.PalletInbound.ObjToInt())//绌虹洏鍏ュ簱鍒嗛厤閫昏緫
-                {
-                    return EmptyAssignLocation(roadwayInfo.RoadwayNo);
-                }
-                else if (inboundType == TaskTypeEnum.Inbound.ObjToInt())
-                {
-                    return StoredAssignLocation(roadwayInfo.RoadwayNo);
-                }
-            }
-            catch (Exception ex)
-            {
-
-            }
-
-            return null;
-        }
-
-        private Dt_LocationInfo EmptyAssignLocation(string roadway)
-        {
-            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Pallet, LocationStatusEnum.Free);
-            if (locationGroups != null && locationGroups.Count > 0)
-            {
-                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == LocationEnalbeStatusEnum.Normal.ObjToInt());
-                int id = locationGroup?.IdA ?? 0;
-                return BaseDal.QueryFirst(x => x.Id == id);
-            }
-            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
-            if (locationGroups != null && locationGroups.Count > 0)
-            {
-                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == LocationEnalbeStatusEnum.Normal.ObjToInt());
-                int id = locationGroup?.IdB ?? 0;
-                return BaseDal.QueryFirst(x => x.Id == id);
-            }
-
-            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
-        }
-
-        private Dt_LocationInfo StoredAssignLocation(string roadway)
-        {
-            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.InStock, LocationStatusEnum.Free);
-            if (locationGroups != null)
-            {
-                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == LocationEnalbeStatusEnum.Normal.ObjToInt());
-                int id = locationGroup?.IdA ?? 0;
-                return BaseDal.QueryFirst(x => x.Id == id);
-            }
-            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
-            if (locationGroups != null && locationGroups.Count > 0)
-            {
-                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == LocationEnalbeStatusEnum.Normal.ObjToInt());
-                int id = locationGroup?.IdB ?? 0;
-                return BaseDal.QueryFirst(x => x.Id == id);
-            }
-
-            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
-        }
-
-        public Dt_LocationInfo AdjacentDepthLocation(string locationCode)
-        {
-            Dt_LocationInfo locationInfo = BaseDal.QueryFirst(x => x.LocationCode == locationCode);
-            return AdjacentDepthLocation(locationInfo);
-        }
-
-        public Dt_LocationInfo AdjacentDepthLocation(Dt_LocationInfo locationInfo)
-        {
-            return BaseDal.QueryFirst(x => x.RoadwayNo == locationInfo.RoadwayNo && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer && x.Depth != locationInfo.Depth && x.Row != locationInfo.Row && (SqlFunc.Abs(x.Row - locationInfo.Row) == 1));
-        }
-
-        public WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO)
-        {
-            try
-            {
-                (bool, string, object?) result = ModelValidate.ValidateModelData(initializationLocationDTO);
-                if (!result.Item1) return WebResponseContent.Instance.Error(result.Item2);
-
-                int side = 1;
-                List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
-                for (int i = 0; i < initializationLocationDTO.MaxRow; i++)
-                {
-                    for (int j = 0; j < initializationLocationDTO.MaxColumn; j++)
-                    {
-                        for (int k = 0; k < initializationLocationDTO.MaxLayer; k++)
-                        {
-                            Dt_LocationInfo locationInfo = new Dt_LocationInfo()
-                            {
-                                AreaId = 0,
-                                Column = j + 1,
-                                EnableStatus = LocationEnalbeStatusEnum.Normal.ObjToInt(),
-                                Layer = k + 1,
-                                LocationStatus = LocationStatusEnum.Free.ObjToInt(),
-                                LocationType = LocationTypeEnum.Cube.ObjToInt(),
-                                RoadwayNo = initializationLocationDTO.Roadway,
-                                Row = i + 1,
-                            };
-
-                            if (initializationLocationDTO.IsSingleDepth)
-                            {
-                                locationInfo.Depth = 1;
-                                locationInfo.LocationCode = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
-                                locationInfo.LocationName = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
-                            }
-                            else
-                            {
-                                if (initializationLocationDTO.FirstDepthRows.Contains(i + 1))
-                                {
-                                    locationInfo.Depth = 1;
-                                }
-                                else
-                                {
-                                    locationInfo.Depth = 2;
-                                }
-                                locationInfo.LocationCode = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
-                                locationInfo.LocationName = $"R{initializationLocationDTO.Roadway.ToString().PadLeft(2, '0')}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞倇locationInfo.Depth.ToString().PadLeft(2, '0')}娣�";
-                            }
-
-                            locationInfos.Add(locationInfo);
-                        }
-                    }
-                }
-
-                BaseDal.AddData(locationInfos);
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/RoadwayInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/RoadwayInfoService.cs"
deleted file mode 100644
index 98016c2..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/RoadwayInfoService.cs"
+++ /dev/null
@@ -1,21 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_IBasicRepository;
-using WIDESEA_IBasicService;
-using WIDESEA_Model.Models;
-
-namespace WIDESEA_BasicService
-{
-    public class RoadwayInfoService : ServiceBase<Dt_RoadwayInfo, IRoadwayInfoRepository>, IRoadwayInfoService
-    {
-        public RoadwayInfoService(IRoadwayInfoRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public IRoadwayInfoRepository Repository => BaseDal;
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaInfoService.cs"
new file mode 100644
index 0000000..d24c9c1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaInfoService.cs"
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class AreaInfoService : ServiceBase<Dt_AreaInfo, IAreaInfoRepository>, IAreaInfoService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaRouterService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaRouterService.cs"
new file mode 100644
index 0000000..f739a90
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AreaRouterService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class AreaRouterService : ServiceBase<Dt_AreaRouter, IAreaRouterRepository>, IAreaRouterService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/CachePointService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/CachePointService.cs"
similarity index 66%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/CachePointService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/CachePointService.cs"
index a9bd2be..d700413 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/CachePointService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/CachePointService.cs"
@@ -15,13 +15,8 @@
 
 namespace WIDESEA_BasicService
 {
-    public class CachePointService : ServiceBase<Dt_CachePoint, ICachePointRepository>, ICachePointService
+    public partial class CachePointService : ServiceBase<Dt_CachePoint, ICachePointRepository>, ICachePointService
     {
-        public CachePointService(ICachePointRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public ICachePointRepository Repository => BaseDal;
 
         private readonly Dictionary<string, OrderByType> _emptyAssignOrderBy = new()
         {
@@ -35,19 +30,19 @@
             List<CachePointGroupDTO> cachePointGroups = Repository.GetCachePointGroups(areaId, LocationStatusEnum.InStock, LocationStatusEnum.Free);
             if (cachePointGroups != null && cachePointGroups.Count > 0)
             {
-                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusB == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == LocationEnalbeStatusEnum.Normal.ObjToInt());
+                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt());
                 int id = pointGroupDTO?.IdB ?? 0;
                 return BaseDal.QueryFirst(x => x.Id == id);
             }
             cachePointGroups = Repository.GetCachePointGroups(areaId, LocationStatusEnum.Free, LocationStatusEnum.Free);
             if (cachePointGroups != null && cachePointGroups.Count > 0)
             {
-                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusA == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == LocationEnalbeStatusEnum.Normal.ObjToInt());
+                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusA == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt());
                 int id = pointGroupDTO?.IdA ?? 0;
                 return BaseDal.QueryFirst(x => x.Id == id);
             }
 
-            return BaseDal.QueryFirst(x => x.PointStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.AreaId == areaId), _emptyAssignOrderBy);
+            return BaseDal.QueryFirst(x => x.PointStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.AreaId == areaId), _emptyAssignOrderBy);
         }
 
         public Dt_CachePoint? GetIbStockCachePoint(int areaId)
@@ -55,19 +50,19 @@
             List<CachePointGroupDTO> cachePointGroups = Repository.GetCachePointGroups(areaId, LocationStatusEnum.InStock, LocationStatusEnum.Free);
             if (cachePointGroups != null && cachePointGroups.Count > 0)
             {
-                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusA == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || x.EnableStatusA == LocationEnalbeStatusEnum.Normal.ObjToInt());
+                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusA == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt());
                 int id = pointGroupDTO?.IdA ?? 0;
                 return BaseDal.QueryFirst(x => x.Id == id);
             }
             cachePointGroups = Repository.GetCachePointGroups(areaId, LocationStatusEnum.InStock, LocationStatusEnum.InStock);
             if (cachePointGroups != null && cachePointGroups.Count > 0)
             {
-                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusB == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || x.EnableStatusB == LocationEnalbeStatusEnum.Normal.ObjToInt());
+                CachePointGroupDTO? pointGroupDTO = cachePointGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt());
                 int id = pointGroupDTO?.IdB ?? 0;
                 return BaseDal.QueryFirst(x => x.Id == id);
             }
 
-            return BaseDal.QueryFirst(x => x.PointStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == LocationEnalbeStatusEnum.Normal.ObjToInt() && x.AreaId == areaId), _emptyAssignOrderBy);
+            return BaseDal.QueryFirst(x => x.PointStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.AreaId == areaId), _emptyAssignOrderBy);
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs"
new file mode 100644
index 0000000..cf58bf1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs"
@@ -0,0 +1,115 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, ILocationInfoRepository>, ILocationInfoService
+    {
+
+        private Dictionary<string, OrderByType> _emptyAssignOrderBy = new Dictionary<string, OrderByType>()
+        {
+            { nameof(Dt_LocationInfo.Depth), OrderByType.Desc },
+            { nameof(Dt_LocationInfo.Layer), OrderByType.Asc },
+            { nameof(Dt_LocationInfo.Column), OrderByType.Asc },
+            { nameof(Dt_LocationInfo.Row), OrderByType.Asc },
+        };
+
+        public virtual Dt_LocationInfo? AssignLocation(string stationCode, int inboundType)
+        {
+            try
+            {
+                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.InStationCode == stationCode) ?? throw new Exception("鏈壘鍒拌绔欏彴瀵瑰簲鐨勫贩閬擄紝璇锋鏌ュ熀纭�閰嶇疆淇℃伅");
+                if (roadwayInfo.EnableStatus != EnableStatusEnum.Normal.ObjToInt() && roadwayInfo.EnableStatus != EnableStatusEnum.OnlyIn.ObjToInt())
+                {
+                    throw new Exception("璇ュ贩閬撲笉鍙叆搴擄紝璇锋鏌ュ贩閬撶鐢ㄤ俊鎭�");
+                }
+                if (roadwayInfo.AreaId > 0)
+                {
+                    Dt_AreaInfo areaInfo = _basicRepository.AreaInfoRepository.QueryFirst(x => x.Id == roadwayInfo.AreaId);
+                    if (areaInfo != null && areaInfo.AreaStatus == EnableEnum.Disable.ObjToInt())
+                    {
+                        throw new Exception("鍖哄煙琚鐢紝涓嶅彲鍏ュ簱");
+                    }
+                }
+                if (inboundType == TaskTypeEnum.PalletInbound.ObjToInt())//绌虹洏鍏ュ簱鍒嗛厤閫昏緫
+                {
+                    return EmptyAssignLocation(roadwayInfo.RoadwayNo);
+                }
+                else if (inboundType == TaskTypeEnum.Inbound.ObjToInt())
+                {
+                    return StoredAssignLocation(roadwayInfo.RoadwayNo);
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+
+            return null;
+        }
+
+        private Dt_LocationInfo EmptyAssignLocation(string roadway)
+        {
+            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Pallet);
+            if (locationGroups != null && locationGroups.Count > 0)
+            {
+                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt());
+                int id = locationGroup?.IdA ?? 0;
+                return BaseDal.QueryFirst(x => x.Id == id);
+            }
+            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
+            if (locationGroups != null && locationGroups.Count > 0)
+            {
+                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt());
+                int id = locationGroup?.IdB ?? 0;
+                return BaseDal.QueryFirst(x => x.Id == id);
+            }
+
+            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
+        }
+
+        private Dt_LocationInfo StoredAssignLocation(string roadway)
+        {
+            List<LocationGroupDTO> locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.InStock);
+            if (locationGroups != null)
+            {
+                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusA == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusA == EnableStatusEnum.Normal.ObjToInt());
+                int id = locationGroup?.IdA ?? 0;
+                return BaseDal.QueryFirst(x => x.Id == id);
+            }
+            locationGroups = BaseDal.GetLocationGroups(roadway, LocationStatusEnum.Free, LocationStatusEnum.Free);
+            if (locationGroups != null && locationGroups.Count > 0)
+            {
+                LocationGroupDTO? locationGroup = locationGroups.FirstOrDefault(x => x.EnableStatusB == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatusB == EnableStatusEnum.Normal.ObjToInt());
+                int id = locationGroup?.IdB ?? 0;
+                return BaseDal.QueryFirst(x => x.Id == id);
+            }
+
+            return BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == roadway), _emptyAssignOrderBy);
+        }
+
+        public Dt_LocationInfo AdjacentDepthLocation(string locationCode)
+        {
+            Dt_LocationInfo locationInfo = BaseDal.QueryFirst(x => x.LocationCode == locationCode);
+            return AdjacentDepthLocation(locationInfo);
+        }
+
+        public Dt_LocationInfo AdjacentDepthLocation(Dt_LocationInfo locationInfo)
+        {
+            return BaseDal.QueryFirst(x => x.RoadwayNo == locationInfo.RoadwayNo && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer && x.Depth != locationInfo.Depth && x.Row != locationInfo.Row && (SqlFunc.Abs(x.Row - locationInfo.Row) == 1));
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs"
similarity index 77%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs"
index fc08d5c..e9f0faa 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs"
@@ -10,13 +10,8 @@
 
 namespace WIDESEA_BasicService
 {
-    public class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
+    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
     {
-        public MaterielInfoService(IMaterielInfoRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public IMaterielInfoRepository Repository => BaseDal;
 
         public bool ExsitMateriel(string materielCode)
         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/RoadwayInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/RoadwayInfoService.cs"
new file mode 100644
index 0000000..bbc05ec
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/RoadwayInfoService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class RoadwayInfoService : ServiceBase<Dt_RoadwayInfo, IRoadwayInfoRepository>, IRoadwayInfoService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs"
new file mode 100644
index 0000000..1353a56
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/WarehouseService.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BasicService
+{
+    public partial class WarehouseService : ServiceBase<Dt_Warehouse, IWarehouseRepository>, IWarehouseService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs"
deleted file mode 100644
index 1923d9f..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs"
+++ /dev/null
@@ -1,21 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core.BaseServices;
-using WIDESEA_IBasicRepository;
-using WIDESEA_IBasicService;
-using WIDESEA_Model.Models;
-
-namespace WIDESEA_BasicService
-{
-    public class WarehouseService : ServiceBase<Dt_Warehouse, IWarehouseRepository>, IWarehouseService
-    {
-        public WarehouseService(IWarehouseRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public IWarehouseRepository Repository => BaseDal;
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
index 31f4763..dac84c9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs"
@@ -11,6 +11,7 @@
 using WIDESEA_Core.Const;
 using WIDESEA_Core.DB;
 using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.Seed;
 using WIDESEA_Core.Tenants;
@@ -141,12 +142,11 @@
                 ruleConfig.ModifyDate = DateTime.Now;
 
                 code = ruleConfig.Format;
-                code = code.Replace("[YYYY]", now.Year.ToString().PadLeft(4, '0'));
-                code = code.Replace("[YY]", now.Year.ToString().Substring(2, 2));
-                code = code.Replace("[MM]", now.Month.ToString().PadLeft(2, '0'));
-                code = code.Replace("[DD]", now.Day.ToString().PadLeft(2, '0'));
-                code = code.Replace("[ST]", ruleConfig.StartStr.ToString());
-                code = code.Replace("[NUM]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length ?? 0, '0'));
+                code = code.Replace($"[{CodeFormat.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
+                code = code.Replace($"[{CodeFormat.MM}]", now.Month.ToString().PadLeft(2, '0'));
+                code = code.Replace($"[{CodeFormat.DD}]", now.Day.ToString().PadLeft(2, '0'));
+                code = code.Replace($"[{CodeFormat.ST}]", ruleConfig.StartStr.ToString());
+                code = code.Replace($"[{CodeFormat.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length ?? 0, '0'));
             }
             catch (Exception ex)
             {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs"
index 7da398d..dfea286 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/AnalysisRuleAttribute.cs"
@@ -10,11 +10,11 @@
     [AttributeUsage(AttributeTargets.Property)]
     public class AnalysisItemRuleAttribute : Attribute
     {
-        public AnalysisFormaType AnalysisFormaType { get; set; }
+        public AnalysisFormatType AnalysisFormaType { get; set; }
 
         public int Length { get; set; }
 
-        public AnalysisItemRuleAttribute(AnalysisFormaType analysisFormaType)
+        public AnalysisItemRuleAttribute(AnalysisFormatType analysisFormaType)
         {
             AnalysisFormaType = analysisFormaType;
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs"
index ad3c7f8..5c92ef9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs"
@@ -79,7 +79,14 @@
 
         public string Get(string key)
         {
-            return _cache.Get(key)?.ToString();
+            try
+            {
+                return _cache.Get(key)?.ToString();
+            }
+            catch
+            {
+                return string.Empty;
+            }
         }
 
         public bool Remove(string key)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs"
index 9797f56..6bb9560 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ConfigEnum.cs"
@@ -37,7 +37,7 @@
         OutterCode
     }
 
-    public enum AnalysisFormaType
+    public enum AnalysisFormatType
     {
         /// <summary>
         /// 鐗╂枡缂栧彿
@@ -85,4 +85,43 @@
         [Description("鍑哄簱鍗曞彿缂栫爜瑙勫垯缂栧彿")]
         OutboundOrderRule
     }
+
+    public enum CodeFormat
+    {
+        /// <summary>
+        /// 璧峰瀛楃涓�
+        /// </summary>
+        [Description("璧峰瀛楃涓�")]
+        ST,
+
+        /// <summary>
+        /// 4浣嶆暟骞�
+        /// </summary>
+        [Description("4浣嶆暟骞�")]
+        YYYY,
+
+        /// <summary>
+        /// 2浣嶆暟鏈�
+        /// </summary>
+        [Description("2浣嶆暟鏈�")]
+        MM,
+
+        /// <summary>
+        /// 2浣嶆暟鏃�
+        /// </summary>
+        [Description("2浣嶆暟鏃�")]
+        DD,
+
+        /// <summary>
+        /// 娴佹按鍙�
+        /// </summary>
+        [Description("娴佹按鍙�")]
+        NUM,
+
+        /// <summary>
+        /// 缁撴潫瀛楃涓�
+        /// </summary>
+        [Description("缁撴潫瀛楃涓�")]
+        ED
+    }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs"
index 2c38045..f18fc02 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LocationEnum.cs"
@@ -37,7 +37,7 @@
         Pallet = 99
     }
 
-    public enum LocationEnalbeStatusEnum
+    public enum EnableStatusEnum
     {
         /// <summary>
         /// 姝e父
@@ -69,13 +69,13 @@
         /// <summary>
         /// 绔嬪簱
         /// </summary>
-        [Description("绔嬪簱")]
+        [Description("绔嬪簱璐т綅")]
         Cube = 1,
 
         /// <summary>
         /// 骞冲簱
         /// </summary>
-        [Description("骞冲簱")]
+        [Description("骞冲簱璐т綅")]
         Flat = 2
     }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs"
index f3afbf0..17216eb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs"
@@ -13,12 +13,6 @@
     public enum EnableEnum
     {
         /// <summary>
-        /// 鍏ㄩ儴
-        /// </summary>
-        [Description("鍏ㄩ儴")]
-        All = -1,
-
-        /// <summary>
         /// 绂佺敤
         /// </summary>
         [Description("绂佺敤")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs"
index f2824c0..1343786 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs"
@@ -22,37 +22,37 @@
         /// 鐢熶骇閫�鏂欏崟
         /// </summary>
         [Description("鐢熶骇閫�鏂欏崟")]
-        Return = 200,
+        Return = 105,
 
         /// <summary>
         /// 閲囪喘鍏ュ簱鍗�
         /// </summary>
         [Description("閲囪喘鍏ュ簱鍗�")]
-        Purchase = 300,
+        Purchase = 110,
 
         /// <summary>
         /// 璋冩嫧鍏ュ簱鍗�
         /// </summary>
         [Description("璋冩嫧鍏ュ簱鍗�")]
-        Allocat = 400,
+        Allocat = 115,
 
         /// <summary>
         /// 閿�鍞��璐у崟
         /// </summary>
         [Description("閿�鍞��璐у崟")]
-        SaleReturn = 500,
+        SaleReturn = 120,
 
         /// <summary>
         /// 绌虹洏鍏ュ簱鍗�
         /// </summary>
         [Description("绌虹洏鍏ュ簱鍗�")]
-        EmptyDisk = 600,
+        EmptyDisk = 125,
 
         /// <summary>
         /// 鍏朵粬鍏ュ簱鍗�
         /// </summary>
         [Description("鍏朵粬鍏ュ簱鍗�")]
-        Other = 700
+        Other = 130
     }
 
     /// <summary>
@@ -64,49 +64,49 @@
         /// 鐢熶骇杩斿伐鍗�
         /// </summary>
         [Description("鐢熶骇杩斿伐鍗�")]
-        Rework = 100,
+        Rework = 200,
 
         /// <summary>
         /// 鐢熶骇鍙戞枡鍗�
         /// </summary>
         [Description("鐢熶骇鍙戞枡鍗�")]
-        Issue = 200,
+        Issue = 205,
 
         /// <summary>
         /// 閲囪喘閫�璐у崟
         /// </summary>
         [Description("閲囪喘閫�璐у崟")]
-        ProcureReturn = 300,
+        ProcureReturn = 210,
 
         /// <summary>
         /// 璋冩嫧鍑哄簱鍗�
         /// </summary>
         [Description("璋冩嫧鍑哄簱鍗�")]
-        Allocate = 400,
+        Allocate = 215,
 
         /// <summary>
         /// 閿�鍞嚭搴撳崟
         /// </summary>
         [Description("閿�鍞嚭搴撳崟")]
-        SaleOut = 500,
+        SaleOut = 220,
 
         /// <summary>
         /// 绌虹洏鍑哄簱鍗�
         /// </summary>
         [Description("绌虹洏鍑哄簱鍗�")]
-        EmptyDisk = 600,
+        EmptyDisk = 225,
 
         /// <summary>
         /// 璐ㄦ鍑哄簱鍗�
         /// </summary>
         [Description("璐ㄦ鍑哄簱鍗�")]
-        Quality = 700,
+        Quality = 230,
 
         /// <summary>
         /// 鍏朵粬鍑哄簱鍗�
         /// </summary>
         [Description("鍏朵粬鍑哄簱鍗�")]
-        Other = 800
+        Other = 235
     }
 
     public enum OrderDetailStatusEnum
@@ -123,10 +123,13 @@
         [Description("缁勭洏鍏ュ簱")]
         GroupAndInbound = 10,
 
+        [Description("鍑哄簱閮ㄥ垎鍒嗛厤瀹屾垚")]
         AssignOverPartial = 60,
 
+        [Description("鍑哄簱鍒嗛厤瀹屾垚")]
         AssignOver = 70,
 
+        [Description("鍑哄簱涓�")]
         Outbound = 80,
         /// <summary>
         /// 瀹屾垚
@@ -168,7 +171,7 @@
     /// <summary>
     /// 鍏ュ簱鍗曟嵁鐘舵�� 0锛屾湭寮�濮�  1锛屽叆搴撲腑  2锛屽叆搴撳畬鎴�
     /// </summary>
-    public enum InboundStatusEmun
+    public enum InboundStatusEnum
     {
         /// <summary>
         /// 鏈紑濮�
@@ -206,7 +209,35 @@
     #region
     public enum OutboundStatusEnum
     {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        鏈紑濮� = 0,
 
+        /// <summary>
+        /// 鍑哄簱涓�
+        /// </summary>
+        [Description("鍑哄簱涓�")]
+        鍏ュ簱涓� = 1,
+
+        /// <summary>
+        /// 鍑哄簱瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱瀹屾垚")]
+        鍏ュ簱瀹屾垚 = 2,
+
+        /// <summary>
+        /// 鍏抽棴
+        /// </summary>
+        [Description("鍏抽棴")]
+        鍏抽棴 = 99,
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        [Description("鍙栨秷")]
+        鍙栨秷 = 98
     }
     #endregion
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs"
index bc2f034..98ba836 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/RoadwayEnum.cs"
@@ -7,18 +7,4 @@
 
 namespace WIDESEA_Core.Enums
 {
-    public enum RoadwayStatusEnum
-    {
-        [Description("姝e父")]
-        Normal,
-
-        [Description("鍙叆")]
-        OnlyIn,
-
-        [Description("鍙嚭")]
-        OnlyOut,
-
-        [Description("绂佺敤")]
-        Disable
-    }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs"
index bdcc8fa..46fd183 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/StockEnum.cs"
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -11,19 +12,20 @@
         /// <summary>
         /// 缁勭洏
         /// </summary>
+        [Description("")]
         MaterielGroup,
 
         /// <summary>
         /// 鍏ュ簱
         /// </summary>
+        [Description("")]
         Inbound,
 
         /// <summary>
         /// 鍑哄簱
         /// </summary>
+        [Description("")]
         Outbound,
-
-
     }
 
     /// <summary>
@@ -31,21 +33,43 @@
     /// </summary>
     public enum StockStatusEmun
     {
+        [Description("缁勭洏鏆傚瓨")]
         缁勭洏鏆傚瓨 = 1,
+
+        [Description("缁勭洏鎾ら攢")]
         缁勭洏鎾ら攢 = 2,
+
+        [Description("鍏ュ簱纭")]
         鍏ュ簱纭 = 3,
+
+        [Description("鍏ュ簱鎾ら攢")]
         鍏ュ簱鎾ら攢 = 4,
+
+        [Description("宸插叆搴�")]
         宸插叆搴� = 5,
+
+        [Description("鍏ュ簱瀹屾垚")]
         鍏ュ簱瀹屾垚 = 6,
+
+        [Description("鍑哄簱閿佸畾")]
         鍑哄簱閿佸畾 = 7,
+
+        [Description("鍑哄簱瀹屾垚")]
         鍑哄簱瀹屾垚 = 8,
     }
 
     public enum OutStockStatus
     {
+        [Description("宸插垎閰�")]
         宸插垎閰� = 0,
+
+        [Description("鍑哄簱涓�")]
         鍑哄簱涓� = 1,
+
+        [Description("鍑哄簱瀹屾垚")]
         鍑哄簱瀹屾垚 = 2,
+
+        [Description("鎾ら攢")]
         鎾ら攢 = 99
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs"
index 2ca34c9..8ed661c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnum.cs"
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -17,78 +18,94 @@
         /// <summary>
         /// 鍑哄簱 =100
         /// </summary>
+        [Description("鍑哄簱")]
         Outbound = 100,
 
         /// <summary>
         /// 鐩樼偣鍑哄簱
         /// </summary>
+        [Description("鐩樼偣鍑哄簱")]
         OutInventory = 101,
 
         /// <summary>
         /// 鍒嗘嫞鍑哄簱
         /// </summary>
+        [Description("鍒嗘嫞鍑哄簱")]
         OutPick = 102,
 
         /// <summary>
         /// 璐ㄦ鍑哄簱
         /// </summary>
+        [Description("璐ㄦ鍑哄簱")]
         OutQuality = 103,
 
         /// <summary>
         /// 鍑虹┖
         /// </summary>
+        [Description("鍑虹┖")]
         PalletOutbound = 104,
 
         /// <summary>
         /// 琛ョ┖
         /// </summary>
+        [Description("琛ョ┖")]
         PalletFillOutbound = 105,
 
         /// <summary>
         /// 鍏ュ簱
         /// </summary>
+        [Description("鍏ュ簱")]
         Inbound = 200,
 
         /// <summary>
         /// 鐩樼偣鍏ュ簱
         /// </summary>
+        [Description("鐩樼偣鍏ュ簱")]
         InInventory = 201,
 
         /// <summary>
         /// 鍒嗘嫞鍏ュ簱
         /// </summary>
+        [Description("鍒嗘嫞鍏ュ簱")]
         InPick = 202,
 
         /// <summary>
         /// 璐ㄦ鍏ュ簱
         /// </summary>
+        [Description("璐ㄦ鍏ュ簱")]
         InQuality = 203,
 
         /// <summary>
         /// 鍏ョ┖
         /// </summary>
+        [Description("鍏ョ┖")]
         PalletInbound = 204,
 
         /// <summary>
         /// 鍥炵┖
         /// </summary>
+        [Description("鍥炵┖")]
         PalletReturnInbound = 205,
 
         /// <summary>
         /// 绉诲簱
         /// </summary>
+        [Description("绉诲簱")]
         Relocation = 300,
 
         /// <summary>
         /// 搴撳唴绉诲簱
         /// </summary>
+        [Description("搴撳唴绉诲簱")]
         RelocationIn = 301,
 
         /// <summary>
         /// 搴撳绉诲簱
         /// </summary>
+        [Description("搴撳绉诲簱")]
         RelocationOut = 302,
 
+        [Description("AGV鎼繍")]
         AGVCarry = 500,
     }
 
@@ -104,35 +121,43 @@
         /// <summary>
         /// 鏂板缓鍏ュ簱浠诲姟
         /// </summary>
+        [Description("鏂板缓")]
         InNew = 200,
+
         /// <summary>
         /// 鍫嗗灈鏈哄叆搴撴墽琛屼腑
         /// </summary>
+        [Description("鍫嗗灈鏈哄叆搴撴墽琛屼腑")]
         SC_InExecuting = 230,
 
         /// <summary>
         /// 鍫嗗灈鏈哄叆搴撳畬鎴�
         /// </summary>
+        [Description("鍫嗗灈鏈哄叆搴撳畬鎴�")]
         SC_InFinish = 235,
 
         /// <summary>
         /// 鍏ュ簱浠诲姟瀹屾垚
         /// </summary>
+        [Description("鍏ュ簱浠诲姟瀹屾垚")]
         InFinish = 290,
 
         /// <summary>
         /// 鍏ュ簱浠诲姟鍙栨秷
         /// </summary>
+        [Description("鍏ュ簱浠诲姟鍙栨秷")]
         InCancel = 298,
 
         /// <summary>
         /// 鍏ュ簱浠诲姟寮傚父
         /// </summary>
+        [Description("鍏ュ簱浠诲姟寮傚父")]
         InException = 299,
 
         /// <summary>
         /// 鏂板缓绉诲簱搴撲换鍔�
         /// </summary>
+        [Description("鏂板缓绉诲簱搴撲换鍔�")]
         RelocationNew = 300
     }
 
@@ -146,49 +171,61 @@
         /// <summary>
         /// 鏂板缓浠诲姟
         /// </summary>
+        [Description("鏂板缓")]
         OutNew = 100,
+
         /// <summary>
         /// 鍫嗗灈鏈哄嚭搴撴墽琛屼腑
         /// </summary>
+        [Description("鍫嗗灈鏈哄嚭搴撴墽琛屼腑")]
         SC_OutExecuting = 130,
 
         /// <summary>
         /// 鍫嗗灈鏈哄嚭搴撳畬鎴�
         /// </summary>
+        [Description("鍫嗗灈鏈哄嚭搴撳畬鎴�")]
         SC_OutFinish = 135,
 
         /// <summary>
         /// 绉诲簱浠诲姟鎵ц涓�
         /// </summary>
+        [Description("绉诲簱浠诲姟鎵ц涓�")]
         SC_RelocationExecuting = 140,
 
         /// <summary>
         /// 绉诲簱浠诲姟鎵ц涓�
         /// </summary>
+        [Description("绉诲簱浠诲姟鎵ц涓�")]
         SC_RelocationFinish = 145,
 
         /// <summary>
         /// 鍑哄簱浠诲姟瀹屾垚
         /// </summary>
+        [Description("鍑哄簱浠诲姟瀹屾垚")]
         OutFinish = 190,
 
         /// <summary>
         /// 鍑哄簱浠诲姟鍙栨秷
         /// </summary>
+        [Description("鍑哄簱浠诲姟鍙栨秷")]
         OutCancel = 198,
 
         /// <summary>
         /// 鍑哄簱浠诲姟寮傚父
         /// </summary>
+        [Description("鍑哄簱浠诲姟寮傚父")]
         OutException = 199
     }
 
     public enum AGVTaskStatusEnum
     {
+        [Description("鏂板缓")]
         AGV_New = 500,
 
+        [Description("鎵ц涓�")]
         AGV_Executing = 510,
 
+        [Description("瀹屾垚")]
         AGV_Finish = 520
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs"
index 56bda4c..6dbad0f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/CodeAnalysisHelper.cs"
@@ -25,7 +25,10 @@
         public static T CodeAnalysis<T>(AnalysisCode analysisCode, string code)
         {
             Type type = typeof(T);
-            T result = (T)Activator.CreateInstance(type);
+            object? obj = Activator.CreateInstance(type);
+            if (obj == null)
+                throw new Exception("瀹炰緥鍖栧璞¢敊璇�");
+            T result = (T)obj;
             try
             {
                 AnalysisRuleAttribute? analysisRule = type.GetCustomAttribute<AnalysisRuleAttribute>();
@@ -122,7 +125,7 @@
                                         AnalysisItemRuleAttribute? analysisItemRule = propertyInfo.GetCustomAttribute<AnalysisItemRuleAttribute>();
                                         if (analysisItemRule != null)
                                         {
-                                            if(analysisItemRule.AnalysisFormaType == AnalysisFormaType.BD)
+                                            if(analysisItemRule.AnalysisFormaType == AnalysisFormatType.BD)
                                             {
                                                 propertyInfo.SetValue(result, code.ChangeType(propertyInfo.PropertyType));
                                             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs"
index 1aa6f7a..afb36bd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MatSerialNumberDTO.cs"
@@ -10,22 +10,22 @@
     [AnalysisRule, ModelValidate]
     public class MatSerialNumberDTO
     {
-        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormaType.MTC), PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
+        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.MTC), PropertyValidate("鐗╂枡缂栧彿", NotNullAndEmpty = true)]
         public string MaterielCode { get; set; }
 
-        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormaType.MTPT), PropertyValidate("鐢熶骇鏃ユ湡", NotNullAndEmpty = true)]
+        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.MTPT), PropertyValidate("鐢熶骇鏃ユ湡", NotNullAndEmpty = true)]
         public string ProductionDate { get; set; }
 
-        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormaType.BHN), PropertyValidate("鎵规鍙�", NotNullAndEmpty = true)]
+        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.BHN), PropertyValidate("鎵规鍙�", NotNullAndEmpty = true)]
         public string BatchNo { get; set; }
 
-        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormaType.MTQ), PropertyValidate("鏁伴噺", NotNullAndEmpty = true)]
+        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.MTQ), PropertyValidate("鏁伴噺", NotNullAndEmpty = true)]
         public decimal MaterielQuantity { get; set; }
 
-        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormaType.ODN), PropertyValidate("璁㈠崟缂栧彿", NotNullAndEmpty = true)]
+        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.ODN), PropertyValidate("璁㈠崟缂栧彿", NotNullAndEmpty = true)]
         public string OrderNo { get; set; }
 
-        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormaType.BD), PropertyValidate("搴忓垪鍙�", NotNullAndEmpty = true)]
+        [AnalysisItemRule(WIDESEA_Core.Enums.AnalysisFormatType.BD), PropertyValidate("搴忓垪鍙�", NotNullAndEmpty = true)]
         public string SerialNumber { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IAreaInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IAreaInfoService.cs"
index 8e14a76..9bfcc0d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IAreaInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IAreaInfoService.cs"
@@ -13,5 +13,13 @@
     public interface IAreaInfoService : IService<Dt_AreaInfo>
     {
         IAreaInfoRepository Repository { get; }
+
+        WebResponseContent AreaEnableStatus(int[] keys);
+
+        WebResponseContent AreaDisableStatus(int[] keys);
+
+        WebResponseContent AreaEnableStatus(int key);
+
+        WebResponseContent AreaDisableStatus(int key);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
index c685b73..878962f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
@@ -22,50 +22,5 @@
         IAreaRouterService AreaRouterService { get; }
 
         ICachePointService CachePointService { get; }
-
-
-        WebResponseContent AreaEnableStatus(int[] keys);
-
-        WebResponseContent AreaDisableStatus(int[] keys);
-
-        WebResponseContent AreaEnableStatus(int key);
-
-        WebResponseContent AreaDisableStatus(int key);
-
-
-        WebResponseContent CachePointEnableStatus(int[] keys);
-
-        WebResponseContent CachePointDisableStatus(int[] keys);
-
-        WebResponseContent CachePointEnableStatus(int key);
-
-        WebResponseContent CachePointDisableStatus(int key);
-
-
-        WebResponseContent LocationEnableStatus(int[] keys);
-
-        WebResponseContent LocationDisableStatus(int[] keys);
-
-        WebResponseContent LocationEnableStatus(int key);
-
-        WebResponseContent LocationDisableStatus(int key);
-
-
-        WebResponseContent RoadwayEnableStatus(int[] keys);
-
-        WebResponseContent RoadwayDisableStatus(int[] keys);
-
-        WebResponseContent RoadwayEnableStatus(int key);
-
-        WebResponseContent RoadwayDisableStatus(int key);
-
-
-        WebResponseContent WarehouseEnableStatus(int[] keys);
-
-        WebResponseContent WarehouseDisableStatus(int[] keys);
-
-        WebResponseContent WarehouseEnableStatus(int key);
-
-        WebResponseContent WarehouseDisableStatus(int key);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ICachePointService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ICachePointService.cs"
index 72f6837..fc2cedf 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ICachePointService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ICachePointService.cs"
@@ -18,6 +18,12 @@
 
         Dt_CachePoint? GetIbStockCachePoint(int areaId);
 
-        
+        WebResponseContent CachePointEnableStatus(int[] keys);
+
+        WebResponseContent CachePointDisableStatus(int[] keys);
+
+        WebResponseContent CachePointEnableStatus(int key);
+
+        WebResponseContent CachePointDisableStatus(int key);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
index b8e9d3b..1d05cb1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
@@ -21,5 +21,12 @@
 
         Dt_LocationInfo? AssignLocation(string stationCode, int inboundType);
 
+        WebResponseContent LocationEnableStatus(int[] keys);
+
+        WebResponseContent LocationDisableStatus(int[] keys);
+
+        WebResponseContent LocationEnableStatus(int key);
+
+        WebResponseContent LocationDisableStatus(int key);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IRoadwayInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IRoadwayInfoService.cs"
index 5967bcf..b67d838 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IRoadwayInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IRoadwayInfoService.cs"
@@ -14,5 +14,13 @@
     {
         IRoadwayInfoRepository Repository { get; }
 
+
+        WebResponseContent RoadwayEnableStatus(int[] keys);
+
+        WebResponseContent RoadwayDisableStatus(int[] keys);
+
+        WebResponseContent RoadwayEnableStatus(int key);
+
+        WebResponseContent RoadwayDisableStatus(int key);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
index 0a0dfd0..b6b11cc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs"
@@ -14,5 +14,12 @@
     {
         IWarehouseRepository Repository { get; }
 
+        WebResponseContent WarehouseEnableStatus(int[] keys);
+
+        WebResponseContent WarehouseDisableStatus(int[] keys);
+
+        WebResponseContent WarehouseEnableStatus(int key);
+
+        WebResponseContent WarehouseDisableStatus(int key);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs"
index 9bc3c84..985313f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_MenuService.cs"
@@ -17,6 +17,8 @@
 
         object GetCurrentMenuActionList();
 
+        object GetMenuActionList(int roleId);
+
         List<MenuDTO> GetUserMenuList(int roleId);
 
         List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderDetailService.cs"
new file mode 100644
index 0000000..d3387d2
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderDetailService.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public partial class InboundOrderDetailService : ServiceBase<Dt_InboundOrderDetail, IInboundOrderDetailRepository>, IInboundOrderDetailService
+    {
+        public IInboundOrderDetailRepository Repository => BaseDal;
+
+        public InboundOrderDetailService(IInboundOrderDetailRepository BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs"
new file mode 100644
index 0000000..b38e66e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs"
@@ -0,0 +1,123 @@
+锘縰sing AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_IBasicService;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_IStockService;
+using WIDESEA_ITaskInfoRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_InboundService
+{
+    public partial class InboundOrderService : ServiceBase<Dt_InboundOrder, IInboundOrderRepository>, IInboundOrderService
+    {
+        private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ITaskRepository _taskRepository;
+
+        private IBasicService _basicService;
+        private IStockService _stockService;
+        private IInboundOrderDetailService _inboundOrderDetailService;
+
+        public IInboundOrderRepository Repository => BaseDal;
+
+        public InboundOrderService(IInboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, ITaskRepository taskRepository, IBasicService basicService, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _unitOfWorkManage = unitOfWorkManage;
+            _taskRepository = taskRepository;
+            _basicService = basicService;
+            _stockService = stockService;
+            _inboundOrderDetailService = inboundOrderDetailService;
+        }
+
+        /// <summary>
+        /// 娣诲姞鍗曟嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            InboundOrderAddDTO orderAddDTO = saveModel.MainData.DicToModel<InboundOrderAddDTO>();
+            orderAddDTO.Details = saveModel.DetailData.DicToIEnumerable<InboundOrderDetailAddDTO>();
+            return AddInboundOrder(orderAddDTO);
+        }
+
+        /// <summary>
+        /// 娣诲姞鍗曟嵁
+        /// </summary>
+        /// <param name="orderAddDTO">鍗曟嵁娣诲姞DTO</param>
+        /// <returns></returns>
+        public WebResponseContent AddInboundOrder(InboundOrderAddDTO orderAddDTO)
+        {
+            WebResponseContent content = new();
+            try
+            {
+                #region 楠岃瘉鏁版嵁
+                (bool, string, object?) result = CheckInboundOrderAddData(orderAddDTO);
+                if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
+                #endregion
+
+                Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO);
+                inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt();
+                bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            finally
+            {
+
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 楠岃瘉鍗曟嵁娣诲姞DTO瀵硅薄
+        /// </summary>
+        /// <param name="inboundOrderAddDTO">鍗曟嵁娣诲姞DTO</param>
+        /// <returns></returns>
+        private (bool, string, object?) CheckInboundOrderAddData(InboundOrderAddDTO inboundOrderAddDTO)
+        {
+            (bool, string, object?) result1 = ModelValidate.ValidateModelData(inboundOrderAddDTO);
+            if (!result1.Item1) return result1;
+
+            (bool, string, object?) result2 = ModelValidate.ValidateModelData(inboundOrderAddDTO.Details);
+            if (!result2.Item1) return result2;
+
+            IEnumerable<int> inOrderTypes = Enum.GetValues<InOrderTypeEnum>().Cast<int>();
+            if (!inOrderTypes.Contains(inboundOrderAddDTO.OrderType))
+            {
+                return (false, "鏈壘鍒拌鍗曟嵁绫诲瀷", inboundOrderAddDTO);
+            }
+
+            List<string> materielCodes = inboundOrderAddDTO.Details.Select(x => x.MaterielCode).ToList();
+            if (!_basicService.MaterielInfoService.ExsitMateriels(materielCodes))
+            {
+                return (false, "鏈夌墿鏂欎俊鎭湭褰曞叆锛岃褰曞叆鐗╂枡淇℃伅", inboundOrderAddDTO);
+            }
+
+            if (BaseDal.QueryFirst(x => x.UpperOrderNo == inboundOrderAddDTO.UpperOrderNo && !string.IsNullOrEmpty(x.UpperOrderNo)) != null)
+            {
+                return (false, "鍗曟嵁宸插瓨鍦�", inboundOrderAddDTO);
+            }
+            return (true, "鎴愬姛", inboundOrderAddDTO);
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderDetailService.cs"
similarity index 85%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderDetailService.cs"
index 81e799e..40f33b5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderDetailService.cs"
@@ -12,13 +12,8 @@
 
 namespace WIDESEA_InboundService
 {
-    public class InboundOrderDetailService : ServiceBase<Dt_InboundOrderDetail, IInboundOrderDetailRepository>, IInboundOrderDetailService
+    public partial class InboundOrderDetailService : ServiceBase<Dt_InboundOrderDetail, IInboundOrderDetailRepository>, IInboundOrderDetailService
     {
-        public IInboundOrderDetailRepository Repository => BaseDal;
-
-        public InboundOrderDetailService(IInboundOrderDetailRepository BaseDal) : base(BaseDal)
-        {
-        }
 
         public List<Dt_InboundOrderDetail> UpdateReceiptQuantity(List<Dt_InboundOrderDetail> inboundOrderDetails, decimal receiptQuantity)
         {
@@ -48,8 +43,6 @@
             }
             return (updateOrderDetails);
         }
-
-        
 
         public void UpdateOverInQuantity(List<Dt_InboundOrderDetail> inboundOrderDetails, decimal overInQuantity)
         {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs"
similarity index 70%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs"
index 0342543..9fd4301 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs"
@@ -23,102 +23,8 @@
 
 namespace WIDESEA_InboundService
 {
-    public class InboundOrderService : ServiceBase<Dt_InboundOrder, IInboundOrderRepository>, IInboundOrderService
+    public partial class InboundOrderService : ServiceBase<Dt_InboundOrder, IInboundOrderRepository>, IInboundOrderService
     {
-        private readonly IMapper _mapper;
-        private readonly IUnitOfWorkManage _unitOfWorkManage;
-        private readonly ITaskRepository _taskRepository;
-
-        private IBasicService _basicService;
-        private IStockService _stockService;
-        private IInboundOrderDetailService _inboundOrderDetailService;
-
-        public IInboundOrderRepository Repository => BaseDal;
-
-        public InboundOrderService(IInboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, ITaskRepository taskRepository, IBasicService basicService, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService) : base(BaseDal)
-        {
-            _mapper = mapper;
-            _unitOfWorkManage = unitOfWorkManage;
-            _taskRepository = taskRepository;
-            _basicService = basicService;
-            _stockService = stockService;
-            _inboundOrderDetailService = inboundOrderDetailService;
-        }
-
-        /// <summary>
-        /// 娣诲姞鍗曟嵁
-        /// </summary>
-        /// <param name="saveModel"></param>
-        /// <returns></returns>
-        public override WebResponseContent AddData(SaveModel saveModel)
-        {
-            InboundOrderAddDTO orderAddDTO = saveModel.MainData.DicToModel<InboundOrderAddDTO>();
-            orderAddDTO.Details = saveModel.DetailData.DicToIEnumerable<InboundOrderDetailAddDTO>();
-            return AddInboundOrder(orderAddDTO);
-        }
-
-        /// <summary>
-        /// 娣诲姞鍗曟嵁
-        /// </summary>
-        /// <param name="orderAddDTO">鍗曟嵁娣诲姞DTO</param>
-        /// <returns></returns>
-        public WebResponseContent AddInboundOrder(InboundOrderAddDTO orderAddDTO)
-        {
-            WebResponseContent content = new();
-            try
-            {
-                #region 楠岃瘉鏁版嵁
-                (bool, string, object?) result = CheckInboundOrderAddData(orderAddDTO);
-                if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
-                #endregion
-
-                Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO);
-                inboundOrder.OrderStatus = InboundStatusEmun.鏈紑濮�.ObjToInt();
-                bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
-                content = WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                content = WebResponseContent.Instance.Error(ex.Message);
-            }
-            finally
-            {
-
-            }
-            return content;
-        }
-
-        /// <summary>
-        /// 楠岃瘉鍗曟嵁娣诲姞DTO瀵硅薄
-        /// </summary>
-        /// <param name="inboundOrderAddDTO">鍗曟嵁娣诲姞DTO</param>
-        /// <returns></returns>
-        private (bool, string, object?) CheckInboundOrderAddData(InboundOrderAddDTO inboundOrderAddDTO)
-        {
-            (bool, string, object?) result1 = ModelValidate.ValidateModelData(inboundOrderAddDTO);
-            if (!result1.Item1) return result1;
-
-            (bool, string, object?) result2 = ModelValidate.ValidateModelData(inboundOrderAddDTO.Details);
-            if (!result2.Item1) return result2;
-
-            IEnumerable<int> inOrderTypes = Enum.GetValues<InOrderTypeEnum>().Cast<int>();
-            if (!inOrderTypes.Contains(inboundOrderAddDTO.OrderType))
-            {
-                return (false, "鏈壘鍒拌鍗曟嵁绫诲瀷", inboundOrderAddDTO);
-            }
-
-            List<string> materielCodes = inboundOrderAddDTO.Details.Select(x => x.MaterielCode).ToList();
-            if (!_basicService.MaterielInfoService.ExsitMateriels(materielCodes))
-            {
-                return (false, "鏈夌墿鏂欎俊鎭湭褰曞叆锛岃褰曞叆鐗╂枡淇℃伅", inboundOrderAddDTO);
-            }
-
-            if (BaseDal.QueryFirst(x => x.UpperOrderNo == inboundOrderAddDTO.UpperOrderNo && !string.IsNullOrEmpty(x.UpperOrderNo)) != null)
-            {
-                return (false, "鍗曟嵁宸插瓨鍦�", inboundOrderAddDTO);
-            }
-            return (true, "鎴愬姛", inboundOrderAddDTO);
-        }
 
         /// <summary>
         /// 鏍规嵁鍏ュ簱鍗曞彿鑾峰彇鍏ュ簱鍗�(鍚槑缁�)
@@ -186,11 +92,11 @@
                 List<int> updateDetailIds = inboundOrderDetails.Select(x => x.Id).ToList();
                 if (inboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) == null && inboundOrder.Details.FirstOrDefault(x => !updateDetailIds.Contains(x.Id) && x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) == null)
                 {
-                    inboundOrder.OrderStatus = InboundStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                    inboundOrder.OrderStatus = InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
                 }
-                else if (inboundOrder.OrderStatus == InboundStatusEmun.鏈紑濮�.ObjToInt())
+                else if (inboundOrder.OrderStatus == InboundStatusEnum.鏈紑濮�.ObjToInt())
                 {
-                    inboundOrder.OrderStatus = InboundStatusEmun.鍏ュ簱涓�.ObjToInt();
+                    inboundOrder.OrderStatus = InboundStatusEnum.鍏ュ簱涓�.ObjToInt();
                 }
 
                 content = MaterielGroupUpdateData(inboundOrder, inboundOrderDetails, stockInfo);
@@ -287,7 +193,7 @@
                 return (false, "鏃犲崟鎹槑缁嗕俊鎭�", materielGroupDTO);
             }
 
-            if (inboundOrder.OrderStatus != InboundStatusEmun.鏈紑濮�.ObjToInt() && inboundOrder.OrderStatus != InboundStatusEmun.鍏ュ簱涓�.ObjToInt())
+            if (inboundOrder.OrderStatus != InboundStatusEnum.鏈紑濮�.ObjToInt() && inboundOrder.OrderStatus != InboundStatusEnum.鍏ュ簱涓�.ObjToInt())
             {
                 return (false, "璇ュ崟鎹笉鍙啀缁勭洏", materielGroupDTO);
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs"
index b256589..74dfe05 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs"
@@ -5,6 +5,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Enums;
 
 namespace WIDESEA_Model.Models
 {
@@ -23,10 +24,10 @@
         [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍖哄煙鍚嶇О")]
         public string AreaName { get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "鍖哄煙绫诲瀷")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍖哄煙绫诲瀷")]
         public int AreaType { get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "鍖哄煙鐘舵��")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍖哄煙鐘舵��")]
         public int AreaStatus { get; set; }
 
         [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鍖哄煙鎻忚堪")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CachePoint.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CachePoint.cs"
index e294ec3..31a5d80 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CachePoint.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_CachePoint.cs"
@@ -20,10 +20,10 @@
         [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "缂撳瓨鐐圭紪鍙�")]
         public string PointCode { get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "缂撳瓨鐐圭姸鎬�")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "缂撳瓨鐐圭姸鎬�")]
         public int PointStatus { get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "缂撳瓨鐐瑰惎鐢ㄧ姸鎬�")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "缂撳瓨鐐瑰惎鐢ㄧ姸鎬�")]
         public int EnableStatus { get; set; }
 
         [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅琛�")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs"
index 0ffb0ab..5538645 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_LocationInfo.cs"
@@ -44,10 +44,10 @@
         [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅绫诲瀷")]
         public int LocationType {  get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅鐘舵��")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "璐т綅鐘舵��")]
         public int LocationStatus {  get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "绂佺敤鐘舵��")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "绂佺敤鐘舵��")]
         public int EnableStatus { get; set; }
 
         [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_RoadwayInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_RoadwayInfo.cs"
index c651a54..e7b91c2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_RoadwayInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_RoadwayInfo.cs"
@@ -20,7 +20,7 @@
         [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱涓婚敭")]
         public int AreaId {  get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "绂佺敤鐘舵��")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "绂佺敤鐘舵��")]
         public int EnableStatus {  get; set; }
 
         [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁惧缂栧彿")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs"
index edceb25..c3adb39 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Warehouse.cs"
@@ -23,7 +23,7 @@
         [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "浠撳簱绫诲瀷")]
         public string WarehouseType { get; set; }
 
-        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱鐘舵��")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "浠撳簱鐘舵��")]
         public int WarehouseStatus { get; set; }
 
         [SugarColumn(IsNullable = true, ColumnDescription = "浠撳簱鎻忚堪")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs"
index ea9724b..fb358b0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs"
@@ -26,18 +26,11 @@
         public string Config { get; set; }
 
         /// <summary>
-        /// 鏁版嵁搴撴湇鍔�
-        /// </summary>
-        [ExporterHeader(DisplayName = "鏁版嵁搴撴湇鍔�")]
-        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏁版嵁搴撴湇鍔�")]
-        public string DBServer { get; set; }
-
-        /// <summary>
         /// Sql璇彞
         /// </summary>
         [ExporterHeader(DisplayName = "Sql璇彞")]
         [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "Sql璇彞")]
-        public string DBSql { get; set; }
+        public string Sql { get; set; }
 
         /// <summary>
         /// 瀛楀吀鍚嶇О
@@ -80,13 +73,6 @@
         [ExporterHeader(DisplayName = "澶囨敞")]
         [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "澶囨敞")]
         public string Remark { get; set; }
-
-        /// <summary>
-        /// 绯荤粺绫诲瀷
-        /// </summary>
-        [ExporterHeader(DisplayName = "绯荤粺绫诲瀷")]
-        [SugarColumn(IsNullable = false, ColumnDescription = "绯荤粺绫诲瀷")]
-        public int SystemType { get; set; }
 
         [ExporterHeader(IsIgnore = true)]
         [Navigate(NavigateType.OneToMany, nameof(DicId),nameof(DicId)), SugarColumn(IsIgnore = true, IsNullable = true)]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs"
similarity index 94%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs"
index bac59b1..1613b04 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs"
@@ -11,7 +11,7 @@
 
 namespace WIDESEA_IOutboundService
 {
-    public class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
+    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
     {
         public IOutStockLockInfoRepository Repository => BaseDal;
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderDetailService.cs"
new file mode 100644
index 0000000..d7ef4d1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderDetailService.cs"
@@ -0,0 +1,48 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+using WIDESEA_StockRepository;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IOutboundOrderDetailRepository>, IOutboundOrderDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        private readonly IStockService _stockService;
+        private readonly IBasicService _basicService;
+        private readonly IRecordService _recordService;
+        private readonly IOutboundRepository _outboundRepository;
+        private readonly IOutStockLockInfoService _outStockLockInfoService;
+
+        public IOutboundOrderDetailRepository Repository => BaseDal;
+
+        public OutboundOrderDetailService(IOutboundOrderDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IStockService stockService, IBasicService basicService,  IRecordService recordService, IOutboundRepository outboundRepository, IOutStockLockInfoService outStockLockInfoService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _stockService = stockService;
+            _basicService = basicService;
+            _recordService = recordService;
+            _outboundRepository = outboundRepository;
+            _outStockLockInfoService = outStockLockInfoService;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs"
similarity index 96%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs"
index 9e96bee..b5ce69c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs"
@@ -21,7 +21,7 @@
 
 namespace WIDESEA_OutboundService
 {
-    public class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
+    public partial class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
     {
         private readonly IMapper _mapper;
         private readonly IMaterielInfoService _materielInfoService;
@@ -86,7 +86,7 @@
                 #endregion
 
                 Dt_OutboundOrder outboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO);
-                outboundOrder.OrderStatus = InboundStatusEmun.鏈紑濮�.ObjToInt();
+                outboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt();
                 bool a = BaseDal.Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                 content = WebResponseContent.Instance.OK();
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs"
new file mode 100644
index 0000000..a8e3dfc
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
+    {
+        
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderDetailService.cs"
similarity index 93%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderDetailService.cs"
index 8f1a8d3..945fcd4 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderDetailService.cs"
@@ -23,28 +23,8 @@
 
 namespace WIDESEA_OutboundService
 {
-    public class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IOutboundOrderDetailRepository>, IOutboundOrderDetailService
+    public partial class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IOutboundOrderDetailRepository>, IOutboundOrderDetailService
     {
-        private readonly IUnitOfWorkManage _unitOfWorkManage;
-
-        private readonly IStockService _stockService;
-        private readonly IBasicService _basicService;
-        private readonly IRecordService _recordService;
-        private readonly IOutboundRepository _outboundRepository;
-        private readonly IOutStockLockInfoService _outStockLockInfoService;
-
-        public IOutboundOrderDetailRepository Repository => BaseDal;
-
-        public OutboundOrderDetailService(IOutboundOrderDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IStockService stockService, IBasicService basicService,  IRecordService recordService, IOutboundRepository outboundRepository, IOutStockLockInfoService outStockLockInfoService) : base(BaseDal)
-        {
-            _unitOfWorkManage = unitOfWorkManage;
-            _stockService = stockService;
-            _basicService = basicService;
-            _recordService = recordService;
-            _outboundRepository = outboundRepository;
-            _outStockLockInfoService = outStockLockInfoService;
-        }
-        //
         public WebResponseContent LockOutboundStock(int orderDetailId)
         {
             Dt_OutboundOrderDetail outboundOrderDetail = BaseDal.QueryFirst(x => x.Id == orderDetailId);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderService.cs"
new file mode 100644
index 0000000..8b50922
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutboundOrderService.cs"
@@ -0,0 +1,27 @@
+锘縰sing AutoMapper;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_IBasicService;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public partial class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordSetvice.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordSetvice.cs"
new file mode 100644
index 0000000..8aaa86a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordSetvice.cs"
@@ -0,0 +1,25 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Seed;
+using WIDESEA_IRecordRepository;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_RecordService
+{
+    public partial class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
+    {
+        public LocationStatusChangeRecordSetvice(ILocationStatusChangeRecordRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public ILocationStatusChangeRecordRepository Repository => BaseDal;
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/StockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/StockQuantityChangeRecordService.cs"
new file mode 100644
index 0000000..6a686b7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/StockQuantityChangeRecordService.cs"
@@ -0,0 +1,27 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IRecordRepository;
+using WIDESEA_IRecordService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_RecordService
+{
+    public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService
+    {
+        private readonly IMapper _mapper;
+        public StockQuantityChangeRecordService(IStockQuantityChangeRecordRepository BaseDal, IMapper mapper) : base(BaseDal)
+        {
+            _mapper = mapper;
+        }
+
+        public IStockQuantityChangeRecordRepository Repository => BaseDal;
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordSetvice.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordSetvice.cs"
similarity index 85%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordSetvice.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordSetvice.cs"
index a1d34b9..2655e77 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordSetvice.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordSetvice.cs"
@@ -13,14 +13,8 @@
 
 namespace WIDESEA_RecordService
 {
-    public class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
+    public partial class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
     {
-        public LocationStatusChangeRecordSetvice(ILocationStatusChangeRecordRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public ILocationStatusChangeRecordRepository Repository => BaseDal;
-
         public void AddLocationStatusChangeRecord(Dt_LocationInfo locationInfo, int lastStatus, int changeType, string? orderNo, int? taskNum)
         {
             Dt_LocationStatusChangeRecord locationStatusChangeRecord = new Dt_LocationStatusChangeRecord()
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs"
similarity index 79%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs"
index 8201fa2..4cad19b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/StockQuantityChangeRecordService.cs"
@@ -13,16 +13,8 @@
 
 namespace WIDESEA_RecordService
 {
-    public class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService
+    public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService
     {
-        private readonly IMapper _mapper;
-        public StockQuantityChangeRecordService(IStockQuantityChangeRecordRepository BaseDal, IMapper mapper) : base(BaseDal)
-        {
-            _mapper = mapper;
-        }
-
-        public IStockQuantityChangeRecordRepository Repository => BaseDal;
-
         public void AddStockChangeRecord(Dt_StockInfo stockInfo, List<Dt_StockInfoDetail> stockInfoDetails, decimal beforeQuantity, decimal totalQuantity, StockChangeType changeType)
         {
             List<Dt_StockQuantityChangeRecord> stockQuantityChangeRecords = new List<Dt_StockQuantityChangeRecord>();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs"
index d49d154..adef8e2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockRepository/StockInfoRepository.cs"
@@ -99,7 +99,7 @@
         {
             //ISugarQueryable<string> locationCodes = Db.Queryable<Dt_LocationInfo>().Where(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (x.EnalbeStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || LocationEnalbeStatusEnum.Normal.ObjToInt() == x.EnalbeStatus)).Select(x => x.LocationCode);
 
-            return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (v.EnableStatus == LocationEnalbeStatusEnum.OnlyOut.ObjToInt() || LocationEnalbeStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First();
+            return Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt() && SqlFunc.Subqueryable<Dt_LocationInfo>().Where(v => v.LocationCode == x.LocationCode && v.RoadwayNo == roadwayNo && v.LocationStatus == LocationStatusEnum.Pallet.ObjToInt() && (v.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || EnableStatusEnum.Normal.ObjToInt() == v.EnableStatus)).Any()).OrderBy(x => x.ModifyDate).First();
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoDetailService.cs"
new file mode 100644
index 0000000..555e3a5
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoDetailService.cs"
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IStockInfoDetailRepository>, IStockInfoDetailService
+    {
+        public StockInfoDetailService(IStockInfoDetailRepository BaseDal) : base(BaseDal)
+        {
+        }
+
+        public IStockInfoDetailRepository Repository => BaseDal;
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoService.cs"
new file mode 100644
index 0000000..241afde
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoService.cs"
@@ -0,0 +1,42 @@
+锘縰sing AutoMapper;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IRecordRepository;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockInfoService : ServiceBase<Dt_StockInfo, IStockInfoRepository>, IStockInfoService
+    {
+        private readonly IMapper _mapper;
+
+        private readonly IBasicRepository _basicRepository;
+        private readonly IStockRepository _stockRepository;
+        private readonly IRecordService _recordService;
+
+        public IStockInfoRepository Repository => BaseDal;
+
+        public StockInfoService(IStockInfoRepository BaseDal, IMapper mapper, IBasicRepository basicRepository, IStockRepository stockRepository,IRecordService recordService) : base(BaseDal)
+        {
+            _mapper = mapper;
+            _basicRepository = basicRepository;
+            _stockRepository = stockRepository;
+            _recordService = recordService;
+        }
+
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
similarity index 98%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
index 01fc23f..fff5b33 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
@@ -22,7 +22,7 @@
 
 namespace WIDESEA_StockService
 {
-    public class StockViewService : IStockViewService
+    public partial class StockViewService : IStockViewService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly SqlSugarClient _dbBase;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoDetailService.cs"
similarity index 67%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoDetailService.cs"
index cb432c4..666b495 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoDetailService.cs"
@@ -10,14 +10,8 @@
 
 namespace WIDESEA_StockService
 {
-    public class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IStockInfoDetailRepository>, IStockInfoDetailService
+    public partial class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IStockInfoDetailRepository>, IStockInfoDetailService
     {
-        public StockInfoDetailService(IStockInfoDetailRepository BaseDal) : base(BaseDal)
-        {
-        }
-
-        public IStockInfoDetailRepository Repository => BaseDal;
-
         public bool ExistSerialNumber(string SerialNumber)
         {
             return BaseDal.QueryFirst(x => x.SerialNumber == SerialNumber) != null;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs"
similarity index 92%
rename from "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
rename to "\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs"
index ca20254..7372c41 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs"
@@ -20,24 +20,8 @@
 
 namespace WIDESEA_StockService
 {
-    public class StockInfoService : ServiceBase<Dt_StockInfo, IStockInfoRepository>, IStockInfoService
+    public partial class StockInfoService : ServiceBase<Dt_StockInfo, IStockInfoRepository>, IStockInfoService
     {
-        private readonly IMapper _mapper;
-
-        private readonly IBasicRepository _basicRepository;
-        private readonly IStockRepository _stockRepository;
-        private readonly IRecordService _recordService;
-
-        public IStockInfoRepository Repository => BaseDal;
-
-        public StockInfoService(IStockInfoRepository BaseDal, IMapper mapper, IBasicRepository basicRepository, IStockRepository stockRepository,IRecordService recordService) : base(BaseDal)
-        {
-            _mapper = mapper;
-            _basicRepository = basicRepository;
-            _stockRepository = stockRepository;
-            _recordService = recordService;
-        }
-
         public Dt_StockInfo? GetStockByPalletCode(string palletCode)
         {
             Dt_StockInfo stockInfo = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockViewService.cs"
new file mode 100644
index 0000000..f2fb085
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockViewService.cs"
@@ -0,0 +1,28 @@
+锘�
+using Microsoft.AspNetCore.Http;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Dynamic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StockService
+{
+    public partial class StockViewService : IStockViewService
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_DictionaryRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_DictionaryRepository.cs"
index dd04635..a235134 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_DictionaryRepository.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemRepository/Sys_DictionaryRepository.cs"
@@ -13,8 +13,11 @@
 {
     public class Sys_DictionaryRepository : RepositoryBase<Sys_Dictionary>, ISys_DictionaryRepository
     {
+        
+
         public Sys_DictionaryRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
         {
+            
         }
 
         /// <summary>
@@ -25,14 +28,14 @@
         /// <returns></returns>
         public IEnumerable<Sys_Dictionary> GetDictionaries(IEnumerable<string> dicNos, bool executeSql = true)
         {
-            List<Sys_Dictionary> Dictionaries = GetAllDictionary();
+            List<Sys_Dictionary> Dictionaries = GetDictionaries(dicNos.ToList());
 
-            foreach (var item in Dictionaries.Where(x => dicNos.Contains(x.DicNo)))
+            foreach (var item in Dictionaries)
             {
                 if (executeSql)
                 {
                     //  2020.05.01澧炲姞鏍规嵁鐢ㄦ埛淇℃伅鍔犺浇瀛楀吀鏁版嵁婧恠ql
-                    string sql = item.DBSql;
+                    string sql = item.Sql;
                     if (!string.IsNullOrEmpty(sql))
                     {
                         item.DicList = Query(sql);
@@ -49,8 +52,8 @@
             {
                 return base.QueryDynamicDataBySql(sql, null).Select(s => new Sys_DictionaryList()
                 {
-                    DicName = s.Value,
-                    DicValue = s.Key.ToString()
+                    DicName = s.value,
+                    DicValue = s.key.ToString()
                 }).ToList();
             }
             catch (Exception ex)
@@ -59,6 +62,13 @@
             }
         }
 
+        private List<Sys_Dictionary> GetDictionaries(List<string> dicNos)
+        {
+            //base.QueryData().ToList();
+            List<Sys_Dictionary> _dictionaries = Db.Queryable<Sys_Dictionary>().Where(x => x.Enable == 1 && dicNos.Contains(x.DicNo)).Includes(x => x.DicList).ToList();
+            return _dictionaries;
+        }
+
         private List<Sys_Dictionary> GetAllDictionary()
         {
             //base.QueryData().ToList();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
index 7ee22e0..eabf102 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs"
@@ -1,4 +1,5 @@
 锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -6,8 +7,10 @@
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Caches;
 using WIDESEA_Core.DB;
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
@@ -21,63 +24,114 @@
     public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
-        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        private readonly ICacheService _cacheService;
+
+        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
+            _cacheService = cacheService;
         }
 
         public ISys_DictionaryRepository Repository => BaseDal;
 
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            Sys_Dictionary dictionary = saveModel.MainData.DicToModel<Sys_Dictionary>();
+            _cacheService.Remove(dictionary.DicNo);
+            return base.AddData(saveModel);
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            Sys_Dictionary dictionary = saveModel.MainData.DicToModel<Sys_Dictionary>();
+            _cacheService.Remove(dictionary.DicNo);
+            return base.UpdateData(saveModel);
+        }
+
         public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos)
         {
             if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>();
+            List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>();
 
-            var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new
+            List<string> cacheDicNos = new List<string>();
+            foreach (string n in dicNos)
             {
-                dicNo = s.DicNo,
-                config = s.Config,
-                dbSql = s.DBSql,
-                list = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
-            }).ToList();
-
-            object GetSourceData(string dicNo, string dbSql, object data)
-            {
-                if (string.IsNullOrEmpty(dbSql))
+                string str = _cacheService.Get(n);
+                if (!string.IsNullOrEmpty(str))
                 {
-                    return data;
+                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+                    if (vueDictionary != null)
+                    {
+                        vueDictionaryDTOs.Add(vueDictionary);
+                        cacheDicNos.Add(n);
+                    }
                 }
-                return BaseDal.QueryObjectDataBySql(dbSql, null);
             }
-            List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO
+            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
             {
-                DicNo = item.dicNo,
-                Config = item.config,
-                Data = GetSourceData(item.dicNo, item.dbSql, item.list)
-            }).ToList();
+                List<VueDictionaryDTO> selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x))).Select(s => new VueDictionaryDTO
+                {
+                    DicNo = s.DicNo,
+                    Config = s.Config,
+                    //dbSql = s.Sql,
+                    Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
+                }).ToList();
+
+                foreach (var item in selectDics)
+                {
+                    if (!_cacheService.Exists(item.DicNo))
+                    {
+                        _cacheService.Add(item.DicNo, item.Serialize());
+                    }
+                }
+                vueDictionaryDTOs.AddRange(selectDics);
+            }
+
+            //object GetSourceData(string dicNo, string dbSql, object data)
+            //{
+            //    if (string.IsNullOrEmpty(dbSql))
+            //    {
+            //        return data;
+            //    }
+            //    return BaseDal.QueryObjectDataBySql(dbSql, null);
+            //}
+            //List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO
+            //{
+            //    DicNo = item.dicNo,
+            //    Config = item.config,
+            //    Data = GetSourceData(item.dicNo, item.dbSql, item.list)
+            //}).ToList();
 
             try
             {
                 List<string> dicList = dicNos.ToList();
-
-                string str = AppSettings.Configuration["dics"];
-                if (!string.IsNullOrEmpty(str))
+                if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
                 {
-                    List<string> cusDics = new List<string>();
-
-                    List<string> dics = str.Split(",").ToList();
-
-                    foreach (var item in dics)
+                    string str = AppSettings.Configuration["dics"];
+                    if (!string.IsNullOrEmpty(str))
                     {
-                        dicList.Remove(item);
-                        cusDics.Add(item);
-                    }
+                        List<string> cusDics = new List<string>();
 
-                    foreach (var item in cusDics)
-                    {
-                        VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim());
-                        if (vueDictionaryDTO != null)
+                        List<string> dics = str.Split(",").ToList();
+
+                        foreach (var item in dics)
                         {
-                            vueDictionaryDTOs.Add(vueDictionaryDTO);
+                            dicList.Remove(item);
+                            cusDics.Add(item);
+                        }
+
+                        foreach (var item in cusDics)
+                        {
+                            VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim());
+                            if (vueDictionaryDTO != null)
+                            {
+                                vueDictionaryDTOs.Add(vueDictionaryDTO);
+                                if (!_cacheService.Exists(item))
+                                {
+                                    _cacheService.Add(item, vueDictionaryDTO.Serialize());
+                                }
+                            }
                         }
                     }
                 }
@@ -99,12 +153,36 @@
                     case "inboundState":
                         {
                             List<object> data = new List<object>();
-                            Type type = typeof(InboundStatusEmun);
-                            List<int> enums = Enum.GetValues(typeof(InboundStatusEmun)).Cast<int>().ToList();
+                            Type type = typeof(InboundStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(InboundStatusEnum)).Cast<int>().ToList();
                             int index = 0;
                             foreach (var item in enums)
                             {
-                                FieldInfo? fieldInfo = typeof(InboundStatusEmun).GetField(((InboundStatusEmun)item).ToString());
+                                FieldInfo? fieldInfo = typeof(InboundStatusEnum).GetField(((InboundStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "outboundStatusEnum":
+                        {
+                            List<object> data = new List<object>();
+                            Type type = typeof(OutboundStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(OutboundStatusEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(OutboundStatusEnum).GetField(((OutboundStatusEnum)item).ToString());
                                 DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                 if (description != null)
                                 {
@@ -174,6 +252,33 @@
                             result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                         }
                         break;
+                    case "orderDetailStatusEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(OrderDetailStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(OrderDetailStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(OrderDetailStatusEnum).GetField(((OrderDetailStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
                     case "createType":
                         {
                             List<object> data = new List<object>();
@@ -201,6 +306,232 @@
                             result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                         }
                         break;
+                    case "enableEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(EnableEnum);
+                                List<int> enums = Enum.GetValues(typeof(EnableEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(EnableEnum).GetField(((EnableEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "enableStatusEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(EnableStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(EnableStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(EnableStatusEnum).GetField(((EnableStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "locationStatusEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(LocationStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(LocationStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(LocationStatusEnum).GetField(((LocationStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "locationTypeEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(LocationTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(LocationTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(LocationTypeEnum).GetField(((LocationTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "taskTypeEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(TaskTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskTypeEnum).GetField(((TaskTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "taskStatusEnum":
+                        {
+                            List<object> data = new List<object>();
+
+                            {
+                                Type type = typeof(InTaskStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(InTaskStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(InTaskStatusEnum).GetField(((InTaskStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            {
+                                Type type = typeof(OutTaskStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(OutTaskStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(OutTaskStatusEnum).GetField(((OutTaskStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            {
+                                Type type = typeof(AGVTaskStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(AGVTaskStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(AGVTaskStatusEnum).GetField(((AGVTaskStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "stockStatusEmun":
+                        {
+                            List<object> data = new List<object>();
+                            Type type = typeof(StockStatusEmun);
+                            List<int> enums = Enum.GetValues(typeof(StockStatusEmun)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(StockStatusEmun).GetField(((StockStatusEmun)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
                 }
                 return result;
             }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
index ce2892d..11f2d94 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
@@ -20,13 +20,15 @@
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly ICacheService _cacheService;
+        private readonly ISys_MenuService _menuService;
 
         public ISys_UserRepository Repository => BaseDal;
 
-        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(repository)
+        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService) : base(repository)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _cacheService = cacheService;
+            _menuService = menuService;
         }
 
         public WebResponseContent Login(LoginInfo loginInfo)
@@ -52,6 +54,16 @@
                 UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password);
                 if (user != null)
                 {
+                    object obj = _menuService.GetMenuActionList(user.RoleId);
+                    if (obj is not IEnumerable<object> list)
+                    {
+                        return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+                    }
+                    if (!list.Any())
+                    {
+                        return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+                    }
+
                     string token = JwtHelper.IssueJwt(new TokenModelJwt()
                     {
                         UserId = user.UserId,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/AreaInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/AreaInfoController.cs"
index ff6f607..8ac6eb5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/AreaInfoController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/AreaInfoController.cs"
@@ -2,6 +2,7 @@
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Swashbuckle.AspNetCore.Annotations;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.Helper;
@@ -16,18 +17,32 @@
     [ApiController]
     public class AreaInfoController : ApiBaseController<IAreaInfoService, Dt_AreaInfo>
     {
-        private readonly IBasicService _basicService;
-        public AreaInfoController(IAreaInfoService service,IBasicService basicService) : base(service)
+        public AreaInfoController(IAreaInfoService service) : base(service)
         {
-            _basicService = basicService;
         }
 
-        [HttpPost, Route("GetAllLocationGroups"), AllowAnonymous]
-        
-        public List<LocationGroupDTO> GetAllLocationGroups(string roadway)
+        [HttpPost, Route("AreaEnableStatus")]
+        public WebResponseContent AreaEnableStatus([FromBody] int[] keys)
         {
-            List<LocationGroupDTO> locations = _basicService.LocationInfoService.Repository.GetAllLocationGroups(roadway);
-            return locations;
+            return Service.AreaEnableStatus(keys);
+        }
+
+        [HttpPost, Route("AreaDisableStatus")]
+        public WebResponseContent AreaDisableStatus([FromBody] int[] keys)
+        {
+            return Service.AreaDisableStatus(keys);
+        }
+
+        [HttpGet(), Route("AreaEnableStatus")]
+        public WebResponseContent AreaEnableStatus(int key)
+        {
+            return Service.AreaEnableStatus(key);
+        }
+
+        [HttpGet, Route("AreaDisableStatus")]
+        public WebResponseContent AreaDisableStatus(int key)
+        {
+            return Service.AreaDisableStatus(key);
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
index ef4b831..62e3463 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs"
@@ -1,34 +1,41 @@
-锘縰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_DTO.Inbound;
 using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
 using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_WMSServer.Controllers
 {
     [Route("api/PDA")]
-    [ApiController]
-    public class PDAController : ApiBaseController<ITaskService, Dt_Task>
+    [Authorize, ApiController]
+    public class PDAController : Controller
     {
         private readonly IInboundService _inboundService;
-        public PDAController(ITaskService service, IInboundService inboundService) : base(service)
+        private readonly IOutboundService _outboundService;
+        private readonly ITaskService _taskService;
+
+        public PDAController(ITaskService taskService, IInboundService inboundService,IOutboundService outboundService)
         {
             _inboundService = inboundService;
+            _outboundService = outboundService;
+            _taskService = taskService;
         }
 
         [HttpPost, Route("CallMateriel")]
         public WebResponseContent CallMateriel(string endPoint)
         {
-            return Service.CallMateriel(endPoint);
+            return _taskService.CallMateriel(endPoint);
         }
 
         [HttpPost, Route("MaterielCarry")]
         public WebResponseContent MaterielCarry(string startPoint)
         {
-            return Service.MaterielCarry(startPoint);
+            return _taskService.MaterielCarry(startPoint);
         }
 
         [HttpPost, Route("MaterielGroup")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs"
index a0b5e6e..bbd9d96 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockViewController.cs"
@@ -1,5 +1,8 @@
-锘縰sing Microsoft.AspNetCore.Http;
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
 using WIDESEA_DTO.Stock;
 using WIDESEA_IStockService;
@@ -8,13 +11,25 @@
 namespace WIDESEA_WMSServer.Controllers.Stock
 {
     [Route("api/StockView")]
-    [ApiController]
-    public class StockViewController : ApiBaseController<IStockViewService, StockViewDTO>
+    [Authorize, ApiController]
+    public class StockViewController : Controller
     {
-        public StockViewController(IStockViewService service) : base(service)
+        private readonly IStockViewService _stockViewService;
+        public StockViewController(IStockViewService stockViewService) 
         {
+            _stockViewService = stockViewService;
         }
 
-        
+        [HttpPost, Route("GetPageData")]
+        public PageGridData<StockViewDTO> GetPageData([FromBody] PageDataOptions options)
+        {
+            return _stockViewService.GetPageData(options);
+        }
+
+        [HttpPost, Route("GetDetailPage")]
+        public object GetDetailPage([FromBody] PageDataOptions pageData)
+        {
+            return _stockViewService.GetDetailPage(pageData);
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index 44530ed..80e6a5f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -40,7 +40,7 @@
 builder.Services.AddAllOptionRegister();//读取配置文件
 builder.Services.AddMemoryCacheSetup();//缓存
 builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
-builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
+//builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
 builder.Services.AddDbSetup();//Db 启动服务
 
 builder.Services.AddAutoMapperSetup();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
index 75d6696..06d31cb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -6,7 +6,7 @@
       "Microsoft.AspNetCore": "Warning"
     }
   },
-  "dics": "inOrderType,outOrderType,inboundState,createType",
+  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun",
   "AllowedHosts": "*",
   "ConnectionStringsEncryption": false,
   "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue

--
Gitblit v1.9.3