From f27080d8476a177b809045d1f036a24dac782ba5 Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期四, 22 一月 2026 15:45:01 +0800
Subject: [PATCH] 1
---
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 171 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 125 insertions(+), 46 deletions(-)
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
index ed2bd99..4a091c0 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -1004,7 +1004,7 @@
}
if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 0 && inboundOrder.System.Equals("SMOM"))
{
-
+ //SendInboundInfoToWMS(task, inboundOrder, stockInfo);
}
else if (inboundOrder.OrderStatus == InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType == 2 && inboundOrder.System.Equals("SMOM"))
{
@@ -1949,31 +1949,32 @@
if (inboundOrder == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
- Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail();
- foreach (var detail in stockInfo.Details)
+ List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
+ foreach(var detail in stockInfo.Details)
{
- outboundOrderDetail = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
- .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == detail.BatchNo)
- .First();
- if (outboundOrderDetail != null) break;
-
+ Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
+ .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == detail.BatchNo).First();
+ outboundOrderDetails.Add(outboundOrderDetail);
}
- if (outboundOrderDetail.LocationName != null && outboundOrderDetail.LocationName != "")
+ for(var i = 0; i<outboundOrderDetails.Count; i++)
{
- foreach (var detail in stockInfo.Details)
+ if (outboundOrderDetails[i].LocationName != null && outboundOrderDetails[i].LocationName != "")
{
- outboundOrderDetail = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
- .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == detail.BatchNo && x.LocationName == stockInfo.LocationCode)
- .First();
- if (outboundOrderDetail != null) break;
+ foreach (var detail in stockInfo.Details)
+ {
+ Dt_OutboundOrderDetail newOutboundOrderDetail = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrderDetail>()
+ .Where(x => x.OrderId == inboundOrder.Id && x.BatchNo == detail.BatchNo && x.LocationName == stockInfo.LocationCode)
+ .First();
+ outboundOrderDetails[i] = newOutboundOrderDetail;
+ }
}
}
- if (outboundOrderDetail == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
- DWANDYSUpdateOutboundOrderDetails(stockInfo, inboundOrder, ref outboundOrderDetail);
+ if (outboundOrderDetails == null) return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟淇℃伅");
+ DWANDYSUpdateOutboundOrderDetails(stockInfo, inboundOrder, ref outboundOrderDetails);
// 3. 鎵ц鏍稿績鍑哄簱閫昏緫
- return ExecuteOutboundLogic(task, stockInfo, locationInfo, outboundOrderDetail, inboundOrder);
+ return DWANDYSExecuteOutboundLogic(task, stockInfo, locationInfo, outboundOrderDetails, inboundOrder);
}
else
{
@@ -2068,15 +2069,10 @@
_outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
// 鏇存柊搴撳瓨鐘舵�� 鍥炲簱鍗�
- if (locationInfo.RoadwayNo.Contains("DW") || locationInfo.RoadwayNo.Contains("YS"))
- {
- AddDWANDYSRetrueOrder(stockInfo, inboundOrder);
- }
- else
- {
- AddRetrueOrder(stockInfo, inboundOrder);
- }
+ AddRetrueOrder(stockInfo, inboundOrder);
+
+
// 鍖哄垎鍗曟嵁鏁版嵁鏉ユ簮鏇存柊璐т綅鐘舵��
if (inboundOrder.System == null)
{
@@ -2134,6 +2130,82 @@
throw;
}
}
+
+ private WebResponseContent DWANDYSExecuteOutboundLogic(Dt_Task task, Dt_StockInfo stockInfo,
+ Dt_LocationInfo locationInfo, List<Dt_OutboundOrderDetail> outboundOrderDetails, Dt_OutboundOrder inboundOrder)
+ {
+ try
+ {
+ _unitOfWorkManage.BeginTran();
+ ///鏇存柊鍑哄簱鍗�
+ _outboundService.OutboundOrderService.Repository.UpdateData(inboundOrder);
+ // 鏇存柊鍑哄簱璁㈠崟璇︽儏
+ _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
+
+ // 鏇存柊搴撳瓨鐘舵�� 鍥炲簱鍗�
+ if (locationInfo.RoadwayNo.Contains("DW") || locationInfo.RoadwayNo.Contains("YS"))
+ {
+ AddDWANDYSRetrueOrder(stockInfo, inboundOrder);
+ }
+
+ // 鍖哄垎鍗曟嵁鏁版嵁鏉ユ簮鏇存柊璐т綅鐘舵��
+ if (inboundOrder.System == null)
+ {
+ return WebResponseContent.Instance.Error("鍑哄簱鍗曟暟鎹簮涓虹┖");
+ }
+ if (!inboundOrder.System.Equals("SMOM"))
+ {
+ UpdateLocationStatus(locationInfo);
+ }
+ // 澶勭悊浠诲姟瀹屾垚
+ CompleteTask(task);
+
+ // 娣诲姞鐘舵�佸彉鏇磋褰�
+ AddStatusChangeRecord(task, stockInfo, locationInfo);
+
+ // 鏍规嵁璁㈠崟绫诲瀷澶勭悊涓嶅悓閫昏緫
+
+ var outboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>()
+ .Where(x => x.OrderNo == inboundOrder.OrderNo).First();
+ foreach(var outboundOrderDetail in outboundOrderDetails)
+ {
+ var outDetail = _outboundService.OutboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>()
+ .Where(x => x.OrderId == outboundOrder.Id && x.BatchNo == outboundOrderDetail.BatchNo).First();
+ string path = "http://fr.mankun.com:8080/webroot/decision/view/report?viewlet=fr-report\\SMOM/Product/Produce/OutBoundDetileReport.cpt&op=write&format=pdf";
+ string fullPath = AppDomain.CurrentDomain.BaseDirectory;
+ var url = Path.Combine(fullPath, "wwwroot", "Reports");
+ string savePath = Path.Combine(url, "鏈鍑哄簱.pdf");
+
+
+ if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt() && inboundOrder.System.Equals("ERP"))
+ {
+ FeedBackOutERP(outboundOrder.OrderNo, outboundOrderDetail.LinId);
+ DownloadReport(path, savePath, outboundOrderDetail.Id);
+ }
+ ///鍗曟嵁瀹屾垚鎺ㄩ�丼MOM绯荤粺
+ if (outboundOrder.OrderStatus == OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && inboundOrder.System.Equals("SMOM"))
+ {
+ var stockInfoDetail = stockInfo.Details.FirstOrDefault();
+ ProcessNormalOutbound(task, stockInfo, outboundOrder, outDetail);
+ //DownloadReport(path, savePath, outboundOrderDetails.Id);
+ //printTest(savePath);
+ //SendNormalOutboundToWMS(task, outboundOrder, stockInfoDetail, outDetail);
+ }
+
+ if (outboundOrder.OrderType == 240) // 鐩樼偣鍑哄簱
+ {
+ // 鐩樼偣鍑哄簱鐗规畩澶勭悊閫昏緫
+ }
+ }
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch
+ {
+ _unitOfWorkManage.RollbackTran();
+ throw;
+ }
+ }
private void UpdateOutboundOrderDetails(Dt_StockInfo stockInfo, Dt_OutboundOrder inboundOrder, ref Dt_OutboundOrderDetail inboundOrderDetail)
{
int overCount = inboundOrder.Details.Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
@@ -2163,36 +2235,43 @@
}
//浣庢俯銆佽嵂姘�
- private void DWANDYSUpdateOutboundOrderDetails(Dt_StockInfo stockInfo, Dt_OutboundOrder inboundOrder, ref Dt_OutboundOrderDetail inboundOrderDetail)
+ private void DWANDYSUpdateOutboundOrderDetails(Dt_StockInfo stockInfo, Dt_OutboundOrder inboundOrder, ref List<Dt_OutboundOrderDetail> inboundOrderDetails)
{
- string BatchNo = inboundOrderDetail.BatchNo;
- int overCount = inboundOrder.Details.Where(x => x.BatchNo == BatchNo).Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
- //inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == stockInfo.Details.FirstOrDefault()?.BatchNo&&x.LPNNo==stockInfo.PalletCode);
-
- foreach (var item in stockInfo.Details)
+ List<Dt_OutboundOrderDetail> newOutboundOrderDetails = inboundOrderDetails;
+ int overCount = inboundOrder.Details.Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
+ foreach (var newOutboundOrderDetail in newOutboundOrderDetails)
{
- if (inboundOrderDetail == null) continue;
+ string BatchNo = newOutboundOrderDetail.BatchNo;
+ //inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BatchNo == stockInfo.Details.FirstOrDefault()?.BatchNo&&x.LPNNo==stockInfo.PalletCode);
- if (inboundOrderDetail.BatchNo == item.BatchNo)
+ foreach (var item in stockInfo.Details)
{
- inboundOrderDetail.OverOutQuantity += item.OutboundQuantity;
+ if (newOutboundOrderDetail == null) continue;
- if (inboundOrderDetail.OverOutQuantity == inboundOrderDetail.OrderQuantity)
+ if (newOutboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) continue;
+
+ if (newOutboundOrderDetail.BatchNo == item.BatchNo)
{
- inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
- overCount++;
- }
- else if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
- {
- inboundOrderDetail.OrderDetailStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
- inboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
+ newOutboundOrderDetail.OverOutQuantity += item.OutboundQuantity;
+
+ if (newOutboundOrderDetail.OverOutQuantity == newOutboundOrderDetail.OrderQuantity)
+ {
+ newOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
+ overCount++;
+ }
+ else if (newOutboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
+ {
+ newOutboundOrderDetail.OrderDetailStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
+ inboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
+ }
}
}
+ if (inboundOrder.Details.Count() == overCount)
+ {
+ inboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+ }
}
- if (inboundOrder.Details.Count == overCount)
- {
- inboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
- }
+
}
private void DeleteAndMoveIntoHtStockStatus(Dt_StockInfo stockInfo)
--
Gitblit v1.9.3