´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPoutOrderDetail.vue
@@ -306,7 +306,7 @@ var keys = this.selection.map((item) => item.id); // è·åéä¸è¡çid this.http .post("api/Task/GenerateOutboundTasks", keys, "æ°æ®å¤çä¸") .post("api/Task/MESPPGenerateOutboundTasks", keys, "æ°æ®å¤çä¸") .then((x) => { if (!x.status) return this.$message.error(x.message); this.$message.success("æä½æå"); ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/123043ec-a235-4994-bbaf-1853882028ac.vsidxBinary files differ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d476c6b4-e39d-4a7e-8bec-d8ad94f443ed.vsidxBinary files differ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d50a9bd1-175b-443a-a8be-5e84630a8286.vsidxBinary files differ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d988a5f8-54ef-40e6-acc3-7fcd73682004.vsidxBinary files differ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/read.lock
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesResponseContent.cs
@@ -29,6 +29,35 @@ /// /// </summary> public string DataTime { get; set; } public static MesResponseContent Instance { get { return new MesResponseContent(); } } public MesResponseContent OK(string message = null) { BSucc = true; StrCode = "0000"; StrMsg = message == null ? "æ§è¡æå" : message; DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return this; } public MesResponseContent Error(string message = null) { BSucc = false; StrCode = "404"; StrMsg = message == null ? "æ§è¡å¤±è´¥" : message; DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return this; } public object Content { get; set; } } public class Contents { public string Contacts { get; set; } /// <summary> /// ç©æç¼ç /// </summary> @@ -61,40 +90,12 @@ /// ç©ææ¹æ¬¡ /// </summary> public string MaterialLot { get; set; } public static MesResponseContent Instance { get { return new MesResponseContent(); } } public MesResponseContent OK(string message = null) { BSucc = true; StrCode = "0000"; StrMsg = message == null ? "æ§è¡æå" : message; DataTime= DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return this; } public MesResponseContent Error(string message = null) { BSucc = false; StrCode = "404"; StrMsg = message == null ? "æ§è¡å¤±è´¥" : message; DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return this; } public ContentMes Content { get; set; } } public class ContentMes: Content { public string Contacts { get; set; } } /// <summary> /// PPåºåæ¥è¯¢ï¼åå¤MES /// </summary> public class QueryPpByWidthModelCount { } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs
@@ -4,13 +4,35 @@ using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting.Server; using WIDESEA_Common.LocationEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_IOutboundRepository; using WIDESEA_Model.Models; namespace WIDESEA_IOutboundService { public interface IMesPPOutboundOrderDetailService : IService<Dt_MesPPOutboundOrderDetail> { IMesPPOutboundOrderDetailRepository Repository { get; } //(List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetails); (List<Dt_StockInfo>, Dt_MesPPOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrderDetail mesOutboundOrder); /// <summary> /// éå®åºåºåºå(ä¿®æ¹æ°æ®) /// </summary> /// <param name="stockInfos">åºåæç»éå</param> /// <param name="outboundOrderDetails">åºåºåæç»éå</param> /// <param name="outStockLockInfos">åºåºé宿ç»éå</param> /// <param name="locationInfos">è´§ä½ç»å</param> /// <param name="locationStatus">è´§ä½ç¶æä¿®æ¹çå¼</param> /// <param name="tasks">ä»»å¡ä¿¡æ¯</param> /// <returns></returns> WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null); } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs
@@ -40,6 +40,7 @@ /// <returns></returns> (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_OutboundOrderDetail> outboundOrderDetails); /// <summary> /// éå®åºåºåºå /// </summary> ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -159,6 +159,14 @@ /// <returns></returns> WebResponseContent GenerateOutboundTasks(int[] keys); /// <summary> /// çæMESPP大å·åºåºä»»å¡ /// </summary> /// <param name="keys"></param> /// <returns></returns> WebResponseContent MESPPGenerateOutboundTasks(int[] keys); /// <summary> /// åºåºä»»å¡å®æ /// </summary> ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs
@@ -3,6 +3,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.LocationEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; @@ -22,16 +24,191 @@ private readonly IOutStockLockInfoService _outStockLockInfoService; private readonly IBasicService _basicService; private readonly IRecordService _recordService; private readonly IOutboundService _outboundService; public IMesPPOutboundOrderDetailRepository Repository => BaseDal; public MesPPOutboundOrderDetailService(IMesPPOutboundOrderDetailRepository BaseDal, IBasicRepository basicRepository, IStockService stockService, IOutStockLockInfoService outStockLockInfoService, IBasicService basicService, IRecordService recordService) : base(BaseDal) public MesPPOutboundOrderDetailService(IMesPPOutboundOrderDetailRepository BaseDal, IBasicRepository basicRepository, IOutboundService outboundService, IStockService stockService, IOutStockLockInfoService outStockLockInfoService, IBasicService basicService, IRecordService recordService) : base(BaseDal) { _basicRepository = basicRepository; _stockService = stockService; _outStockLockInfoService = outStockLockInfoService; _basicService = basicService; _recordService = recordService; _outboundService = outboundService; } /// <summary> /// åºåºåºååé åï¼æ´æ°æ°æ®åºæ°æ® /// </summary> /// <param name="stockInfos"></param> /// <param name="outboundOrderDetails"></param> /// <param name="outStockLockInfos"></param> /// <param name="locationInfos"></param> /// <param name="locationStatus"></param> /// <param name="tasks"></param> /// <returns></returns> public WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null) { try { _stockService.StockInfoService.Repository.UpdateData(stockInfos); List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); foreach (var item in stockInfos) { stockInfoDetails.AddRange(item.Details); } _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetails); BaseDal.UpdateData(outboundOrderDetails); List<Dt_OutStockLockInfo> addOutStockLockInfos = outStockLockInfos.Where(x => x.Id == 0).ToList(); if (addOutStockLockInfos != null && addOutStockLockInfos.Any()) { if (tasks != null) { addOutStockLockInfos.ForEach(x => { x.TaskNum = tasks.FirstOrDefault(v => v.PalletCode == x.PalletCode)?.TaskNum; }); } _outStockLockInfoService.Repository.AddData(addOutStockLockInfos); } List<Dt_OutStockLockInfo> updateOutStockLockInfos = outStockLockInfos.Where(x => x.Id > 0).ToList(); if (updateOutStockLockInfos != null && updateOutStockLockInfos.Any()) { _outStockLockInfoService.Repository.UpdateData(updateOutStockLockInfos); } _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, locationStatus, LocationChangeType.OutboundAssignLocation, "", tasks?.Select(x => x.TaskNum).ToList()); _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, locationStatus); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// <summary> /// /// </summary> /// <param name="outboundOrderDetails"></param> /// <returns></returns> public (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails) { if (!outboundOrderDetails.Any()) { throw new Exception($"æªæ¾å°åºåºåæç»ä¿¡æ¯"); } if (outboundOrderDetails.GroupBy(x => x.OrderId).Count() > 1) { throw new Exception($"请å¿åæ¶æä½å¤ä¸ªåæ®æç»"); } Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId).First(); List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", outboundOrderDetails.FirstOrDefault()?.CarrierCode ?? "", mesPPOutboundOrder.WarehouseId); if (!stockInfos.Any()) { throw new Exception($"æªæ¾å°å¯åé åºå"); } float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; float needQuantity = originalNeedQuantity; List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; outStocks.AddRange(autoAssignStocks); float assignQuantity = needQuantity - residueQuantity; float orderQuantity = mesPPOutboundOrder.OrderQuantity; for (int j = 0; j < autoAssignStocks.Count; j++) { float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//åºåºè®¢åæç»å·²åé æ°é float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//åºåºè¯¦æ å·²åé æ°é float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); if (palletAssignQuantity < palletOutboundQuantity)//妿åºåºè¯¦æ å·²åé æ°éå°äºæçå·²åé æ°éï¼åå¯ä»¥ç»§ç»æ·»å 该æçåºåºä¿¡æ¯ { float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) { mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); outStockLockInfos.Add(outStockLockInfo); } else { Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); outStockLockInfos.Add(outStockLockInfo); mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; break; } } } locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); return (outStocks, outboundOrderDetails, outStockLockInfos, locationInfos); } public (List<Dt_StockInfo>, Dt_MesPPOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrderDetail mesPPOutboundOrder) { List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); //float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; //float needQuantity = originalNeedQuantity; //List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", mesPPOutboundOrder.Details.FirstOrDefault()?.CarrierCode ?? "", mesPPOutboundOrder.WarehouseId); //if (!stockInfos.Any()) //{ // throw new Exception($"æªæ¾å°å¯åé åºå"); //} //List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); //mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; //outStocks.AddRange(autoAssignStocks); //float assignQuantity = needQuantity - residueQuantity; //float orderQuantity = mesPPOutboundOrder.OrderQuantity; //for (int j = 0; j < autoAssignStocks.Count; j++) //{ // float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//åºåºè®¢åæç»å·²åé æ°é // float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//åºåºè¯¦æ å·²åé æ°é // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); // if (palletAssignQuantity < palletOutboundQuantity)//妿åºåºè¯¦æ å·²åé æ°éå°äºæçå·²åé æ°éï¼åå¯ä»¥ç»§ç»æ·»å 该æçåºåºä¿¡æ¯ // { // float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) // { // mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); // outStockLockInfos.Add(outStockLockInfo); // } // else // { // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); // outStockLockInfos.Add(outStockLockInfo); // mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; // break; // } // } //} //locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); return (outStocks, mesPPOutboundOrder, outStockLockInfos, locationInfos); } } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -231,5 +231,6 @@ return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes); } } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs
@@ -27,6 +27,7 @@ using System.Diagnostics.Metrics; using System.Reflection.Metadata; using WIDESEA_DTO.Task; using WIDESEA_DTO.Stock; namespace WIDESEA_TaskInfoService { @@ -515,101 +516,97 @@ MesResponseContent modelCount = new MesResponseContent(); try { Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); if (warehouse == null) { return MesResponseContent.Instance.Error("ä»åºä¿¡æ¯æªé ç½®"); } Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First(); if (mesPPOutboundOrder != null) { return MesResponseContent.Instance.Error("å·²å卿¤ä»»å¡åå·"); } List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetail = new List<Dt_MesPPOutboundOrderDetail>(); foreach (var item in model.Carriers) { Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == item.Warehouse); if (warehouse == null) { return MesResponseContent.Instance.Error("ä»åºä¿¡æ¯æªé ç½®"); } Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == item.CarrierCode || x.WarehouseId == warehouse.WarehouseId); if (stockInfo == null) { return MesResponseContent.Instance.Error("æªæ¾å°æ¤è½½å ·ç¼å·åºå"); } Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First(); if (mesPPOutboundOrder != null) { return MesResponseContent.Instance.Error("å·²å卿¤ä»»å¡åå·"); } Dt_MesPPOutboundOrderDetail mesPPOutboundOrderDetail = new Dt_MesPPOutboundOrderDetail() { Warehouse = item.Warehouse, CarrierCode = item.CarrierCode, }; Dt_MesPPOutboundOrder mesOutboundOrder = new Dt_MesPPOutboundOrder() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), MaterialCode = model.MaterialCode, MaterialName = model.MaterialName, OrderQuantity = model.RequiredQuantity, TaskNo = model.TaskNo, Unit = model.Unit,//PPéè¦è½¬æ¢æç±³(鿱平æ¹(PNLæ°*é¢ç§¯)/宽度) Width = model.Width, TargetAddressCode = model.TargetAddressCode, OrderType = TaskTypeEnum.MesHandPickOutbound.ObjToInt(), OrderStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = new List<Dt_MesPPOutboundOrderDetail> { mesPPOutboundOrderDetail } }; //Db.InsertNav(mesOutboundOrder).Include(x=>x.Details).ExecuteCommand(); List<Dt_Task> tasks = new List<Dt_Task>(); List<Dt_StockInfo>? stockInfos = null; List<Dt_OutStockLockInfo>? outStockLockInfos = null; List<Dt_LocationInfo>? locationInfos = null; { (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesOutboundOrder); if (result.Item1 != null && result.Item1.Count > 0) { tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); result.Item3.ForEach(x => { x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); }); stockInfos = result.Item1; mesOutboundOrder = result.Item2; outStockLockInfos = result.Item3; locationInfos = result.Item4; mesPPOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); } else { throw new Exception("æ åºå"); } } tasks.ForEach(x => { x.TargetAddress = model.TargetAddressCode; }); _unitOfWorkManage.BeginTran(); int id = BaseDal.AddData(tasks); outStockLockInfos.ForEach(x => { x.OrderNo = mesOutboundOrder.TaskNo; x.OrderDetailId = id; }); //_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder); Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand(); if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) { WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); if (!content.Status) { _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(content.Message); } } _unitOfWorkManage.CommitTran(); PushTasksToWCS(tasks); mesPPOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPOutboundOrderDetail>(item)); } Dt_MesPPOutboundOrder mesOutboundOrder = new Dt_MesPPOutboundOrder() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), MaterialCode = model.MaterialCode, MaterialName = model.MaterialName, OrderQuantity = model.RequiredQuantity, TaskNo = model.TaskNo, Unit = model.Unit,//PPéè¦è½¬æ¢æç±³(鿱平æ¹(PNLæ°*é¢ç§¯)/宽度) Width = model.Width, TargetAddressCode = model.TargetAddressCode, OrderType = TaskTypeEnum.MesHandPickOutbound.ObjToInt(), OrderStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = mesPPOutboundOrderDetail }; #region //Db.InsertNav(mesOutboundOrder).Include(x=>x.Details).ExecuteCommand(); // List<Dt_Task> tasks = new List<Dt_Task>(); // List<Dt_StockInfo>? stockInfos = null; // List<Dt_OutStockLockInfo>? outStockLockInfos = null; // List<Dt_LocationInfo>? locationInfos = null; // { (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesOutboundOrder); // if (result.Item1 != null && result.Item1.Count > 0) // { // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); // result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // mesOutboundOrder = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; // mesPPOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // } // else // { // throw new Exception("æ åºå"); // } // } // tasks.ForEach(x => // { // x.TargetAddress = model.TargetAddressCode; // }); // _unitOfWorkManage.BeginTran(); // int id = BaseDal.AddData(tasks); // outStockLockInfos.ForEach(x => // { // x.OrderNo = mesOutboundOrder.TaskNo; // x.OrderDetailId = id; // }); // //_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder); // Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand(); // if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) // { // WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); // if (!content.Status) // { // _unitOfWorkManage.RollbackTran(); // return MesResponseContent.Instance.Error(content.Message); // } // } // _unitOfWorkManage.CommitTran(); // PushTasksToWCS(tasks); //} #endregion Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand(); return MesResponseContent.Instance.OK(); } catch (Exception ex) @@ -628,97 +625,87 @@ { try { Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); if (warehouse == null) { return MesResponseContent.Instance.Error("ä»åºåºç¡ä¿¡æ¯æªé ç½®"); } Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First(); if (mesPPCutOutboundOrder != null) { return MesResponseContent.Instance.Error("å·²å卿¤ä»»å¡åå·"); } List<Dt_MesPPCutOutboundOrderDetail> mesPPCutOutboundOrderDetail = new List<Dt_MesPPCutOutboundOrderDetail>(); foreach (var item in model.MaterialDetails) { Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); if (warehouse == null) { return MesResponseContent.Instance.Error("ä»åºåºç¡ä¿¡æ¯æªé ç½®"); } Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterialCode); if (materielInfo == null) { return MesResponseContent.Instance.Error($"æªæ¾å°è¯¥ç©æä¿¡æ¯"); } Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First(); if (mesPPCutOutboundOrder != null) { return MesResponseContent.Instance.Error("å·²å卿¤ä»»å¡åå·"); } Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail = new Dt_MesPPCutOutboundOrderDetail() { MaterielCode = item.MaterialCode, MaterielName = item.MaterialName, OrderQuantity = item.RequiredQuantity, Unit = item.Unit, LayerCode = item.LayerCode, Sequence = item.Sequence, TargetAddressCode = item.TargetAddressCode, Width = item.Width, }; Dt_MesPPCutOutboundOrder mesPPOutboundOrder = new Dt_MesPPCutOutboundOrder() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), TaskNo = model.TaskNo, OrderType = TaskTypeEnum.MesOutbound.ObjToInt(), OrderStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = new List<Dt_MesPPCutOutboundOrderDetail> { mesPPCutOutboundOrderDetail } }; List<Dt_Task> tasks = new List<Dt_Task>(); List<Dt_StockInfo>? stockInfos = null; List<Dt_OutStockLockInfo>? outStockLockInfos = null; List<Dt_LocationInfo>? locationInfos = null; { (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesPPOutboundOrder, mesPPCutOutboundOrderDetail); if (result.Item1 != null && result.Item1.Count > 0) { tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); result.Item3.ForEach(x => { x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); }); stockInfos = result.Item1; mesPPCutOutboundOrderDetail = result.Item2; outStockLockInfos = result.Item3; locationInfos = result.Item4; } else { throw new Exception("æ åºå"); } } tasks.ForEach(x => { x.TargetAddress = mesPPCutOutboundOrderDetail.TargetAddressCode; }); _unitOfWorkManage.BeginTran(); int id = BaseDal.AddData(tasks); outStockLockInfos.ForEach(x => { x.OrderNo = mesPPOutboundOrder.TaskNo; x.OrderDetailId = id; }); //_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder); Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand(); if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) { WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); if (!content.Status) { _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(content.Message); } } _unitOfWorkManage.CommitTran(); PushTasksToWCS(tasks, "AGV_PP"); mesPPCutOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPCutOutboundOrderDetail>(item)); } Dt_MesPPCutOutboundOrder mesPPOutboundOrder = new Dt_MesPPCutOutboundOrder() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), TaskNo = model.TaskNo, OrderType = TaskTypeEnum.MesOutbound.ObjToInt(), OrderStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = mesPPCutOutboundOrderDetail, }; Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand(); #region //List<Dt_Task> tasks = new List<Dt_Task>(); //List<Dt_StockInfo>? stockInfos = null; //List<Dt_OutStockLockInfo>? outStockLockInfos = null; //List<Dt_LocationInfo>? locationInfos = null; //{ //(List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesPPOutboundOrder, mesPPCutOutboundOrderDetail); // if (result.Item1 != null && result.Item1.Count > 0) // { // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); // result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // mesPPCutOutboundOrderDetail = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; // } // else // { // throw new Exception("æ åºå"); // } //} //tasks.ForEach(x => //{ // x.TargetAddress = mesPPCutOutboundOrderDetail.TargetAddressCode; //}); //_unitOfWorkManage.BeginTran(); //int id = BaseDal.AddData(tasks); //outStockLockInfos.ForEach(x => //{ // x.OrderNo = mesPPOutboundOrder.TaskNo; // x.OrderDetailId = id; //}); ////_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder); //Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand(); //if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) //{ // WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); // if (!content.Status) // { // _unitOfWorkManage.RollbackTran(); // return MesResponseContent.Instance.Error(content.Message); // } //} //_unitOfWorkManage.CommitTran(); //PushTasksToWCS(tasks, "AGV_PP"); #endregion return MesResponseContent.Instance.OK(); } catch (Exception ex) @@ -893,7 +880,7 @@ MesResponseContent content = new MesResponseContent(); try { //é夿æ¥è¯¢ç«åº,å¹³åº Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && @@ -906,19 +893,19 @@ var stock = stockInfo.Details.FirstOrDefault(); if (stock != null) { content.BSucc = true; content.StrCode = "0000"; content.StrMsg = "æ§è¡æå"; content.MaterialCode = stock.MaterielCode; content.Quantity = stock.StockQuantity; content.Unit = stock.Unit; content.Warehouse = warehouse.WarehouseCode; content.WarehouseName = warehouse.WarehouseName; content.CutedWidth = stock.CutedWidth; content.CarrierCode = stockInfo.PalletCode; content.MaterialLot = stock.BatchNo; content.Content = new { MaterialCode= stock.MaterielCode, Quantity = stock.StockQuantity, Unit = stock.Unit, Warehouse = warehouse.WarehouseCode, WarehouseName = warehouse.WarehouseName, CutedWidth = stock.CutedWidth, CarrierCode = stockInfo.PalletCode, MaterialLot = stock.BatchNo, }; } return content; return content.OK(); } catch (Exception ex) { @@ -934,8 +921,8 @@ MesResponseContent content = new MesResponseContent(); try { Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==bagInfoModel.WarehouseCode); if (warehouse==null) Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == bagInfoModel.WarehouseCode); if (warehouse == null) { return content.Error("æªæ¾å°ä»åºä¿¡æ¯"); } @@ -953,10 +940,10 @@ WarehouseId = warehouse.WarehouseId, BatchNo = bagInfoModel.BatchNo, MesProStatus = InOrderStatusEnum.æªå¼å§.ObjToInt(), UnPackStock=bagInfoModel.UnPackStock, Details= mesProInOrderDetails UnPackStock = bagInfoModel.UnPackStock, Details = mesProInOrderDetails }; Db.InsertNav(mesProInOrder).Include(x=>x.Details).ExecuteCommand(); Db.InsertNav(mesProInOrder).Include(x => x.Details).ExecuteCommand(); return content.OK("æ¥æ¶æå"); } catch (Exception ex) @@ -987,6 +974,7 @@ } Dt_Task exsit2 = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); } catch (Exception ex) { @@ -996,5 +984,180 @@ return MesResponseContent.Instance.OK(); } /// <summary> /// çæåºåºä»»å¡ /// </summary> /// <param name="keys">åºåºåæç»ä¸»é®</param> /// <returns></returns> public WebResponseContent MESPPGenerateOutboundTasks(int[] keys) { try { List<Dt_Task> tasks = new List<Dt_Task>(); List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>(); List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>(); List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = new List<Dt_MesPPOutboundOrderDetail>(); List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = MESPPOutboundTaskDataHandle(keys); if (result.Item2 != null && result.Item2.Count > 0) { stockInfos.AddRange(result.Item2); } if (result.Item3 != null && result.Item3.Count > 0) { outboundOrderDetails.AddRange(result.Item3); } if (result.Item4 != null && result.Item4.Count > 0) { outStockLockInfos.AddRange(result.Item4); } if (result.Item5 != null && result.Item5.Count > 0) { locationInfos.AddRange(result.Item5); } if (result.Item1 != null && result.Item1.Count > 0) { tasks.AddRange(result.Item1); } WebResponseContent content = MESPPGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos); return content; } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } /// <summary> /// åºåºä»»å¡æ°æ®å¤ç /// </summary> /// <param name="orderDetailId"></param> /// <param name="stockSelectViews"></param> /// <returns></returns> /// <exception cref="Exception"></exception> public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) MESPPOutboundTaskDataHandle(int[] keys) { List<Dt_Task> tasks = new List<Dt_Task>(); //List<Dt_MesPPOutboundOrderDetail> outboundOrderDetailss = _outboundService.MesPPOutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.Id)); //List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList(); //List<Dt_MesPPOutboundOrder> mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => keys.Contains(10)).ToList(); Dt_MesPPOutboundOrderDetail outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).First(); Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.Id == 10).First(); //if (outboundOrderDetails == null || outboundOrderDetails.Count == 0) //{ // throw new Exception("æªæ¾å°åºåºåæç»ä¿¡æ¯"); //} //if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null) //{ // throw new Exception("æéåºåºåæç»åå¨åºåºä¸æå·²å®æ"); //} List<Dt_StockInfo>? stockInfos = null; List<Dt_MesPPOutboundOrderDetail>? orderDetails = null; List<Dt_OutStockLockInfo>? outStockLockInfos = null; List<Dt_LocationInfo>? locationInfos = null; //if (outboundOrderDetails == OrderDetailStatusEnum.New.ObjToInt()) { //(List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesPPOutboundOrder); //(List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); (List<Dt_StockInfo>, Dt_MesPPOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result1 = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); //if (result.Item1 != null && result.Item1.Count > 0) //{ // Dt_MesPPOutboundOrder outboundOrder = _outboundService.MesPPOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); // TaskTypeEnum typeEnum = outboundOrder.OrderType switch // { // (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound, // (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate, // (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality, // _ => new TaskTypeEnum() // }; // tasks = GetTasks(result.Item1, typeEnum); // result.Item2.ForEach(x => // { // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // }); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // orderDetails = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; //} //else //{ // throw new Exception("æ åºå"); //} } //else //{ // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId, OutLockStockStatusEnum.å·²åé ); // if (stockLockInfos != null && stockLockInfos.Count > 0) // { // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); // tasks = GetTasks(stocks); // } //} return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos); } /// <summary> /// çæåºåºä»»å¡åæ°æ®æ´æ°å°æ°æ®åº /// </summary> /// <param name="tasks"></param> /// <param name="stockInfos"></param> /// <param name="outboundOrderDetails"></param> /// <param name="outStockLockInfos"></param> /// <param name="locationInfos"></param> /// <returns></returns> public WebResponseContent MESPPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null) { try { _unitOfWorkManage.BeginTran(); BaseDal.AddData(tasks); if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) { stockInfos.ForEach(x => { x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); }); WebResponseContent content = _outboundService.MesPPOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); if (!content.Status) { _unitOfWorkManage.RollbackTran(); return content; } } else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0) { outboundOrderDetails.ForEach(x => { x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); }); _outboundService.MesPPOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails); } _unitOfWorkManage.CommitTran(); PushTasksToWCS(tasks); return WebResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -543,5 +543,186 @@ return WebResponseContent.Instance.Error(ex.Message); } } #region ///// <summary> ///// çæåºåºä»»å¡ ///// </summary> ///// <param name="keys">åºåºåæç»ä¸»é®</param> ///// <returns></returns> //public WebResponseContent MESPPGenerateOutboundTasks(int[] keys) //{ // try // { // List<Dt_Task> tasks = new List<Dt_Task>(); // List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>(); // List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>(); // List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = new List<Dt_MesPPOutboundOrderDetail>(); // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); // (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = MESPPOutboundTaskDataHandle(keys); // if (result.Item2 != null && result.Item2.Count > 0) // { // stockInfos.AddRange(result.Item2); // } // if (result.Item3 != null && result.Item3.Count > 0) // { // outboundOrderDetails.AddRange(result.Item3); // } // if (result.Item4 != null && result.Item4.Count > 0) // { // outStockLockInfos.AddRange(result.Item4); // } // if (result.Item5 != null && result.Item5.Count > 0) // { // locationInfos.AddRange(result.Item5); // } // if (result.Item1 != null && result.Item1.Count > 0) // { // tasks.AddRange(result.Item1); // } // WebResponseContent content = MESPPGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos); // return content; // } // catch (Exception ex) // { // _unitOfWorkManage.RollbackTran(); // return WebResponseContent.Instance.Error(ex.Message); // } //} ///// <summary> ///// åºåºä»»å¡æ°æ®å¤ç ///// </summary> ///// <param name="orderDetailId"></param> ///// <param name="stockSelectViews"></param> ///// <returns></returns> ///// <exception cref="Exception"></exception> //public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) MESPPOutboundTaskDataHandle(int[] keys) //{ // List<Dt_Task> tasks = new List<Dt_Task>(); // List<Dt_MesPPOutboundOrderDetail> outboundOrderDetailss = _outboundService.MesPPOutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.Id)); // List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList(); // if (outboundOrderDetails == null || outboundOrderDetails.Count == 0) // { // throw new Exception("æªæ¾å°åºåºåæç»ä¿¡æ¯"); // } // if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null) // { // throw new Exception("æéåºåºåæç»åå¨åºåºä¸æå·²å®æ"); // } // List<Dt_StockInfo>? stockInfos = null; // List<Dt_MesPPOutboundOrderDetail>? orderDetails = null; // List<Dt_OutStockLockInfo>? outStockLockInfos = null; // List<Dt_LocationInfo>? locationInfos = null; // //if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) // { // (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); // if (result.Item1 != null && result.Item1.Count > 0) // { // Dt_MesPPOutboundOrder outboundOrder = _outboundService.MesPPOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); // TaskTypeEnum typeEnum = outboundOrder.OrderType switch // { // (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound, // (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate, // (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality, // _ => new TaskTypeEnum() // }; // tasks = GetTasks(result.Item1, typeEnum); // result.Item2.ForEach(x => // { // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // }); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // orderDetails = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; // } // else // { // throw new Exception("æ åºå"); // } // } // //else // //{ // // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId, OutLockStockStatusEnum.å·²åé ); // // if (stockLockInfos != null && stockLockInfos.Count > 0) // // { // // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); // // tasks = GetTasks(stocks); // // } // //} // return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos); //} ///// <summary> ///// çæåºåºä»»å¡åæ°æ®æ´æ°å°æ°æ®åº ///// </summary> ///// <param name="tasks"></param> ///// <param name="stockInfos"></param> ///// <param name="outboundOrderDetails"></param> ///// <param name="outStockLockInfos"></param> ///// <param name="locationInfos"></param> ///// <returns></returns> //public WebResponseContent MESPPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null) //{ // try // { // _unitOfWorkManage.BeginTran(); // BaseDal.AddData(tasks); // if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) // { // stockInfos.ForEach(x => // { // x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); // }); // WebResponseContent content = _outboundService.MesPPOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); // if (!content.Status) // { // _unitOfWorkManage.RollbackTran(); // return content; // } // } // else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0) // { // outboundOrderDetails.ForEach(x => // { // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // }); // _outboundService.MesPPOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails); // } // _unitOfWorkManage.CommitTran(); // PushTasksToWCS(tasks); // return WebResponseContent.Instance.OK(); // } // catch (Exception ex) // { // _unitOfWorkManage.RollbackTran(); // return WebResponseContent.Instance.Error(ex.Message); // } //} #endregion } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -176,7 +176,16 @@ { return Service.GenerateOutboundTasks(keys); } /// <summary> /// çæMESPPä»å¤§å·åºåºä»»å¡ /// </summary> /// <param name="keys"></param> /// <returns></returns> [HttpPost, HttpGet, Route("MESPPGenerateOutboundTasks"), AllowAnonymous] public WebResponseContent MESPPGenerateOutboundTasks([FromBody] int[] keys) { return Service.MESPPGenerateOutboundTasks(keys); } /// <summary> /// åºåºä»»å¡å®æ /// </summary> ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -44,7 +44,7 @@ builder.Services.AddWebSocketSetup(); builder.Services.AddSqlsugarSetup();//SqlSugar å¯å¨æå¡ builder.Services.AddDbSetup();//Db å¯å¨æå¡ builder.Services.AddInitializationHostServiceSetup();//åºç¨åå§åæå¡æ³¨å ¥ //builder.Services.AddInitializationHostServiceSetup();//åºç¨åå§åæå¡æ³¨å ¥ builder.Services.AddHostedService<PermissionDataHostService>();//åºç¨åå§åæå¡æ³¨å ¥ builder.Services.AddAutoMapperSetup();