From 411e624912b03f9359562423da1a79b260796763 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 14 一月 2025 11:13:12 +0800
Subject: [PATCH] 优化出库单完成上报ERP
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs | 2
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 73 +++++++-------
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs | 9 +
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs | 182 ++++++++++++++++++++++--------------
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj | 1
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs | 2
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs | 6 +
7 files changed, 165 insertions(+), 110 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs"
index 148e879..52b5668 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPReceiveModel.cs"
@@ -39,7 +39,7 @@
/// <summary>
/// 宸ュ巶浠e彿
/// </summary>
- public string PlantsId { get; set; } = "HA020";
+ public string PlantsId { get; set; } = "HA02";
/// <summary>
/// 瀹㈡埛浠e彿
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs"
index e065674..55dbbd2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs"
@@ -57,6 +57,12 @@
/// <param name="outStockStatus"></param>
/// <returns></returns>
List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum? outStockStatus);
+ /// <summary>
+ /// 鏍规嵁鍑哄簱鍗曞彿鑾峰彇鍑哄簱璇︽儏
+ /// </summary>
+ /// <param name="OrderNo"></param>
+ /// <returns></returns>
+ List<Dt_OutStockLockInfo> OutStockLockInfos(string OrderNo);
/// <summary>
///
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
index 5ca0c2d..c2204d8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs"
@@ -8,6 +8,7 @@
using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Outbound;
+using WIDESEA_External.Model;
using WIDESEA_IOutboundRepository;
using WIDESEA_Model.Models;
@@ -22,5 +23,6 @@
WebResponseContent ReceiveOutOrder(ErpOutOrderDTO model);
WebResponseContent TestOutUpload(int id,List<Dt_OutStockLockInfo>? outStockLockInfos=null);
string CreateCodeByRule(string ruleCode);
+ ERPIssueModel GetERPIssueModel(Dt_OutboundOrder outboundOrder, string WarehouseCode);
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj"
index af75b96..a69d8ad 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj"
@@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
+ <ProjectReference Include="..\WIDESEA_External\WIDESEA_External.csproj" />
<ProjectReference Include="..\WIDESEA_OutboundRepository\WIDESEA_OutboundRepository.csproj" />
</ItemGroup>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
index abf8185..3599250 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
@@ -79,7 +79,7 @@
StockId = outStock.Id,
TaskNum = taskNum,
OrderQuantity = outboundOrderDetail.OrderQuantity,
- Unit=outboundOrderDetail.Unit,
+ Unit = outboundOrderDetail.Unit,
};
return outStockLockInfo;
@@ -110,9 +110,14 @@
return outStockLockInfo;
}
+ public List<Dt_OutStockLockInfo> OutStockLockInfos(string OrderNo)
+ {
+ return BaseDal.QueryData(x => x.OrderNo == OrderNo);
+ }
+
public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum? outStockStatus)
{
- return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && outStockStatus==null?true:x.Status == outStockStatus.ObjToInt());
+ return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && outStockStatus == null ? true : x.Status == outStockStatus.ObjToInt());
}
public List<Dt_OutStockLockInfo> GetStockOutboundOrder(SaveModel saveModel)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
index cdfafc9..c5d0066 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
@@ -204,38 +204,8 @@
_unitOfWorkManage.CommitTran();
#region 鍑哄簱瀹屾垚涓婃姤ERP
- ERPPickItemModel pickItemModel = new ERPPickItemModel()
- {
- Lotno = model.LotNo,
- Qty = model.Quantity.ToString(),
- Location = warehouse.WarehouseCode
- };
- ERPPickModel pickModel = new ERPPickModel()
- {
- Rowindex = outboundOrderDetail.RowNo,
- Material = outboundOrderDetail.MaterielCode,
- Qty = pickItemModel.Qty,
- Dataitem = new List<ERPPickItemModel> { pickItemModel }
- };
- List<ERPPickModel> eRPPickModels = new List<ERPPickModel>() { pickModel };
- ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
- {
- Pickcode = outboundOrder.UpperOrderNo,
- PickList = eRPPickModels
- };
- ERPIssueModel issueModel = new ERPIssueModel()
- {
- UniqueTag = outboundOrderDetail.OrderId.ToString(),
- Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
- WarehouseCode = warehouse.WarehouseCode,
- Docremark = "",
- Deptno = outboundOrder.DepartmentCode,
- Deptname = outboundOrder.DepartmentName,
- Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Createuser = App.User.UserName,
- Issitem = new List<ERPIssueItemModel>() { issueItemModel },
- };
- _invokeERPService.InvokeOutStandardsApi(issueModel);
+ if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+ _invokeERPService.InvokeOutStandardsApi(GetERPIssueModel(outboundOrder, warehouse.WarehouseCode));
#endregion
content.OK();
}
@@ -245,6 +215,56 @@
content.Error(ex.Message);
}
return content;
+ }
+ public ERPIssueModel GetERPIssueModel(Dt_OutboundOrder outboundOrder, string WarehouseCode)
+ {
+ ERPIssueModel issueModel = new ERPIssueModel();
+ try
+ {
+ List<Dt_OutStockLockInfo> stockLockInfos = _outStockLockInfoService.OutStockLockInfos(outboundOrder.OrderNo);
+ List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
+ foreach (var item in stockLockInfos)
+ {
+ ERPPickItemModel pickItemModel = new ERPPickItemModel()
+ {
+ Lotno = item.BatchNo,
+ Qty = item.AssignQuantity.ObjToInt().ToString(),
+ Location = WarehouseCode
+ };
+ //鑾峰彇鍑哄簱鍗曟槑缁�
+ Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId);
+ ERPPickModel pickModel = new ERPPickModel()
+ {
+ Rowindex = outboundOrderDetail.RowNo,
+ Material = outboundOrderDetail.MaterielCode,
+ Qty = pickItemModel.Qty,
+ Dataitem = new List<ERPPickItemModel> { pickItemModel }
+ };
+ eRPPickModels.Add(pickModel);
+ }
+ ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
+ {
+ Pickcode = outboundOrder.UpperOrderNo,
+ PickList = eRPPickModels
+ };
+ issueModel = new ERPIssueModel()
+ {
+ UniqueTag = outboundOrder.Id.ToString(),
+ Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
+ WarehouseCode = WarehouseCode,
+ Docremark = "",
+ Deptno = outboundOrder.DepartmentCode,
+ Deptname = outboundOrder.DepartmentName,
+ Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+ Createuser = App.User.UserName ?? stockLockInfos.FirstOrDefault().Creater,
+ Issitem = new List<ERPIssueItemModel>() { issueItemModel },
+ };
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ return issueModel;
}
public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO model)
{
@@ -313,7 +333,7 @@
DepartmentCode = model.DepartmentCode,
DepartmentName = model.DepartmentName,
Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail },
- Remark= model.Node
+ Remark = model.Node
};
Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
@@ -342,7 +362,7 @@
MaterielName = materielInfo.MaterielName,
OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
OrderQuantity = model.Qty,
- Unit=model.Unit,
+ Unit = model.Unit,
};
_outboundOrderDetailRepository.UpdateData(outboundOrderDetail);
@@ -434,53 +454,67 @@
Createuser = outboundOrder.Creater,
Issitem = new List<ERPIssueItemModel>() { issueItemModel },
};
+ _invokeERPService.InvokeOutStandardsApi(issueModel);
}
else
{
- List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
-
- //鑾峰彇鍑哄簱璇︽儏鍗�
+ #region MyRegion
foreach (var item in outStockLockInfos)
{
- ERPPickItemModel pickItemModel = new ERPPickItemModel()
- {
- Lotno = item.BatchNo,
- Qty = item.AssignQuantity.ObjToInt().ToString(),
- Location = warehouse.WarehouseCode
- };
- //鑾峰彇鍑哄簱鍗曟槑缁�
- Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId);
- ERPPickModel pickModel = new ERPPickModel()
- {
- Rowindex = outboundOrderDetail.RowNo,
- Material = outboundOrderDetail.MaterielCode,
- Qty = pickItemModel.Qty,
- Dataitem = new List<ERPPickItemModel> { pickItemModel }
- };
if (item.OrderQuantity == item.AssignQuantity)
{
item.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
}
- eRPPickModels.Add(pickModel);
_OutStockLockInfos.Add(item);
}
- ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
- {
- Pickcode = outboundOrder.UpperOrderNo,
- PickList = eRPPickModels
- };
- issueModel = new ERPIssueModel()
- {
- UniqueTag = id.ToString(),
- Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
- WarehouseCode = warehouse.WarehouseCode,
- Docremark = "",
- Deptno = outboundOrder.DepartmentCode,
- Deptname = outboundOrder.DepartmentName,
- Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Createuser = outStockLockInfos.FirstOrDefault().Creater,
- Issitem = new List<ERPIssueItemModel>() { issueItemModel },
- };
+ #endregion
+
+ #region MyRegion
+ //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
+
+ ////鑾峰彇鍑哄簱璇︽儏鍗�
+ //foreach (var item in outStockLockInfos)
+ //{
+ // ERPPickItemModel pickItemModel = new ERPPickItemModel()
+ // {
+ // Lotno = item.BatchNo,
+ // Qty = item.AssignQuantity.ObjToInt().ToString(),
+ // Location = warehouse.WarehouseCode
+ // };
+ // //鑾峰彇鍑哄簱鍗曟槑缁�
+ // Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId);
+ // ERPPickModel pickModel = new ERPPickModel()
+ // {
+ // Rowindex = outboundOrderDetail.RowNo,
+ // Material = outboundOrderDetail.MaterielCode,
+ // Qty = pickItemModel.Qty,
+ // Dataitem = new List<ERPPickItemModel> { pickItemModel }
+ // };
+ // if (item.OrderQuantity == item.AssignQuantity)
+ // {
+ // item.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+ // }
+ // eRPPickModels.Add(pickModel);
+ // _OutStockLockInfos.Add(item);
+ //}
+ //ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
+ //{
+ // Pickcode = outboundOrder.UpperOrderNo,
+ // PickList = eRPPickModels
+ //};
+ //issueModel = new ERPIssueModel()
+ //{
+ // UniqueTag = id.ToString(),
+ // Code = CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
+ // WarehouseCode = warehouse.WarehouseCode,
+ // Docremark = "",
+ // Deptno = outboundOrder.DepartmentCode,
+ // Deptname = outboundOrder.DepartmentName,
+ // Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+ // Createuser = outStockLockInfos.FirstOrDefault().Creater,
+ // Issitem = new List<ERPIssueItemModel>() { issueItemModel },
+ //};
+ #endregion
}
if (stockInfos.Count > 0)
@@ -492,7 +526,11 @@
_outStockLockInfoService.Repository.UpdateData(_OutStockLockInfos);
}
//鍑哄簱瀹屾垚涓婃姤ERP 娴嬭瘯娉ㄩ噴
- _invokeERPService.InvokeOutStandardsApi(issueModel);
+ if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+ {
+ issueModel = GetERPIssueModel(outboundOrder, warehouse.WarehouseCode);
+ _invokeERPService.InvokeOutStandardsApi(issueModel);
+ }
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
@@ -505,7 +543,7 @@
{
lock (lock_code)
{
-
+
string code = string.Empty;
DateTime dateTime = DateTime.Now;
DateTime now = DateTime.Now;
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 dcbc0ff..47f3fd2 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"
@@ -360,42 +360,45 @@
#endregion
#region 涓婃姤ERP
- List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
- outStockLockInfos.ForEach(x =>
+ if (outboundOrder.OrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
{
- ERPPickItemModel pickItemModel = new ERPPickItemModel()
- {
- Lotno = x.BatchNo,
- Qty = x.AssignQuantity.ToString(),
- Location = warehouse.WarehouseCode
- };
- ERPPickModel pickModel = new ERPPickModel()
- {
- Rowindex = OrderDetail.RowNo,
- Material = OrderDetail.MaterielCode,
- Qty = pickItemModel.Qty,
- Dataitem = new List<ERPPickItemModel> { pickItemModel }
- };
- eRPPickModels.Add(pickModel);
- });
- ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
- {
- Pickcode = outboundOrder.UpperOrderNo,
- PickList = eRPPickModels
- };
- ERPIssueModel issueModel = new ERPIssueModel()
- {
- UniqueTag = outboundOrder.Id.ToString(),
- Code =_outboundService.OutboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
- WarehouseCode = warehouse.WarehouseCode,
- Docremark = "",
- Deptno = outboundOrder.DepartmentCode,
- Deptname = outboundOrder.DepartmentName,
- Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Createuser = App.User.UserName,
- Issitem = new List<ERPIssueItemModel>() { issueItemModel }
- };
- _invokeERPService.InvokeOutStandardsApi(issueModel);
+ //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>();
+ //outStockLockInfos.ForEach(x =>
+ //{
+ // ERPPickItemModel pickItemModel = new ERPPickItemModel()
+ // {
+ // Lotno = x.BatchNo,
+ // Qty = x.AssignQuantity.ToString(),
+ // Location = warehouse.WarehouseCode
+ // };
+ // ERPPickModel pickModel = new ERPPickModel()
+ // {
+ // Rowindex = OrderDetail.RowNo,
+ // Material = OrderDetail.MaterielCode,
+ // Qty = pickItemModel.Qty,
+ // Dataitem = new List<ERPPickItemModel> { pickItemModel }
+ // };
+ // eRPPickModels.Add(pickModel);
+ //});
+ //ERPIssueItemModel issueItemModel = new ERPIssueItemModel()
+ //{
+ // Pickcode = outboundOrder.UpperOrderNo,
+ // PickList = eRPPickModels
+ //};
+ //ERPIssueModel issueModel = new ERPIssueModel()
+ //{
+ // UniqueTag = outboundOrder.Id.ToString(),
+ // Code = _outboundService.OutboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)),
+ // WarehouseCode = warehouse.WarehouseCode,
+ // Docremark = "",
+ // Deptno = outboundOrder.DepartmentCode,
+ // Deptname = outboundOrder.DepartmentName,
+ // Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+ // Createuser = App.User.UserName,
+ // Issitem = new List<ERPIssueItemModel>() { issueItemModel }
+ //};
+ _invokeERPService.InvokeOutStandardsApi(_outboundService.OutboundOrderService.GetERPIssueModel(outboundOrder, warehouse.WarehouseCode));
+ }
#endregion
return WebResponseContent.Instance.OK();
--
Gitblit v1.9.3