From 266e4bf654c55ce2f7e9271048e4625f1b8b49f6 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期一, 29 十二月 2025 14:36:08 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215

---
 项目代码/WIDESEA_WMSClient/src/views/outbound/outPicking.vue                                        |   12 +-
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                      |   13 ++
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs                         |   12 +
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs |    5 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs                 |    2 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                    |    2 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                    |    2 
 项目代码/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue                                      |    7 +
 项目代码/WIDESEA_WMSClient/config/buttons.js                                                        |   19 ++
 项目代码/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js                                   |   57 +++++++++
 项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/newAllocateOrderDetail.vue                 |  155 ++-----------------------
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs                      |    3 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs                   |   21 +++
 13 files changed, 156 insertions(+), 154 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
index 26a9f2e..9d55312 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/config/buttons.js"
@@ -283,8 +283,7 @@
     type: 'warning',
     onClick: function () {
     }
-},
-,{
+},{
     name: "鍗� 鎹� 鐩� 鐐� 鎿� 浣�",
     icon: '',
     class: '',
@@ -292,6 +291,22 @@
     type: 'warning',
     onClick: function () {
     }
+},{
+    name: "鍐荤粨",
+    icon: '',
+    class: '',
+    value: 'Lock',
+    type: 'warning',
+    onClick: function () {
+    }
+},{
+    name: "瑙i攣",
+    icon: '',
+    class: '',
+    value: 'Unlock',
+    type: 'warning',
+    onClick: function () {
+    }
 },
 ]
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/newAllocateOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/newAllocateOrderDetail.vue"
index a4f1a20..98fe105 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/newAllocateOrderDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/newAllocateOrderDetail.vue"
@@ -315,149 +315,20 @@
       });
     },
     outbound() {
-      // if (this.selection.length === 0) {
-      //   return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
-      // }
-      // const platformOptions = [
-      //   { label: "绔欏彴2", value: "2-1" },
-      //   { label: "绔欏彴3", value: "3-1" },
-      // ];
-      // const mountNode = document.createElement("div");
-      // document.body.appendChild(mountNode);
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
 
-      // const formData = reactive({
-      //   selectedPlatform: platformOptions[0].value,
-      // });
-
-      // const vnode = createVNode(
-      //   ElDialog,
-      //   {
-      //     title: "鍑哄簱鎿嶄綔 - 閫夋嫨鍑哄簱绔欏彴",
-      //     width: "500px",
-      //     modelValue: true,
-      //     appendToBody: true,
-      //     "onUpdate:modelValue": (isVisible) => {
-      //       if (!isVisible) {
-      //         render(null, mountNode);
-      //         document.body.removeChild(mountNode);
-      //       }
-      //     },
-      //     style: {
-      //       padding: "20px 0",
-      //       borderRadius: "8px",
-      //     },
-      //   },
-      //   {
-      //     default: () =>
-      //       h(
-      //         ElForm,
-      //         {
-      //           model: formData,
-      //           rules: {
-      //             selectedPlatform: [
-      //               { required: true, message: "璇烽�夋嫨鍑哄簱绔欏彴", trigger: "change" },
-      //             ],
-      //           },
-      //           ref: "outboundForm",
-      //           labelWidth: "100px",
-      //           style: {
-      //             padding: "0 30px",
-      //           },
-      //         },
-      //         [
-      //           h(ElFormItem, {
-      //             label: "鍑哄簱绔欏彴",
-      //             prop: "selectedPlatform",
-      //             style: {
-      //               marginBottom: "24px",
-      //             },
-      //           }, [
-      //             h(ElSelect, {
-      //               placeholder: "璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�",
-      //               modelValue: formData.selectedPlatform,
-      //               "onUpdate:modelValue": (val) => {
-      //                 formData.selectedPlatform = val;
-      //               },
-      //               style: {
-      //                 width: "100%",
-      //                 height: "40px",
-      //                 borderRadius: "4px",
-      //                 borderColor: "#dcdfe6",
-      //               },
-      //             }, platformOptions.map((platform) =>
-      //               h(ElOption, { label: platform.label, value: platform.value })
-      //             )),
-      //           ]),
-      //           h("div", {
-      //             style: {
-      //               textAlign: "right",
-      //               marginTop: "8px",
-      //               paddingRight: "4px",
-      //             },
-      //           }, [
-      //             h(ElButton, {
-      //               type: "text",
-      //               onClick: () => {
-      //                 render(null, mountNode);
-      //                 document.body.removeChild(mountNode);
-      //                 ElMessage.info("鍙栨秷鍑哄簱鎿嶄綔");
-      //               },
-      //               style: {
-      //                 marginRight: "8px",
-      //                 color: "#606266",
-      //               },
-      //             }, "鍙栨秷"),
-      //             h(ElButton, {
-      //               type: "primary",
-      //               onClick: async () => {
-      //                 const formRef = vnode.component.refs.outboundForm;
-      //                 try {
-      //                   await formRef.validate();
-      //                 } catch (err) {
-      //                   return;
-      //                 }
-
-      //                 const keys = this.selection.map((item) => item.id);
-      //                 const requestParams = {
-      //                   detailIds: keys,
-      //                   outboundTargetLocation: formData.selectedPlatform,
-      //                   outboundQuantity: 1,
-      //                   operator: "",
-      //                   orderNo: this.row.orderNo,
-      //                 };
-
-      //                 this.http
-      //                   .post(
-      //                     "api/Outbound/ProcessPickingOutbound",
-      //                     requestParams,
-      //                     "鏁版嵁澶勭悊涓�"
-      //                   )
-      //                   .then((x) => {
-      //                     if (!x.status) return ElMessage.error(x.message);
-      //                     ElMessage.success("鎿嶄綔鎴愬姛");
-      //                     this.showDetialBox = false;
-      //                     this.$emit("parentCall", ($vue) => {
-      //                       $vue.getData();
-      //                     });
-      //                     render(null, mountNode);
-      //                     document.body.removeChild(mountNode);
-      //                   })
-      //                 // .catch(() => {
-      //                 //   ElMessage.error("璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯");
-      //                 // });
-      //               },
-      //               style: {
-      //                 borderRadius: "4px",
-      //                 padding: "8px 20px",
-      //               },
-      //             }, "纭畾鍑哄簱"),
-      //           ]),
-      //         ]),
-      //   }
-      // );
-
-      // vnode.appContext = this.$.appContext;
-      // render(vnode, mountNode);
+      const keys = this.selection.map((item) => item.id);
+      const requestParams = {
+        detailIds: keys,
+        outboundQuantity: 1,
+        operator: "",
+        orderNo: this.row.orderNo,
+        isBatch: this.isBatch
+      };
+      console.log(requestParams);
+      this.$refs.DirectOutbound.open(requestParams);
     },
     outboundbatch() {
       if (this.selection.length === 0) {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js"
index 24e1d94..82066ef 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js"
@@ -16,7 +16,62 @@
     buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
     methods: {
        //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
+      onInit() { 
+        var LockBtn = this.buttons.find(x => x.value == "Lock");
+        if (LockBtn != null) {
+          LockBtn.onClick = () => {
+            var rows = this.$refs.table.getSelected();
+            if (!rows || rows.length === 0) {
+              return this.$Message.error("璇峰厛閫夋嫨闇�瑕佸鐞嗙殑鍗曟嵁");
+            }
+            var keys = rows.map(x => {return x.id;})
+            var param = {
+              DelKeys: keys,
+              Extra: true
+          }
+
+            this.http.post(`api/StockInfoDetail/LockOrUpLockStockDetail`,param,"鏁版嵁澶勭悊涓�...")
+              .then((x) => {
+                if (x.status) {
+                  this.$Message.success(x.message);
+                  this.refresh();
+                } else {
+                  return this.$Message.error(x.message);
+                }
+              })
+              .catch((error) => {
+                this.$Message.error('璇锋眰澶辫触锛�' + (error.message || '鏈煡閿欒'));
+              });
+            }
+        }
+
+        var UnlockBtn = this.buttons.find(x => x.value == "Unlock");
+        if (UnlockBtn != null) {
+          UnlockBtn.onClick = () => {
+            var rows = this.$refs.table.getSelected();
+            if (!rows || rows.length === 0) {
+              return this.$Message.error("璇峰厛閫夋嫨闇�瑕佸鐞嗙殑鍗曟嵁");
+            }
+            var keys = rows.map(x => {return x.id;})
+            var param = {
+              DelKeys: keys,
+              Extra: false
+          }
+
+            this.http.post(`api/StockInfoDetail/LockOrUpLockStockDetail`,param,"鏁版嵁澶勭悊涓�...")
+              .then((x) => {
+                if (x.status) {
+                  this.$Message.success(x.message);
+                  this.refresh();
+                } else {
+                  return this.$Message.error(x.message);
+                }
+              })
+              .catch((error) => {
+                this.$Message.error('璇锋眰澶辫触锛�' + (error.message || '鏈煡閿欒'));
+              });
+            }
+        }
       },
       onInited() {
         //妗嗘灦鍒濆鍖栭厤缃悗
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
index 75de823..3ad4a98 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/outbound/outPicking.vue"
@@ -40,8 +40,8 @@
                     <el-row :gutter="20">
                         <el-col :span="8">
                             <el-form-item label="鎵樼洏鐮�" prop="palletCode">
-                                <el-input ref="palletInput" v-model="scanForm.palletCode" placeholder="璇锋壂鎻忔墭鐩樼爜"
-                                    size="large" clearable @keyup.enter="handlePalletScan">
+                                <el-input ref="palletInput" v-model="scanForm.palletCode" placeholder="璇锋壂鎻忔墭鐩樼爜" size="large"
+                                    clearable @keyup.enter="handlePalletScan">
                                     <template #prefix>
                                         <i class="el-icon-box"></i>
                                     </template>
@@ -311,8 +311,8 @@
         </el-dialog>
 
         <!-- 鏁村嚭纭瀵硅瘽妗� -->
-        <el-dialog v-model="wholeOutDialogVisible" title="鏁村嚭鎿嶄綔纭" width="500px"
-            :before-close="handleWholeOutDialogClose" custom-class="whole-out-dialog" style="margin-right: 0px;">
+        <el-dialog v-model="wholeOutDialogVisible" title="鏁村嚭鎿嶄綔纭" width="500px" :before-close="handleWholeOutDialogClose"
+            custom-class="whole-out-dialog" style="margin-right: 0px;">
             <div class="whole-out-content" v-if="wholeOutInfo">
                 <!-- 璀﹀憡鎻愮ず -->
                 <el-alert title="璇ユ墭鐩樺寘鍚渶瑕佹暣鍑虹殑鐗╂枡" type="warning" :closable="false" show-icon class="whole-out-alert">
@@ -361,7 +361,7 @@
                         <div class="info-item">
                             <label>鏁村嚭鏁伴噺锛�</label>
                             <span class="info-value highlight">{{ wholeOutInfo.assignQuantity }} {{ wholeOutInfo.unit
-                                }}</span>
+                            }}</span>
                         </div>
                         <div class="info-item">
                             <label>褰撳墠搴撳瓨锛�</label>
@@ -882,7 +882,7 @@
 
         // 妫�鏌ユ槸鍚﹀寘鍚暣鍑�
         hasWholeOut() {
-            return this.unpickedData.some(item => item.assignQuantity === item.originalQuantity) && !this.matMixed;
+            return this.unpickedData.some(item => item.assignQuantity === item.originalQuantity) && !this.matMixed
         },
 
         // 璁$畻鍓╀綑搴撳瓨
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue"
index f41f4e4..1d73a86 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue"
@@ -67,7 +67,14 @@
         { title: "鐗╂枡缂栧彿", field: "materielCode", type: 'like' },
         { title: "鐗╂枡鍚嶇О", field: "materielName", type: 'like' },
         { title: "鍗曟嵁缂栧彿", field: "orderNo", type: 'like' },
+
+      ], [
         { title: "鎵樼洏鍙�", field: "palletCode", type: 'like' },
+        { title: "鎵规", field: "batchNo", type: 'like' },
+        { title: "鏉$爜", field: "barcode", type: 'like' },
+      ],
+      [
+        { title: "搴撳瓨鐘舵��", field: "status", type: 'select', dataKey: "stockStatusEmun", data: [] },
       ],
     ]);
     const columns = ref([
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
index 0a34266..c40c087 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
@@ -184,6 +184,19 @@
                 return first;
             }
         }
+
+        public bool QueryLocationCount(int locationType)
+        {
+            try
+            {
+                return BaseDal.QueryData(x => x.LocationType == locationType && x.LocationStatus == (int)LocationStatusEnum.Free && x.EnableStatus == (int)EnableEnum.Enable).Any();
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+
+        }
         public Dt_LocationInfo? AssignLocation()
         {
             lock (_locker)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
index 8b9f256..6c59d4f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
@@ -107,6 +107,9 @@
         [Description("宸叉竻鐞�")]
         宸叉竻鐞� = 33,
 
+        [Description("鎵嬪姩鍐荤粨")]
+        鎵嬪姩鍐荤粨 = 55,
+
         [Description("鎵嬪姩瑙i攣")]
         鎵嬪姩瑙i攣 = 66,
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
index 167a158..d228028 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
@@ -61,6 +61,8 @@
 
         Dt_LocationInfo? AssignLocation();
 
+        bool QueryLocationCount(int locationType);
+
         List<LocationTypeDto> GetLocationTypes();
 
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs"
index 93c7e76..de3985b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs"
@@ -15,5 +15,7 @@
 
         PageGridData<StockInfoDetailWithPalletDto> GetPageData2(PageDataOptions options);
 
+        Task<WebResponseContent> LockOrUpLockStockDetail(SaveModel saveModel);
+
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
index ddabda4..4458ba2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs"
@@ -471,7 +471,7 @@
                 if (!result2.Item1) return content = WebResponseContent.Instance.Error(result2.Item2);
 
                 bool code = _locationTypeRepository.Db.Queryable<Dt_LocationType>().Where(x => x.LocationType == materielGroupDTO.WarehouseCode).Any();
-                bool statu = _locationInfoRepository.Db.Queryable<Dt_LocationInfo>().Where(x => x.LocationType == materielGroupDTO.WarehouseCode && x.LocationStatus == (int)LocationStatusEnum.Free).Any();
+                bool statu = _locationInfoRepository.Db.Queryable<Dt_LocationInfo>().Where(x => x.LocationType == materielGroupDTO.WarehouseCode && x.LocationStatus == (int)LocationStatusEnum.Free && x.EnableStatus == (int)EnableEnum.Enable).Any();
                 if (!statu)
                 {
                     return content = WebResponseContent.Instance.Error($"璇ュ尯鍩熸棤璐т綅鍙垎閰�");
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
index 62387ff..18d4a5f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
@@ -24,6 +24,7 @@
 using WIDESEA_DTO.Allocate;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.ReturnMES;
+using WIDESEA_IBasicService;
 using WIDESEA_IInboundService;
 using WIDESEA_IStockService;
 using WIDESEA_Model.Models;
@@ -48,7 +49,8 @@
         private readonly IRepository<Dt_AllocateMaterialInfo> _allocateMaterialInfo;
         private readonly HttpClientHelper _httpClientHelper;
         private readonly IRepository<Dt_MesReturnRecord> _mesReturnRecord;
-        public InboundService(IUnitOfWorkManage unitOfWorkManage, IInboundOrderDetailService inboundOrderDetailService, IInboundOrderService inbounOrderService, IRepository<Dt_InboundOrder> inboundOrderRepository, IRepository<Dt_WarehouseArea> warehouseAreaRepository, IRepository<Dt_LocationType> locationTypeRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IStockService stockService, IRepository<Dt_Task> taskRepository,IRepository<Dt_AllocateMaterialInfo> allocateMaterialInfo, HttpClientHelper httpClientHelper, IRepository<Dt_MesReturnRecord> mesReturnRecord)
+        private readonly ILocationInfoService _locationInfoService;
+        public InboundService(IUnitOfWorkManage unitOfWorkManage, IInboundOrderDetailService inboundOrderDetailService, IInboundOrderService inbounOrderService, IRepository<Dt_InboundOrder> inboundOrderRepository, IRepository<Dt_WarehouseArea> warehouseAreaRepository, IRepository<Dt_LocationType> locationTypeRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IStockService stockService, IRepository<Dt_Task> taskRepository,IRepository<Dt_AllocateMaterialInfo> allocateMaterialInfo, HttpClientHelper httpClientHelper, IRepository<Dt_MesReturnRecord> mesReturnRecord,ILocationInfoService locationInfoService)
         {
             _unitOfWorkManage = unitOfWorkManage;
             InboundOrderDetailService = inboundOrderDetailService;
@@ -63,6 +65,7 @@
             _allocateMaterialInfo = allocateMaterialInfo;
             _httpClientHelper = httpClientHelper;
             _mesReturnRecord = mesReturnRecord;
+            _locationInfoService = locationInfoService;
         }
 
         public async Task<WebResponseContent> GroupPallet(GroupPalletDto palletDto)
@@ -115,6 +118,11 @@
                 if (stockInfo != null && stockInfo.Details.Count > 0 && stockInfo.Details.FirstOrDefault()?.WarehouseCode != palletDto.WarehouseType)
                 {
                     return content.Error($"璇ユ墭鐩樼粍鐩樹粨搴撲负{stockInfo.Details.FirstOrDefault()?.WarehouseCode}涓庡綋鍓嶄粨搴搟palletDto.WarehouseType}涓嶄竴鑷达紝涓嶅厑璁哥粍鐩�");
+                }
+
+                if (!_locationInfoService.QueryLocationCount(Convert.ToInt32(palletDto.locationType)))
+                {
+                    return content.Error($"璇ュ簱鍖簕palletDto.locationType}涓嶅瓨鍦ㄧ┖闂插簱浣�");
                 }
 
                 foreach (var item in details)
@@ -376,7 +384,7 @@
                                         .Where(x => x.OrderId == inboundOrder.Id && x.OrderDetailStatus==(int)OrderDetailStatusEnum.Over && x.ReturnToMESStatus == 0)
                                         .ToList();
 
-                var stocks = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == 6)
+                var stocks = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.StockStatus == (int)StockStatusEmun.鍏ュ簱瀹屾垚)
                                             .Where(it => SqlFunc.Subqueryable<Dt_StockInfoDetail>().Where(s => s.StockId == it.Id && s.OrderNo == inboundOrder.InboundOrderNo).Any())
                                             .ToList();
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
index 5165f0e..14763de 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs"
@@ -129,6 +129,27 @@
 
         }
 
+
+        public async Task<WebResponseContent> LockOrUpLockStockDetail(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                var details = await BaseDal.QueryDataAsync(x => saveModel.DelKeys.Contains(x.Id));
+
+                bool flag = Convert.ToBoolean(saveModel.Extra);
+
+                details.ForEach(x => x.Status = flag ? StockStatusEmun.鎵嬪姩鍐荤粨.ObjToInt(): StockStatusEmun.鎵嬪姩瑙i攣.ObjToInt());
+
+                await BaseDal.UpdateDataAsync(details);
+
+                return content.OK(flag ? "鍐荤粨鎴愬姛!" : "瑙i攣鎴愬姛!");
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+        }
     }
 }
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs"
index e192624..5ba62cd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs"
@@ -31,5 +31,10 @@
             return Json(result);
         }
 
+        [HttpPost, Route("LockOrUpLockStockDetail")]
+        public Task<WebResponseContent> LockOrUpLockStockDetail([FromBody]SaveModel saveModel)
+        {
+            return Service.LockOrUpLockStockDetail(saveModel);
+        }
     }
 }

--
Gitblit v1.9.3