From d9c99e0480b4910cdb134778dd5c314b35ec4cf2 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 29 九月 2025 10:05:23 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs                                                 |    3 
 项目代码/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue                                                  |  101 ++--
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/全局异常错误日志_1740314366.log                                     |   66 +++
 项目代码/WMS/WIDESEA_WMSClient/src/api/http.js                                                                   |    3 
 项目代码/WMS/WIDESEA_WMSClient/src/views/Home.vue                                                                |    9 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs                                |    4 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs                             |   14 
 项目代码/WCS/WIDESEAWCS_Client/src/views/basicinfo/shuttleCar.vue                                                |  138 ++++++
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2                                           |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bb4bd2d-5325-42d4-9412-8b5426ce7c08.vsidx |    0 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json                                                |    1 
 项目代码/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue                                                       |    9 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs                                      |   97 +++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSResponseContent.cs                                         |   27 +
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/083d80b6-6142-49d0-9814-0a7c82c0f686.vsidx |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/views/stock/inventoryBatch.vue                                                |   39 +
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/831db718-fb9f-4c9b-8563-04ac4c3b022f.vsidx |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/views/stock/inventoryInfo.vue                                                 |    3 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ShuttleCarController.cs                   |   33 +
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a7345d61-066f-4e75-a7f7-8fcdc4fbf0f2.vsidx |    0 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7ab71a2-03ba-4f1b-bdd4-1b7dd081c6de.vsidx |    0 
 项目代码/WMS/WIDESEA_WMSClient/src/views/Login.vue                                                               |   87 ++-
 项目资料/ERP数据库字段对应表/其它入库单(vwICBill_7).xls                                                                       |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs                                          |   19 
 项目代码/WMS/WIDESEA_WMSClient/src/extension/stock/inventoryBatch.js                                             |  124 +++--
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs                              |    7 
 项目代码/芜湖三一PDA/common/config.js                                                                                |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSSaveModel.cs                                               |   25 +
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StackerCraneEnum/WriteStatus.cs                                 |    5 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs                                     |   31 
 项目资料/ERP数据库字段对应表/ERP数据库.txt                                                                                  |    5 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c8d108fb-29d8-4013-a466-1db3d088147c.vsidx |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin                                            |    0 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs                                   |    4 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/LargeScreenController.cs                  |   34 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs                                 |   49 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                          |    1 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user            |    2 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3e1f62ff-b3b1-4560-a052-1caf9df98fcb.vsidx |    0 
 项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/dc52eb13-6b38-4915-8a73-0df70bfff17e.vsidx |    0 
 项目资料/ERP数据库字段对应表/生产任务单.xls                                                                                   |    0 
 项目代码/WCS/WIDESEAWCS_Client/src/extension/basicinfo/shuttleCar.js                                             |   80 +++
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs                           |    4 
 项目代码/WCS/WIDESEAWCS_Client/src/router/viewGird.js                                                            |    4 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs                              |    4 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/403bc1fd-51c3-4707-95b1-f77406d3c475.vsidx |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                            |  159 ++++--
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs                         |    9 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs                  |    2 
 项目资料/问题处理.docx                                                                                               |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                      |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/WCSInterfaceController.cs                 |    1 
 项目资料/ERP数据库字段对应表/产品入库单.xls                                                                                   |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/InventoryBatchService.cs                                     |   17 
 /dev/null                                                                                                    |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                                |    1 
 项目资料/ERP数据库字段对应表/其他出库单(vwICBill_16).xls                                                                      |    0 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ShuttleCar/ShuttleCarService.cs                                        |   33 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user            |    2 
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs             |    4 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/LargeScreen/BoundOrderDTO.cs                                          |    4 
 项目资料/ERP数据库字段对应表/存货表(ICInventory).xls                                                                        |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a5d755d-461e-4be6-a227-8a2294d2bac2.vsidx |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo                                                    |    0 
 64 files changed, 989 insertions(+), 279 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/shuttleCar.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/shuttleCar.js"
new file mode 100644
index 0000000..fe0cb41
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/extension/basicinfo/shuttleCar.js"
@@ -0,0 +1,80 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridBody from './extend/routerview.vue';
+import gridHeader from './extend/addrouters.vue';
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: gridHeader,
+      gridBody: gridBody,
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+        this.pagination.order = "asc" ;
+        var viewButton = this.buttons.find((x) => x.value == "ViewAllRouter");
+        if (viewButton) {
+            viewButton.onClick = ()=>{
+                this.$refs.gridBody.open();
+            }
+        }
+
+        var addRoutersButton = this.buttons.find((x) => x.value == "AddRouters");
+        if (addRoutersButton) {
+          addRoutersButton.onClick = ()=>{
+                this.$refs.gridHeader.open();
+            }
+        }
+      },
+      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)
+        this.editFormOptions.forEach(x => {
+          x.forEach(option => {
+            if (option.field == 'shuttleCarName') {
+              option.readonly = true
+            }
+          })
+        })
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/router/viewGird.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/router/viewGird.js"
index 50701ce..31dc072 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/router/viewGird.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/router/viewGird.js"
@@ -61,6 +61,10 @@
     path: '/router',
     name: 'router',
     component: () => import('@/views/basicinfo/router.vue')
+  },{
+    path: '/shuttleCar',
+    name: 'shuttleCar',
+    component: () => import('@/views/basicinfo/shuttleCar.vue')
   }]
 
 export default viewgird
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/shuttleCar.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/shuttleCar.vue"
new file mode 100644
index 0000000..dbfbcbd
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/basicinfo/shuttleCar.vue"
@@ -0,0 +1,138 @@
+
+<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/basicinfo/shuttleCar.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "shuttleCarId",
+      footer: "Foots",
+      cnName: "璺敱閰嶇疆淇℃伅",
+      name: "ShuttleCar",
+      url: "/ShuttleCar/",
+      sortName: "shuttleCarCode",
+    });
+    const editFormFields = ref({
+      shuttleCarPosition: "",
+      shuttleCarCode: "",
+      shuttleCarName: "",
+      shuttleCarPosition1: "",
+    });
+    const editFormOptions = ref([
+      [
+        {
+          title: "绌挎杞﹀悕绉�",
+          required: true,
+          field: "shuttleCarName",
+          type: "string",
+        },
+      ],
+      [
+        {
+          title: "绌挎杞︿綅缃�",
+          required: true,
+          field: "shuttleCarPosition",
+          type: "string",
+        },
+      ],
+    ]);
+    const searchFormFields = ref({});
+    const searchFormOptions = ref([]);
+    const columns = ref([
+      {
+        field: "shuttleCarId",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "shuttleCarCode",
+        title: "绌挎杞︾紪鍙�",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "shuttleCarName",
+        title: "绌挎杞﹀悕绉�",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "shuttleCarPosition",
+        title: "绌挎杞︿綅缃�",
+        type: "string",
+        width: 180,
+        align: "left",
+      },
+      {
+        field: "shuttleCarPosition1",
+        title: "绌挎杞︿綅缃�1",
+        type: "string",
+        hidden: true,
+        width: 180,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓鑰�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "modifier",
+        title: "淇敼浜�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "modifyDate",
+        title: "淇敼鏃堕棿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+    ]);
+    const detail = ref({
+      cnName: "",
+      table: "",
+      columns: [],
+      sortName: "",
+      key: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/6ea0bf73-5cf4-48f6-b2e8-d74929ded030.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/831db718-fb9f-4c9b-8563-04ac4c3b022f.vsidx"
similarity index 95%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/6ea0bf73-5cf4-48f6-b2e8-d74929ded030.vsidx"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/831db718-fb9f-4c9b-8563-04ac4c3b022f.vsidx"
index f825a6f..5cfc145 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/6ea0bf73-5cf4-48f6-b2e8-d74929ded030.vsidx"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/831db718-fb9f-4c9b-8563-04ac4c3b022f.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a7345d61-066f-4e75-a7f7-8fcdc4fbf0f2.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a7345d61-066f-4e75-a7f7-8fcdc4fbf0f2.vsidx"
new file mode 100644
index 0000000..176aa63
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/a7345d61-066f-4e75-a7f7-8fcdc4fbf0f2.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx"
deleted file mode 100644
index 1ed89ba..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8217153-c75b-4b3f-a8c2-cd54835606ff.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c8d108fb-29d8-4013-a466-1db3d088147c.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c8d108fb-29d8-4013-a466-1db3d088147c.vsidx"
new file mode 100644
index 0000000..b27ab2d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c8d108fb-29d8-4013-a466-1db3d088147c.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/dc52eb13-6b38-4915-8a73-0df70bfff17e.vsidx"
similarity index 90%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/dc52eb13-6b38-4915-8a73-0df70bfff17e.vsidx"
index 4ad355b..03784e0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/bbb10841-85aa-418a-a91c-a3229de6a4b9.vsidx"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/dc52eb13-6b38-4915-8a73-0df70bfff17e.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7ab71a2-03ba-4f1b-bdd4-1b7dd081c6de.vsidx"
similarity index 72%
rename from "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx"
rename to "\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7ab71a2-03ba-4f1b-bdd4-1b7dd081c6de.vsidx"
index c6d4fb3..75a7346 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f27e7358-a337-44d8-8d18-bca47d5723ed.vsidx"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7ab71a2-03ba-4f1b-bdd4-1b7dd081c6de.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx"
deleted file mode 100644
index e1b4d16..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/ff6f6cdf-00f0-40e5-8759-0ada18529bb0.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StackerCraneEnum/WriteStatus.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StackerCraneEnum/WriteStatus.cs"
index ebe3d4d..96862a6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StackerCraneEnum/WriteStatus.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/StackerCraneEnum/WriteStatus.cs"
@@ -22,5 +22,10 @@
         /// </summary>
         [Description("鍏佽")]
         Permit,
+        /// <summary>
+        /// 鎴愬姛
+        /// </summary>
+        [Description("鎴愬姛")]
+        Success
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ShuttleCarController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ShuttleCarController.cs"
new file mode 100644
index 0000000..5009599
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/ShuttleCarController.cs"
@@ -0,0 +1,33 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.DataProtection.KeyManagement;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using Quartz.Util;
+using SqlSugar;
+using System.ComponentModel;
+using System.Reflection;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.BasicInfo;
+using WIDESEAWCS_IShuttleCar;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+
+namespace WIDESEAWCS_Server.Controllers.BasicInfo
+{
+    [Route("api/ShuttleCar")]
+    [ApiController]
+    public class ShuttleCarController : ApiBaseController<IShuttleCarService, Dt_ShuttleCar>
+    {
+        public ShuttleCarController(IShuttleCarService service) : base(service)
+        {
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs"
index 39359a8..bbd1637 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Interface/LargeScreenController.cs"
@@ -172,7 +172,7 @@
                                         {
                                             DeviceName = item.DeviceName,
                                             DeviceCode = childDeviceCode,
-                                            DeviceStatus = Device.inRead == 1 ? "鍙啓" : "涓嶅彲鍐�",
+                                            DeviceStatus = "姝e父",// Device.inRead == 1 ? "鍙啓" : "涓嶅彲鍐�",
                                             DeviceMachine = GetMachine(Device.Status),
                                             TaskID = Device.TaskNum,
                                             Err_Status = GetSpec(Device.Spec)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index fb1b489..0f1134f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -31,7 +31,12 @@
             return Service.ModifyBarcode(taskDTO);
         }
 
-
+        /// <summary>
+        /// 浜哄伐鎿嶄綔浠诲姟
+        /// </summary>
+        /// <param name="TaskId"></param>
+        /// <param name="TaskType"></param>
+        /// <returns></returns>
         [HttpPost, Route("ManualTask"), AllowAnonymous]
         public WebResponseContent ManualTask(int TaskId, int TaskType)
         {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user"
index 1249827..164764f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml.user"
@@ -6,7 +6,7 @@
 <Project>
   <PropertyGroup>
     <_PublishTargetUrl>E:\IISText\鑺滄箹涓変竴\WCS</_PublishTargetUrl>
-    <History>True|2025-07-07T01:47:14.5536194Z;True|2025-07-04T09:01:52.1304268+08:00;True|2025-06-30T18:01:52.8637969+08:00;True|2025-06-30T17:01:56.3064177+08:00;True|2025-06-30T16:38:12.1057130+08:00;True|2025-06-28T14:30:49.7946659+08:00;True|2025-06-28T10:55:58.8222554+08:00;True|2025-06-28T08:47:43.7229176+08:00;True|2025-06-26T12:37:56.3484297+08:00;True|2025-06-23T11:05:39.8485399+08:00;True|2025-06-23T10:17:43.5808008+08:00;True|2025-06-23T09:54:40.9326213+08:00;True|2025-06-23T09:37:35.0797885+08:00;True|2025-06-20T10:31:11.5116619+08:00;True|2025-06-19T17:43:29.0660951+08:00;True|2025-06-19T15:33:15.5169520+08:00;True|2025-06-17T15:08:30.3988621+08:00;True|2025-06-17T11:49:45.7757057+08:00;False|2025-06-17T11:46:12.2872897+08:00;True|2025-06-17T11:14:34.8780060+08:00;True|2025-06-17T10:58:01.4890300+08:00;True|2025-05-20T11:49:19.9344988+08:00;True|2025-05-19T16:43:32.2157734+08:00;True|2025-05-19T16:12:01.9378787+08:00;True|2025-05-15T16:58:47.2930537+08:00;True|2025-05-15T13:17:15.3596644+08:00;True|2025-05-15T13:11:17.2616075+08:00;True|2025-05-15T12:57:49.7942020+08:00;True|2025-05-15T12:38:37.7925022+08:00;True|2025-05-15T12:28:15.6975809+08:00;True|2025-05-15T11:44:00.9991686+08:00;True|2025-05-15T10:37:45.5900920+08:00;True|2025-05-14T11:31:54.9438366+08:00;True|2025-05-14T09:59:15.2570833+08:00;True|2025-05-14T09:57:55.8054307+08:00;True|2025-05-14T09:39:18.3194886+08:00;True|2025-05-13T17:13:53.4476748+08:00;True|2025-05-13T15:21:11.2441407+08:00;True|2025-05-13T10:39:40.0223843+08:00;True|2025-05-09T11:16:41.1746344+08:00;True|2025-04-27T19:58:33.9706872+08:00;True|2025-04-27T14:52:52.9853720+08:00;True|2025-04-21T17:54:03.6534614+08:00;True|2025-04-19T10:28:25.0898569+08:00;True|2025-04-17T14:04:50.3243452+08:00;True|2025-03-27T16:23:43.2657011+08:00;True|2025-03-25T12:01:47.0052741+08:00;True|2025-02-14T17:36:18.5767695+08:00;True|2025-02-14T14:39:49.5856199+08:00;</History>
+    <History>True|2025-08-22T03:21:45.7413104Z;True|2025-08-15T08:30:13.2395643+08:00;True|2025-08-15T08:25:51.8312481+08:00;True|2025-08-15T00:47:30.6781852+08:00;True|2025-08-07T17:07:22.1687277+08:00;True|2025-07-15T17:34:29.8297232+08:00;True|2025-07-10T09:58:14.0263582+08:00;True|2025-07-10T09:43:37.0135140+08:00;True|2025-07-07T09:47:14.5536194+08:00;True|2025-07-04T09:01:52.1304268+08:00;True|2025-06-30T18:01:52.8637969+08:00;True|2025-06-30T17:01:56.3064177+08:00;True|2025-06-30T16:38:12.1057130+08:00;True|2025-06-28T14:30:49.7946659+08:00;True|2025-06-28T10:55:58.8222554+08:00;True|2025-06-28T08:47:43.7229176+08:00;True|2025-06-26T12:37:56.3484297+08:00;True|2025-06-23T11:05:39.8485399+08:00;True|2025-06-23T10:17:43.5808008+08:00;True|2025-06-23T09:54:40.9326213+08:00;True|2025-06-23T09:37:35.0797885+08:00;True|2025-06-20T10:31:11.5116619+08:00;True|2025-06-19T17:43:29.0660951+08:00;True|2025-06-19T15:33:15.5169520+08:00;True|2025-06-17T15:08:30.3988621+08:00;True|2025-06-17T11:49:45.7757057+08:00;False|2025-06-17T11:46:12.2872897+08:00;True|2025-06-17T11:14:34.8780060+08:00;True|2025-06-17T10:58:01.4890300+08:00;True|2025-05-20T11:49:19.9344988+08:00;True|2025-05-19T16:43:32.2157734+08:00;True|2025-05-19T16:12:01.9378787+08:00;True|2025-05-15T16:58:47.2930537+08:00;True|2025-05-15T13:17:15.3596644+08:00;True|2025-05-15T13:11:17.2616075+08:00;True|2025-05-15T12:57:49.7942020+08:00;True|2025-05-15T12:38:37.7925022+08:00;True|2025-05-15T12:28:15.6975809+08:00;True|2025-05-15T11:44:00.9991686+08:00;True|2025-05-15T10:37:45.5900920+08:00;True|2025-05-14T11:31:54.9438366+08:00;True|2025-05-14T09:59:15.2570833+08:00;True|2025-05-14T09:57:55.8054307+08:00;True|2025-05-14T09:39:18.3194886+08:00;True|2025-05-13T17:13:53.4476748+08:00;True|2025-05-13T15:21:11.2441407+08:00;True|2025-05-13T10:39:40.0223843+08:00;True|2025-05-09T11:16:41.1746344+08:00;True|2025-04-27T19:58:33.9706872+08:00;True|2025-04-27T14:52:52.9853720+08:00;True|2025-04-21T17:54:03.6534614+08:00;True|2025-04-19T10:28:25.0898569+08:00;True|2025-04-17T14:04:50.3243452+08:00;True|2025-03-27T16:23:43.2657011+08:00;True|2025-03-25T12:01:47.0052741+08:00;True|2025-02-14T17:36:18.5767695+08:00;True|2025-02-14T14:39:49.5856199+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
index 5bbb324..7042b8d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
@@ -14,6 +14,7 @@
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
   "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_WHSY;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "WMSConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_WHSY;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
   "Cors": {
     "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ShuttleCar/ShuttleCarService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ShuttleCar/ShuttleCarService.cs"
index 7644c78..54ac555 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ShuttleCar/ShuttleCarService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_ShuttleCar/ShuttleCarService.cs"
@@ -1,7 +1,11 @@
 锘縰sing AutoMapper;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 using SqlSugar;
+using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Const;
+using WIDESEAWCS_Core.DB;
+using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_IShuttleCar;
 using WIDESEAWCS_IShuttleCarInfoRepository;
 using WIDESEAWCS_Model.Models;
@@ -46,5 +50,34 @@
         {
             return BaseDal.QueryFirst(x => x.ShuttleCarCode != ShuttleCarCode);
         }
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            WebResponseContent responseContent = new WebResponseContent().OK();
+            try
+            {
+                Dt_ShuttleCar shuttleCar = BaseDal.QueryFirst(x => x.ShuttleCarId == saveModel.MainData["shuttleCarId"].ObjToInt());
+                var Position = saveModel.MainData["shuttleCarPosition"].ToString();
+                if (BaseDal.QueryData(x => x.ShuttleCarPosition == Position && x.ShuttleCarId != shuttleCar.ShuttleCarId).Any())
+                    throw new Exception($"浣嶇疆銆恵Position}銆戝凡瀛樺湪绌挎杞�");
+                SqlSugarClient WMSsugarClient = new SqlSugarClient(new ConnectionConfig
+                {
+                    ConfigId = MainDb.CurrentDbConnId,
+                    ConnectionString = AppSettings.Get("WMSConnectionString").DecryptDES(AppSecret.DB),
+                    IsAutoCloseConnection = true,
+                    DbType = DbType.SqlServer,
+                });
+
+                var getLocation = WMSsugarClient.Queryable("Dt_LocationInfo", "x").Where("LocationCode", "=", Position).Any();
+                if (!getLocation) throw new Exception($"鏈壘鍒颁綅缃�恵Position}銆�");
+                shuttleCar.ShuttleCarPosition = Position;
+                shuttleCar.ShuttleCarPosition1 = Position;
+                BaseDal.UpdateData(shuttleCar);
+            }
+            catch (Exception ex)
+            {
+                responseContent.Error(ex.Message);
+            }
+            return responseContent;
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs"
index 10adbed..5869a27 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_Manual.cs"
@@ -160,9 +160,9 @@
                 }
                 else if (TaskOutboundTypes.Contains(task.TaskType))
                 {
-                    if (task.TaskState < TaskOutStatusEnum.SC_OutFinish.ObjToInt())
+                    if (task.TaskState < TaskOutStatusEnum.OutFinish.ObjToInt())
                     {
-                        task.TaskState = TaskOutStatusEnum.SC_OutFinish.ObjToInt();
+                        task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
                         ToWMSCompletedTask(task);
                     }
                     AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs"
index f0d1a2c..91a8f67 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs"
@@ -484,10 +484,12 @@
             {
                 case (int)TaskInboundTypeEnum.Inbound:
                 case (int)TaskInboundTypeEnum.PalletInbound:
+                case (int)TaskInboundTypeEnum.InQuality:
                     taskType = ShuttleCarTaskType.In;
                     break;
                 case (int)TaskOutboundTypeEnum.Outbound:
                 case (int)TaskOutboundTypeEnum.PalletOutbound:
+                case (int)TaskOutboundTypeEnum.OutQuality:
                     taskType = ShuttleCarTaskType.Out;
                     break;
                 case (int)TaskOtherTypeEnum.RelocationCar:
@@ -510,10 +512,12 @@
             {
                 case (int)TaskInboundTypeEnum.Inbound:
                 case (int)TaskInboundTypeEnum.PalletInbound:
+                case (int)TaskInboundTypeEnum.InQuality:
                     state = (int)TaskInStatusEnum.Car_InExecuting;
                     break;
                 case (int)TaskOutboundTypeEnum.Outbound:
                 case (int)TaskOutboundTypeEnum.PalletOutbound:
+                case (int)TaskOutboundTypeEnum.OutQuality:
                     state = (int)TaskOutStatusEnum.Car_OutExecuting;
                     break;
                 case (int)TaskRelocationTypeEnum.Relocation:
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs"
index 18cbfe1..40d59fe 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs"
@@ -40,13 +40,13 @@
         private readonly ITaskService _taskService;
         private readonly ITaskRepository _taskRepository;
         private readonly ITaskHtyService _taskHtyService;
-        private readonly IShuttleCarService _shuttleCarService;
+        private readonly WIDESEAWCS_IShuttleCar.IShuttleCarService _shuttleCarService;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly IRouterService _routerService;
         private readonly ICacheService _cacheService;
         private readonly IMapper _mapper;
 
-        public CommonShuttleCarJob(ITaskService taskService, ITaskRepository taskRepository, ITaskHtyService taskHtyService, IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IMapper mapper)
+        public CommonShuttleCarJob(ITaskService taskService, ITaskRepository taskRepository, ITaskHtyService taskHtyService, WIDESEAWCS_IShuttleCar.IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IMapper mapper)
         {
             _taskService = taskService;
             _taskRepository = taskRepository;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index 1066bcb..f301a7c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -42,10 +42,10 @@
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly ITaskRepository _taskRepository;
         private readonly IRouterService _routerService;
-        private readonly IShuttleCarService _shuttleCarService;
+        private readonly WIDESEAWCS_IShuttleCar.IShuttleCarService _shuttleCarService;
         private readonly ICacheService _cacheService;
 
-        public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IShuttleCarService shuttleCarService, ICacheService cacheService)
+        public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, WIDESEAWCS_IShuttleCar.IShuttleCarService shuttleCarService, ICacheService cacheService)
         {
             _taskService = taskService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -73,7 +73,7 @@
                     #endregion
 
                     #region 浠诲姟瀹屾垚
-                    if (common.CompleteStatus == 2 || common.CompleteStatus == 3 || common.CompleteStatus == 4)
+                    if ((common.CompleteStatus == 2 || common.CompleteStatus == 3 || common.CompleteStatus == 4) && commonStackerCrane.CurrentTaskNum > 0)
                     {
                         var remark = "姝e父瀹屾垚";
                         if (common.CompleteStatus == 2) remark = "鎵嬪姩瀹屾垚";
@@ -87,7 +87,7 @@
                     if (common.Onlinestate == (short)Onlinestate.online)
                     {
                         #region 鏌ヨ浠诲姟,閫昏緫澶勭悊
-                        if (common.RunStatus == (short)RunStatus.Standby)
+                        if (common.RunStatus == (short)RunStatus.Standby && common.WriteStatus == (short)WriteStatus.Permit)
                         {
                             #region 绌挎杞︾Щ杞�/鍏呯數浠诲姟
                             var Task = _taskService.GetTaskState((int)CarChargingTaskEnum.CarCharging_Finish, (int)TaskOtherTypeEnum.RelocationCarCharging) ??
@@ -125,6 +125,7 @@
                 {
                     if (commonStackerCrane.SetValue(StackerCraneDBName.CommandSend, sendFlag))
                     {
+                        WriteDebug($"{commonStackerCrane.DeviceName}鎺ユ敹浠诲姟", $"WCS涓嬪彂浠诲姟,浠诲姟鍙枫�恵task.TaskNum}銆�");
                         if (_taskService.TaskInboundTypes.Contains(task.TaskType) ||
                             _taskService.TaskOutboundTypes.Contains(task.TaskType))
                             commonStackerCrane.LastTaskType = task.TaskType;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js"
index 70a500f..85b460f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/api/http.js"
@@ -221,7 +221,7 @@
             }
         }
     } catch (error) {
-        console.log(error);
+        console.log(111);
         Message.error({
             showClose: true,
             message: responseText,
@@ -282,6 +282,7 @@
     var xhr = createXHR();
     xhr.onreadystatechange = function () {
         if (xhr.status == 403 || xhr.status == 401) {
+            console.log(11)
             redirect(xhr.responseText);
             return;
         }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/stock/inventoryBatch.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/stock/inventoryBatch.js"
index a39e193..5ae00ef 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/stock/inventoryBatch.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/extension/stock/inventoryBatch.js"
@@ -2,57 +2,77 @@
 //姝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() {
+      this.buttons.forEach(x => {
+        if (x.name == "缂� 杈�") {
+          x.name = "瀹� 鏍�";
+        }
+      });
+      let enableBtn = this.buttons.find(x => x.value == 'Update');
+      if (enableBtn) {
+        enableBtn.onClick = function () {
+          let rows = this.$refs.table.getSelected();
+          if (rows.length == 0) return this.$error("璇烽�夋嫨搴撳瓨鎵规淇℃伅!");
+          if (rows.length > 1) return this.$error("涓�娆″彧鍙鎵逛竴涓簱瀛樻壒娆′俊鎭�!");
+          this.edit();
+          // this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+          // let params = {
+          //   MethodName: "LocationEnableStatus",
+          //   Remark: "鍚敤",
+          //   keys: null
+          // }
+          // this.enableStatus(params)
+        }
       }
+    },
+    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/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue"
index cbf4d15..9479fc4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Home.vue"
@@ -35,11 +35,12 @@
                   }}
                 </div>
                 <div>璐т綅鐘舵�侊細{{ getStatusText(col.locationStatus) }}</div>
-                <div>鐗╂枡鍚嶇О锛� {{ col.materielName }}</div>
+                <div>鎵瑰彿锛歿{ col.batchNo }}</div>
                 <div>鐗╂枡缂栧彿锛� {{ col.materielCode }}</div>
-                <div>鎵瑰彿锛歿{ col.orderNo }}</div>
-                <div>鏌滃彿锛歿{ col.batchNo }}</div>
-                <div>鏁伴噺锛歿{ col.quantity }}鎵�</div>
+                <div>鐗╂枡鍚嶇О锛� {{ col.materielName }}</div>
+                <div>鎵樻暟锛歿{ col.quantity }}</div>
+                <div>绠辨暟锛歿{ col.boxQty }}</div>
+                <div>琚嬫暟锛歿{ col.stockQuantity }}</div>
                 <!-- <div>鎵樼洏鍙凤細{{ col.palletCode }}</div> -->
                 <div>鍏ュ簱鏃堕棿锛歿{ col.inDate }}</div>
                 <div>鍚敤鐘舵�侊細{{ getEnableStatusText(col.enalbeStatus) }}</div>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue"
index 500b81e..7d169b5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/Login.vue"
@@ -8,28 +8,50 @@
             <div>娆㈣繋鐧诲綍...</div>
             <div class="login-line"></div>
           </div>
-          <div style="flex:1;"></div>
+          <div style="flex: 1"></div>
         </div>
         <div class="login-text-small">WELCOME TO LOGIN</div>
         <div class="item">
           <div class="input-icon el-icon-user"></div>
-          <input type="text" v-focus v-model="userInfo.userName" placeholder="璇疯緭鍏ヨ处鍙�" />
+          <input
+            type="text"
+            v-focus
+            v-model="userInfo.userName"
+            placeholder="璇疯緭鍏ヨ处鍙�"
+          />
         </div>
         <div class="item">
           <div class="input-icon el-icon-lock"></div>
-          <input type="password" v-focus v-model="userInfo.password" placeholder="璇疯緭鍏ュ瘑鐮�" />
+          <input
+            type="password"
+            v-focus
+            v-model="userInfo.password"
+            placeholder="璇疯緭鍏ュ瘑鐮�"
+          />
         </div>
         <div class="item">
           <div class="input-icon el-icon-mobile"></div>
 
-          <input v-focus type="text" v-model="userInfo.verificationCode" placeholder="杈撳叆楠岃瘉鐮�" />
+          <input
+            v-focus
+            type="text"
+            v-model="userInfo.verificationCode"
+            placeholder="杈撳叆楠岃瘉鐮�"
+          />
           <div class="code" @click="getVierificationCode">
             <img v-show="codeImgSrc != ''" :src="codeImgSrc" />
           </div>
         </div>
       </div>
       <div class="loging-btn">
-        <el-button size="large" :loading="loading" color="#3a6cd1" :dark="true" @click="login" long>
+        <el-button
+          size="large"
+          :loading="loading"
+          color="#3a6cd1"
+          :dark="true"
+          @click="login"
+          long
+        >
           <span v-if="!loading">鐧诲綍</span>
           <span v-else>姝e湪鐧诲綍...</span>
         </el-button>
@@ -84,26 +106,26 @@
   ref,
   reactive,
   toRefs,
-  getCurrentInstance
-} from 'vue';
-import { useRouter, useRoute } from 'vue-router';
-import store from '../store/index';
-import http from '@/../src/api/http.js';
+  getCurrentInstance,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+import store from "../store/index";
+import http from "@/../src/api/http.js";
 export default defineComponent({
   setup(props, context) {
-    store.commit('clearUserInfo', '');
+    store.commit("clearUserInfo", "");
     const loading = ref(false);
-    const codeImgSrc = ref('');
+    const codeImgSrc = ref("");
     const userInfo = reactive({
-      userName: '',
-      password: '',
-      verificationCode: '',
-      UUID: undefined
+      userName: "",
+      password: "",
+      verificationCode: "",
+      UUID: undefined,
     });
 
     const getVierificationCode = () => {
-      http.get('/api/User/getVierificationCode').then((x) => {
-        codeImgSrc.value = 'data:image/png;base64,' + x.img;
+      http.get("/api/User/getVierificationCode").then((x) => {
+        codeImgSrc.value = "data:image/png;base64," + x.img;
         userInfo.UUID = x.uuid;
       });
     };
@@ -114,20 +136,22 @@
     let router = useRouter();
 
     const login = () => {
-      if (!userInfo.userName) return $message.error('璇疯緭鍏ョ敤鎴峰悕');
-      if (!userInfo.password) return $message.error('璇疯緭鍏ュ瘑鐮�');
-      if (!userInfo.verificationCode) return $message.error('璇疯緭鍏ラ獙璇佺爜');
-      if (userInfo.verificationCode!="1234") return $message.error('楠岃瘉鐮佹湁璇�');
+      if (!userInfo.userName) return $message.error("璇疯緭鍏ョ敤鎴峰悕");
+      if (!userInfo.password) return $message.error("璇疯緭鍏ュ瘑鐮�");
+      if (!userInfo.verificationCode) return $message.error("璇疯緭鍏ラ獙璇佺爜");
+      if (userInfo.verificationCode != "1234")
+        return $message.error("楠岃瘉鐮佹湁璇�");
       loading.value = true;
-      http.post('/api/User/login', userInfo, '姝e湪鐧诲綍....').then((result) => {
+      http.post("/api/User/login", userInfo, "姝e湪鐧诲綍....").then((result) => {
         if (!result.status) {
           loading.value = false;
           getVierificationCode();
           return $message.error(result.message);
         }
-        $message.success('鐧诲綍鎴愬姛,姝e湪璺宠浆!');
-        store.commit('setUserInfo', result.data);
-        router.push({ path: '/' });
+        if (result.message != "") $message.error(result.message);
+        $message.success("鐧诲綍鎴愬姛,姝e湪璺宠浆!");
+        store.commit("setUserInfo", result.data);
+        router.push({ path: "/" });
       });
     };
     const loginPress = (e) => {
@@ -136,7 +160,7 @@
       }
     };
     const openUrl = (url) => {
-      window.open(url, '_blank');
+      window.open(url, "_blank");
     };
     return {
       loading,
@@ -145,16 +169,16 @@
       login,
       userInfo,
       loginPress,
-      openUrl
+      openUrl,
     };
   },
   directives: {
     focus: {
       inserted: function (el) {
         el.focus();
-      }
-    }
-  }
+      },
+    },
+  },
 });
 </script>
 <style lang="less" scoped>
@@ -359,7 +383,6 @@
 
 <style lang="less" scoped>
 @media screen and (max-width: 700px) {
-
   .login-bg,
   .account-info,
   .app-link,
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue"
index e9860cd..b16b37f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue"
@@ -33,6 +33,7 @@
       materielDes: "",
       isMixBatch: "",
       isMixMateriel: "",
+      validity: "",
     });
     const editFormOptions = ref([
       [
@@ -54,22 +55,28 @@
           field: "materielName",
           type: "string",
         },
+      ],
+      [
+        // {
+        //   title: "鍏佽娣锋壒",
+        //   field: "isMixBatch",
+        //   type: "string",
+        // },
+        // {
+        //   title: "鍏佽娣锋枡",
+        //   field: "isMixMateriel",
+        //   type: "string",
+        // },
+        {
+          title: "鏈夋晥鏈�",
+          required: true,
+          field: "validity",
+          type: "string",
+        },
         {
           title: "璁¢噺鍗曚綅",
           required: true,
           field: "unit",
-          type: "string",
-        },
-      ],
-      [
-        {
-          title: "鍏佽娣锋壒",
-          field: "isMixBatch",
-          type: "string",
-        },
-        {
-          title: "鍏佽娣锋枡",
-          field: "isMixMateriel",
           type: "string",
         },
         {
@@ -102,13 +109,13 @@
         require: true,
         align: "left",
       },
-      {
-        field: "areaId",
-        title: "鍖哄煙涓婚敭",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
+      // {
+      //   field: "areaId",
+      //   title: "鍖哄煙涓婚敭",
+      //   type: "string",
+      //   width: 90,
+      //   align: "left",
+      // },
       {
         field: "materielCode",
         title: "鐗╂枡缂栧彿",
@@ -130,27 +137,27 @@
         width: 90,
         align: "left",
       },
-      {
-        field: "cotainerType",
-        title: "瀹瑰櫒绫诲瀷",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
-      {
-        field: "packspes",
-        title: "鍖呰瑙勬牸",
-        type: "int",
-        width: 120,
-        align: "left",
-      },
-      {
-        field: "attribute",
-        title: "鐗╂枡灞炴��",
-        type: "string",
-        width: 200,
-        align: "left",
-      },
+      // {
+      //   field: "cotainerType",
+      //   title: "瀹瑰櫒绫诲瀷",
+      //   type: "string",
+      //   width: 90,
+      //   align: "left",
+      // },
+      // {
+      //   field: "packspes",
+      //   title: "鍖呰瑙勬牸",
+      //   type: "int",
+      //   width: 120,
+      //   align: "left",
+      // },
+      // {
+      //   field: "attribute",
+      //   title: "鐗╂枡灞炴��",
+      //   type: "string",
+      //   width: 200,
+      //   align: "left",
+      // },
       {
         field: "unit",
         title: "璁¢噺鍗曚綅",
@@ -165,13 +172,13 @@
         width: 120,
         align: "left",
       },
-      {
-        field: "safetyStock",
-        title: "瀹夊叏搴撳瓨",
-        type: "string",
-        width: 120,
-        align: "left",
-      },
+      // {
+      //   field: "safetyStock",
+      //   title: "瀹夊叏搴撳瓨",
+      //   type: "string",
+      //   width: 120,
+      //   align: "left",
+      // },
       {
         field: "creater",
         title: "鍒涘缓浜�",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryBatch.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryBatch.vue"
index a3c3d37..2033fbc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryBatch.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryBatch.vue"
@@ -27,8 +27,36 @@
       sortName: "id",
     });
     const editFormFields = ref({
+      productStatus: "",
+      certificateNumber: "",
+      materielCode:"",
+      materielName:"",
+      shelfLife:"",
+      boxQuantity:"",
+      outboundQuantity:"",
+      stockQuantity:"",
+      productionDate:"",
+      remark:"",
+      validityPeriod:"",
+      batchNo:""
     });
-    const editFormOptions = ref([]);
+    const editFormOptions = ref([
+      [
+        {
+          title: "浜у搧鐘舵��",
+          field: "productStatus",
+          type: "select",
+          dataKey: "productStatusEmun",
+          data: [],
+        },
+        {
+          title: "鍚堟牸璇佸彿",
+          required: true,
+          field: "certificateNumber",
+          type: "string",
+        },
+      ],
+    ]);
     const searchFormFields = ref({
       deviceCode: "",
       deviceType: "",
@@ -36,13 +64,12 @@
     });
     const searchFormOptions = ref([
       [
-        { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
-        { title: "璐т綅缂栧彿", field: "locationCode", type: "like" },
+        { title: "鎵瑰彿", field: "batchNo", type: "like" },
         {
-          title: "搴撳瓨鐘舵��",
-          field: "stockStatus",
+          title: "浜у搧鐘舵��",
+          field: "productStatus",
           type: "select",
-          dataKey: "stockStatusEmun",
+          dataKey: "productStatusEmun",
           data: [],
         },
       ],
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryInfo.vue"
index 7151187..ab11ba2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/stock/inventoryInfo.vue"
@@ -36,7 +36,10 @@
     });
     const searchFormOptions = ref([
       [
+        { title: "鎵瑰彿", field: "batchNo", type: "like" },
         { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
+      ],
+      [
         { title: "璐т綅缂栧彿", field: "locationCode", type: "like" },
         {
           title: "搴撳瓨鐘舵��",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
index f0c46ab..062969f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue"
@@ -26,8 +26,13 @@
       url: "/Task/",
       sortName: "taskNum",
     });
-    const editFormFields = ref({});
-    const editFormOptions = ref([]);
+    const editFormFields = ref({palletCode:""});
+    const editFormOptions = ref([[{
+          title: "鎵樼洏缂栧彿",
+          required: true,
+          field: "palletCode",
+          type: "string",
+        },]]);
     const searchFormFields = ref({
       taskNum: "",
       palletCode: "",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/083d80b6-6142-49d0-9814-0a7c82c0f686.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/083d80b6-6142-49d0-9814-0a7c82c0f686.vsidx"
new file mode 100644
index 0000000..807a58f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/083d80b6-6142-49d0-9814-0a7c82c0f686.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/21da0554-32f9-4be1-9bc3-100a5891a916.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/21da0554-32f9-4be1-9bc3-100a5891a916.vsidx"
deleted file mode 100644
index 3e48b34..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/21da0554-32f9-4be1-9bc3-100a5891a916.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/30cef92a-8890-45b9-9045-c115bf9d2c3f.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/30cef92a-8890-45b9-9045-c115bf9d2c3f.vsidx"
deleted file mode 100644
index 96269fb..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/30cef92a-8890-45b9-9045-c115bf9d2c3f.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a5d755d-461e-4be6-a227-8a2294d2bac2.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a5d755d-461e-4be6-a227-8a2294d2bac2.vsidx"
new file mode 100644
index 0000000..c054305
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a5d755d-461e-4be6-a227-8a2294d2bac2.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3e1f62ff-b3b1-4560-a052-1caf9df98fcb.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3e1f62ff-b3b1-4560-a052-1caf9df98fcb.vsidx"
new file mode 100644
index 0000000..a8dcc89
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3e1f62ff-b3b1-4560-a052-1caf9df98fcb.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/403bc1fd-51c3-4707-95b1-f77406d3c475.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/403bc1fd-51c3-4707-95b1-f77406d3c475.vsidx"
new file mode 100644
index 0000000..56844a2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/403bc1fd-51c3-4707-95b1-f77406d3c475.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6136ac8b-5359-410d-badd-c473a7136a69.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6136ac8b-5359-410d-badd-c473a7136a69.vsidx"
deleted file mode 100644
index 6d89b3a..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6136ac8b-5359-410d-badd-c473a7136a69.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6706044f-7482-48ec-b0db-3cda90f7ff7f.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6706044f-7482-48ec-b0db-3cda90f7ff7f.vsidx"
deleted file mode 100644
index 7b975c5..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6706044f-7482-48ec-b0db-3cda90f7ff7f.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bb4bd2d-5325-42d4-9412-8b5426ce7c08.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bb4bd2d-5325-42d4-9412-8b5426ce7c08.vsidx"
new file mode 100644
index 0000000..00b5104
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/8bb4bd2d-5325-42d4-9412-8b5426ce7c08.vsidx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9dbc0b34-59bd-40ab-b0b8-4f16dc128c7e.vsidx" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9dbc0b34-59bd-40ab-b0b8-4f16dc128c7e.vsidx"
deleted file mode 100644
index c7ce516..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9dbc0b34-59bd-40ab-b0b8-4f16dc128c7e.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2"
index ae30f00..d57405a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo"
index bcfb5c7..802c26d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin"
index 6c59087..46f2409 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
index fdc62ac..01f7441 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
@@ -23,33 +23,52 @@
         /// 
         /// </summary>
         private readonly RequestDelegate _next;
+        private readonly ILogger<ApiLogMiddleware> _logger;
 
         public ApiLogMiddleware(RequestDelegate next, ILogger<ApiLogMiddleware> logger)
         {
             _next = next;
+            _logger = logger;
         }
 
         //todo
         public async Task InvokeAsync(HttpContext context)
         {
-            if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
-            {
-                context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt();
-                context.Response.ContentType = "application/json";
+            //if (App.ExpDateTime != null)
+            //{
+            //    if ((DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
+            //    {
+            //        await ReturnExpiredResponse(context, "绯荤粺宸茶繃鏈燂紝璇疯仈绯荤鐞嗗憳");
+            //        return;
+            //    }
+            //    //var Hours = (App.ExpDateTime.GetValueOrDefault() - DateTime.Now).TotalHours;
+            //    //if (Hours < 72)
+            //    //{
+            //    //    // 璁板綍璀﹀憡鏃ュ織
+            //    //    _logger.LogWarning($"绯荤粺鍗冲皢鍒版湡锛屽墿浣欐椂闂达細{Hours:F2}灏忔椂锛屽埌鏈熸椂闂达細{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}");
 
-                var json = new WebResponseContent();
+            //    //    // 鍦ㄥ搷搴斿ご涓坊鍔犲埌鏈熸彁绀�
+            //    //    context.Response.Headers.Add("X-Expiration-Warning",
+            //    //        $"绯荤粺灏嗗湪 {Hours:F2} 灏忔椂鍚庡埌鏈� ({App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss})");
 
-                json.Message = HttpStatusCode.InternalServerError.ToString();//閿欒淇℃伅
-                json.Code = 500;//500寮傚父 
+            //    //    // 濡傛灉闇�瑕佺洿鎺ヨ繑鍥炴彁绀轰俊鎭紝鍙栨秷涓嬮潰鐨勬敞閲�
+            //    //    await ReturnExpirationWarningResponse(context, Hours);
+            //    //    return;
+            //    //}
 
-                StreamWriter streamWriter = new StreamWriter(context.Response.Body);
-                await streamWriter.WriteAsync(json.Serialize());
-                return;
-            }
+            //}
 
             // 杩囨护锛屽彧鏈夋帴鍙�
             if (context.Request.Path.Value?.Contains("api") ?? false)
             {
+                if (App.ExpDateTime != null)
+                {
+                    if ((DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0 && !context.Request.Path.Value.Contains("getVierificationCode") && context.Request.Path.Value != "/api/User/login")
+                    {
+                        await ReturnExpiredResponse(context, "绯荤粺宸茶繃鏈燂紝璇疯仈绯荤鐞嗗憳");
+                        return;
+                    }
+                }
                 context.Request.EnableBuffering();
                 Stream originalBody = context.Response.Body;
                 string requestParam = string.Empty;
@@ -78,7 +97,7 @@
 
                     ms.Position = 0;
                     await ms.CopyToAsync(originalBody);
-                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true))
+                    if (!ShouldSkipLogging(context.Request.Path.Value))
                         Logger.Add(requestParam, responseParam);
                 }
                 catch (Exception ex)
@@ -97,6 +116,60 @@
             }
         }
 
+        /// <summary>
+        /// 杩斿洖杩囨湡鍝嶅簲
+        /// </summary>
+        private async Task ReturnExpiredResponse(HttpContext context, string message)
+        {
+            context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
+            context.Response.ContentType = "application/json; charset=utf-8";
+            context.Response.Headers.ContentType= "application/json; charset=utf-8";
+            var json = new WebResponseContent
+            {
+                Message = message,
+                Code = 500
+            };
+
+            var jsonString = JsonConvert.SerializeObject(json);
+            await context.Response.WriteAsync(jsonString);
+        }
+        /// <summary>
+        /// 杩斿洖鍒版湡璀﹀憡鍝嶅簲锛堝彲閫夛級
+        /// </summary>
+        private async Task ReturnExpirationWarningResponse(HttpContext context, double hoursRemaining)
+        {
+            context.Response.StatusCode = (int)HttpStatusCode.OK;
+            context.Response.ContentType = "application/json";
+
+            var expirationDate = App.ExpDateTime.GetValueOrDefault();
+            var response = new
+            {
+                Code = 200,
+                Message = "绯荤粺鍗冲皢鍒版湡璀﹀憡",
+                Data = new
+                {
+                    HoursRemaining = hoursRemaining,
+                    ExpirationDate = expirationDate,
+                    FormattedMessage = $"绯荤粺灏嗗湪 {Math.Ceiling(hoursRemaining)} 灏忔椂鍚庡埌鏈燂紝鍒版湡鏃堕棿锛歿expirationDate:yyyy-MM-dd HH:mm:ss}銆傝鑱旂郴绠$悊鍛樼画鏈熴��"
+                },
+                Warning = true
+            };
+
+            var jsonString = JsonConvert.SerializeObject(response);
+            await context.Response.WriteAsync(jsonString);
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁璺宠繃鏃ュ織璁板綍
+        /// </summary>
+        private bool ShouldSkipLogging(string path)
+        {
+            if (string.IsNullOrEmpty(path)) return false;
+
+            var skipKeywords = new[] { "get", "Get", "query", "Query", "DownLoadApp", "downLoadApp", "UploadApp", "uploadApp" };
+            return skipKeywords.Any(keyword => path.Contains(keyword, StringComparison.OrdinalIgnoreCase));
+        }
+
         private string RequestDataLog(HttpContext context)
         {
             var request = context.Request;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/LargeScreen/BoundOrderDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/LargeScreen/BoundOrderDTO.cs"
index 660a40d..67c1975 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/LargeScreen/BoundOrderDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/LargeScreen/BoundOrderDTO.cs"
@@ -9,9 +9,9 @@
     public class BoundOrderDTO
     {
         /// <summary>
-        /// 鍗曟嵁缂栧彿
+        /// 鏁伴噺
         /// </summary>
-        public string OrderNo {  get; set; }
+        public decimal Quantity {  get; set; }
         /// <summary>
         /// 鍗曟嵁绫诲瀷
         /// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs"
index b86f4ae..45b52ff 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs"
@@ -106,7 +106,8 @@
 
         public string MaterielName { get; set; }
 
-        public string OrderNo { get; set; }
+        public int BoxQty { get; set; }
+        public int StockQuantity { get; set; }
 
         public string BatchNo { get; set; }
     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSResponseContent.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSResponseContent.cs"
new file mode 100644
index 0000000..da65d0a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSResponseContent.cs"
@@ -0,0 +1,27 @@
+锘�
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WIDESEA_Common
+{
+    public class WMSResponseContent
+    {
+        /// <summary>
+        /// false:澶辫触锛宼rue:鎴愬姛
+        /// </summary>
+        public bool success { get; set; }
+        /// <summary>
+        /// 200鎴愬姛鍚﹀垯澶辫触
+        /// </summary>
+        public int code { get; set; }
+        /// <summary>
+        /// 杩斿洖娑堟伅
+        /// </summary>
+        public string msg { get; set; }
+        /// <summary>
+        /// 鏁版嵁
+        /// </summary>
+        public object data { get; set; }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSSaveModel.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSSaveModel.cs"
new file mode 100644
index 0000000..1bf057b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCSInfo/WMSSaveModel.cs"
@@ -0,0 +1,25 @@
+锘�
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WIDESEA_Common
+{
+    public class WMSSaveModel
+    {
+        public string serverCode { get; set; } = "C0135";
+
+        //public Params @params { get; set; }
+        public Params Params { get; set; }
+
+    }
+    public class Params
+    {
+        /// <summary>
+        /// 鍏ュ簱鑾峰彇鏍囩锛欸ET_SN_INFO_TWO_BY_WCS<br></br>
+        /// 缁撴灉鍙嶉锛欰UTOMATIC_PICKING_POSTING<br></br>
+        /// 鑾峰彇鐗╂枡淇℃伅锛欸ET_MATERIAL_INFO_TWO_BY_WCS
+        /// </summary>
+        public string apiMethod { get; set; }
+        public object data { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
index 87872b0..0f4a1d5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -22,6 +22,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs"
index 7bf6601..46d7f53 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs"
@@ -140,8 +140,8 @@
                 List<Dt_InboundOrderDetail> orderDetails = new List<Dt_InboundOrderDetail>();
                 foreach (var item in inboundOrders)
                 {
-                    if (item.Details.Where(x => x.ReceiptQuantity != x.OverInQuantity).Any())
-                        throw new Exception("瀛樺湪鏈叆搴撳畬鎴愭墭鐩�");
+                    //if (item.Details.Where(x => x.ReceiptQuantity != x.OverInQuantity).Any())
+                    //    throw new Exception("瀛樺湪鏈叆搴撳畬鎴愭墭鐩�");
                     orderDetails.AddRange(item.Details);
                     item.Details = null;
                 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs"
index 2eef9c2..25c2f16 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs"
@@ -102,8 +102,8 @@
                 List<Dt_OutboundOrderDetail> orderDetails = new List<Dt_OutboundOrderDetail>();
                 foreach (var item in _OutboundOrders)
                 {
-                    if (item.Details.Where(x => x.LockQuantity != x.OverOutQuantity).Any())
-                        throw new Exception("瀛樺湪鏈嚭搴撳畬鎴愭墭鐩�");
+                    //if (item.Details.Where(x => x.LockQuantity != x.OverOutQuantity).Any())
+                    //    throw new Exception("瀛樺湪鏈嚭搴撳畬鎴愭墭鐩�");
                     orderDetails.AddRange(item.Details);
                     item.Details = null;
                 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
index ab79b7d..3501b4d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
@@ -177,8 +177,11 @@
                 ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
                 List<Dt_LocationInfo> dt_LocationInfos = sugarQueryable.ToList();
 
-                ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)).Includes(x => x.Details);
-                List<Dt_StockInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList();
+                //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)).Includes(x => x.Details);
+                //List<Dt_StockInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList();
+
+                ISugarQueryable<Dt_InventoryInfo> sugarQueryable1 = _dbBase.Queryable<Dt_InventoryInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode));
+                List<Dt_InventoryInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList();
                 foreach (var dt_LocationInfo in dt_LocationInfos)
                 {
                     LocationStockView locationStockView = new LocationStockView()
@@ -195,22 +198,24 @@
                         RoadwayNo = dt_LocationInfo.RoadwayNo,
                         Row = dt_LocationInfo.Row
                     };
-                    List<Dt_StockInfo> dt_StockInfos = StockInfos.Where(x => x.LocationCode == dt_LocationInfo.LocationCode).ToList();
-                    List<Dt_StockInfoDetail> Details = new List<Dt_StockInfoDetail>();
-                    foreach (var item in dt_StockInfos)
-                    {
-                        Details.AddRange(item.Details);
-                    }
-                    var BatchNo = string.Join(",", Details.GroupBy(x => x.BatchNo).Select(x => x.Key).ToList());
+                    List<Dt_InventoryInfo> dt_StockInfos = StockInfos.Where(x => x.LocationCode == dt_LocationInfo.LocationCode).ToList();
+                    //List<Dt_StockInfoDetail> Details = new List<Dt_StockInfoDetail>();
+                    //foreach (var item in dt_StockInfos)
+                    //{
+                    //    Details.AddRange(item.Details);
+                    //}
+                    //var BatchNo = string.Join(",", Details.GroupBy(x => x.BatchNo).Select(x => x.Key).ToList());
                     if (dt_StockInfos.Count > 0 && dt_StockInfos != null)
                     {
-                        locationStockView.BatchNo = BatchNo;
+                        locationStockView.BatchNo = dt_StockInfos.First().BatchNo;
                         locationStockView.InDate = dt_StockInfos.OrderByDescending(x => x.InDate).First().InDate;
-                        locationStockView.MaterielCode = dt_StockInfos.First().Details.First().MaterielCode;
-                        locationStockView.MaterielName = dt_StockInfos.First().Details.First().MaterielName;
-                        locationStockView.OrderNo = dt_StockInfos.First().Details.First().OrderNo;
+                        locationStockView.MaterielCode = dt_StockInfos.First().MaterielCode;
+                        locationStockView.MaterielName = dt_StockInfos.First().MaterielName;
+                        //locationStockView.OrderNo = dt_StockInfos.First().OrderNo;
                         locationStockView.PalletCode = string.Join(",", dt_StockInfos.Select(x => x.PalletCode).ToList());
                         locationStockView.Quantity = dt_StockInfos.Count;
+                        locationStockView.BoxQty = dt_StockInfos.Select(x => x.BoxQuantity).Sum();
+                        locationStockView.StockQuantity = dt_StockInfos.Select(x => x.StockQuantity).Sum();
                     }
                     locationStockViews.Add(locationStockView);
                 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/InventoryBatchService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/InventoryBatchService.cs"
index 1674d5d..a347878 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/InventoryBatchService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/InventoryBatchService.cs"
@@ -24,15 +24,30 @@
     {
         private readonly IMapper _mapper;
         public IInventoryBatchRepository Repository => BaseDal;
+        public IInventoryInfoRepository _inventoryInfoRepository;
 
-        public InventoryBatchService(IInventoryBatchRepository BaseDal, IMapper mapper) : base(BaseDal)
+        public InventoryBatchService(IInventoryBatchRepository BaseDal, IInventoryInfoRepository inventoryInfoRepository, IMapper mapper) : base(BaseDal)
         {
             _mapper = mapper;
+            _inventoryInfoRepository = inventoryInfoRepository;
         }
         public List<Dt_Inventory_Batch> GetInventoryBatch(string materielCode)
         {
             List<Dt_Inventory_Batch> dt_Inventories = BaseDal.QueryData(x => x.MaterielCode == materielCode);
             return dt_Inventories;
         }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            var productStatus = saveModel.MainData["productStatus"].ObjToInt();
+            var batchNo = saveModel.MainData["batchNo"].ToString();
+            List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoRepository.QueryData(x => x.BatchNo == batchNo);
+            inventoryInfos.ForEach(x =>
+            {
+                x.ProductStatus = productStatus;
+            });
+            _inventoryInfoRepository.UpdateData(inventoryInfos);
+            return base.UpdateData(saveModel);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
index b96a532..337a8c8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_UserService.cs"
@@ -41,8 +41,21 @@
             try
             {
                 //BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);
-
                 string msg = string.Empty;
+                if (App.ExpDateTime != null)
+                {
+                    if ((DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
+                        return WebResponseContent.Instance.Error("鎺堟潈宸插埌鏈燂紝璇疯仈绯荤鐞嗗憳");
+                    var span = App.ExpDateTime.GetValueOrDefault() - DateTime.Now;
+                    var Days = span.TotalDays;
+                    var Hours = span.TotalHours;
+                    var Minutes = span.TotalMinutes;
+                    var Seconds = span.TotalSeconds;
+                    if (Minutes < 1) msg = $"绯荤粺灏嗗湪 {Math.Ceiling(Seconds)} 绉掗挓鍚庡埌鏈燂紝鍒版湡鏃堕棿锛歿App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}銆傝鑱旂郴绠$悊鍛樼画鏈熴��";
+                    else if (Hours < 1) msg = $"绯荤粺灏嗗湪 {Math.Ceiling(Minutes)} 鍒嗛挓鍚庡埌鏈燂紝鍒版湡鏃堕棿锛歿App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}銆傝鑱旂郴绠$悊鍛樼画鏈熴��";
+                    else if (Hours < 72) msg = $"绯荤粺灏嗗湪 {Math.Ceiling(Hours)} 灏忔椂鍚庡埌鏈燂紝鍒版湡鏃堕棿锛歿App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}銆傝鑱旂郴绠$悊鍛樼画鏈熴��";
+                    else if (Days < 7) msg = $"绯荤粺灏嗗湪 {Math.Ceiling(Days)} 澶╁悗鍒版湡锛屽埌鏈熸椂闂达細{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}銆傝鑱旂郴绠$悊鍛樼画鏈熴��";
+                }
 
                 #region 涓存椂浣跨敤
                 try
@@ -78,7 +91,7 @@
 
                     _cacheService.AddOrUpdate(user.UserId.ToString(), token);
 
-                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl });
+                    content = WebResponseContent.Instance.OK(msg, data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl });
                 }
                 else
                 {
@@ -128,7 +141,7 @@
             int RoleId = saveModel.MainData[nameof(Sys_User.Role_Id).FirstLetterToLower()].ObjToInt();
             var user = BaseDal.QueryFirst(x => x.User_Id == userId);
             if (User.User_Id == user.User_Id && User.Role_Id != RoleId) return WebResponseContent.Instance.Error("涓嶅彲淇敼鑷繁鐨勮鑹�");
-            if(User.User_Id != user.User_Id && User.Role_Id >= RoleId) return WebResponseContent.Instance.Error("鏉冮檺绛夌骇涓嶈冻");
+            if (User.User_Id != user.User_Id && User.Role_Id >= RoleId) return WebResponseContent.Instance.Error("鏉冮檺绛夌骇涓嶈冻");
             if (User.Role_Id > user.Role_Id || User.Role_Id == user.Role_Id && User.User_Id != userId) return WebResponseContent.Instance.Error("鏆傛棤淇敼鏉冮檺");
             //if (User.User_Id != userId) return WebResponseContent.Instance.Error("鏆傛棤淇敼鏉冮檺");鍙檺褰撳墠鐢ㄦ埛淇敼
             #endregion
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
index d1ca057..d6653b6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs"
@@ -127,7 +127,7 @@
                 var qty = saveModel.MainData["qty"].ToString();
                 if (string.IsNullOrEmpty(qty)) throw new Exception("琚嬫暟涓嶅彲涓虹┖");
                 var batchNo = saveModel.MainData["batchNo"].ToString();
-                if (string.IsNullOrEmpty(batchNo)) throw new Exception("鏌滃彿涓嶅彲涓虹┖");
+                if (string.IsNullOrEmpty(batchNo)) throw new Exception("鎵瑰彿涓嶅彲涓虹┖");
 
                 #region 鏌ヨ搴撳瓨銆佸叆搴撳崟
                 Dt_InventoryInfo inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
@@ -137,8 +137,27 @@
                 if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < qty.ObjToInt()) throw new Exception($"鎵瑰彿銆恵batchNo}銆戝彲缁勭洏鏁伴噺涓嶈冻");
                 Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.Id == inboundOrderDetail.OrderId);
                 if (inboundOrder == null) throw new Exception($"鏈壘鍒版壒鍙蜂负銆恵batchNo}銆戠殑鍏ュ簱鍗�");
-                Dt_Inventory_Batch inventory_Batch = _inventoryBatchRepository.QueryFirst(x => x.BatchNo == batchNo);
-                if (inventory_Batch == null) throw new Exception($"鏈壘鍒版壒鍙蜂负銆恵batchNo}銆戠殑鎵规淇℃伅");
+                var materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterielCode);
+                if (materielInfo == null) throw new Exception($"鏈壘鍒扮墿鏂欎俊鎭�,鐗╂枡缂栫爜銆恵inboundOrderDetail.MaterielCode}銆�");
+                //Dt_Inventory_Batch inventory_Batch = _inventoryBatchRepository.QueryFirst(x => x.BatchNo == batchNo);
+                //if (inventory_Batch == null && inboundOrder.OrderType == InOrderTypeEnum.Quality.ObjToInt())
+                //    throw new Exception($"鏈壘鍒版壒鍙蜂负銆恵batchNo}銆戠殑鎵规淇℃伅");
+                //bool add = inventory_Batch == null;
+                //if (add)
+                //{
+                var productionDate = DateTime.Now.ToString("yyyy-MM-dd");
+                var validityPeriod = DateTime.Now.AddDays(materielInfo.Validity).ToString("yyyy-MM-dd");//鍔犲ぉ
+                //    inventory_Batch = new Dt_Inventory_Batch()
+                //    {
+                //        BatchNo = inboundOrderDetail.BatchNo,
+                //        MaterielCode = inboundOrderDetail.MaterielCode,
+                //        MaterielName = inboundOrderDetail.MaterielName,
+                //        ProductionDate = productionDate,
+                //        ShelfLife = materielInfo.Validity,
+                //        ValidityPeriod = validityPeriod,
+                //        Creater = "System"
+                //    };
+                //}
                 #endregion
 
                 #region 鍒涘缓浠诲姟
@@ -163,15 +182,15 @@
                 #region 娣诲姞搴撳瓨淇℃伅銆佸鐞嗗叆搴撳崟
                 inventoryInfo = new Dt_InventoryInfo()
                 {
-                    BatchNo = inventory_Batch.BatchNo,
-                    MaterielCode = inventory_Batch.MaterielCode,
-                    MaterielName = inventory_Batch.MaterielName,
+                    BatchNo = inboundOrderDetail.BatchNo,
+                    MaterielCode = inboundOrderDetail.MaterielCode,
+                    MaterielName = inboundOrderDetail.MaterielName,
                     PalletCode = palletCode,
-                    ProductionDate = inventory_Batch.ProductionDate,
+                    ProductionDate = productionDate,
                     StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
                     ProductStatus = dt_Task.TaskType == TaskTypeEnum.InQuality.ObjToInt() ? ProductStatusEmun.寰呮2.ObjToInt() : ProductStatusEmun.寰呮1.ObjToInt(),
-                    ShelfLife = inventory_Batch.ShelfLife,
-                    ValidityPeriod = inventory_Batch.ValidityPeriod,
+                    ShelfLife = materielInfo.Validity,
+                    ValidityPeriod = validityPeriod,
                     StockQuantity = qty.ObjToInt(),
                     BoxQuantity = (qty.ObjToInt() % 8 > 0) ? (qty.ObjToInt() / 8) + 1 : qty.ObjToInt() / 8,
                     Creater = "System"
@@ -179,14 +198,22 @@
                 inboundOrder.OrderStatus = InboundStatusEnum.鍏ュ簱涓�.ObjToInt();
                 inboundOrderDetail.ReceiptQuantity += inventoryInfo.StockQuantity;
                 inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
-                inventory_Batch.ProductStatus = inventoryInfo.ProductStatus;
+                //inventory_Batch.ProductStatus = inventoryInfo.ProductStatus;
                 #endregion
 
                 Db.Ado.BeginTran();
                 _inboundService.InbounOrderService.UpdateData(inboundOrder);
                 _inboundService.InboundOrderDetailService.UpdateData(inboundOrderDetail);
                 _inventoryInfoRepository.AddData(inventoryInfo);
-                _inventoryBatchRepository.UpdateData(inventory_Batch);
+                //if (add)
+                //{
+                //    inventory_Batch.BoxQuantity = inventoryInfo.BoxQuantity;
+                //    inventory_Batch.OutboundQuantity = inventoryInfo.OutboundQuantity;
+                //    inventory_Batch.StockQuantity = inventoryInfo.StockQuantity;
+                //    _inventoryBatchRepository.AddData(inventory_Batch);
+                //}
+                //else
+                //    _inventoryBatchRepository.UpdateData(inventory_Batch);
                 AddData(dt_Task);
                 List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(new List<Dt_Task> { dt_Task });
                 var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>());
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
index 40f37d5..3734081 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
@@ -196,16 +196,25 @@
                 }
                 else
                 {
-                    Dt_InventoryInfo? _InventoryInfo = _stockService.InventoryInfoService.Repository.QueryData(x => x.BatchNo == inventoryInfo.BatchNo && (x.StockStatus == StockStatusEmun.鍏ュ簱涓�.ObjToInt() || x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt())).OrderByDescending(x => x.ModifyDate).FirstOrDefault();
+                    Dt_InventoryInfo? _InventoryInfo = _stockService.InventoryInfoService.Repository.QueryData(x => x.BatchNo == inventoryInfo.BatchNo && x.StockStatus == StockStatusEmun.鍏ュ簱涓�.ObjToInt()).OrderByDescending(x => x.ModifyDate).FirstOrDefault();
 
                     if (_InventoryInfo != null)
                     {
                         locationInfo = _basicService.LocationInfoService.GetLocation(_InventoryInfo.LocationCode);
                         if (locationInfo?.MaxQty <= locationInfo?.CurrentQty) locationInfo = null;
                     }
+                    if (locationInfo == null)
+                    {
+                        _InventoryInfo = _stockService.InventoryInfoService.Repository.QueryData(x => x.BatchNo == inventoryInfo.BatchNo && x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt()).OrderByDescending(x => x.InDate).FirstOrDefault();
+                        if (_InventoryInfo != null)
+                        {
+                            locationInfo = _basicService.LocationInfoService.GetLocation(_InventoryInfo.LocationCode);
+                            if (locationInfo?.MaxQty <= locationInfo?.CurrentQty) locationInfo = null;
+                        }
+                    }
                     if (locationInfo == null)//鍒嗛厤鏂拌揣浣�
                     {
-                        var Qty = Convert.ToInt32(inboundOrderDetail.OrderQuantity - inboundOrderDetail.OverInQuantity);
+                        var Qty = Convert.ToInt32(inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity);
                         var ts = Qty / 320;
                         if (Qty % 320 > 0) ts++;
                         int inboundOrderCount = ts > 12 ? 2 : 1;
@@ -223,6 +232,7 @@
                 task.SourceIsPickPlace = false;
                 inventoryInfo.LocationCode = locationInfo.LocationCode;
                 inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱涓�.ObjToInt();
+                inventoryInfo.ModifyDate = DateTime.Now;
                 locationInfo.CurrentQty++;
                 if (locationInfo.MaxQty < locationInfo.CurrentQty) locationInfo.CurrentQty = locationInfo.MaxQty;
                 inventoryInfo.SerialNumber = locationInfo.CurrentQty;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 29caa7a..d2faf8e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -267,7 +267,7 @@
                     return webResponse.Error($"鎵瑰彿銆恵batchNo}銆戝凡璐ㄦ鍏ュ簱");
                 List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoRepository.QueryData(x => x.BatchNo == batchNo && x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt()).OrderByDescending(x => x.InDate).Take(qty).ToList();
                 if (_InventoryInfos.Count < 1) return webResponse.Error($"鏈壘鍒版壒鍙枫�恵batchNo}銆戠殑搴撳瓨");
-                Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == _InventoryInfos.First().LocationCode);
+                List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => _InventoryInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode));
                 List<Dt_Task> tasks = new List<Dt_Task>();
                 List<Dt_OutStockLockInfo> OutStockLockInfos = new List<Dt_OutStockLockInfo>();
                 #region 鐢熸垚璐ㄦ鍑哄簱鍗�
@@ -289,6 +289,7 @@
                 #endregion
                 foreach (var item in _InventoryInfos)
                 {
+                    var locationInfo = locationInfos.First(x => x.LocationCode == item.LocationCode);
                     orderDetail.MaterielCode = item.MaterielCode;
                     orderDetail.MaterielName = item.MaterielName;
                     orderDetail.OrderQuantity += item.StockQuantity;
@@ -301,10 +302,10 @@
                         Grade = 0,
                         PalletCode = item.PalletCode,
                         SourceIsPickPlace = item.SerialNumber == locationInfo.MaxQty,
-                        NextAddress = "1005",
+                        NextAddress = "1008",
                         Roadway = "SC01",
                         SourceAddress = item.LocationCode,
-                        TargetAddress = "1005",
+                        TargetAddress = "1008",
                         TaskState = OutTaskStatusEnum.OutNew.ObjToInt(),
                         TaskType = TaskTypeEnum.OutQuality.ObjToInt(),
                         TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
@@ -331,7 +332,7 @@
                     OutStockLockInfos.Add(outStockLockInfo);
                     #endregion
                 }
-
+                bool CreateQCIn = AppSettings.app(nameof(CreateQCIn)).ObjToBool();
                 #region 鐢熸垚璐ㄦ鍏ュ簱鍗�
                 Dt_InboundOrderDetail inboundOrderDetail = new Dt_InboundOrderDetail()
                 {
@@ -364,7 +365,7 @@
                 BaseDal.AddData(tasks);
                 _outboundService.OutboundOrderService.Repository.Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
                 _outboundService.OutboundStockLockInfoService.Repository.AddData(OutStockLockInfos);
-                _inboundService.InbounOrderService.Repository.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
+                if (CreateQCIn) _inboundService.InbounOrderService.Repository.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
                 _inventoryInfoRepository.UpdateData(_InventoryInfos);
                 _inventoryBatchRepository.UpdateData(inventory_Batch);
                 #region 涓嬪彂浠诲姟缁橶CS
@@ -394,15 +395,15 @@
                 if (inventoryInfo == null) throw new Exception("鏈壘鍒版墭鐩樹俊鎭�");
                 if (inventoryInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && inventoryInfo.StockStatus != StockStatusEmun.鍏ュ簱纭.ObjToInt() && inventoryInfo.StockStatus != StockStatusEmun.鍏ュ簱涓�.ObjToInt())
                     throw new Exception($"鎵樼洏闈炲叆搴撲腑,涓嶅彲淇敼鏁伴噺");
-                Dt_InboundOrderDetail orderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo);
+                //Dt_InboundOrderDetail orderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo);
                 var StockQty = inventoryInfo.StockQuantity;
                 inventoryInfo.StockQuantity = qty;
                 inventoryInfo.BoxQuantity = qty % 8 > 0 ? qty / 8 + 1 : qty / 8;
-                if (orderDetail != null)
-                {
-                    orderDetail.ReceiptQuantity -= StockQty - qty;
-                    _inboundService.InboundOrderDetailService.Repository.UpdateData(orderDetail);
-                }
+                //if (orderDetail != null)
+                //{
+                //    orderDetail.ReceiptQuantity -= StockQty - qty;
+                //    _inboundService.InboundOrderDetailService.Repository.UpdateData(orderDetail);
+                //}
                 _inventoryInfoRepository.UpdateData(inventoryInfo);
                 return webResponseContent.OK();
             }
@@ -411,7 +412,38 @@
                 return webResponseContent.Error(ex.Message);
             }
         }
-
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            WebResponseContent webResponseContent = new WebResponseContent();
+            try
+            {
+                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.TaskId == saveModel.MainData["taskId"].ObjToInt());
+                string newBarcode = saveModel.MainData["palletCode"].ToString();
+                if (TaskEnumHelper.GetTaskTypeGroup(dt_Task.TaskType) != TaskTypeGroup.InboundGroup)
+                    throw new Exception($"鍙彲淇敼鍏ュ簱浠诲姟,濡傞渶淇敼鍏朵粬浠诲姟绫诲瀷璇疯仈绯荤鐞嗗憳锛�");
+                Dt_InventoryInfo inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == newBarcode);
+                if (inventoryInfo != null) throw new Exception($"鎵樼洏鍙枫�恵newBarcode}銆戝凡瀛樺湪搴撳瓨淇℃伅锛�");
+                inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == dt_Task.PalletCode);
+                if (inventoryInfo == null) throw new Exception($"鎵樼洏鍙枫�恵dt_Task.PalletCode}銆戞湭鎵惧埌搴撳瓨淇℃伅锛�");
+                inventoryInfo.PalletCode = newBarcode;
+                dt_Task.PalletCode = newBarcode;
+                Db.Ado.BeginTran();
+                WMSTaskDTO wMSTaskDTOs = _mapper.Map<WMSTaskDTO>(dt_Task);
+                var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ModifyBarcode, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>());
+                if (ResultData.Result == null) throw new Exception($"WCS鍝嶅簲瓒呮椂");
+                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
+                if (content == null) throw new Exception($"WCS鏃犲搷搴�");
+                if (!content.Status) throw new Exception(content.Message);
+                BaseDal.UpdateData(dt_Task);
+                _inventoryInfoRepository.UpdateData(inventoryInfo);
+                Db.Ado.CommitTran();
+                return webResponseContent.OK();
+            }
+            catch (Exception ex)
+            {
+                return webResponseContent.Error(ex.Message);
+            }
+        }
         public WebResponseContent ModifyBarcode(string barcode, string newBarcode)
         {
             WebResponseContent webResponseContent = new WebResponseContent();
@@ -460,23 +492,36 @@
             {
                 Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == WMStask.TaskNum && x.TaskType == WMStask.TaskType);
                 if (task == null) return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔′俊鎭�");
-                Dt_StockInfo? _StockInfo = _stockService.StockInfoService.GetStockByPalletCode(task.PalletCode);
-                if (_StockInfo != null)
+                Dt_InventoryInfo? inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                if (inventoryInfo != null)
                 {
-                    Dt_StockInfoDetail? detail = _StockInfo.Details.FirstOrDefault();
-                    if (detail != null)
+                    Dt_InboundOrderDetail? inboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo);
+                    if (inboundOrderDetail != null)
                     {
-                        Dt_InboundOrder dt_InboundOrder = _inboundService.InbounOrderService.GetInboundOrder(detail.OrderNo);
-                        Dt_InboundOrderDetail? inboundOrderDetail = dt_InboundOrder.Details.FirstOrDefault(x => x.BatchNo == detail.BatchNo);
-                        if (inboundOrderDetail != null)
-                        {
-                            inboundOrderDetail.ReceiptQuantity--;
-                            _inboundService.InboundOrderDetailService.Repository.UpdateData(inboundOrderDetail);
-                        }
-                        _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(_StockInfo.Details, OperateType.AGV鍒犻櫎);
+                        inboundOrderDetail.ReceiptQuantity--;
+                        _inboundService.InboundOrderDetailService.Repository.UpdateData(inboundOrderDetail);
                     }
-                    _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(_StockInfo, OperateType.AGV鍒犻櫎);
+                    _inventoryInfoRepository.DeleteAndMoveIntoHty(inventoryInfo, OperateType.AGV鍒犻櫎);
                 }
+                #region MyRegion
+                //Dt_StockInfo? _StockInfo = _stockService.StockInfoService.GetStockByPalletCode(task.PalletCode);
+                //if (_StockInfo != null)
+                //{
+                //    Dt_StockInfoDetail? detail = _StockInfo.Details.FirstOrDefault();
+                //    if (detail != null)
+                //    {
+                //        Dt_InboundOrder dt_InboundOrder = _inboundService.InbounOrderService.GetInboundOrder(detail.OrderNo);
+                //        Dt_InboundOrderDetail? inboundOrderDetail = dt_InboundOrder.Details.FirstOrDefault(x => x.BatchNo == detail.BatchNo);
+                //        if (inboundOrderDetail != null)
+                //        {
+                //            inboundOrderDetail.ReceiptQuantity--;
+                //            _inboundService.InboundOrderDetailService.Repository.UpdateData(inboundOrderDetail);
+                //        }
+                //        _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(_StockInfo.Details, OperateType.AGV鍒犻櫎);
+                //    }
+                //    _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(_StockInfo, OperateType.AGV鍒犻櫎);
+                //}
+                #endregion
                 BaseDal.DeleteAndMoveIntoHty(task, /*App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 :*/ OperateType.AGV鍒犻櫎);
             }
             catch (Exception ex)
@@ -681,43 +726,43 @@
             {
                 Db.Ado.BeginTran();
                 Dt_OutStockLockInfo? outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.TaskNum == task.TaskNum && x.PalletCode == task.PalletCode);
-                Dt_OutboundOrder? outboundOrder = null;
-                Dt_OutboundOrderDetail? outboundOrderDetail = null;
+                //Dt_OutboundOrder? outboundOrder = null;
+                //Dt_OutboundOrderDetail? outboundOrderDetail = null;
                 int overCount = 0;
                 if (outStockLockInfo != null)
                 {
-                    outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfo.OrderDetailId);
-                    if (outboundOrderDetail != null)
-                    {
-                        outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outboundOrderDetail.OrderId).Includes(x => x.Details).First();
-                        if (outboundOrder != null)
-                        {
-                            outboundOrderDetail.OverOutQuantity++;
-                            overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count();
-                            if (outboundOrderDetail.OverOutQuantity == outboundOrderDetail.OrderQuantity)
-                            {
-                                var outboundOrderdetail = outboundOrder.Details.First(x => x.Id == outboundOrderDetail.Id);
-                                outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
-                                outboundOrderdetail.OverOutQuantity = outboundOrderDetail.OverOutQuantity;
-                                outboundOrderdetail.OrderDetailStatus = outboundOrderDetail.OrderDetailStatus;
-                                overCount++;
-                            }
-                        }
-                    }
+                    //outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfo.OrderDetailId);
+                    //if (outboundOrderDetail != null)
+                    //{
+                    //    outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outboundOrderDetail.OrderId).Includes(x => x.Details).First();
+                    //    if (outboundOrder != null)
+                    //    {
+                    //        outboundOrderDetail.OverOutQuantity += outStockLockInfo.AssignQuantity;
+                    //        overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count();
+                    //        if (outboundOrderDetail.OverOutQuantity == outboundOrderDetail.OrderQuantity)
+                    //        {
+                    //            var outboundOrderdetail = outboundOrder.Details.First(x => x.Id == outboundOrderDetail.Id);
+                    //            outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
+                    //            outboundOrderdetail.OverOutQuantity = outboundOrderDetail.OverOutQuantity;
+                    //            outboundOrderdetail.OrderDetailStatus = outboundOrderDetail.OrderDetailStatus;
+                    //            overCount++;
+                    //        }
+                    //    }
+                    //}
                     outStockLockInfo.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
                 }
-                if (outboundOrder != null && outboundOrder.Details.Count == overCount)
-                {
-                    outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
-                    _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
-                    outboundOrder.Details = null;
-                    _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
-                }
-                else
-                {
-                    if (outboundOrderDetail != null)
-                        _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetail);
-                }
+                //if (outboundOrder != null && outboundOrder.Details.Count == overCount)
+                //{
+                //    outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+                //    _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
+                //    outboundOrder.Details = null;
+                //    _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
+                //}
+                //else
+                //{
+                //    if (outboundOrderDetail != null)
+                //        _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetail);
+                //}
                 BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
                 if (outStockLockInfo != null) _outboundService.OutboundStockLockInfoService.Repository.UpdateData(outStockLockInfo);
                 Db.Ado.CommitTran();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/LargeScreenController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/LargeScreenController.cs"
index cb1ea08..c5c0602 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/LargeScreenController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/LargeScreenController.cs"
@@ -30,7 +30,8 @@
         private readonly IInboundOrderRepository _inboundOrderRepository;
         private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
         private readonly IOutboundOrderRepository _outboundOrderRepository;
-        public LargeScreenController(ILocationInfoService locationInfoService, ITaskRepository taskRepository, ITask_HtyRepository taskHtyRepository, IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IStockInfoDetailRepository stockInfoDetailRepository)
+        private readonly IInventoryInfoRepository _inventoryInfoRepository;
+        public LargeScreenController(ILocationInfoService locationInfoService, ITaskRepository taskRepository, ITask_HtyRepository taskHtyRepository, IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IStockInfoDetailRepository stockInfoDetailRepository, IInventoryInfoRepository inventoryInfoRepository)
         {
             _locationInfoService = locationInfoService;
             _taskRepository = taskRepository;
@@ -40,14 +41,16 @@
             _outboundOrderDetailRepository = outboundOrderDetailRepository;
             _outboundOrderRepository = outboundOrderRepository;
             _stockInfoDetailRepository = stockInfoDetailRepository;
+            _inventoryInfoRepository = inventoryInfoRepository;
         }
         [HttpPost, Route("GetStockInfos")]
         public WebResponseContent GetStockInfos()
         {
             WebResponseContent webResponseContent = new WebResponseContent();
-            List<Dt_StockInfoDetail> _StockInfoDetails = _stockInfoDetailRepository.QueryData(x => x.Status == StockStatusEmun.宸插叆搴�.ObjToInt());
+            //List<Dt_StockInfoDetail> _StockInfoDetails = _stockInfoDetailRepository.QueryData(x => x.Status == StockStatusEmun.宸插叆搴�.ObjToInt());
             List<StockInfo> stocks = new List<StockInfo>();
-            foreach (var item in _StockInfoDetails.GroupBy(x => x.MaterielCode))
+            List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt());
+            foreach (var item in inventoryInfos.GroupBy(x => x.MaterielCode))
             {
                 StockInfo stockInfo = new StockInfo()
                 {
@@ -90,7 +93,7 @@
                         Dt_InboundOrder _InboundOrder = inboundOrders.Where(x => x.Id == item.OrderId).First();
                         BoundOrderDTO boundOrderDTO = new BoundOrderDTO()
                         {
-                            OrderNo = _InboundOrder.OrderNo,
+                            Quantity = item.ReceiptQuantity,
                             BatchNo = item.BatchNo,
                             MaterielCode = item.MaterielCode,
                             MaterielName = item.MaterielName,
@@ -111,7 +114,7 @@
                         Dt_OutboundOrder _OutboundOrder = outboundOrders.Where(x => x.Id == item.OrderId).First();
                         BoundOrderDTO boundOrderDTO = new BoundOrderDTO()
                         {
-                            OrderNo = _OutboundOrder.OrderNo,
+                            Quantity = item.LockQuantity,
                             BatchNo = item.BatchNo,
                             MaterielCode = item.MaterielCode,
                             MaterielName = item.MaterielName,
@@ -141,8 +144,8 @@
             List<Dt_Task_Hty> Task_Hties = Task_YearHties.Where(x => x.InsertTime.Date == date.Date).ToList();
             List<Dt_Task_Hty> ZTask_Hties = Task_YearHties.Where(x => x.InsertTime.Date == date1.Date).ToList();
 
-            List<Dt_Task_Hty> _Task_InYearHties = Task_YearHties.Where(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList();
-            List<Dt_Task_Hty> _Task_OutYearHties = Task_YearHties.Where(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList();
+            List<Dt_Task_Hty> _Task_InYearHties = Task_YearHties.Where(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.InQuality.ObjToInt()).ToList();
+            List<Dt_Task_Hty> _Task_OutYearHties = Task_YearHties.Where(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.OutQuality.ObjToInt()).ToList();
 
             List<Dt_Task_Hty> _Task_InMonthHties = _Task_InYearHties.Where(x => x.InsertTime.Month == date.Month).ToList();
             List<Dt_Task_Hty> _Task_OutMonthHties = _Task_OutYearHties.Where(x => x.InsertTime.Month == date.Month).ToList();
@@ -174,34 +177,35 @@
             var name = model.MainData["Name"].ToString();
 
             List<Dt_Task_Hty> task_Hties = new List<Dt_Task_Hty>();
+            List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.鍑哄簱涓�.ObjToInt() || x.StockStatus == StockStatusEmun.宸插叆搴�.ObjToInt());
             if (name != "鍏ュ簱")
             {
-                task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList();
+                task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.OutQuality.ObjToInt()).ToList();
                 var task_htys = task_Hties.Where(x => x.InsertTime.Date == DateTime.Now.Date).ToList();
-                var tasks = _taskRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList();
+                var tasks = _taskRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.OutQuality.ObjToInt()).ToList();
 
-                List<Dt_OutboundOrderDetail> outboundOrderDetails = _outboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus < OrderDetailStatusEnum.Outbound.ObjToInt()).ToList();
+                //List<Dt_OutboundOrderDetail> outboundOrderDetails = _outboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus < OrderDetailStatusEnum.Outbound.ObjToInt()).ToList();
                 webResponseContent.OK(data: new
                 {
                     task_Htiesqty = task_Hties.Count,
                     task_htysqty = task_htys.Count,
                     tasksqty = tasks.Count,
-                    inboundOrderDetailsqty = outboundOrderDetails.Sum(x => x.OrderQuantity - x.OverOutQuantity)
+                    inboundOrderDetailsqty = inventoryInfos.Count,//outboundOrderDetails.Sum(x => x.OrderQuantity - x.OverOutQuantity)
                 });
             }
             else
             {
-                task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList();
+                task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.InQuality.ObjToInt()).ToList();
                 var task_htys = task_Hties.Where(x => x.InsertTime.Date == DateTime.Now.Date).ToList();
-                var tasks = _taskRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList();
+                var tasks = _taskRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.InQuality.ObjToInt()).ToList();
 
-                List<Dt_InboundOrderDetail> inboundOrderDetails = _inboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus <= OrderDetailStatusEnum.GroupAndInbound.ObjToInt()).ToList();
+                //List<Dt_InboundOrderDetail> inboundOrderDetails = _inboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus <= OrderDetailStatusEnum.GroupAndInbound.ObjToInt()).ToList();
                 webResponseContent.OK(data: new
                 {
                     task_Htiesqty = task_Hties.Count,
                     task_htysqty = task_htys.Count,
                     tasksqty = tasks.Count,
-                    inboundOrderDetailsqty = inboundOrderDetails.Sum(x => x.OrderQuantity - x.OverInQuantity)
+                    inboundOrderDetailsqty = inventoryInfos.Count,//inboundOrderDetails.Sum(x => x.OrderQuantity - x.OverInQuantity)
                 });
             }
             return webResponseContent;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/WCSInterfaceController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/WCSInterfaceController.cs"
index ccb5823..872fbbf 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/WCSInterfaceController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Interface/WCSInterfaceController.cs"
@@ -1,5 +1,6 @@
 锘縰sing Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_IBasicService;
 using WIDESEA_ITaskInfoService;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/\345\205\250\345\261\200\345\274\202\345\270\270\351\224\231\350\257\257\346\227\245\345\277\227_1740314366.log" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/\345\205\250\345\261\200\345\274\202\345\270\270\351\224\231\350\257\257\346\227\245\345\277\227_1740314366.log"
index e6f9135..e67e170 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/\345\205\250\345\261\200\345\274\202\345\270\270\351\224\231\350\257\257\346\227\245\345\277\227_1740314366.log"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/\345\205\250\345\261\200\345\274\202\345\270\270\351\224\231\350\257\257\346\227\245\345\277\227_1740314366.log"
@@ -1608,3 +1608,69 @@
    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
 --- End of stack trace from previous location ---
    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
+--------------------------------
+2025/8/27 15:39:55|
+涓枃鎻愮ず :  杩炴帴鏁版嵁搴撹繃绋嬩腑鍙戠敓閿欒锛屾鏌ユ湇鍔″櫒鏄惁姝e父杩炴帴瀛楃涓叉槸鍚︽纭紝閿欒淇℃伅锛欰 connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA".
+English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA" 
+銆愯嚜瀹氫箟閿欒銆戯細涓枃鎻愮ず :  杩炴帴鏁版嵁搴撹繃绋嬩腑鍙戠敓閿欒锛屾鏌ユ湇鍔″櫒鏄惁姝e父杩炴帴瀛楃涓叉槸鍚︽纭紝閿欒淇℃伅锛欰 connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA".
+English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA"  
+銆愬紓甯哥被鍨嬨�戯細SqlSugarException 
+銆愬紓甯镐俊鎭�戯細涓枃鎻愮ず :  杩炴帴鏁版嵁搴撹繃绋嬩腑鍙戠敓閿欒锛屾鏌ユ湇鍔″櫒鏄惁姝e父杩炴帴瀛楃涓叉槸鍚︽纭紝閿欒淇℃伅锛欰 connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA".
+English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA"  
+銆愬爢鏍堣皟鐢ㄣ�戯細   at SqlSugar.Check.Exception(Boolean isException, String message, String[] args)
+   at SqlSugar.AdoProvider.CheckConnection()
+   at SqlSugar.SqlServerProvider.GetCommand(String sql, SugarParameter[] parameters)
+   at SqlSugar.AdoProvider.GetDataReader(String sql, SugarParameter[] parameters)
+   at SqlSugar.AdoProvider.SqlQuery[T,T2,T3,T4,T5,T6,T7](String sql, Object parameters)
+   at SqlSugar.AdoProvider.SqlQuery[T](String sql, SugarParameter[] parameters)
+   at SqlSugar.AdoProvider.SqlQuery[T](String sql, Object parameters)
+   at WIDESEA_BasicService.LocationInfoService.GetLocationLayer() in E:\椤圭洰闆哱ChuanSuoCheKu\椤圭洰浠g爜\WMS\WIDESEA_WMSServer\WIDESEA_BasicService\Base\LocationInfoService.cs:line 130
+   at Castle.Proxies.Invocations.ILocationInfoService_GetLocationLayer.InvokeMethodOnTarget()
+   at Castle.DynamicProxy.AbstractInvocation.Proceed()
+   at Castle.Proxies.IService`1Proxy_3.GetLocationLayer()
+   at WIDESEA_WMSServer.Controllers.Basic.LocationInfoController.GetLocationLayer()
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
+--- End of stack trace from previous location ---
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
+--------------------------------
+2025/8/27 15:39:55|
+涓枃鎻愮ず :  杩炴帴鏁版嵁搴撹繃绋嬩腑鍙戠敓閿欒锛屾鏌ユ湇鍔″櫒鏄惁姝e父杩炴帴瀛楃涓叉槸鍚︽纭紝閿欒淇℃伅锛欰 connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA".
+English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA" 
+銆愯嚜瀹氫箟閿欒銆戯細涓枃鎻愮ず :  杩炴帴鏁版嵁搴撹繃绋嬩腑鍙戠敓閿欒锛屾鏌ユ湇鍔″櫒鏄惁姝e父杩炴帴瀛楃涓叉槸鍚︽纭紝閿欒淇℃伅锛欰 connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA".
+English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA"  
+銆愬紓甯哥被鍨嬨�戯細SqlSugarException 
+銆愬紓甯镐俊鎭�戯細涓枃鎻愮ず :  杩炴帴鏁版嵁搴撹繃绋嬩腑鍙戠敓閿欒锛屾鏌ユ湇鍔″櫒鏄惁姝e父杩炴帴瀛楃涓叉槸鍚︽纭紝閿欒淇℃伅锛欰 connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA".
+English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 绠¢亾鐨勫彟涓�绔笂鏃犱换浣曡繘绋嬨��)DbType="SqlServer";ConfigId="WIDESEA"  
+銆愬爢鏍堣皟鐢ㄣ�戯細   at SqlSugar.Check.Exception(Boolean isException, String message, String[] args)
+   at SqlSugar.AdoProvider.CheckConnection()
+   at SqlSugar.SqlServerProvider.GetCommand(String sql, SugarParameter[] parameters)
+   at SqlSugar.AdoProvider.GetDataReader(String sql, SugarParameter[] parameters)
+   at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj)
+   at SqlSugar.QueryableProvider`1._ToList[TResult]()
+   at SqlSugar.QueryableProvider`1.ToList()
+   at WIDESEA_Core.BaseRepository.RepositoryBase`1.QueryData(Expression`1 whereExpression) in E:\椤圭洰闆哱ChuanSuoCheKu\椤圭洰浠g爜\WMS\WIDESEA_WMSServer\WIDESEA_Core\BaseRepository\RepositoryBase.cs:line 248
+   at WIDESEA_SystemRepository.Sys_MenuRepository.GetAllMenu() in E:\椤圭洰闆哱ChuanSuoCheKu\椤圭洰浠g爜\WMS\WIDESEA_WMSServer\WIDESEA_SystemRepository\Sys_MenuRepository.cs:line 30
+   at WIDESEA_SystemRepository.Sys_MenuRepository.GetSuperAdminMenu() in E:\椤圭洰闆哱ChuanSuoCheKu\椤圭洰浠g爜\WMS\WIDESEA_WMSServer\WIDESEA_SystemRepository\Sys_MenuRepository.cs:line 50
+   at Castle.Proxies.Invocations.ISys_MenuRepository_GetSuperAdminMenu.InvokeMethodOnTarget()
+   at Castle.DynamicProxy.AbstractInvocation.Proceed()
+   at Castle.Proxies.IRepository`1Proxy_1.GetSuperAdminMenu()
+   at WIDESEA_SystemService.Sys_MenuService.GetMenuActionList(Int32 roleId) in E:\椤圭洰闆哱ChuanSuoCheKu\椤圭洰浠g爜\WMS\WIDESEA_WMSServer\WIDESEA_SystemService\Sys_MenuService.cs:line 61
+   at WIDESEA_SystemService.Sys_MenuService.GetCurrentMenuActionList() in E:\椤圭洰闆哱ChuanSuoCheKu\椤圭洰浠g爜\WMS\WIDESEA_WMSServer\WIDESEA_SystemService\Sys_MenuService.cs:line 37
+   at Castle.Proxies.Invocations.ISys_MenuService_GetCurrentMenuActionList.InvokeMethodOnTarget()
+   at Castle.DynamicProxy.AbstractInvocation.Proceed()
+   at Castle.Proxies.IService`1Proxy.GetCurrentMenuActionList()
+   at WIDESEA_WMSServer.Controllers.Sys_MenuController.GetTreeMenu()
+   at lambda_method883(Closure , Object , Object[] )
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
+--- End of stack trace from previous location ---
+   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index 6d5437c..26b9dd7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -34,7 +34,7 @@
 }); ;
 builder.ConfigureApplication();
 
-App.ExpDateTime = DateTime.Parse("2025-09-01 09:00:00");
+//App.ExpDateTime = DateTime.Parse("2025-09-20 00:00:00");
 
 // 2、配置服务
 builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user"
index 779df1b..42b5580 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml.user"
@@ -6,7 +6,7 @@
 <Project>
   <PropertyGroup>
     <_PublishTargetUrl>E:\IISText\鑺滄箹涓変竴\WMS</_PublishTargetUrl>
-    <History>True|2025-07-09T14:29:46.5043041Z;True|2025-07-09T22:28:37.9127415+08:00;True|2025-07-04T09:02:45.7658413+08:00;True|2025-06-28T12:22:26.5226251+08:00;True|2025-06-23T10:41:48.4640291+08:00;True|2025-06-20T12:54:56.1810887+08:00;True|2025-06-20T10:43:00.0676097+08:00;True|2025-05-21T14:27:23.3463661+08:00;True|2025-05-20T09:58:56.9385057+08:00;True|2025-05-20T09:50:56.2630438+08:00;True|2025-05-19T16:43:28.3327270+08:00;True|2025-05-19T16:39:14.2351867+08:00;True|2025-05-15T10:36:19.1660612+08:00;True|2025-05-13T15:37:28.0425978+08:00;True|2025-05-13T15:21:45.1951276+08:00;True|2025-05-07T17:51:44.1784374+08:00;True|2025-04-27T14:53:35.8458295+08:00;True|2025-04-18T17:17:44.2558979+08:00;True|2025-04-18T11:56:16.2333182+08:00;True|2025-04-17T14:04:11.2641163+08:00;True|2025-03-27T16:24:43.5017432+08:00;True|2025-03-18T16:14:40.3832855+08:00;True|2025-02-18T14:43:41.4214052+08:00;True|2025-02-17T16:47:47.1464719+08:00;True|2025-02-14T13:02:33.0683296+08:00;True|2025-02-11T13:55:27.2837544+08:00;True|2025-02-11T13:54:12.7390669+08:00;True|2025-02-10T16:40:04.5645895+08:00;True|2025-02-10T16:24:19.3540916+08:00;True|2025-02-10T14:24:04.2140946+08:00;True|2025-02-10T14:01:37.7817950+08:00;True|2025-02-10T13:58:35.5650499+08:00;True|2025-02-10T13:49:31.5513866+08:00;False|2025-02-10T13:49:18.2135044+08:00;True|2025-02-10T11:32:33.6168149+08:00;False|2025-02-10T11:31:56.1964136+08:00;False|2025-02-10T11:31:03.0326897+08:00;True|2025-02-10T11:25:27.6553142+08:00;True|2025-01-18T15:10:06.4957375+08:00;False|2025-01-18T15:09:32.6588841+08:00;True|2025-01-18T15:07:28.0952526+08:00;True|2025-01-18T15:05:38.5243008+08:00;True|2025-01-18T15:03:32.1684791+08:00;True|2025-01-18T15:00:14.2579995+08:00;False|2025-01-18T14:59:17.3888861+08:00;False|2025-01-18T14:57:59.9512472+08:00;True|2025-01-18T13:57:17.7790615+08:00;True|2025-01-18T12:53:22.4660853+08:00;True|2025-01-17T17:26:35.1781925+08:00;True|2025-01-17T16:54:55.6218094+08:00;</History>
+    <History>True|2025-09-29T01:44:22.7122741Z;True|2025-09-13T09:59:14.1811656+08:00;True|2025-09-11T14:44:21.4463899+08:00;True|2025-09-11T09:46:57.1606195+08:00;True|2025-09-11T08:54:45.2508701+08:00;True|2025-09-10T17:23:20.2805726+08:00;True|2025-09-10T11:03:28.6084368+08:00;True|2025-09-10T09:23:04.5233835+08:00;True|2025-08-31T13:15:01.0860708+08:00;True|2025-08-28T14:21:06.4731427+08:00;True|2025-08-18T09:21:31.6163565+08:00;True|2025-08-13T10:31:53.2822334+08:00;True|2025-08-07T16:34:33.8969844+08:00;True|2025-07-30T18:59:50.4912438+08:00;True|2025-07-15T10:34:32.4834130+08:00;True|2025-07-12T10:23:38.7794405+08:00;True|2025-07-12T10:10:47.3292316+08:00;True|2025-07-10T16:31:30.9386059+08:00;True|2025-07-10T11:32:42.0614780+08:00;True|2025-07-10T11:06:03.2986340+08:00;True|2025-07-10T09:53:23.2547896+08:00;True|2025-07-09T22:29:46.5043041+08:00;True|2025-07-09T22:28:37.9127415+08:00;True|2025-07-04T09:02:45.7658413+08:00;True|2025-06-28T12:22:26.5226251+08:00;True|2025-06-23T10:41:48.4640291+08:00;True|2025-06-20T12:54:56.1810887+08:00;True|2025-06-20T10:43:00.0676097+08:00;True|2025-05-21T14:27:23.3463661+08:00;True|2025-05-20T09:58:56.9385057+08:00;True|2025-05-20T09:50:56.2630438+08:00;True|2025-05-19T16:43:28.3327270+08:00;True|2025-05-19T16:39:14.2351867+08:00;True|2025-05-15T10:36:19.1660612+08:00;True|2025-05-13T15:37:28.0425978+08:00;True|2025-05-13T15:21:45.1951276+08:00;True|2025-05-07T17:51:44.1784374+08:00;True|2025-04-27T14:53:35.8458295+08:00;True|2025-04-18T17:17:44.2558979+08:00;True|2025-04-18T11:56:16.2333182+08:00;True|2025-04-17T14:04:11.2641163+08:00;True|2025-03-27T16:24:43.5017432+08:00;True|2025-03-18T16:14:40.3832855+08:00;True|2025-02-18T14:43:41.4214052+08:00;True|2025-02-17T16:47:47.1464719+08:00;True|2025-02-14T13:02:33.0683296+08:00;True|2025-02-11T13:55:27.2837544+08:00;True|2025-02-11T13:54:12.7390669+08:00;True|2025-02-10T16:40:04.5645895+08:00;True|2025-02-10T16:24:19.3540916+08:00;True|2025-02-10T14:24:04.2140946+08:00;True|2025-02-10T14:01:37.7817950+08:00;True|2025-02-10T13:58:35.5650499+08:00;True|2025-02-10T13:49:31.5513866+08:00;False|2025-02-10T13:49:18.2135044+08:00;True|2025-02-10T11:32:33.6168149+08:00;False|2025-02-10T11:31:56.1964136+08:00;False|2025-02-10T11:31:03.0326897+08:00;True|2025-02-10T11:25:27.6553142+08:00;True|2025-01-18T15:10:06.4957375+08:00;False|2025-01-18T15:09:32.6588841+08:00;True|2025-01-18T15:07:28.0952526+08:00;True|2025-01-18T15:05:38.5243008+08:00;True|2025-01-18T15:03:32.1684791+08:00;True|2025-01-18T15:00:14.2579995+08:00;False|2025-01-18T14:59:17.3888861+08:00;False|2025-01-18T14:57:59.9512472+08:00;True|2025-01-18T13:57:17.7790615+08:00;True|2025-01-18T12:53:22.4660853+08:00;True|2025-01-17T17:26:35.1781925+08:00;True|2025-01-17T16:54:55.6218094+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
index 2016641..9ca0f06 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -23,6 +23,7 @@
   },
   "WCSIP": "http://127.0.0.1:8099",
   "LogAopEnable": false,
+  "CreateQCIn": false, //鏄惁鍒涘缓璐ㄦ鍏ュ簱鍗�
   "wcsInterfaceAddress": "/api/Task/ReceiveTask,/api/Task/ModifyBarcode",
   "ConveyorLineID": "1001,1002", //杈撻�佺嚎缂栧彿
   "CarChargingStation": "002-002-001",
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\350\212\234\346\271\226\344\270\211\344\270\200PDA/common/config.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\350\212\234\346\271\226\344\270\211\344\270\200PDA/common/config.js"
index b477bdb..ee4fb81 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\350\212\234\346\271\226\344\270\211\344\270\200PDA/common/config.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\350\212\234\346\271\226\344\270\211\344\270\200PDA/common/config.js"
@@ -1,5 +1,5 @@
 let config = {
-	baseUrl: 'http://192.168.10.88:8098',
+	baseUrl: 'http://127.0.0.1:8098',
 	urls: [
 		'http://192.168.10.88:8098',
 		'http://192.168.10.88:8098'
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/ERP\346\225\260\346\215\256\345\272\223.txt" "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/ERP\346\225\260\346\215\256\345\272\223.txt"
new file mode 100644
index 0000000..e546031
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/ERP\346\225\260\346\215\256\345\272\223.txt"
@@ -0,0 +1,5 @@
+鏈嶅姟鍣↖P鍦板潃锛�192.168.188.6
+鏁版嵁搴撹处鍙凤細sa
+瀵嗙爜锛歵izi@123
+娴嬭瘯鐢ㄦ暟鎹簱瀹炰綋锛欰IS20250704095332
+璐﹀鍚嶇О锛氳处濂楀悕绉帮細娴嬭瘯2
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\344\272\247\345\223\201\345\205\245\345\272\223\345\215\225.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\344\272\247\345\223\201\345\205\245\345\272\223\345\215\225.xls"
similarity index 73%
rename from "\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\344\272\247\345\223\201\345\205\245\345\272\223\345\215\225.xls"
rename to "\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\344\272\247\345\223\201\345\205\245\345\272\223\345\215\225.xls"
index 3be24da..eb6e707 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\344\272\247\345\223\201\345\205\245\345\272\223\345\215\225.xls"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\344\272\247\345\223\201\345\205\245\345\272\223\345\215\225.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\344\273\226\345\207\272\345\272\223\345\215\225.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\344\273\226\345\207\272\345\272\223\345\215\225\050vwICBill_16\051.xls"
similarity index 70%
rename from "\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\344\273\226\345\207\272\345\272\223\345\215\225.xls"
rename to "\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\344\273\226\345\207\272\345\272\223\345\215\225\050vwICBill_16\051.xls"
index 53a149d..e964895 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\344\273\226\345\207\272\345\272\223\345\215\225.xls"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\344\273\226\345\207\272\345\272\223\345\215\225\050vwICBill_16\051.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\345\256\203\345\205\245\345\272\223\345\215\225.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\345\256\203\345\205\245\345\272\223\345\215\225\050vwICBill_7\051.xls"
similarity index 68%
rename from "\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\345\256\203\345\205\245\345\272\223\345\215\225.xls"
rename to "\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\345\256\203\345\205\245\345\272\223\345\215\225\050vwICBill_7\051.xls"
index 7577ec2..c2819aa 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\345\256\203\345\205\245\345\272\223\345\215\225.xls"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\205\266\345\256\203\345\205\245\345\272\223\345\215\225\050vwICBill_7\051.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\255\230\350\264\247\350\241\250.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\255\230\350\264\247\350\241\250\050ICInventory\051.xls"
similarity index 77%
rename from "\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\255\230\350\264\247\350\241\250.xls"
rename to "\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\255\230\350\264\247\350\241\250\050ICInventory\051.xls"
index 09b3bab..45ddf7d 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\255\230\350\264\247\350\241\250.xls"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\345\255\230\350\264\247\350\241\250\050ICInventory\051.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\347\224\237\344\272\247\344\273\273\345\212\241\345\215\225.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\347\224\237\344\272\247\344\273\273\345\212\241\345\215\225.xls"
new file mode 100644
index 0000000..0da4482
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/ERP\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\347\224\237\344\272\247\344\273\273\345\212\241\345\215\225.xls"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\347\224\237\344\272\247\344\273\273\345\212\241\345\215\225.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\347\224\237\344\272\247\344\273\273\345\212\241\345\215\225.xls"
deleted file mode 100644
index c33be13..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\225\260\346\215\256\345\272\223\345\255\227\346\256\265\345\257\271\345\272\224\350\241\250/\347\224\237\344\272\247\344\273\273\345\212\241\345\215\225.xls"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\227\256\351\242\230\345\244\204\347\220\206.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\227\256\351\242\230\345\244\204\347\220\206.docx"
new file mode 100644
index 0000000..5c524b8
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\227\256\351\242\230\345\244\204\347\220\206.docx"
Binary files differ

--
Gitblit v1.9.3