From 07b532a6a6adf0a9d965b037cf98c1f98accd138 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期五, 07 十一月 2025 20:11:09 +0800
Subject: [PATCH] 优化出入退货代码
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs | 94 +++++++++++++++++++++++++++++++----------------
1 files changed, 62 insertions(+), 32 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
index 1c40815..278a7b4 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
@@ -161,8 +161,8 @@
#region 璐т綅
var location = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
if (location == null) return WebResponseContent.Instance.Error($"璇风淮鎶よ揣浣嶇紪鍙枫�恵LocationCode}銆戠殑璐т綅淇℃伅");
- if (location.EnableStatus == EnableStatusEnum.Disable.ObjToInt())
- return WebResponseContent.Instance.Error($"璐т綅缂栧彿銆恵LocationCode}銆戝凡绂佺敤锛岃鎭㈠姝e父鍐嶄娇鐢�");
+ //if (location.EnableStatus == EnableStatusEnum.Disable.ObjToInt())
+ // return WebResponseContent.Instance.Error($"璐т綅缂栧彿銆恵LocationCode}銆戝凡绂佺敤锛岃鎭㈠姝e父鍐嶄娇鐢�");
if (location.WarehouseCode != cabinOrderDetail.Reservoirarea)
return WebResponseContent.Instance.Error($"璐т綅缂栧彿銆恵LocationCode}銆戞墍灞炲簱鎴夸笌褰撳墠鍏ュ簱鍗曟墍灞炲簱鎴夸笉鍖归厤");
if (location.LocationStatus == LocationStatusEnum.Free.ObjToInt())
@@ -376,7 +376,7 @@
};
#endregion
- List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => order.details.Select(x => x.goods_no).Contains(x.MaterielCode));
+ List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => order.details.Select(x => x.goods_no).Contains(x.MaterielCode)).ToList();
List<Dt_MaterielInfo> materielInfosUp = new List<Dt_MaterielInfo>();
foreach (var item in order.details)
{
@@ -476,18 +476,25 @@
}
//_materielInfoService.UpdateData(materielInfo);
}
- _unitOfWorkManage.BeginTran();
- if (materielInfosUp.Count > 0) _materielInfoService.UpdateData(materielInfosUp);
- if (entityOrder.Details.Count > 0) dt_CabinOrders.Add(entityOrder);
- if (entityOrderLK.Details.Count > 0) dt_CabinOrders.Add(entityOrderLK);
- if (dt_CabinOrders.Count > 0) BaseDal.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand();
- _unitOfWorkManage.CommitTran();
+ try
+ {
+ _unitOfWorkManage.BeginTran();
+ if (materielInfosUp.Count > 0) _materielInfoService.UpdateData(materielInfosUp);
+ if (entityOrder.Details.Count > 0) dt_CabinOrders.Add(entityOrder);
+ if (entityOrderLK.Details.Count > 0) dt_CabinOrders.Add(entityOrderLK);
+ if (dt_CabinOrders.Count > 0) BaseDal.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand();
+ _unitOfWorkManage.CommitTran();
+ }
+ catch (Exception)
+ {
+ _unitOfWorkManage.RollbackTran();
+ }
//webResponseContent.OK(data: dt_CabinOrders);
}
}
catch (Exception ex)
{
- _unitOfWorkManage.RollbackTran();
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, (order.order_type == "2" ? "鍑哄簱閫�璐�" : "姝e父鍏ュ簱") + $"锛氬崟鍙枫�恵order.order_no}銆�", ex.Message);
webResponseContent.Error(ex.Message);
}
return webResponseContent;
@@ -517,14 +524,17 @@
{
//鎵惧簱瀛樻壒娆′俊鎭�
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);
- if (Qty != item.order_qty) throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+ if (inventory_Batch.SupplyQuantity != item.order_qty)
+ {
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+ 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();
foreach (var inventoryInfo in inventoryInfos)
{
#region 娣诲姞鐩樼泩鍏ュ簱浠诲姟
- if (inventoryInfo.StockQuantity != inventoryInfo.SupplyQuantity)
+ if (inventoryInfo.SupplyQuantity != 0)
{
Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty()
{
@@ -541,7 +551,7 @@
Creater = App.User.UserName,
LocationCode = inventoryInfo.LocationCode,
OrderNo = order.order_no,
- StockQuantity = Math.Abs(inventoryInfo.StockQuantity - inventoryInfo.SupplyQuantity),
+ StockQuantity = inventoryInfo.SupplyQuantity,
SupplyQuantity = 0,
Remark = "鐩樼泩鍏ュ簱"
};
@@ -549,12 +559,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();
}
infosUp.AddRange(inventoryInfos);
- inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity;
+ inventory_Batch.StockQuantity += inventory_Batch.SupplyQuantity;
+ inventory_Batch.AvailableQuantity = inventory_Batch.StockQuantity;
inventory_Batch.SupplyQuantity = 0;
batchesUp.Add(inventory_Batch);
//_inventoryInfoService.UpdateData(inventoryInfos);
@@ -599,23 +611,36 @@
List<Dt_CabinOrder> cabinOrdersAdd = new List<Dt_CabinOrder>();
string WareCodeLK = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
string WareCodeDJ = WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000");
- List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
- List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+ List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+ List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
foreach (var item in order.details)
{
//鎵惧簱瀛樻壒娆′俊鎭�
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);
- if (Qty != item.order_qty) throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+ var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
+ if (Qty != item.order_qty)
+ {
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+ 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 LkQty = 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));
- if (LkQty + DJQty != Qty) throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏鐩堟暟閲忎笉绗�");
+ //var DJQty = Math.Abs(inventoryDJ.Sum(x => x.SupplyQuantity));
+ var DJQty = inventoryDJ.Sum(x => x.SupplyQuantity);
+ if (LkQty + DJQty != Qty)
+ {
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+ throw new Exception($"銆恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡淇℃伅涓庣墿鏂欐壒娆′俊鎭洏鐩堟暟閲忎笉绗�");
+ }
+
if (LkQty == 0)//绔嬪簱鏃犲樊寮�
{
#region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
@@ -639,7 +664,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 = "鐩樼泩鍏ュ簱"
};
@@ -647,13 +672,15 @@
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);
infosUp.AddRange(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);
batchesUp.Add(inventory_Batch);
@@ -686,7 +713,7 @@
cabinOrdersAdd.Add(entityOrder);
#endregion
}
- else
+ else // LkQty != 0 琛ㄧず绔嬪簱鏈夊樊寮�
{
#region 澶т欢搴撳簱瀛樺钩璐�
inventoryInfos = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
@@ -710,7 +737,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 = "鐩樼泩鍏ュ簱"
};
@@ -718,7 +745,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();
}
@@ -769,7 +797,7 @@
Details = order.details.Select(d => new Dt_CabinOrderDetail
{
Goods_no = d.goods_no,
- Order_qty = LkQty,
+ Order_qty =Math.Abs( LkQty),
Batch_num = d.batch_num,
Exp_date = d.exp_date,
Reservoirarea = WareCodeLK,
@@ -818,7 +846,8 @@
List<Dt_CabinOrderDetail> cabinOrderDetails = new List<Dt_CabinOrderDetail>();
foreach (var item in cabinOrders)
{
- if (item.Details != null) cabinOrderDetails.AddRange(cabinOrderDetails);
+ if (item.Details != null) cabinOrderDetails.AddRange(item.Details);
+
item.Modifier = App.User.UserName;
item.ModifyDate = DateTime.Now;
item.Details = null;
@@ -831,6 +860,7 @@
else
{
var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+ if (cabinOrder.Order_type == "2") url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
var requestDate = new
{
order_no = cabinOrder.Order_no
@@ -838,7 +868,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);
_cabinOrderDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.浜哄伐瀹屾垚);
BaseDal.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.浜哄伐瀹屾垚);
--
Gitblit v1.9.3