From 366e523e49d9ff750a7b568d916d9c986ff9c587 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Tue, 19 Dec 2023 15:32:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/TakeStockService.cs | 97 +++++++++++-------- 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 32f38d77..0344f35f 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -164,53 +164,64 @@ namespace WMS.Web.Domain.Services //获取金蝶仓库仓位编码 //var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId); //var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.SubStockId); - var materials_result = await _erpService.BillQueryForMaterial(); - var materials = materials_result.Data.ToList(); + try + { + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) return Result.ReFailure(ResultCodes.ErpMaterialError); + var materials = materials_result.Data.ToList(); - var res = await _erpService.BillQueryForStock(); - var resSub = await _erpService.BillQueryForSubStock(); - var stock = res.Data.FirstOrDefault(f => f.Code == entity.Details[0].StockCode);//需要根据单点code搜索 - if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData); - //组装dto - #region 组装dto - //子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004 - List detils = new List(); - foreach (var d in entity.Details) - { - var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId); - var subStock = resSub.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索 - var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId); - detils.Add(new ErpTakeStockDetailsSaveDto() + var res = await _erpService.BillQueryForStock(); + if (!res.IsSuccess) return Result.ReFailure(ResultCodes.ErpStockError); + var resSub = await _erpService.BillQueryForSubStock(); + if (!resSub.IsSuccess) return Result.ReFailure(ResultCodes.ErpStockError); + var stock = res.Data.FirstOrDefault(f => f.Code == entity.Details[0].StockCode);//需要根据单点code搜索 + if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData); + //组装dto + #region 组装dto + //子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004 + List detils = new List(); + foreach (var d in entity.Details) { - FOwnerid = new ErpNumberDto(stock.OrgCode.ToString()), - FKeeperId = new ErpNumberDto(stock.OrgCode.ToString()), - MaterialId = new ErpNumberDto(_erpBasicDataExtendService.GetMaterialNumber(materials, d.MaterialId)), - UnitId = new ErpNumberDto(unitNumber), //物料带出来 - StockId = new ErpNumberDto(stock.Code), - SubStockId = new ErpSubStockDto(stock.Code, resSub.Data.FirstOrDefault(f => f.Id == d.Erp_SubStockId)?.Code), - BeforeQty = d.BeforeQty, - AfterQty = d.AfterQty, - FinalQty = entity.ResultType == TakeStockType.Profit ? d.FinalQty : 0, - LossQty = entity.ResultType == TakeStockType.Loss ? d.FinalQty : 0, - Fnote = d.Remark - }); + var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, d.SubStockId); + //var subStock = resSub.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索 + var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId); + detils.Add(new ErpTakeStockDetailsSaveDto() + { + FOwnerid = new ErpNumberDto(stock.OrgCode.ToString()), + FKeeperId = new ErpNumberDto(stock.OrgCode.ToString()), + MaterialId = new ErpNumberDto(_erpBasicDataExtendService.GetMaterialNumber(materials, d.MaterialId)), + UnitId = new ErpNumberDto(unitNumber), //物料带出来 + StockId = new ErpNumberDto(stock.Code), + SubStockId = new ErpSubStockDto(stock.Code, resSub.Data.FirstOrDefault(f => f.Id == d.Erp_SubStockId)?.Code), + BeforeQty = d.BeforeQty, + AfterQty = d.AfterQty, + FinalQty = entity.ResultType == TakeStockType.Profit ? d.FinalQty : 0, + LossQty = entity.ResultType == TakeStockType.Loss ? d.FinalQty : 0, + Fnote = d.Remark + }); + } + ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() + { + BillNo = entity.BillNo, + StockOrgId = new ErpNumberDto(stock.OrgCode), + Type = new ErpNumberDto(entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS"), + Date = entity.Date, + Details = detils + }; + #endregion + //判断盘盈盘亏 + FormIdParam type = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss : FormIdParam.STK_StockCountGain; + //操作金蝶 + var resSync = await ErpOperate(dto, type); + entity.Sync(resSync.result.IsSuccess, resSync.result.Message, resSync.syncStatus, resSync.erpBillNo); + await _takeStockRepositories.Edit(entity, true); + return res; } - ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() + catch (Exception ex) { - BillNo = entity.BillNo, - StockOrgId = new ErpNumberDto(stock.OrgCode), - Type = new ErpNumberDto(entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS"), - Date = entity.Date, - Details = detils - }; - #endregion - //判断盘盈盘亏 - FormIdParam type = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss : FormIdParam.STK_StockCountGain; - //操作金蝶 - var resSync = await ErpOperate(dto, type); - entity.Sync(resSync.result.IsSuccess, resSync.result.Message, resSync.syncStatus, resSync.erpBillNo); - await _takeStockRepositories.Edit(entity, true); - return res; + _logger.LogError($"盘点同步金蝶: {ex.ToString()}"); + return Result.ReFailure(ResultCodes.NoDateError); + } } /// /// 同步金蝶操作