From 40f5513d75bf73a938a61593ac505cac3f52aa55 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 2 Jan 2024 11:26:20 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8D=B3=E6=97=B6=E5=BA=93=E5=AD=98=E8=B0=83?=
=?UTF-8?q?=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 25 +++++++++++
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 7 ++-
src/WMS.Web.Core/Dto/Erp/ErpInventoryDto.cs | 26 +++++++++++
.../Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs | 10 ++---
.../IService/Public/IErpService.cs | 2 +-
.../Services/Public/ErpService.cs | 44 ++++++++++++++-----
.../Services/TakeStockService.cs | 15 ++++++-
src/WMS.Web.Domain/Values/Erp/FormIdParam.cs | 12 +++--
8 files changed, 118 insertions(+), 23 deletions(-)
create mode 100644 src/WMS.Web.Core/Dto/Erp/ErpInventoryDto.cs
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 6ed47d58..97e3ba50 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -745,6 +745,26 @@
单据类型
+
+
+ 物料ID
+
+
+
+
+ 组织编码
+
+
+
+
+ 仓库
+
+
+
+
+ 数量
+
+
编码
@@ -1291,6 +1311,11 @@
仓位ID
+
+
+ 盘点实际数量(实际仓库数量)
+
+
盘盈数量
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 462c321e..90d9f10a 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -3095,7 +3095,7 @@
-
+
及时库存
@@ -5185,6 +5185,11 @@
销售出库单
+
+
+ 即时库存
+
+
文件导出状态
diff --git a/src/WMS.Web.Core/Dto/Erp/ErpInventoryDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpInventoryDto.cs
new file mode 100644
index 00000000..25ebba3c
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/Erp/ErpInventoryDto.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.Erp
+{
+ public class ErpInventoryDto
+ {
+ ///
+ /// 物料ID
+ ///
+ public int MaterialId { get; set; }
+ ///
+ /// 组织编码
+ ///
+ public string OrgCode { get; set; }
+ ///
+ /// 仓库
+ ///
+ public string StockCode { get; set; }
+ ///
+ /// 数量
+ ///
+ public decimal Qty { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs b/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs
index 0eff4f5d..506c4768 100644
--- a/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs
+++ b/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs
@@ -114,11 +114,11 @@ namespace WMS.Web.Core.Dto.Erp.TakeStock
/////
//[JsonProperty("FAcctQty")]
//public decimal BeforeQty { get; set; }
- /////
- ///// 盘点实际数量(实际仓库数量)
- /////
- //[JsonProperty("FCountQty")]
- //public decimal AfterQty { get; set; }
+ ///
+ /// 盘点实际数量(实际仓库数量)
+ ///
+ [JsonProperty("FCountQty")]
+ public decimal AfterQty { get; set; }
///
/// 盘盈数量
///
diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs
index 3ef269db..0f2fbd9f 100644
--- a/src/WMS.Web.Domain/IService/Public/IErpService.cs
+++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs
@@ -147,7 +147,7 @@ namespace WMS.Web.Domain.IService.Public
/// 及时库存
///
///
- Task> BillQueryForInventory(string materialId, string orgCode, string stockId);
+ Task> BillQueryForInventory(List<(int materialId, string orgCode, string stockCode)> request);
//同步数据(保存提交审核)
Task> Save(T dto, string formId);
//提交
diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs
index 64d7bf85..936965b6 100644
--- a/src/WMS.Web.Domain/Services/Public/ErpService.cs
+++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs
@@ -2133,25 +2133,28 @@ namespace WMS.Web.Domain.Services.Public
}
}
- public async Task> BillQueryForInventory(string materialId,string orgCode,string stockId)
+ public async Task> BillQueryForInventory(List<(int materialId, string orgCode, string stockCode)> request)
{
try
{
//1.先登录金蝶-拿到token
var token_result = await this.Init();
if (!token_result.IsSuccess)
- return Result.ReFailure(token_result);
+ return ResultList.ReFailure(token_result);
//3.获取金蝶采购订单:拼接参数和条件
var query = new ErpBillQueryDto(token_result.Data);
- var param = new ErpBillQueryParamDto("STK_Inventory");
- param.FieldKeys = "FQTY,FBASEAVBQTY,FMATERIALID.FNumber,FSTOCKORGID.FNumber,FSTOCKID.FNumber";
+ var param = new ErpBillQueryParamDto(FormIdParam.STK_Inventory.ToString());
+ param.FieldKeys = "FBASEQTY,FMATERIALID,FSTOCKORGID.FNumber,FSTOCKID.FNumber";
param.Limit = 100;
- //param.FilterString = $"FMATERIALID.FNumber='{materialId}' and FSTOCKORGID.FNumber='{orgCode}'";
- //param.FilterString = $"";
- param.FilterString = $"FMATERIALID.FNumber='{materialId}' and FSTOCKORGID.FNumber='{orgCode}' and FSTOCKID.FNumber='{stockId}'";
-
+ for (int i = 0; i < request.Count(); i++)
+ {
+ if(i==0)
+ param.FilterString = $"(FMATERIALID={request[0].materialId} and FSTOCKORGID.FNumber='{request[0].orgCode}' and FSTOCKID.FNumber='{request[0].stockCode}')";
+ else
+ param.FilterString += $" or (FMATERIALID={request[i].materialId} and FSTOCKORGID.FNumber='{request[i].orgCode}' and FSTOCKID.FNumber='{request[i].stockCode}')";
+ }
query.Data = JsonConvert.SerializeObject(param);
var json = JsonConvert.SerializeObject(query);
@@ -2159,12 +2162,31 @@ namespace WMS.Web.Domain.Services.Public
var result_json = await _client.ExecuteBillQueryAsync(json);
var result = JsonConvert.DeserializeObject>>(result_json);
-
- return Result.ReSuccess(0);
+ var erp_list = new List();
+ foreach (var item in result)
+ {
+
+ var lis = erp_list.FirstOrDefault(f => f.MaterialId == Convert.ToInt32(item[1])
+ && f.OrgCode.Equals(item[2])
+ && f.StockCode.Equals(item[3]));
+
+ if (lis == null)
+ {
+ lis.Qty = Convert.ToInt32(item[0]);
+ lis.MaterialId = Convert.ToInt32(item[1]);
+ lis.OrgCode = item[2];
+ lis.StockCode = item[3];
+ erp_list.Add(lis);
+ }
+ else
+ lis.Qty = lis.Qty + Convert.ToInt32(item[0]);
+ }
+
+ return ResultList.ReSuccess(erp_list);
}
catch (Exception ex)
{
- return Result.ReFailure(ResultCodes.Erp_BillQuery_Error);
+ return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error);
}
}
diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs
index c4df27c0..ccaff3f2 100644
--- a/src/WMS.Web.Domain/Services/TakeStockService.cs
+++ b/src/WMS.Web.Domain/Services/TakeStockService.cs
@@ -203,12 +203,23 @@ namespace WMS.Web.Domain.Services
var materials_result = await sc_erpService.BillQueryForMaterial();
if (!materials_result.IsSuccess) return Result.ReFailure(ResultCodes.ErpMaterialError);
var materials = materials_result.Data.ToList();
+
+ List<(int materialId, string orgCode, string stockCode)> requestInventory = new List<(int materialId, string orgCode, string stockCode)>();
+ entity.Details.ForEach(f => requestInventory.Add((f.MaterialId, f.OrgCode, f.StockCode)));
+ var res_s = await sc_erpService.BillQueryForInventory(requestInventory);
+ if (!res_s.IsSuccess)
+ {
+ _logger.LogInformation($"及时库存获取异常->错误:{res_s.Message} 数据: {JsonConvert.SerializeObject(entity)}");
+ return Result.ReFailure(res_s.Message, res_s.Status);
+ }
//组装dto
#region 组装dto
//子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004
List detils = new List();
foreach (var d in entity.Details)
{
+ var erpInventory = res_s.Data.FirstOrDefault(f => f.MaterialId == d.MaterialId && f.StockCode == d.StockCode && f.OrgCode == d.OrgCode);
+ decimal qty = erpInventory?.Qty ?? 0;
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
detils.Add(new ErpTakeStockDetailsSaveDto()
{
@@ -218,11 +229,12 @@ namespace WMS.Web.Domain.Services
UnitId = new ErpNumberDto(unitNumber), //物料带出来
StockId = new ErpNumberDto(d.StockCode),
SubStockId = new ErpSubStockDto(d.StockCode, d.Erp_SubStockCode),
- //AfterQty = d.AfterQty,
+ AfterQty = entity.ResultType == TakeStockType.Profit ? (qty + d.FinalQty) : (qty - d.FinalQty),
FinalQty = entity.ResultType == TakeStockType.Profit ? d.FinalQty : 0,
LossQty = entity.ResultType == TakeStockType.Loss ? d.FinalQty : 0,
Fnote = d.Remark
});
+ requestInventory.Add((d.MaterialId, d.OrgCode, d.StockCode));
}
ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto()
{
@@ -247,6 +259,7 @@ namespace WMS.Web.Domain.Services
return Result.ReFailure(ResultCodes.NoDateError);
}
}
+
///
/// 同步金蝶操作
///
diff --git a/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs b/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs
index 2ca1b5c9..8d433a36 100644
--- a/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs
+++ b/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs
@@ -64,18 +64,22 @@ namespace WMS.Web.Domain.Values.Erp
///
/// 其他出库单
///
- STK_MisDelivery=14,
+ STK_MisDelivery = 14,
///
/// 分布式调出单
///
- STK_TRANSFEROUT=15,
+ STK_TRANSFEROUT = 15,
///
/// 客户
///
- BD_Customer=16,
+ BD_Customer = 16,
///
/// 销售出库单
///
- SAL_OUTSTOCK=17
+ SAL_OUTSTOCK = 17,
+ ///
+ /// 即时库存
+ ///
+ STK_Inventory = 18
}
}