From 1b8daa902b075c7cedee7bbcc13b914b7a5b4ad4 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 03 十一月 2025 11:48:49 +0800
Subject: [PATCH] 优化盘点逻辑
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs | 70 ++++++++++++++++++++++------------
1 files changed, 45 insertions(+), 25 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
index c28476c..396f697 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -60,6 +60,11 @@
_materielInfoService = materielInfoService;
_locationInfoService = locationInfoService;
}
+ public override WebResponseContent UpdateData(SaveModel saveModel)
+ {
+ return base.UpdateData(saveModel);
+ }
+
#region 鍒涘缓鍑哄簱鍗�
/// <summary>
/// 鍒涘缓鍑哄簱鍗�
@@ -350,7 +355,7 @@
#region 鏁翠欢浼樺厛鍒嗛厤澶т欢搴�,璁″垝搴撳瓨,娣诲姞鍑哄簱浠诲姟
foreach (var item in dt_InventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ))
{
- if (xs <= 0) break;
+ if (xs <= 0 || item.AvailableQuantity <= 0) break;
decimal outqty = 0;
while (item.AvailableQuantity > 0 && xs > 0)
{
@@ -431,7 +436,9 @@
if (orderDetailLK != null)
{
#region 娣诲姞鍑哄簱浠诲姟銆佷慨鏀瑰簱瀛樹俊鎭�
- Dt_InventoryInfo inventoryInfo = dt_InventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
+ Dt_InventoryInfo? inventoryInfo = dt_InventoryInfos.FirstOrDefault(x => x.WarehouseCode == WareCodeLK);
+ if (inventoryInfo == null)
+ throw new Exception($"鏈壘鍒扮墿鏂欑紪鍙枫�恵detail.goods_no}銆戠墿鏂欐壒娆°�恵detail.batch_num}銆戝湪绔嬪簱涓殑搴撳瓨淇℃伅锛涙墍闇�鏁伴噺銆恵orderDetailLK.Order_qty}銆戣琛ヨ揣");
inventoryInfo.AvailableQuantity -= orderDetailLK.Order_qty;
inventoryInfo.OutboundQuantity += orderDetailLK.Order_qty;
Dt_SupplyTask supplyTask = new Dt_SupplyTask()
@@ -464,22 +471,29 @@
//_supplyTaskService.AddData(supplyTasks);
}
}
- _unitOfWorkManage.BeginTran();
- _supplyTaskService.AddData(supplyTasks);
- _inventory_BatchServices.UpdateData(batchesUp);
- _inventoryInfoService.UpdateData(inventoryInfosUp);
- if (entityOrder.Details.Count > 0)
- BaseDal.Db.CopyNew().InsertNav(entityOrder).Include(x => x.Details).ExecuteCommand();
- if (entityOrderLK.Details.Count > 0)
- BaseDal.Db.CopyNew().InsertNav(entityOrderLK).Include(x => x.Details).ExecuteCommand();
- _unitOfWorkManage.CommitTran();
+ try
+ {
+ _unitOfWorkManage.BeginTran();
+ _supplyTaskService.AddData(supplyTasks);
+ _inventory_BatchServices.UpdateData(batchesUp);
+ _inventoryInfoService.UpdateData(inventoryInfosUp);
+ if (entityOrder.Details.Count > 0)
+ BaseDal.Db.CopyNew().InsertNav(entityOrder).Include(x => x.Details).ExecuteCommand();
+ if (entityOrderLK.Details.Count > 0)
+ BaseDal.Db.CopyNew().InsertNav(entityOrderLK).Include(x => x.Details).ExecuteCommand();
+ _unitOfWorkManage.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ }
#endregion
}
webResponseContent.OK();
}
catch (Exception ex)
{
- _unitOfWorkManage.RollbackTran();
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, (outorder.order_type == "3" ? "鍏ュ簱閫�璐�" : "姝e父鍑哄簱") + $"锛氬崟鍙枫�恵outorder.order_no}銆�", ex.Message);
webResponseContent.Error(ex.Message);
}
return webResponseContent;
@@ -508,7 +522,7 @@
{
//鎵惧簱瀛樻壒娆′俊鎭�
Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
- var Qty = Math.Abs(inventory_Batch.StockQuantity - inventory_Batch.SupplyQuantity);
+ var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
if (Qty != item.order_qty) throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
//鎵炬墍鏈夊簱瀛�
List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
@@ -532,7 +546,7 @@
Creater = App.User.UserName,
LocationCode = inventoryInfo.LocationCode,
OrderNo = order.order_no,
- StockQuantity = Math.Abs(inventoryInfo.StockQuantity - inventoryInfo.SupplyQuantity),
+ StockQuantity = Math.Abs(inventoryInfo.SupplyQuantity),
SupplyQuantity = 0,
Remark = "鐩樹簭鍏ュ簱"
};
@@ -540,11 +554,13 @@
supplyTask_Hties.Add(supplyTask_Hty);
}
#endregion
- inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity;
+ inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
+ inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
inventoryInfo.SupplyQuantity = 0;
inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
}
- inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity;
+ inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+ inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
inventory_Batch.SupplyQuantity = 0;
infosUp.AddRange(inventoryInfos);
batchesUp.Add(inventory_Batch);
@@ -595,16 +611,16 @@
{
//鎵惧簱瀛樻壒娆′俊鎭�
Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
- var Qty = Math.Abs(inventory_Batch.StockQuantity - inventory_Batch.SupplyQuantity);
+ var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
if (Qty != item.order_qty) throw new Exception($"鐩樹簭鍑哄簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樹簭鏁伴噺鏈夎");
//鎵炬墍鏈夊簱瀛�
List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
//鑾峰彇绔嬪簱鐩樼偣宸紓鏁�.銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘��
var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
- var LkQty = Math.Abs(inventoryLK.StockQuantity - inventoryLK.SupplyQuantity);
+ var LkQty = Math.Abs(inventoryLK.SupplyQuantity);
//鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
- var DJQty = Math.Abs(inventoryDJ.Sum(x => x.StockQuantity) - inventoryDJ.Sum(x => x.SupplyQuantity));
+ var DJQty = Math.Abs(inventoryDJ.Sum(x => x.SupplyQuantity));
if (LkQty + DJQty != Qty) throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏鐩堟暟閲忎笉绗�");
if (LkQty == 0)//绔嬪簱鏃犲樊寮�
{
@@ -629,7 +645,7 @@
Creater = App.User.UserName,
LocationCode = inventoryInfo.LocationCode,
OrderNo = order.order_no,
- StockQuantity = Math.Abs(inventoryInfo.StockQuantity - inventoryInfo.SupplyQuantity),
+ StockQuantity = Math.Abs(inventoryInfo.SupplyQuantity),
SupplyQuantity = 0,
Remark = "鐩樹簭鍏ュ簱"
};
@@ -637,12 +653,14 @@
supplyTask_Hties.Add(supplyTask_Hty);
}
#endregion
- inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity;
+ inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
+ inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
inventoryInfo.SupplyQuantity = 0;
inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
}
//_inventoryInfoService.UpdateData(inventoryInfos);
- inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity;
+ inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+ inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
inventory_Batch.SupplyQuantity = 0;
//_inventory_BatchServices.UpdateData(inventory_Batch);
infosUp.AddRange(inventoryInfos);
@@ -700,7 +718,7 @@
Creater = App.User.UserName,
LocationCode = inventoryInfo.LocationCode,
OrderNo = order.order_no,
- StockQuantity = Math.Abs(inventoryInfo.StockQuantity - inventoryInfo.SupplyQuantity),
+ StockQuantity = Math.Abs(inventoryInfo.SupplyQuantity),
SupplyQuantity = 0,
Remark = "鐩樹簭鍑哄簱"
};
@@ -708,7 +726,8 @@
supplyTask_Hties.Add(supplyTask_Hty);
}
#endregion
- inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity;
+ inventoryInfo.StockQuantity += inventoryInfo.SupplyQuantity;
+ inventoryInfo.AvailableQuantity = inventoryInfo.StockQuantity;
inventoryInfo.SupplyQuantity = 0;
inventoryInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
}
@@ -1146,6 +1165,7 @@
else
{
var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+ if (deliveryOrder.Out_type == "3") url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
var requestDate = new
{
order_no = deliveryOrder.Out_no
@@ -1153,7 +1173,7 @@
var result = HttpHelper.Post(url, requestDate.ToJsonString());
var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
if (response == null) throw new Exception("涓婃姤ERP鍑哄簱鍗曞畬鎴愬け璐ワ紒");
- if (response.resultCode != "0") throw new Exception(response.resultMsg);
+ if (response.resultCode != "0" && response.resultMsg != "鏈壘鍒板悎娉曞崟鎹�") throw new Exception(response.resultMsg);
_deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(deliveryOrderDetails, OperateTypeEnum.浜哄伐瀹屾垚);
BaseDal.DeleteAndMoveIntoHty(deliveryOrders, OperateTypeEnum.浜哄伐瀹屾垚);
}
--
Gitblit v1.9.3