From 9a886d711d8b21adc335fdf8c39350584c7ba6fd Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 14 十月 2025 02:12:14 +0800
Subject: [PATCH] 更新代码,取消MES出库单号同步标识,平库转立库功能,寄售周期判断取消,精品标识等
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 172 insertions(+), 5 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index 30a4c2a..e568966 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -185,7 +185,7 @@
/// <param name="ProOutNo">鍑哄簱璁㈠崟鍙�</param>
/// <param name="StationCode">绔欏彴鍦板潃</param>
/// <returns></returns>
- public async Task<WebResponseContent> OutProductTask(int[] keys, string StationCode, int Grade)
+ public async Task<WebResponseContent> OutProductTask(int[] keys, string StationCode, int Grade,bool isFineWorks=false)
{
WebResponseContent content = new WebResponseContent();
try
@@ -207,7 +207,7 @@
List<Dt_OutProStockInfo> outProStockInfos = new List<Dt_OutProStockInfo>();
List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
(List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ProOutOrderDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) result =
- OutProductTaskDataHandle(_ProOutOrderDetails);
+ OutProductTaskDataHandle(_ProOutOrderDetails, isFineWorks);
if (result.Item2 != null && result.Item2.Count > 0)
{
proStockInfos.AddRange(result.Item2);
@@ -238,6 +238,85 @@
else
{
if (task.Grade==0 || task.Grade==1)
+ {
+ x.Grade = 1;
+ }
+ else
+ {
+ x.Grade = task.Grade - 1;
+ }
+ }
+ });
+ tasks.AddRange(result.Item1);
+ }
+ //澶勭悊鍑哄簱鏁版嵁
+ return await Task.FromResult(GenerateOutboundTaskDataUpdate(tasks, proStockInfos, proOutOrderDetails, outProStockInfos, locationInfos));
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 鐢熸垚鎴愬搧鎶ュ簾浠诲姟
+ /// </summary>
+ /// <param name="ProOutNo">鍑哄簱璁㈠崟鍙�</param>
+ /// <param name="StationCode">绔欏彴鍦板潃</param>
+ /// <returns></returns>
+ public async Task<WebResponseContent> OutProScrapTask(int[] keys, string StationCode, int Grade)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ if (StationCode.IsNullOrEmpty())
+ {
+ return await Task.FromResult(content.Error("鍐呴儴閿欒"));
+ }
+ //鑾峰彇鎴愬搧鎶ュ簾璁㈠崟
+ List<Dt_ErpProScrapSheetDetail> _ProOutOrderDetails = await _outboundRepository.ErpProScrapDetailRepository.QueryDataAsync(x => keys.Contains(x.Id) && x.ScrapProDetailStatus == OutOrderStatusEnum.鏈紑濮�.ObjToInt());
+ if (_ProOutOrderDetails.Count <= 0)
+ {
+ return await Task.FromResult(content.Error("鍕鹃�夎鍗曟槑缁嗙姸鎬佷负鍑哄簱涓�"));
+ }
+ List<Dt_Task> tasks = new List<Dt_Task>();
+ List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>();
+ List<Dt_ErpProScrapSheetDetail> proOutOrderDetails = new List<Dt_ErpProScrapSheetDetail>();
+ List<Dt_OutProStockInfo> outProStockInfos = new List<Dt_OutProStockInfo>();
+ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+ (List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ErpProScrapSheetDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) result =
+ OutProScrapTaskDataHandle(_ProOutOrderDetails);
+ if (result.Item2 != null && result.Item2.Count > 0)
+ {
+ proStockInfos.AddRange(result.Item2);
+ }
+ if (result.Item3 != null && result.Item3.Count > 0)
+ {
+ proOutOrderDetails.AddRange(result.Item3);
+ }
+ if (result.Item4 != null && result.Item4.Count > 0)
+ {
+ outProStockInfos.AddRange(result.Item4);
+ }
+ if (result.Item5 != null && result.Item5.Count > 0)
+ {
+ locationInfos.AddRange(result.Item5);
+ }
+ if (result.Item1 != null && result.Item1.Count > 0)
+ {
+ Dt_Task? task = BaseDal.QueryData(x => x.TaskType == TaskTypeEnum.OutProScrap.ObjToInt()).OrderBy(x => x.Grade).FirstOrDefault();
+ //鏇存柊鍑哄簱鐩殑浣嶇疆
+ result.Item1.ForEach(x =>
+ {
+ x.TargetAddress = StationCode;
+ if (Grade == 1 || task == null)
+ {
+ x.Grade = 127;
+ }
+ else
+ {
+ if (task.Grade == 0 || task.Grade == 1)
{
x.Grade = 1;
}
@@ -505,10 +584,55 @@
}
/// <summary>
+ /// 澶勭悊鍑哄簱鏁版嵁
+ /// </summary>
+ public WebResponseContent GenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_ProStockInfo>? proStockInfos = null, List<Dt_ErpProScrapSheetDetail>? scrapSheetDetails = null, List<Dt_OutProStockInfo>? outProStockInfos = null, List<Dt_LocationInfo>? locationInfos = null)
+ {
+ try
+ {
+ _unitOfWorkManage.BeginTran();
+ //鑾峰彇鎴愬搧鍑哄簱鍗曚富琛�
+ Dt_ErpProScrapSheet scrapSheet = _outboundRepository.ErpProScrapSheetRepository.QueryFirst(x => x.Id == scrapSheetDetails.FirstOrDefault().ProScrapSheetId);
+ BaseDal.AddData(tasks);
+ if (proStockInfos != null && proStockInfos.Count > 0 && scrapSheetDetails != null && scrapSheetDetails.Count > 0 && outProStockInfos != null && outProStockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
+ {
+ proStockInfos.ForEach(x =>
+ {
+ x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+ });
+ WebResponseContent content = _outboundService.ErpProScrapSheetDetailService.LockOutboundStockDataUpdate(proStockInfos, scrapSheetDetails, outProStockInfos, locationInfos, tasks: tasks);
+
+ if (!content.Status)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return content;
+ }
+ }
+ else if (scrapSheetDetails != null && scrapSheetDetails.Count > 0)
+ {
+ scrapSheetDetails.ForEach(x =>
+ {
+ x.ScrapProDetailStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt();
+ });
+
+ _outboundRepository.ErpProScrapDetailRepository.UpdateData(scrapSheetDetails);
+ }
+ _unitOfWorkManage.CommitTran();
+ PushTasksToWCS(tasks);
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+
+ }
+ /// <summary>
/// 澶勭悊鎴愬搧鍑哄簱鏁版嵁
/// </summary>
/// <returns></returns>
- public (List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ProOutOrderDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) OutProductTaskDataHandle(List<Dt_ProOutOrderDetail> proOutOrderDetails)
+ public (List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ProOutOrderDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) OutProductTaskDataHandle(List<Dt_ProOutOrderDetail> proOutOrderDetails, bool isFineWorks = false)
{
List<Dt_Task> tasks = new List<Dt_Task>();
List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>();
@@ -516,7 +640,7 @@
List<Dt_OutProStockInfo> outProStockInfos=new List<Dt_OutProStockInfo>();
List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
//鍒嗛厤搴撳瓨
- (List<Dt_ProStockInfo>, List<Dt_ProOutOrderDetail>, List<Dt_OutProStockInfo>, List<Dt_LocationInfo>) result = _outboundService.ProOutOrderDetailService.AssignProStockOut(proOutOrderDetails);
+ (List<Dt_ProStockInfo>, List<Dt_ProOutOrderDetail>, List<Dt_OutProStockInfo>, List<Dt_LocationInfo>) result = _outboundService.ProOutOrderDetailService.AssignProStockOut(proOutOrderDetails, isFineWorks);
if (result.Item1!=null&&result.Item1.Count>0)
{
//鑾峰彇鎴愬搧鍗�
@@ -551,6 +675,46 @@
throw new Exception("鏃犲彲鍒嗛厤搴撳瓨");
}
return (tasks, proStockInfos, proOutOrderDetails, outProStockInfos, locationInfos);
+ }
+ public (List<Dt_Task>, List<Dt_ProStockInfo>?, List<Dt_ErpProScrapSheetDetail>?, List<Dt_OutProStockInfo>?, List<Dt_LocationInfo>?) OutProScrapTaskDataHandle(List<Dt_ErpProScrapSheetDetail> scrapSheetDetails)
+ {
+ List<Dt_Task> tasks = new List<Dt_Task>();
+ List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>();
+ List<Dt_ErpProScrapSheetDetail> assignOutOrderDetails = new List<Dt_ErpProScrapSheetDetail>();
+ List<Dt_OutProStockInfo> outProStockInfos = new List<Dt_OutProStockInfo>();
+ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+
+ //鑾峰彇鎶ュ簾鍗�
+ Dt_ErpProScrapSheet scrapSheet = _outboundRepository.ErpProScrapSheetRepository.QueryFirst(x => x.Id == scrapSheetDetails.FirstOrDefault().ProScrapSheetId);
+ if (scrapSheet == null)
+ {
+ throw new Exception("鏈壘鍒版垚鍝佹姤搴熻鍗�");
+ }
+ //鍒嗛厤搴撳瓨
+ (List<Dt_ProStockInfo>, List<Dt_ErpProScrapSheetDetail>, List<Dt_OutProStockInfo>, List<Dt_LocationInfo>) result = _outboundService.ErpProScrapSheetDetailService.AssignProStockOut(scrapSheetDetails, scrapSheet);
+ if (result.Item1 != null && result.Item1.Count > 0)
+ {
+ TaskTypeEnum typeEnum = TaskTypeEnum.OutProScrap;
+ tasks = GetTasks(result.Item1, typeEnum);
+ result.Item2.ForEach(x =>
+ {
+ x.ScrapProDetailStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt();
+ });
+ result.Item3.ForEach(x =>
+ {
+ x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
+ });
+ tasks.ForEach(x => x.OrderNo = scrapSheet.ProScrapSheetOrderNo);
+ proStockInfos = result.Item1;
+ assignOutOrderDetails = result.Item2;
+ outProStockInfos = result.Item3;
+ locationInfos = result.Item4;
+ }
+ else
+ {
+ throw new Exception("鏃犲彲鍒嗛厤搴撳瓨");
+ }
+ return (tasks, proStockInfos, assignOutOrderDetails, outProStockInfos, locationInfos);
}
/// <summary>
/// 鐢熸垚浠诲姟
@@ -590,7 +754,8 @@
WarehouseId = stockInfo.WarehouseId,
GroupId= groupId,
MaterielCode = stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).FirstOrDefault()?.ProductCode,
- Quantity = (float)stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).Sum(x=> x.StockPcsQty)
+ Quantity = (float)stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).Sum(x=> x.StockPcsQty),
+ BatchNo = stockInfo.proStockInfoDetails.Where(x => x.ProStockId == stockInfo.Id).FirstOrDefault()?.LotNumber
};
tasks.Add(task);
}
@@ -636,6 +801,7 @@
{
task.MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
task.Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+ task.BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
}
if (stockInfo.StockLength>0)
{
@@ -860,6 +1026,7 @@
StockQuantity -=(decimal)assignAmount;
OrderDetail.OverOutQuantity += assignAmount;
OrderDetail.LockQuantity += assignAmount;
+ v.StockQuantity = (float)Math.Round(StockQuantity,3);
upstockDetails.Add(v);
}
else
--
Gitblit v1.9.3