diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 55fdca19..a66fa5c0 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index ed575d2e..45cb1100 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -373,6 +373,8 @@ namespace WMS.Web.Api.Controllers return Result.ReFailure("箱号" + boxBillNo + "不存在", 800000); var response = res[0]; var detail = await _outStockRepositories.GetDetailsByBoxId(response.Id); + if (detail.Count() == 0) + return Result.ReFailure("箱号" + boxBillNo + "未出库", 800000); response.Details = detail; response.TotalQty = detail.Sum(s => s.Qty); return Result.ReSuccess(response); diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs index c325ace8..355cc2c0 100644 --- a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs +++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs @@ -46,7 +46,6 @@ namespace WMS.Web.Core.Dto.TakeStock /// /// 备注 /// - [Required(ErrorMessage = "备注不能为空")] public string Remark { get; set; } } } diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index 42b54e99..f95d99a9 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -370,7 +370,7 @@ namespace WMS.Web.Domain.Services //获取序列号信息 var serialNumbers = backRecord.Details.SelectMany(s => s.SerialNumbers).ToList(); var entityList = await _serialNumbersRepositories.GetEntityList(serialNumbers); - var boxIds = entityList.Select(s => s.BoxId).ToList(); + var boxIds = backRecord.Details.Select(s => s.BoxId).ToList(); var boxList = await _boxRepositories.GetEntityList(boxIds); var userName = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, loginInfo.UserInfo.StaffId); 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); + } } /// /// 同步金蝶操作 diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index dfa62f1f..a53b48d8 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -325,15 +325,16 @@ namespace WMS.Web.Repositories .Include(s => s.Details).ThenInclude(s => s.BoxsDetails.Where(w => w.BoxId == boxId)) .Where(f => f.Details.SelectMany(s => s.BoxsDetails).Where(w => w.BoxId == boxId).Any()) .OrderByDescending(o => o.Id) - .FirstAsync(); + .ToListAsync(); List details = new List(); + if (res.Count() == 0) return details; var materials_result = await _erpService.BillQueryForMaterial(); if (!materials_result.IsSuccess) return new List(); var materials = materials_result.Data.ToList(); - foreach (var d in res.Details) + foreach (var d in res.First().Details) { var boxDetail = d.BoxsDetails.FirstOrDefault(f => f.BoxId == boxId); if (boxDetail == null) continue; @@ -341,7 +342,7 @@ namespace WMS.Web.Repositories detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, d.MaterialId); detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, d.MaterialId); detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, d.MaterialId); - detail.SerialNumbers = d.SerialNumbers; + detail.SerialNumbers = boxDetail.SerialNumbers; detail.MaterialId = d.MaterialId; detail.Qty = boxDetail.Qty; details.Add(detail);