WMS/WIDESEA_WMSServer/WIDESEA_Common/HouseInbound.cs
@@ -31,8 +31,11 @@ /// <summary> /// åºå ¥åºç±»å /// </summary> public int InoutType { get; set; } public decimal InoutType { get; set; } /// <summary> /// å建è /// </summary> public string CreateBy { get; set; } /// <summary> /// æ¨åç³»ç» /// </summary> @@ -88,7 +91,7 @@ public class BoxList { public float BoxId { get; set; } public double BoxId { get; set; } public string BoxCode { get; set; } @@ -96,10 +99,14 @@ public string PartNum { get; set; } public float JobId { get; set; } public decimal JobId { get; set; } public float QtyOfpcs { get; set; } public decimal QtyOfpcs { get; set; } public float QtyOfxout { get; set; } public decimal QtyOfxout { get; set; } public string LPNNO { get; set; } public string OrinalLocation { get; set; } } } WMS/WIDESEA_WMSServer/WIDESEA_Common/NewHouseInboundPassBack.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static WIDESEA_Common.NewHouseInboundPassBack.Parame.Syncretism; namespace WIDESEA_Common { public class NewHouseInboundPassBack { public List<Parame> Parameters = new List<Parame>(); public string ApiType { get; set; } public string Method { get; set; } public Dictionary<string, string> Context { get; set; } public class Parame { public Syncretism Value = new Syncretism(); public class Syncretism { public string OrderNo { get; set; } public List<details> Details = new List<details>(); public class details { /// <summary> /// åå§LPN /// </summary> public string Lpn { get; set; } /// <summary> /// ç§»åºåç±»å /// </summary> public int MoveType { get; set; } /// <summary> /// ä»åº (åè´§ä»åº) /// </summary> public string WareHouseCode { get; set; } /// <summary> /// ç©æç¼ç /// </summary> public string ItemCode { get; set; } /// <summary> /// ç§»åºæ°é /// </summary> public decimal MoveNumber { get; set; } /// <summary> /// ç©ææ¹æ¬¡ /// </summary> public string LotNo { get; set; } /// <summary> /// çäº§æ¹æ¬¡ /// </summary> public string WipBatch { get; set; } /// <summary> /// æ¥æºåºä½ /// </summary> public string LocationName { get; set; } /// <summary> /// ç®æ åºä½ /// </summary> public string TargetLocName { get; set; } /// <summary> /// ç®æ LPN /// </summary> public string TargetLpn { get; set; } } } } } } WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/OrderEnum.cs
@@ -225,6 +225,12 @@ /// </summary> [Description("çäº§å ¥åºå")] works = 2, /// <summary> /// è°æ¨åºåºå /// </summary> [Description("è°æ¨åºåºå")] Allocate = 4, /// <summary> /// ç产è¿å·¥å /// </summary> @@ -243,11 +249,7 @@ [Description("éè´éè´§å")] ProcureReturn = 210, /// <summary> /// è°æ¨åºåºå /// </summary> [Description("è°æ¨åºåºå")] Allocate = 215, /// <summary> /// éå®åºåºå WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs
@@ -20,6 +20,7 @@ WebResponseContent CancelOut(HouseCancelOut houseCancelOut); WebResponseContent NewCancelOut(HouseCancelOut houseCancelOut); WebResponseContent Save(OutboundOrderAddDTO orderAddDTO); WebResponseContent GetCodeByWarehouse(int warehouseId); WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -553,7 +553,7 @@ /// <param name="materielGroupDTO"></param> /// <returns></returns> #region public WebResponseContent CP1MaterielGroup(SaveModel saveModel) public WebResponseContent CPMaterielGroup(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try @@ -762,6 +762,8 @@ QtyOfpcs = item.QtyOfpcs, QtyOfxout = item.QtyOfxout, CPStockDetailStatus = (int)StockStatusEmun.ç»çæå, LPNNO = item.LPNNO, OrinalLocation = item.OrinalLocation, Creater = "䏿¸¸WMS", }; stockInfoDetailCP.Add(stockInfoDetailCP1); @@ -854,7 +856,7 @@ #endregion public WebResponseContent CPMaterielGroup(SaveModel saveModel) public WebResponseContent CP1MaterielGroup(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try @@ -1127,6 +1129,7 @@ } public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"]; /// <summary> /// ç»çåæ /// </summary> @@ -1407,10 +1410,6 @@ } if (warehouse.WarehouseCode.Contains("CP")) { if (item.SupplierBatch == null) { return content.Error("ä¾åºåæ¹æ¬¡ä¸å¯ä¸ºç©º"); } Dt_InboundOrder inboundOrderOld = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == model.AsnNo).Includes(x => x.Details).First(); if (inboundOrderOld != null) @@ -1442,6 +1441,8 @@ QtyOfpcs = (float)list.QtyOfpcs, QtyOfxout = (float)list.QtyOfxout, CPOrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(), LPNNO = list.LPNNO, OrinalLocation = list.OrinalLocation, Creater = "䏿¸¸WMS", }; cPInboundOrderDetail.Add(cPInboundOrderDetail1); @@ -1484,6 +1485,8 @@ QtyOfpcs = (float)list.QtyOfpcs, QtyOfxout = (float)list.QtyOfxout, CPOrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(), LPNNO = list.LPNNO, OrinalLocation = list.OrinalLocation, Creater = "䏿¸¸WMS", }; cPInboundOrderDetail.Add(cPInboundOrderDetail1); @@ -1506,7 +1509,6 @@ OrinalLocation = item.OrinalLocation, CPDetails = cPInboundOrderDetail }; Dt_InboundOrder inboundOrder = new Dt_InboundOrder() { OrderNo = model.AsnNo, @@ -1544,10 +1546,10 @@ } else { if (item.SupplierBatch == null) { return content.Error("ä¾åºåæ¹æ¬¡ä¸å¯ä¸ºç©º"); } //if (item.SupplierBatch == null) //{ // return content.Error("ä¾åºåæ¹æ¬¡ä¸å¯ä¸ºç©º"); //} Dt_InboundOrder inboundOrderOld = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == model.AsnNo).Includes(x => x.Details).First(); if (inboundOrderOld != null) WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_CPInboundOrderDetail.cs
@@ -40,5 +40,11 @@ [SugarColumn(IsNullable = false, ColumnDescription = "ç¶æ")] public int CPOrderDetailStatus { get; set; } [SugarColumn(IsNullable = true, ColumnDescription = "LPNNO")] public string LPNNO { get; set; } [SugarColumn(IsNullable = true, ColumnDescription = "WMSæºåºä½")] public string OrinalLocation { get; set; } } } WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Stock/Dt_StockInfoDetailCP.cs
@@ -41,5 +41,11 @@ [SugarColumn(IsNullable = false, ColumnDescription = "ç¶æ")] public int CPStockDetailStatus { get; set; } [SugarColumn(IsNullable = true, ColumnDescription = "LPNNO")] public string LPNNO { get; set; } [SugarColumn(IsNullable = true, ColumnDescription = "WMSæºåºä½")] public string OrinalLocation { get; set; } } } WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
@@ -187,6 +187,7 @@ return WebResponseContent.Instance.Error("æ¤åæ®å·²å¼å§æ§è¡ï¼ä¸å è®¸åæ¶"); } oldOutboundOrder.OrderStatus = OutboundStatusEnum.åæ¶.ObjToInt(); _unitOfWorkManage.BeginTran(); BaseDal.UpdateData(oldOutboundOrder); Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty @@ -223,31 +224,134 @@ } BaseDal.DeleteData(oldOutboundOrder); } Dt_NewOutboundOrder dt_NewOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First(); if (dt_NewOutboundOrder == null) { return WebResponseContent.Instance.Error("æªæ¾å°æ¤åºåºåæ®"); } if (dt_NewOutboundOrder != null) { _unitOfWorkManage.CommitTran(); //Dt_NewOutboundOrder dt_NewOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First(); //if (dt_NewOutboundOrder == null) //{ // return WebResponseContent.Instance.Error("æªæ¾å°æ¤åºåºåæ®"); //} //if (dt_NewOutboundOrder != null) //{ if (dt_NewOutboundOrder.OrderStatus > OutOrderStatusEnum.æªå¼å§.ObjToInt()) { return WebResponseContent.Instance.Error("æ¤åæ®å·²å¼å§æ§è¡ï¼ä¸å è®¸åæ¶"); } List<Dt_NewOutboundOrderDetail> newOutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == dt_NewOutboundOrder.Id).ToList(); dt_NewOutboundOrder.OrderStatus = OutboundStatusEnum.åæ¶.ObjToInt(); foreach (var item in newOutboundOrderDetail) { item.OrderDetailStatus = OutboundStatusEnum.åæ¶.ObjToInt(); } _newOutboundOrderService.UpdateData(dt_NewOutboundOrder); _newOutboundOrderDetailService.UpdateData(newOutboundOrderDetail); } // if (dt_NewOutboundOrder.OrderStatus > OutOrderStatusEnum.æªå¼å§.ObjToInt()) // { // return WebResponseContent.Instance.Error("æ¤åæ®å·²å¼å§æ§è¡ï¼ä¸å è®¸åæ¶"); // } // List<Dt_NewOutboundOrderDetail> newOutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == dt_NewOutboundOrder.Id).ToList(); // dt_NewOutboundOrder.OrderStatus = OutboundStatusEnum.åæ¶.ObjToInt(); // foreach (var item in newOutboundOrderDetail) // { // item.OrderDetailStatus = OutboundStatusEnum.åæ¶.ObjToInt(); // } // _newOutboundOrderService.UpdateData(dt_NewOutboundOrder); // _newOutboundOrderDetailService.UpdateData(newOutboundOrderDetail); //} content = WebResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); content = WebResponseContent.Instance.Error(ex.Message); } finally { } return content; } /// <summary> /// æååºåºåæ®åæ¶ /// </summary> /// <param name="houseCancelOut"></param> /// <returns></returns> public WebResponseContent NewCancelOut(HouseCancelOut houseCancelOut) { WebResponseContent content = new(); try { OutboundOrderAddDTO orderAddDTO1 = new OutboundOrderAddDTO(); orderAddDTO1.OrderNo = houseCancelOut.No; orderAddDTO1.Details = houseCancelOut.DetailList.DicToIEnumerable<OutboundOrderDetailAddDTO>(); Dt_NewOutboundOrder? oldOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First(); if (oldOutboundOrder == null) { return WebResponseContent.Instance.Error("æªæ¾å°æ¤åºåºåæ®"); } if (oldOutboundOrder != null) { Dt_NewOutboundOrderDetail OutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == oldOutboundOrder.Id).First(); if (oldOutboundOrder.OrderStatus > OutOrderStatusEnum.æªå¼å§.ObjToInt()) { return WebResponseContent.Instance.Error("æ¤åæ®å·²å¼å§æ§è¡ï¼ä¸å è®¸åæ¶"); } oldOutboundOrder.OrderStatus = OutboundStatusEnum.åæ¶.ObjToInt(); _unitOfWorkManage.BeginTran(); _newOutboundOrderService.UpdateData(oldOutboundOrder); Dt_OutboundOrder_Hty inboundOrder_Hty = new Dt_OutboundOrder_Hty { OrderStatus = oldOutboundOrder.OrderStatus, CreateType = oldOutboundOrder.CreateType, //SourceId = oldOutboundOrder.SourceId, UpperOrderNo = oldOutboundOrder.UpperOrderNo, OrderNo = oldOutboundOrder.OrderNo, OutWareHouse = oldOutboundOrder.OutWareHouse, TransactionCode = oldOutboundOrder.TransactionCode, InoutType = oldOutboundOrder.InoutType, OrderType = oldOutboundOrder.OrderType, Creater = "WMS", CreateDate = DateTime.Now, }; _outboundOrder_HtyService.AddData(inboundOrder_Hty); foreach (var item in oldOutboundOrder.Details) { Dt_OutboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_OutboundOrderDetail_Hty { OrderId = OutboundOrderDetail.OrderId, MaterielCode = OutboundOrderDetail.MaterielCode, MaterielName = OutboundOrderDetail.MaterielName, BatchNo = OutboundOrderDetail.BatchNo, OrderQuantity = OutboundOrderDetail.OrderQuantity, OrderDetailStatus = OutboundOrderDetail.OrderDetailStatus, Creater = "WMS", CreateDate = DateTime.Now, }; _outboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty); _newOutboundOrderDetailService.DeleteData(item); } _newOutboundOrderService.DeleteData(oldOutboundOrder); } _unitOfWorkManage.CommitTran(); //Dt_NewOutboundOrder dt_NewOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First(); //if (dt_NewOutboundOrder == null) //{ // return WebResponseContent.Instance.Error("æªæ¾å°æ¤åºåºåæ®"); //} //if (dt_NewOutboundOrder != null) //{ // if (dt_NewOutboundOrder.OrderStatus > OutOrderStatusEnum.æªå¼å§.ObjToInt()) // { // return WebResponseContent.Instance.Error("æ¤åæ®å·²å¼å§æ§è¡ï¼ä¸å è®¸åæ¶"); // } // List<Dt_NewOutboundOrderDetail> newOutboundOrderDetail = BaseDal.Db.Queryable<Dt_NewOutboundOrderDetail>().Where(x => x.OrderId == dt_NewOutboundOrder.Id).ToList(); // dt_NewOutboundOrder.OrderStatus = OutboundStatusEnum.åæ¶.ObjToInt(); // foreach (var item in newOutboundOrderDetail) // { // item.OrderDetailStatus = OutboundStatusEnum.åæ¶.ObjToInt(); // } // _newOutboundOrderService.UpdateData(dt_NewOutboundOrder); // _newOutboundOrderDetailService.UpdateData(newOutboundOrderDetail); //} content = WebResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); content = WebResponseContent.Instance.Error(ex.Message); } finally WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/NewOutboundOrderDetailService.cs
@@ -64,7 +64,7 @@ foreach (var stockInfoDetail in dt_StockInfoDetails) { dt_StockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.Id == stockInfoDetail.StockId && x.StockStatus == StockStatusEmun.å ¥åºå®æ.ObjToInt()); if (dt_StockInfo != null) if (dt_StockInfo != null && !PalletCodes.Any(x => x == dt_StockInfo.PalletCode)) { PalletCodes.Add(dt_StockInfo.PalletCode); } @@ -127,7 +127,7 @@ decimal needQuantity = originalNeedQuantity - item.LockQuantity; item.LockQuantity += needQuantity - residueQuantity.NewNeendQuantity; //item.LockQuantity += needQuantity - residueQuantity.NewNeendQuantity; decimal assignQuantity = needQuantity - residueQuantity.NewNeendQuantity; WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs
@@ -342,10 +342,12 @@ { List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); List<IStockInfoService.residueQuantity> newresidueQantity = new List<IStockInfoService.residueQuantity>(); List<Dt_StockInfo> notStocks = new List<Dt_StockInfo>(); ; List<Dt_StockInfo> notStocks = new List<Dt_StockInfo>(); foreach (var dt_OutboundOrderDetail in dt_OutboundOrderDetails) { notStocks = stockInfos.Where(x => x.Details.Any(x =>x.MaterielCode == dt_OutboundOrderDetail.MaterielCode)).OrderBy(x => x.Id).ToList(); if (notStocks.Count > 0) { decimal stockTotalQuantity = stockInfos.SelectMany(x => x.Details).Where(d => d.MaterielCode == dt_OutboundOrderDetail.MaterielCode).Sum(v => v.StockQuantity - v.OutboundQuantity); @@ -357,48 +359,51 @@ { Dt_StockInfo stockInfo = stockInfos[index]; Dt_StockInfoDetail dt_StockInfoDetail = new Dt_StockInfoDetail(); List<Dt_StockInfoDetail> dt_StockInfoDetails = new List<Dt_StockInfoDetail>(); foreach (var detail in stockInfo.Details) { if (detail.MaterielCode == dt_OutboundOrderDetail.MaterielCode) { dt_StockInfoDetail = detail; dt_StockInfoDetails.Add(detail); } } foreach(var dt_StockInfoDetail in dt_StockInfoDetails) { decimal useableStockQuantity = dt_StockInfoDetail.StockQuantity - dt_StockInfoDetail.OutboundQuantity; if (useableStockQuantity < needQuantity) { stockInfo.Details.ForEach(x => foreach (var item in stockInfo.Details) { if (x.MaterielCode == dt_OutboundOrderDetail.MaterielCode) if(item.MaterielCode == dt_OutboundOrderDetail.MaterielCode && dt_StockInfoDetail.BatchNo == item.BatchNo) { x.OutboundQuantity = x.StockQuantity; item.OutboundQuantity = item.StockQuantity; } }); } needQuantity -= useableStockQuantity; } else { stockInfo.Details.ForEach(x => foreach (var item in stockInfo.Details) { if (x.StockQuantity > x.OutboundQuantity && x.MaterielCode == dt_OutboundOrderDetail.MaterielCode) if(item.StockQuantity > item.OutboundQuantity && item.MaterielCode == dt_StockInfoDetail.MaterielCode && item.BatchNo == dt_StockInfoDetail.BatchNo) { if (x.StockQuantity - x.OutboundQuantity >= needQuantity) if (item.StockQuantity - item.OutboundQuantity >= needQuantity) { x.OutboundQuantity += needQuantity; dt_StockInfoDetail.OutboundQuantity += needQuantity; needQuantity = 0; } else { needQuantity -= (x.StockQuantity - x.OutboundQuantity); x.OutboundQuantity = x.StockQuantity; needQuantity -= (item.StockQuantity - item.OutboundQuantity); item.OutboundQuantity = item.StockQuantity; } } }); } } outStocks.Add(stockInfo); index++; if (needQuantity == 0) break; } } } else @@ -411,7 +416,7 @@ { if (detail.MaterielCode == dt_OutboundOrderDetail.MaterielCode) { useableStockQuantity = detail.StockQuantity - detail.OutboundQuantity; useableStockQuantity += detail.StockQuantity - detail.OutboundQuantity; } } @@ -427,22 +432,22 @@ } else { stockInfo.Details.ForEach(x => foreach (var detail in stockInfo.Details) { if (x.StockQuantity > x.OutboundQuantity && x.MaterielCode == dt_OutboundOrderDetail.MaterielCode) if(detail.StockQuantity > detail.OutboundQuantity && detail.MaterielCode == dt_OutboundOrderDetail.MaterielCode) { if (x.StockQuantity - x.OutboundQuantity >= needQuantity) if(detail.StockQuantity - detail.OutboundQuantity >= needQuantity) { x.OutboundQuantity += needQuantity; detail.OutboundQuantity += needQuantity; needQuantity = 0; } else { needQuantity -= (x.StockQuantity - x.OutboundQuantity); x.OutboundQuantity = x.StockQuantity; needQuantity -= (detail.StockQuantity - detail.OutboundQuantity); detail.OutboundQuantity = detail.StockQuantity; } } }); } } outStocks.Add(stockInfo); } WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
@@ -39,7 +39,7 @@ { throw new Exception("æéåºåºåæç»åå¨åºåºä¸æå·²å®æ"); } if (outboundOrderDetails.FirstOrDefault()?.LPNNo == null) if (outboundOrderDetails.FirstOrDefault()?.LPNNo == null || outboundOrderDetails.FirstOrDefault()?.LPNNo == "") { outboundOrderDetails.Clear(); try @@ -412,9 +412,39 @@ if (stockInfoDetailCPList != null) { _stockInfoDetailCPRepository.DeleteAndMoveIntoHty(stockInfoDetailCPList, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); foreach(var stockLPNO in houseStockDetail.DetailList) { Dt_StockInfo dt_StockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == stockLPNO.LPNNo).Includes(x => x.Details).First(); for (int i = 0; i<stockInfoDetailCPList.Count(); i++) { foreach (var item1 in dt_StockInfo.Details) { foreach (var batchNos in houseStockDetail.DetailList) { if (stockInfoDetailCPList[i].PartNum == item1.MaterielCode && batchNos.BatchNo == item.BatchNo) { item1.StockQuantity-=(decimal)stockInfoDetailCPList[i].QtyOfpcs; item1.OutboundQuantity = 0; _stockInfoDetailRepository.UpdateData(item1); } if (item1.StockQuantity == 0) { _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(item1, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); } //å ¨é¨é½åºåº å é¤åºå if (dt_StockInfo.Details.Sum(x => x.StockQuantity) == 0) { _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(dt_StockInfo, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); } } } } } } _unitOfWorkManage.CommitTran(); } } catch (Exception ex) { @@ -466,11 +496,17 @@ }); result.Item2.ForEach(x => { x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); foreach(var item in result.Item2) { if(item.LockQuantity > 0) { item.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); } } }); result.Item3.ForEach(x => { x.Status = OutStockStatus.åºåºä¸.ObjToInt(); }); WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -26,6 +26,7 @@ public partial class TaskService { /// <summary> /// ä» ç³è¯·ä»»å¡ï¼è®©WCSæ ¹æ®è·¯ç±ç¡®å®ä¸ä¸å°å /// </summary> WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -333,6 +333,16 @@ inboundOrder.CreateDate = DateTime.Now; inboundOrder.CreateType = CreateType.UpperSystemPush.ObjToInt(); _unitOfWorkManage.BeginTran(); Dt_NewOutboundOrder dt_NewOutboundOrder = BaseDal.Db.Queryable<Dt_NewOutboundOrder>().Where(x => x.OrderNo == inboundOrder.OrderNo).Includes(x => x.Details).First(); if(dt_NewOutboundOrder != null) { if (dt_NewOutboundOrder.OrderStatus > 0) { return WebResponseContent.Instance.Error($"该åºåºåå¨è¿è¡ä¸ï¼æ æ³æ´æ°è¯¥åºåºå"); } Db.DeleteNav(dt_NewOutboundOrder).Include(x => x.Details).ExecuteCommand(); } bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); foreach (var item in orderAddDTO1.Details) @@ -684,7 +694,7 @@ } } /// <summary> /// çæåºåºä»»å¡ /// çæâä»»å¡ /// </summary> /// <param name="orderDetailId"></param> /// <param name="stockSelectViews"></param> WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -20,20 +20,30 @@ using Microsoft.AspNetCore.SignalR; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Database; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using Org.BouncyCastle.Asn1.Tsp; using Spire.Pdf; using SqlSugar; using System; using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Drawing.Printing; using System.IO; using System.Linq; using System.Net.Http; using System.Reflection; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; using System.Threading.Tasks; using WIDESEA_BasicRepository; using WIDESEA_Common; using WIDESEA_Common.Log; using WIDESEA_Common.OrderEnum; using WIDESEA_Common.TaskEnum; using WIDESEA_Core; @@ -43,6 +53,7 @@ using WIDESEA_Core.Helper; using WIDESEA_Core.TaskEnum; using WIDESEA_DTO.Basic; using WIDESEA_DTO.ERP; using WIDESEA_DTO.Inbound; using WIDESEA_DTO.Stock; using WIDESEA_DTO.Task; @@ -50,6 +61,7 @@ using WIDESEA_IBasicService; using WIDESEA_IInboundRepository; using WIDESEA_IInboundService; using WIDESEA_InboundRepository; using WIDESEA_IOutboundRepository; using WIDESEA_IOutboundService; using WIDESEA_IRecordService; @@ -59,28 +71,19 @@ using WIDESEA_ITaskInfoService; using WIDESEA_Model.Models; using WIDESEA_Model.Models.Inbound; using WIDESEA_OutboundRepository; using WIDESEA_StockRepository; using WIDESEA_TaskInfoRepository; using static WIDESEA_Common.Authentication; using static WIDESEA_Common.HouseBackboundPassBack; using static WIDESEA_Common.HouseInboundPassBack; using static WIDESEA_Common.HouseInboundPassBack.data.data1; using static WIDESEA_Common.HouseoutboundPassBack; using static WIDESEA_Common.InventoryAllocate; using static WIDESEA_Common.NewHouseInboundPassBack; using static WIDESEA_Common.NewHouseInboundPassBack.Parame.Syncretism; using static WIDESEA_ITaskInfoService.ITaskService; using Parameter = WIDESEA_Common.Parameter; using WIDESEA_DTO.ERP; using WIDESEA_OutboundRepository; using System.ComponentModel.DataAnnotations; using System; using System.IO; using System.Net.Http; using System.Threading.Tasks; using Spire.Pdf; using WIDESEA_InboundRepository; using System.Drawing.Printing; using System; using WIDESEA_Common.Log; using static WIDESEA_Common.HouseInboundPassBack.data.data1; namespace WIDESEA_TaskInfoService { @@ -720,6 +723,7 @@ } if (inboundOrder.OrderStatus == InboundStatusEnum.å ¥åºå®æ.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM")) { List<Dt_StockInfo> StockInfos = _stockRepository.StockInfoRepository.Db .Queryable<Dt_StockInfo>() .Includes(x => x.Details, d => d.StockDetails) @@ -872,7 +876,79 @@ } } } else if (inboundOrder.OrderStatus == InboundStatusEnum.å ¥åºå®æ.ObjToInt() && inboundOrder.OrderType == 5 && inboundOrder.System.Equals("SMOM")) { List<Dt_StockInfo> StockInfos = _stockRepository.StockInfoRepository.Db .Queryable<Dt_StockInfo>() .Includes(x => x.Details, d => d.StockDetails) .Where(x => x.WarehouseId == task.WarehouseId && x.Details.Any(v => v.OrderNo == inboundOrder.OrderNo)) .ToList(); Dt_InboundOrder? dt_InboundOrder = _inboundService.InbounOrderService.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderNo == inboundOrder.OrderNo).Includes(x => x.Details).First(); if (StockInfos.Count == 0) throw new Exception("æªæ¾å°åºåä¿¡æ¯"); var houseSyncretism = new NewHouseInboundPassBack { ApiType = "InventoryMoveController", Method = "AsrsUnPickingDatas", Parameters = new List<NewHouseInboundPassBack.Parame> { new NewHouseInboundPassBack.Parame { Value = new Parame.Syncretism { OrderNo = inboundOrder.OrderNo, Details = StockInfos.SelectMany(stockInfo => stockInfo.Details.Select(g => { //var InboundOrderde1=dt_InboundOrder.Details.FirstOrDefault; return new Parame.Syncretism.details { MoveType = 0, WareHouseCode = warehouse.WarehouseCode, ItemCode = g.MaterielCode, MoveNumber = g.StockQuantity, LotNo = g.BatchNo, WipBatch = g.BatchNo, Lpn = g.StockDetails.FirstOrDefault().LPNNO, LocationName = g.StockDetails.FirstOrDefault().OrinalLocation, TargetLocName = stockInfo.LocationCode, // æ·»å nullæ£æ¥ TargetLpn = stockInfo.PalletCode, // æ·»å nullæ£æ¥ }; })).ToList() } } } }; var authResult = AuthenticateWithWMS(); if (authResult.IsSuccess) { houseSyncretism.Context = new Dictionary<string, string> { { "Ticket", authResult.Ticket }, { "InvOrgId", authResult.InvOrgId } }; var response = HttpHelper.Post<MomRequestContent>(ReceiveWMSTaskin, houseSyncretism, "ç«åºå ¥åºæ°éåä¼ WMS"); if (!response.Success) { throw new Exception($"æä½å¤±è´¥: {response.Message ?? "æªæä¾é误信æ¯"}"); } } } _unitOfWorkManage.CommitTran(); return WebResponseContent.Instance.OK(); } @@ -1686,10 +1762,13 @@ x.LocationName == stockInfo.LocationCode && x.LPNNo == stockInfo.PalletCode) .ToList(); List<Dt_NewOutboundOrderDetail> outboundOrderDetails1 = _outboundService.NewOutboundOrderDetailService.Db.Queryable<Dt_NewOutboundOrderDetail>() List<Dt_NewOutboundOrderDetail> outboundOrderDetails1 = new List<Dt_NewOutboundOrderDetail>(); if (outboundOrderDetails == null || outboundOrderDetails.Count == 0) { outboundOrderDetails1 = _outboundService.NewOutboundOrderDetailService.Db.Queryable<Dt_NewOutboundOrderDetail>() .Where(x => x.OrderId == outboundOrder.Id) .ToList(); } if ((outboundOrderDetails == null && outboundOrderDetails1 == null) || (outboundOrderDetails.Count == 0 && outboundOrderDetails1.Count == 0)) { throw new Exception($"æªæ¾å°æç {stockInfo.PalletCode} å¨è´§ä½ {stockInfo.LocationCode} ä¸çåºåºåæç»"); @@ -1698,6 +1777,7 @@ var stockInfoDetails = stockInfo.Details.ToList(); int overCount = outboundOrder.Details.Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()); if (outboundOrderDetails == null || outboundOrderDetails.Count == 0) { foreach (var stockDetail in stockInfoDetails) @@ -1858,7 +1938,7 @@ } // è°æ¨åºåº if (outboundOrder.OrderType == 2) if (outboundOrder.OrderType == 4) { var allocate = new InventoryAllocate { @@ -2090,7 +2170,7 @@ } // è°æ¨åºåº if (outboundOrder.OrderType == 2) if (outboundOrder.OrderType == 4) { var allocate = new InventoryAllocate { @@ -2954,9 +3034,9 @@ } } // åªåå»åæ®æç»ä¸çæ°é matchedStockDetail.OutboundQuantity = 0; matchedStockDetail.StockQuantity = outDetail.OrderQuantity; matchedStockDetail.OrderNo = returnOrder.OrderNo; //matchedStockDetail.OutboundQuantity = 0; //matchedStockDetail.StockQuantity = outDetail.OrderQuantity; //matchedStockDetail.OrderNo = returnOrder.OrderNo; // æ´æ°å¹é çæç» _stockService.StockInfoDetailService.Repository.UpdateData(matchedStockDetail); } @@ -2979,9 +3059,14 @@ decimal totalOutboundQuantity = outboundOrderDetails.Sum(x => x.OrderQuantity); decimal totalStockQuantity = stockInfoDetails.Sum(x => x.StockQuantity); foreach (var detail in stockInfo.Details) { foreach (var groupeDetail in groupedDetails) { var outboundDetail = groupeDetail.First(); if (outboundDetail.MaterielCode == detail.MaterielCode) { decimal totalOrderQuantity = groupeDetail.Sum(x => x.OrderQuantity); var matchedStockDetail = stockInfoDetails.FirstOrDefault(x => x.MaterielCode == outboundDetail.MaterielCode && x.BatchNo == outboundDetail.BatchNo); if (matchedStockDetail == null) @@ -3023,38 +3108,21 @@ // æ·»å è¿åºå returnOrders.Add(returnOrder); // æ´æ°å½åæ¹æ¬¡æç»ï¼åªä¿çåºåºæ°éï¼å ¶ä½è¿åº matchedStockDetail.StockQuantity = remainingQuantity; matchedStockDetail.OutboundQuantity = outboundDetail.OrderQuantity; //matchedStockDetail.OrderNo = returnOrder.OrderNo; } else if (remainingQuantity == 0) { // å½åæ¹æ¬¡æ£å¥½åºå® matchedStockDetail.OutboundQuantity = matchedStockDetail.StockQuantity; if (matchedStockDetail.StockQuantity == totalOrderQuantity) { _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty( matchedStockDetail, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); } else { matchedStockDetail.StockQuantity = 0; _stockService.StockInfoDetailService.Repository.UpdateData(matchedStockDetail); } } else if (remainingQuantity < 0 && matchedStockDetail.StockQuantity < matchedStockDetail.OutboundQuantity) { throw new Exception($"åºåºæ°é {outboundDetail.OrderQuantity} 大äºåºåæ°é {matchedStockDetail.StockQuantity}"); } processedStockDetails.Add(matchedStockDetail); } // å¤çå ¶ä»æ¹æ¬¡çåºåæç»ï¼å ¨é¨è¿åºï¼ var otherBatchDetails = stockInfoDetails .Where(x => !processedStockDetails.Contains(x) && x.StockQuantity > 0) .Where(x => !processedStockDetails.Contains(x) && x.StockQuantity > 0 && x.OutboundQuantity == 0) .ToList(); if (returnOrders == null || returnOrders.Count == 0) { if (otherBatchDetails.Count > 0) { decimal totalOtherQuantity = otherBatchDetails.Sum(x => x.StockQuantity); @@ -3082,9 +3150,19 @@ { otherReturnOrder.LocationCode = stockInfo.LocationCode; } returnOrders.Add(otherReturnOrder); } } else { decimal totalOtherQuantity = otherBatchDetails.Sum(x => x.StockQuantity); foreach (var item in returnOrders) { item.OrderQuantity = totalOrderQuantity; item.ReceiptQuantity = totalOrderQuantity; item.Remark = $"夿¹æ¬¡è¿åºï¼å ±{otherBatchDetails.Count}ä¸ªæ¹æ¬¡"; } } // æ¹éæ´æ°å·²å¤ççåºåæç» @@ -3102,7 +3180,7 @@ // æ´æ°åºåä¸»è¡¨ç¶æ decimal returnQuantity = totalStockQuantity - totalOutboundQuantity; if (returnQuantity == 0) if (returnQuantity == 0 || stockInfo.Details.All(x => x.StockQuantity == x.OutboundQuantity)) { if (outboundOrder.System == "SMOM" && stockInfo.LocationCode != null) { @@ -3111,11 +3189,11 @@ _basicRepository.LocationInfoRepository.UpdateData(dt_LocationInfo); } // å ¨é¨åºåºï¼å é¤åºå DeleteAndMoveIntoHtStockStatus(stockInfo); foreach (var item in stockInfo.Details) { BaseDal.Db.Deleteable(item.StockDetails).ExecuteCommand(); } //DeleteAndMoveIntoHtStockStatus(stockInfo); //foreach (var item in stockInfo.Details) //{ // BaseDal.Db.Deleteable(item.StockDetails).ExecuteCommand(); //} } else if (returnQuantity > 0) { @@ -3125,10 +3203,14 @@ stockInfo.Remark = $"使éåºï¼å ±{returnOrders.Count}个è¿åºå"; _stockService.StockInfoService.Repository.UpdateData(stockInfo); } } } } _unitOfWorkManage.CommitTran(); } } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/OutboundOrderController.cs
@@ -27,6 +27,17 @@ { return Service.CancelOut(houseCancelOut); } /// <summary> /// æååºåºåæ®åæ¶ /// </summary> /// <param name="houseCancelOut"></param> /// <returns></returns> [HttpPost, Route("NewCancelOut"), AllowAnonymous] public WebResponseContent NewCancelOut([FromBody] HouseCancelOut houseCancelOut) { return Service.NewCancelOut(houseCancelOut); } [HttpPost, Route("Save"), AllowAnonymous] public WebResponseContent Save([FromBody] OutboundOrderAddDTO orderAddDTO)