From d174e304ad0c38c78eb25f04a2ab97cc471620c5 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期一, 29 十二月 2025 11:02:13 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs    |    2 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs    |    2 
 项目代码/WIDESEA_WMSClient/src/views/outbound/outPicking.vue                        |   12 +-
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs      |   13 +++
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs         |   12 ++
 项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/newAllocateOrderDetail.vue |  155 +++-----------------------------------
 6 files changed, 45 insertions(+), 151 deletions(-)

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/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/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_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_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();
 

--
Gitblit v1.9.3