ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/inbound/extend/AllocateStockSelect.vue
@@ -209,7 +209,7 @@ ? "api/Task/GenerateAllocatOutboundTask?orderDetailId=" : "api/Task/GenerateAllocatOutboundTask?orderDetailId="; this.http .post(url + this.row.id, this.selection, "æ°æ®å¤çä¸") .post(url + this.row.id+"&station="+this.outboundForm.selectedPlatform, this.selection, "æ°æ®å¤çä¸") .then((x) => { if (!x.status) return this.$message.error(x.message); this.$message.success("æä½æå"); @@ -227,7 +227,7 @@ const url = "api/StockInfo/GetAllocateStockSelect?materielCode="; this.http .post( url + this.row.materielCode + "&orderId=" + this.row.orderId, url + this.row.materielCode + "&orderId=" + this.row.orderId + "&orderDetailId=" + this.row.id, null, "æ¥è¯¢ä¸" ) ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/inbound/extend/allocateOrderDetail.vue
@@ -296,7 +296,7 @@ wheres: JSON.stringify(wheres), // æ¥è¯¢æ¡ä»¶ï¼æ ¼å¼ä¸º[{ name: "åæ®µ", value: "xx" }] }; this.http .post("api/AllocateOrderDetail/GetPageData", param, "æ¥è¯¢ä¸") .post("api/AllocateOrderDetail/GetDetailPage", param, "æ¥è¯¢ä¸") .then((x) => { this.tableData = x.rows; }); @@ -305,7 +305,7 @@ if (column.prop == "assignStock") { this.$refs.child.open(row); } else { //ç¹å»æå¼åºåºè¯¦æ //ç¹å»æå¼ this.$refs.selectedStock.open(row); } }, ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/outbound/outboundOrder.js
@@ -351,12 +351,12 @@ _this.$Message.success('åæ¹åºåºåè°å®æ'); _this.refresh(); } else { return _this.$Message.error(x.message); return _this.$Message.error( 'åæ¹åºåºåè°å¤±è´¥'); } }) .catch((error) => { // å¢å å¼å¸¸æè·ï¼å¤çç½ç»éè¯¯çæ åµ _this.$Message.error('请æ±å¤±è´¥ï¼' + (error.message || 'æªç¥é误')); //_this.$Message.error('请æ±å¤±è´¥ï¼' + (error.message || 'æªç¥é误')); }); }; } ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
@@ -20,8 +20,11 @@ List<StockSelectViewDTO> GetStockSelectViews(int orderId, string materielCode); List<StockSelectViewDTO> GetStockSelectViews(int orderId, int orderdetailid, string materielCode); List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, int orderdetailid, string materielCode); List<StockSelectViewDTO> GetSelectViewDTOs(string orderNo, string materielCode); List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, string materielCode); } } ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -286,21 +286,102 @@ //} public List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, string materielCode) public List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, int orderdetailid, string materielCode) { var dballocate = _allocateRepository.Db.Queryable<Dt_AllocateOrder>().First(x => x.Id == orderId); if (dballocate == null) { throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{dballocate.OrderNo}çåä¿¡æ¯"); //var dballocate = _allocateRepository.Db.Queryable<Dt_AllocateOrder>().Includes(x=>x.Details).Where(x=>x.Details.Any(o=>o.OrderId==orderId)) .First(); //if (dballocate == null) //{ // throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{dballocate.OrderNo}çåä¿¡æ¯"); } //} var outboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == dballocate.OrderNo).First(); var outboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Includes(x=>x.Details) .Where(x => x.Details.Any(o=>o.OrderId==orderId)).First(); if (outboundOrder == null) { throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{dballocate.OrderNo}çåºåºåä¿¡æ¯"); throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{outboundOrder.UpperOrderNo}çåºåºåä¿¡æ¯"); } return GetStockSelectViews(outboundOrder.Id, materielCode); return GetStockSelectViews(outboundOrder.Id,orderdetailid, materielCode); } public List<StockSelectViewDTO> GetStockSelectViews(int orderId,int orderdetailid, string materielCode) { Dt_OutboundOrder outboundOrder = _outboundOrderService.Repository.QueryFirst(x => x.Id == orderId); if (outboundOrder == null) { throw new Exception($"æªæ¾å°ID为{orderId}çåºåºåä¿¡æ¯"); } // è·ååºåºåæç»ï¼ç¨äºç¡®å®éè¦çæ¹æ¬¡åä¾åºå var orderDetails = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrderDetail>().Where(x =>x.Id==orderdetailid && x.OrderId == orderId && x.MaterielCode == materielCode).ToList(); if (!orderDetails.Any()) { throw new Exception($"åºåºå{orderId}䏿ªæ¾å°ç©æ{materielCode}çæç»ä¿¡æ¯"); } List<string> locationCodes = _locationInfoService.GetCanOutLocationCodes(); var result = new List<StockSelectViewDTO>(); // 为æ¯ä¸ªåºåºåæç»æ¥è¯¢å¯¹åºçåºå foreach (var orderDetail in orderDetails) { // æå»ºæ¥è¯¢æ¡ä»¶ var stockQuery = Db.Queryable<Dt_StockInfo>() .Where(x => locationCodes.Contains(x.LocationCode)) .Where(x => x.StockStatus == (int)StockStatusEmun.å ¥åºå®æ) .Includes(x => x.Details); // æ§è¡æ¥è¯¢å¹¶æå è¿å åºæåº var Qstocks = stockQuery.Where(x => x.Details.Any(d => d.MaterielCode == materielCode && d.StockQuantity > d.OutboundQuantity)); if (!string.IsNullOrEmpty(orderDetail.BatchNo)) { Qstocks = stockQuery.Where(x => x.Details.Any(d => d.BatchNo == orderDetail.BatchNo)); } if (!string.IsNullOrEmpty(orderDetail.SupplyCode)) { Qstocks = stockQuery.Where(x => x.Details.Any(d => d.SupplyCode == orderDetail.SupplyCode)); } var stocks = Qstocks.OrderBy(x => x.CreateDate).ToList(); foreach (var stock in stocks) { var relevantDetails = stock.Details .Where(d => d.MaterielCode == materielCode && string.IsNullOrEmpty(orderDetail.BatchNo) ? true : d.BatchNo == orderDetail.BatchNo && string.IsNullOrEmpty(orderDetail.SupplyCode) ? true : d.SupplyCode == orderDetail.SupplyCode && d.StockQuantity > d.OutboundQuantity) .ToList(); if (relevantDetails.Any()) { var firstDetail = relevantDetails.First(); var useableQuantity = relevantDetails.Sum(d => d.StockQuantity - d.OutboundQuantity); result.Add(new StockSelectViewDTO { LocationCode = stock.LocationCode, MaterielCode = firstDetail.MaterielCode, MaterielName = firstDetail.MaterielName, BatchNo = orderDetail.BatchNo, SupplyCode = orderDetail.SupplyCode, Barcode = firstDetail.Barcode, PalletCode = stock.PalletCode, UseableQuantity = useableQuantity, StockCreateDate = stock.CreateDate, StockId = stock.Id, OrderDetailId = orderDetail.Id // å ³èå°å ·ä½çåºåºåæç» }); } } } return result; } public List<StockSelectViewDTO> GetSelectViewDTOs(string orderNo, string materielCode) ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -1,4 +1,5 @@ using Microsoft.Extensions.Logging; using MailKit.Search; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; using System; @@ -581,28 +582,33 @@ { try { var allocorder = _allocateOrderRepository.Db.Queryable<Dt_AllocateOrder>().Includes(x => x.Details).Where(x => x.Details.Any(o => o.Id == orderDetailId)).First(); //var allocorder = _allocateOrderDetailRepository.Db.Queryable<Dt_AllocateOrderDetail>() // .LeftJoin<Dt_AllocateOrder>((detail, order) => detail.OrderId == order.Id) // .Where((detail, order) => order.Id == orderDetailId) // .Select((detail, order) => order) // .First(); if (allocorder == null) { return WebResponseContent.Instance.Error("æ¾ä¸å°åæ®"); } var outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().Includes(x => x.Details).First(x => x.OrderNo == allocorder.OrderNo); //var allocorder = _allocateOrderRepository.Db.Queryable<Dt_AllocateOrder>().Includes(x => x.Details).Where(x => x.Details.Any(o => o.Id == orderDetailId)).First(); ////var allocorder = _allocateOrderDetailRepository.Db.Queryable<Dt_AllocateOrderDetail>() //// .LeftJoin<Dt_AllocateOrder>((detail, order) => detail.OrderId == order.Id) //// .Where((detail, order) => order.Id == orderDetailId) //// .Select((detail, order) => order) //// .First(); //if (allocorder == null) //{ // return WebResponseContent.Instance.Error("æ¾ä¸å°åæ®"); //} var outboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Includes(x => x.Details).Where(x => x.Details.Any(o => o.Id == orderDetailId)).First(); if (outboundOrder == null) { return WebResponseContent.Instance.Error("æ¾ä¸å°åºåºåæ®"); } var orderdetail = outboundOrder.Details.Where(outItem => allocorder.Details.Any(allocItem => allocItem.MaterielCode == outItem.MaterielCode && allocItem.LineNo == outItem.lineNo && allocItem.BarcodeQty == outItem.BarcodeQty && allocItem.WarehouseCode == outItem.WarehouseCode && allocItem.BarcodeUnit == outItem.BarcodeUnit)).First(); if (orderdetail == null) if (outboundOrder.Details == null || !outboundOrder.Details.Any()) { return WebResponseContent.Instance.Error("æ¾ä¸å°åºåºæç»åæ®"); } //var orderdetail = outboundOrder.Details.Where(outItem => allocorder.Details.Any(allocItem => allocItem.MaterielCode == outItem.MaterielCode && allocItem.LineNo == outItem.lineNo // && allocItem.BarcodeQty == outItem.BarcodeQty && allocItem.WarehouseCode == outItem.WarehouseCode && allocItem.BarcodeUnit == outItem.BarcodeUnit)).First(); //if (orderdetail == null) //{ // return WebResponseContent.Instance.Error("æ¾ä¸å°åºåºæç»åæ®"); //} (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(outboundOrder.Details.First().Id, stockSelectViews, station); ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs
@@ -57,6 +57,10 @@ { allocateOrder.OrderType = 115; } else if (businessType == BusinessTypeEnum.æºä»è°æºä») { allocateOrder.OrderType = 117; } foreach (var detailDto in model.Details) { ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs
@@ -57,11 +57,11 @@ /// <param name="materielCode"></param> /// <returns></returns> [HttpPost, HttpGet, Route("GetAllocateStockSelect"), AllowAnonymous] public List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, string materielCode) public List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId,int orderDetailId, string materielCode) { try { return Service.GetAllocateSelectViewDTOs(orderId, materielCode); return Service.GetAllocateSelectViewDTOs(orderId, orderDetailId,materielCode); } catch (Exception ex) {