From 61323e930a711abfb7154789aa54a42b7da0fd9c Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Fri, 15 Dec 2023 10:24:04 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 6 +--
src/WMS.Web.Domain/Entitys/OutStock.cs | 22 +++++----
.../Services/OutStockService.cs | 45 ++++++++++---------
3 files changed, 39 insertions(+), 34 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 72c4e3ba..bca5cc5f 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -1185,13 +1185,13 @@
-
+
同步金蝶(成功)
-
+
同步金蝶(失败)
@@ -3978,7 +3978,7 @@
-
+
下推
diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs
index 5d879efc..acdc2fa8 100644
--- a/src/WMS.Web.Domain/Entitys/OutStock.cs
+++ b/src/WMS.Web.Domain/Entitys/OutStock.cs
@@ -133,16 +133,18 @@ namespace WMS.Web.Domain.Entitys
/// 同步金蝶(成功)
///
///
- public void SyncSuccess(string sourcBillNo, int operateId,string erpBillNo)
+ public void SyncSuccess(int erpDetailId, int operateId,string erpBillNo)
{
//foreach (var e in erpDetailIds)
// this.SuccessSyncFail.Remove(e);
- var erpd = this.Details.SelectMany(s => s.ErpDetails).Where(w => w.SourceBillNo.Equals(sourcBillNo)).ToList();
- foreach (var e in erpd)
- {
- e.SuccessSync = SyncStatus.Success;
- e.ErpSyncBillNo = erpBillNo;
- }
+ var erpd = this.Details.SelectMany(s => s.ErpDetails).FirstOrDefault(w => w.Erp_DetailId==erpDetailId);
+ erpd.SuccessSync = SyncStatus.Success;
+ erpd.ErpSyncBillNo = erpBillNo;
+ //foreach (var e in erpd)
+ //{
+ //e.SuccessSync = SyncStatus.Success;
+ //e.ErpSyncBillNo = erpBillNo;
+ //}
//所有erp明细同步成功才是整个单据成功
var erpDetails = this.Details.SelectMany(s => s.ErpDetails);
if (erpDetails.Where(w => w.SuccessSync == SyncStatus.Success).Count()== erpDetails.Count())
@@ -157,9 +159,11 @@ namespace WMS.Web.Domain.Entitys
/// 同步金蝶(失败)
///
///
- public void SyncFail(string remark, int operateId, SyncStatus syncStatus)
+ public void SyncFail(string remark, int erpDetailId, int operateId, SyncStatus syncStatus)
{
- this.SuccessSync = syncStatus;
+ var erpd = this.Details.SelectMany(s => s.ErpDetails).FirstOrDefault(w => w.Erp_DetailId == erpDetailId);
+ erpd.SuccessSync = syncStatus;
+ this.SuccessSync = SyncStatus.Fail;
this.Remark = remark;
this.OperateId = operateId;
this.SyncTime = DateTime.Now;
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index ec8c9d01..cb26cbbc 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -220,33 +220,34 @@ namespace WMS.Web.Domain.Services
///
private async Task SalOutStock(OutStock entity, LoginInDto loginInfo)
{
- if (entity.Details.Count() != 1) return Result.ReSuccess();
if (entity.Type != OutStockType.Sal) return Result.ReSuccess();
- if (entity.SuccessSync != SyncStatus.Fail) return Result.ReSuccess();
- List failList = entity.Details.SelectMany(s => s.ErpDetails)
- .Where(w => w.SuccessSync == SyncStatus.Fail).GroupBy(g => g.SourceBillNo)
- .Select(s => s.Key).ToList();//同步失败的来源单号
- //找到单据里需要同步的单据
- var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key);
- foreach (var s in failList)
+ if (entity.SuccessSync == SyncStatus.Success) return Result.ReSuccess();
+ //List failList = entity.Details.SelectMany(s => s.ErpDetails)
+ // .Where(w => w.SuccessSync == SyncStatus.Fail).GroupBy(g => g.SourceBillNo)
+ // .Select(s => s.Key).ToList();//同步失败的来源单号
+ // //找到单据里需要同步的单据
+ //var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key);
+ var erpDetails = entity.Details.SelectMany(s => s.ErpDetails).Where(w => w.SuccessSync == SyncStatus.Fail).ToList();
+ foreach (var s in erpDetails)
{
var erp_details = entity.Details
.SelectMany(s => s.ErpDetails)
- .Where(w=>w.SourceBillNo.Equals(s)).Select(s => s.Erp_DetailId).ToList();
+ .Where(w => w.SourceBillNo.Equals(s)).Select(s => s.Erp_DetailId).ToList();
var erpDto = new ErpPushDto()
{
RuleId = "DeliveryNotice-OutStock",//转换规则内码 发货通知单下推销售出库单
FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(),
//Numbers = new List() { s },
TargetFormId = FormIdParam.SAL_OUTSTOCK.ToString(),
- DetailsId = string.Join(",", erp_details)
+ DetailsId = s.Erp_DetailId.ToString()
+ //DetailsId = string.Join(",", erp_details)
};
//下推金蝶
- var res = await this.Push(erpDto, entity);
+ var res = await this.Push(erpDto, s, entity.BillNo);
if (res.result.IsSuccess)
- entity.SyncSuccess(s, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
+ entity.SyncSuccess(s.Erp_DetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
- entity.SyncFail(res.result.Message, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
+ entity.SyncFail(res.result.Message, s.Erp_DetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
}
//entity.SuccessSync = entity.SuccessSyncFail.Count() > 0 ? false : true;
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
@@ -260,43 +261,43 @@ namespace WMS.Web.Domain.Services
///
///
///
- private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, OutStock entity)
+ private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, OutStockErpDetails erpDetail, string billNo)
{
var res = await _erpService.Push(dto);
if (!res.IsSuccess)
{
- _logger.LogInformation($"出库单->下推失败 单号:{entity.BillNo} 错误:{res.Message}");
+ _logger.LogInformation($"出库单->下推失败 单号:{billNo} 错误:{res.Message}");
return (Result.ReFailure(res.Message, res.Status), SyncStatus.Fail, "");
}
string id = res.Data;
var resSalOutStock = await _erpService.BillQueryForSalOutStock(id);
var salOutStock = resSalOutStock.Data;
- salOutStock.Details[0].Qty = entity.Details[0].Qty;
+ salOutStock.Details[0].Qty = erpDetail.Qty;
//{"Id":12709885,"Number":"XSCKD10629570","DIndex":0}
string formId = dto.TargetFormId.ToString();
- _logger.LogInformation($"出库单->开始同步金蝶 单号:{entity.BillNo} 数据: {JsonConvert.SerializeObject(dto)}");
+ _logger.LogInformation($"出库单->开始同步金蝶 单号:{billNo} 数据: {JsonConvert.SerializeObject(dto)}");
var res_s = await _erpService.Save(salOutStock, formId);
if (!res_s.IsSuccess)
{
- _logger.LogInformation($"出库单->修改数量失败 单号:{entity.BillNo} 错误:{res_s.Message}");
+ _logger.LogInformation($"出库单->修改数量失败 单号:{billNo} 错误:{res_s.Message}");
return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, id);
}
//提交
- _logger.LogInformation($"出库单->保存成功 开始提交 单号:{entity.BillNo}");
+ _logger.LogInformation($"出库单->保存成功 开始提交 单号:{billNo}");
ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data
var resSubmit = await _erpService.Submit(o_dto, formId);
if (!resSubmit.IsSuccess)
{
- _logger.LogInformation($"出库单->提交失败 单号:{entity.BillNo} 错误:{resSubmit.Message}");
+ _logger.LogInformation($"出库单->提交失败 单号:{billNo} 错误:{resSubmit.Message}");
return (resSubmit, SyncStatus.SubmitFail, o_dto.Numbers.First());
}
//审核
- _logger.LogInformation($"出库单->提交成功 开始审核 单号:{entity.BillNo}");
+ _logger.LogInformation($"出库单->提交成功 开始审核 单号:{billNo}");
resSubmit = await _erpService.Audit(o_dto, formId);
if (!resSubmit.IsSuccess)
{
- _logger.LogInformation($"出库单->审核失败 单号:{entity.BillNo} 错误:{resSubmit.Message}");
+ _logger.LogInformation($"出库单->审核失败 单号:{billNo} 错误:{resSubmit.Message}");
return (resSubmit, SyncStatus.CheckFail, o_dto.Numbers.First());
}
_logger.LogInformation($"同步金蝶成功");